ADVERTISEMENTREMOVE ADS
Epic menu by 98ikidds| fps and ping checker small gui!
3 views
Universal script•
1 month ago

Script Preview
ADVERTISEMENTREMOVE ADS
318 Lines • 9.88 KiB
-- Place this in StarterPlayerScripts or StarterGui as a LocalScript
--// SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Stats = game:GetService("Stats")
--// VARIABLES
local player = Players.LocalPlayer
local guiParent = player:WaitForChild("PlayerGui")
--// CHARACTER HELPERS
local character = player.Character
local humanoid
local function onCharacterAdded(char)
character = char
humanoid = character:FindFirstChildWhichIsA("Humanoid") or character:WaitForChild("Humanoid")
-- Ensure current noclip state is applied to the new character
if noclipEnabled ~= nil then
-- call local function defined below; safe to call because it's defined later
setNoclip(noclipEnabled)
end
end
if not character or not character.Parent then
character = player.CharacterAdded:Wait()
end
humanoid = character:FindFirstChildWhichIsA("Humanoid") or character:WaitForChild("Humanoid")
player.CharacterAdded:Connect(onCharacterAdded)
--// SCREEN GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RGBEpicMenu"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = guiParent
--// MAIN FRAME
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 320, 0, 140)
frame.Position = UDim2.new(0.5, -160, 0.15, 0)
frame.AnchorPoint = Vector2.new(0.5, 0)
frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
local outline = Instance.new("UIStroke", frame)
outline.Thickness = 3
--// TITLE
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1, -20, 0, 28)
title.Position = UDim2.new(0, 10, 0, 6)
title.BackgroundTransparency = 1
title.Text = "Epic Menu Made by 98ikidds"
title.Font = Enum.Font.Arcade
title.TextSize = 16
--// MINIMIZE BUTTON
local minimizeBtn = Instance.new("TextButton", frame)
minimizeBtn.Size = UDim2.new(0, 24, 0, 24)
minimizeBtn.Position = UDim2.new(1, -30, 0, 6)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
minimizeBtn.Font = Enum.Font.Arcade
minimizeBtn.Text = "-"
minimizeBtn.TextSize = 20
Instance.new("UICorner", minimizeBtn).CornerRadius = UDim.new(0, 6)
--// NOCLIP BUTTON
local noclipBtn = Instance.new("TextButton", frame)
noclipBtn.Size = UDim2.new(0.9, 0, 0, 40)
noclipBtn.Position = UDim2.new(0.5, 0, 0, 45)
noclipBtn.AnchorPoint = Vector2.new(0.5, 0)
noclipBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
noclipBtn.Font = Enum.Font.Arcade
noclipBtn.Text = "Toggle Noclip"
noclipBtn.TextSize = 20
Instance.new("UICorner", noclipBtn).CornerRadius = UDim.new(0, 8)
local noclipStroke = Instance.new("UIStroke", noclipBtn)
noclipStroke.Thickness = 2
--// FPS BUTTON
local fpsBtn = Instance.new("TextButton", frame)
fpsBtn.Size = UDim2.new(0.9, 0, 0, 40)
fpsBtn.Position = UDim2.new(0.5, 0, 0, 95)
fpsBtn.AnchorPoint = Vector2.new(0.5, 0)
fpsBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
fpsBtn.Font = Enum.Font.Arcade
fpsBtn.Text = "Show FPS & Ping"
fpsBtn.TextSize = 20
Instance.new("UICorner", fpsBtn).CornerRadius = UDim.new(0, 8)
local fpsStroke = Instance.new("UIStroke", fpsBtn)
fpsStroke.Thickness = 2
--// STATE LABEL
local stateLabel = Instance.new("TextLabel", frame)
stateLabel.Size = UDim2.new(0.9, 0, 0, 18)
stateLabel.Position = UDim2.new(0.5, 0, 1, -20)
stateLabel.AnchorPoint = Vector2.new(0.5, 0)
stateLabel.BackgroundTransparency = 1
stateLabel.Font = Enum.Font.Arcade
stateLabel.TextSize = 14
stateLabel.Text = "OFF"
--// KEY FRAME
local keyFrame = Instance.new("Frame", screenGui)
keyFrame.Size = UDim2.new(0, 300, 0, 140)
keyFrame.Position = UDim2.new(0.5, -150, 0.5, -70)
keyFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
keyFrame.Visible = false
keyFrame.Active = true
keyFrame.Draggable = true
Instance.new("UICorner", keyFrame).CornerRadius = UDim.new(0, 10)
local keyOutline = Instance.new("UIStroke", keyFrame)
keyOutline.Thickness = 2
local keyTitle = Instance.new("TextLabel", keyFrame)
keyTitle.Size = UDim2.new(1, -20, 0, 28)
keyTitle.Position = UDim2.new(0, 10, 0, 6)
keyTitle.BackgroundTransparency = 1
keyTitle.Font = Enum.Font.Arcade
keyTitle.TextSize = 16
keyTitle.Text = "Enter Noclip Key:"
local keyWarning = Instance.new("TextLabel", keyFrame)
keyWarning.Size = UDim2.new(1, -20, 0, 18)
keyWarning.Position = UDim2.new(0, 10, 0, 36)
keyWarning.BackgroundTransparency = 1
keyWarning.Font = Enum.Font.Arcade
keyWarning.TextSize = 12
keyWarning.TextColor3 = Color3.fromRGB(255, 0, 0)
keyWarning.Text = ""
keyWarning.Visible = false
local keyBox = Instance.new("TextBox", keyFrame)
keyBox.Size = UDim2.new(0.8, 0, 0, 30)
keyBox.Position = UDim2.new(0.5, 0, 0, 60)
keyBox.AnchorPoint = Vector2.new(0.5, 0)
keyBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
keyBox.TextColor3 = Color3.fromRGB(255, 255, 255)
keyBox.PlaceholderText = "Type key here..."
keyBox.Font = Enum.Font.Arcade
keyBox.TextSize = 16
Instance.new("UICorner", keyBox).CornerRadius = UDim.new(0, 5)
local submitBtn = Instance.new("TextButton", keyFrame)
submitBtn.Size = UDim2.new(0.5, 0, 0, 30)
submitBtn.Position = UDim2.new(0.5, 0, 1, -35)
submitBtn.AnchorPoint = Vector2.new(0.5, 0)
submitBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
submitBtn.Font = Enum.Font.Arcade
submitBtn.TextSize = 16
submitBtn.Text = "Submit"
Instance.new("UICorner", submitBtn).CornerRadius = UDim.new(0, 5)
local submitOutline = Instance.new("UIStroke", submitBtn)
submitOutline.Thickness = 2
--// FPS FRAME (DRAGGABLE)
local fpsFrame = Instance.new("Frame", screenGui)
fpsFrame.Size = UDim2.new(0, 180, 0, 60)
fpsFrame.Position = UDim2.new(1, -190, 0.2, 0)
fpsFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
fpsFrame.Visible = false
fpsFrame.Active = true
fpsFrame.Draggable = true
Instance.new("UICorner", fpsFrame).CornerRadius = UDim.new(0, 10)
local fpsOutline = Instance.new("UIStroke", fpsFrame)
fpsOutline.Thickness = 2
local fpsLabel = Instance.new("TextLabel", fpsFrame)
fpsLabel.Size = UDim2.new(1, -20, 0, 25)
fpsLabel.Position = UDim2.new(0, 10, 0, 5)
fpsLabel.BackgroundTransparency = 1
fpsLabel.Font = Enum.Font.Arcade
fpsLabel.TextSize = 16
fpsLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
fpsLabel.Text = "FPS: 0"
local pingLabel = Instance.new("TextLabel", fpsFrame)
pingLabel.Size = UDim2.new(1, -20, 0, 25)
pingLabel.Position = UDim2.new(0, 10, 0, 30)
pingLabel.BackgroundTransparency = 1
pingLabel.Font = Enum.Font.Arcade
pingLabel.TextSize = 16
pingLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
pingLabel.Text = "Ping: 0ms"
--// LOGIC
noclipEnabled = false -- global-ish for onCharacterAdded access
local correctKey = "Unreleased!!!"
-- helper to set CanCollide for all character BaseParts immediately
function setNoclip(enabled)
if not character then return end
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
-- Avoid changing the HumanoidRootPart's collision if nil or locked, but typically fine
pcall(function()
part.CanCollide = not enabled
end)
end
end
end
local function toggleNoclip()
noclipEnabled = not noclipEnabled
stateLabel.Text = noclipEnabled and "ON" or "OFF"
-- apply immediately
setNoclip(noclipEnabled)
end
submitBtn.MouseButton1Click:Connect(function()
keyWarning.Visible = false
if keyBox.Text == correctKey then
toggleNoclip()
keyFrame.Visible = false
keyBox.Text = ""
else
keyWarning.Text = "Wrong key, try again!"
keyWarning.Visible = true
end
end)
noclipBtn.MouseButton1Click:Connect(function()
-- if currently enabled -> turn off immediately (no key)
if noclipEnabled then
toggleNoclip()
else
-- turning on requires key
keyWarning.Visible = false
keyBox.Text = ""
keyFrame.Visible = true
keyBox:CaptureFocus()
end
end)
-- ensure noclip state is applied each time character spawns
player.CharacterAdded:Connect(function(char)
character = char
humanoid = character:WaitForChild("Humanoid")
-- small delay to allow parts to be created
wait(0.1)
setNoclip(noclipEnabled)
end)
--// FPS/Ping Toggle
local showStats = false
fpsBtn.MouseButton1Click:Connect(function()
showStats = not showStats
fpsFrame.Visible = showStats
end)
-- FPS & Ping Update (stable counting)
local lastTime = tick()
local frames = 0
RunService.RenderStepped:Connect(function(dt)
frames = frames + 1
if tick() - lastTime >= 1 then
local fps = frames
frames = 0
lastTime = tick()
if fpsFrame.Visible then
local pingValue = 0
local ok, data = pcall(function()
return Stats.Network.ServerStatsItem["Data Ping"]:GetValue()
end)
if ok and data then
pingValue = math.floor(data)
end
fpsLabel.Text = "FPS: " .. tostring(fps)
pingLabel.Text = "Ping: " .. tostring(pingValue) .. "ms"
end
end
end)
--// MINIMIZE LOGIC
local minimized = false
minimizeBtn.MouseButton1Click:Connect(function()
minimized = not minimized
if minimized then
minimizeBtn.Text = "+"
noclipBtn.Visible = false
fpsBtn.Visible = false
stateLabel.Visible = false
keyFrame.Visible = false
frame.Size = UDim2.new(0, 320, 0, 40)
else
minimizeBtn.Text = "-"
noclipBtn.Visible = true
fpsBtn.Visible = true
stateLabel.Visible = true
frame.Size = UDim2.new(0, 320, 0, 140)
end
end)
--// RGB EFFECT
local hue = 0
RunService.RenderStepped:Connect(function(dt)
hue = (hue + dt * 0.25) % 1
local color = Color3.fromHSV(hue, 1, 1)
outline.Color = color
title.TextColor3 = color
noclipBtn.TextColor3 = color
fpsBtn.TextColor3 = color
stateLabel.TextColor3 = color
minimizeBtn.TextColor3 = color
noclipStroke.Color = color
fpsStroke.Color = color
keyOutline.Color = color
submitOutline.Color = color
fpsOutline.Color = color
-- keep warning readable (red) unless you want rainbow for it:
keyWarning.TextColor3 = Color3.fromRGB(255, 0, 0)
end)
ADVERTISEMENTREMOVE ADS
ADVERTISEMENTREMOVE ADS






Comments
I hope ts get popular