
Key RequiredUniversal

--// PLAYMEGAMARBLE MENU
--// Put this LocalScript inside StarterGui
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
--------------------------------------------------
-- SETTINGS
--------------------------------------------------
local walkSpeed = 16
local jumpPower = 50
local flySpeed = 60
local flying = false
local noclip = false
local espEnabled = false
local infiniteJump = false
local walkFling = false
local flyConnection
local noclipConnection
local espObjects = {}
local flingCooldown = {}
--------------------------------------------------
-- COLORS
--------------------------------------------------
local BLACK = Color3.fromRGB(0, 0, 0)
local DARK = Color3.fromRGB(10, 10, 10)
local RED = Color3.fromRGB(255, 0, 0)
local WHITE = Color3.fromRGB(255, 255, 255)
--------------------------------------------------
-- GUI
--------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "PlaymegamarbleMenu"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
--------------------------------------------------
-- MAIN MENU
--------------------------------------------------
local menu = Instance.new("Frame")
menu.Size = UDim2.new(0, 310, 0, 400)
menu.Position = UDim2.new(0.5, -155, 0.5, -200)
menu.BackgroundColor3 = BLACK
menu.BorderColor3 = RED
menu.BorderSizePixel = 2
menu.Parent = gui
local menuCorner = Instance.new("UICorner")
menuCorner.CornerRadius = UDim.new(0, 16)
menuCorner.Parent = menu
--------------------------------------------------
-- HELPER
--------------------------------------------------
local function style(object)
object.BackgroundColor3 = DARK
object.BorderColor3 = RED
object.BorderSizePixel = 2
object.TextColor3 = WHITE
object.Font = Enum.Font.SourceSansBold
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = object
end
--------------------------------------------------
-- TITLE
--------------------------------------------------
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -60, 0, 45)
title.Position = UDim2.new(0, 10, 0, 5)
title.BackgroundTransparency = 1
title.Text = "PLAYMEGAMARBLE"
title.TextColor3 = WHITE
title.TextScaled = true
title.Font = Enum.Font.SourceSansBold
title.Parent = menu
--------------------------------------------------
-- MINIMIZE
--------------------------------------------------
local minimize = Instance.new("TextButton")
minimize.Size = UDim2.new(0, 40, 0, 35)
minimize.Position = UDim2.new(1, -50, 0, 10)
minimize.Text = "-"
minimize.TextScaled = true
minimize.Parent = menu
style(minimize)
--------------------------------------------------
-- REOPEN BUTTON
--------------------------------------------------
local reopen = Instance.new("TextButton")
reopen.Size = UDim2.new(0, 65, 0, 45)
reopen.Position = UDim2.new(0, 15, 0.5, -22)
reopen.Text = "MENU"
reopen.TextScaled = true
reopen.Visible = false
reopen.Parent = gui
style(reopen)
--------------------------------------------------
-- NAVIGATION
--------------------------------------------------
local navigation = Instance.new("Frame")
navigation.Size = UDim2.new(1, -20, 0, 42)
navigation.Position = UDim2.new(0, 10, 0, 55)
navigation.BackgroundTransparency = 1
navigation.Parent = menu
local function makeTab(text, position)
local button = Instance.new("TextButton")
button.Size = UDim2.new(1/3, -5, 1, 0)
button.Position = position
button.Text = text
button.TextScaled = true
button.Parent = navigation
style(button)
return button
end
local homeTab = makeTab(
"HOME",
UDim2.new(0, 0, 0, 0)
)
local miscTab = makeTab(
"MISC",
UDim2.new(1/3, 2.5, 0, 0)
)
local creditsTab = makeTab(
"CREDITS",
UDim2.new(2/3, 5, 0, 0)
)
--------------------------------------------------
-- PAGES
--------------------------------------------------
local function makePage()
local page = Instance.new("Frame")
page.Size = UDim2.new(1, -20, 1, -145)
page.Position = UDim2.new(0, 10, 0, 105)
page.BackgroundTransparency = 1
page.Visible = false
page.Parent = menu
return page
end
local homePage = makePage()
local miscPage = makePage()
local creditsPage = makePage()
homePage.Visible = true
--------------------------------------------------
-- BUTTON CREATOR
--------------------------------------------------
local function makeButton(parent, text, y)
local button = Instance.new("TextButton")
button.Size = UDim2.new(0.85, 0, 0, 40)
button.Position = UDim2.new(0.075, 0, 0, y)
button.Text = text
button.TextScaled = true
button.Parent = parent
style(button)
return button
end
--------------------------------------------------
-- HOME
--------------------------------------------------
-- WalkSpeed
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(0.42, 0, 0, 40)
speedLabel.Position = UDim2.new(0.05, 0, 0, 10)
speedLabel.Text = "WalkSpeed"
speedLabel.TextColor3 = WHITE
speedLabel.TextScaled = true
speedLabel.Font = Enum.Font.SourceSansBold
speedLabel.BackgroundTransparency = 1
speedLabel.Parent = homePage
local speedBox = Instance.new("TextBox")
speedBox.Size = UDim2.new(0.35, 0, 0, 40)
speedBox.Position = UDim2.new(0.53, 0, 0, 10)
speedBox.Text = "16"
speedBox.TextScaled = true
speedBox.ClearTextOnFocus = false
speedBox.Parent = homePage
style(speedBox)
local speedButton =
makeButton(homePage, "SET WALKSPEED", 60)
-- JumpPower
local jumpLabel = Instance.new("TextLabel")
jumpLabel.Size = UDim2.new(0.42, 0, 0, 40)
jumpLabel.Position = UDim2.new(0.05, 0, 0, 110)
jumpLabel.Text = "JumpPower"
jumpLabel.TextColor3 = WHITE
jumpLabel.TextScaled = true
jumpLabel.Font = Enum.Font.SourceSansBold
jumpLabel.BackgroundTransparency = 1
jumpLabel.Parent = homePage
local jumpBox = Instance.new("TextBox")
jumpBox.Size = UDim2.new(0.35, 0, 0, 40)
jumpBox.Position = UDim2.new(0.53, 0, 0, 110)
jumpBox.Text = "50"
jumpBox.TextScaled = true
jumpBox.ClearTextOnFocus = false
jumpBox.Parent = homePage
style(jumpBox)
local jumpButton =
makeButton(homePage, "SET JUMPPOWER", 160)
-- Infinite Jump
local infiniteJumpButton =
makeButton(homePage, "INFINITE JUMP: OFF", 215)
--------------------------------------------------
-- MISC
--------------------------------------------------
local flyButton =
makeButton(miscPage, "FLY: OFF", 5)
local flySpeedLabel = Instance.new("TextLabel")
flySpeedLabel.Size = UDim2.new(0.42, 0, 0, 40)
flySpeedLabel.Position = UDim2.new(0.05, 0, 0, 55)
flySpeedLabel.Text = "Fly Speed"
flySpeedLabel.TextColor3 = WHITE
flySpeedLabel.TextScaled = true
flySpeedLabel.Font = Enum.Font.SourceSansBold
flySpeedLabel.BackgroundTransparency = 1
flySpeedLabel.Parent = miscPage
local flySpeedBox = Instance.new("TextBox")
flySpeedBox.Size = UDim2.new(0.35, 0, 0, 40)
flySpeedBox.Position = UDim2.new(0.53, 0, 0, 55)
flySpeedBox.Text = "60"
flySpeedBox.TextScaled = true
flySpeedBox.ClearTextOnFocus = false
flySpeedBox.Parent = miscPage
style(flySpeedBox)
local espButton =
makeButton(miscPage, "ESP: OFF", 105)
local noclipButton =
makeButton(miscPage, "NOCLIP: OFF", 155)
local flingButton =
makeButton(miscPage, "WALK FLING: OFF", 205)
--------------------------------------------------
-- CREDITS
--------------------------------------------------
local creditsText = Instance.new("TextLabel")
creditsText.Size = UDim2.new(0.9, 0, 0.6, 0)
creditsText.Position = UDim2.new(0.05, 0, 0.15, 0)
creditsText.BackgroundTransparency = 1
creditsText.TextColor3 = RED
creditsText.TextScaled = true
creditsText.Font = Enum.Font.SourceSansBold
creditsText.TextWrapped = true
creditsText.Text =
"Made by Playmegamarble\n\nwith the ideas"
creditsText.Parent = creditsPage
--------------------------------------------------
-- PAGE SWITCHING
--------------------------------------------------
local function showPage(page)
homePage.Visible = false
miscPage.Visible = false
creditsPage.Visible = false
page.Visible = true
end
homeTab.MouseButton1Click:Connect(function()
showPage(homePage)
end)
miscTab.MouseButton1Click:Connect(function()
showPage(miscPage)
end)
creditsTab.MouseButton1Click:Connect(function()
showPage(creditsPage)
end)
--------------------------------------------------
-- MOVEMENT
--------------------------------------------------
local function applyMovement()
local character = player.Character
if not character then return end
local humanoid =
character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.WalkSpeed = walkSpeed
humanoid.UseJumpPower = true
humanoid.JumpPower = jumpPower
end
end
speedButton.MouseButton1Click:Connect(function()
local value = tonumber(speedBox.Text)
if value then
walkSpeed = math.clamp(value, 0, 250)
speedBox.Text = tostring(walkSpeed)
applyMovement()
end
end)
jumpButton.MouseButton1Click:Connect(function()
local value = tonumber(jumpBox.Text)
if value then
jumpPower = math.clamp(value, 0, 250)
jumpBox.Text = tostring(jumpPower)
applyMovement()
end
end)
--------------------------------------------------
-- INFINITE JUMP
--------------------------------------------------
UserInputService.JumpRequest:Connect(function()
if not infiniteJump then return end
local character = player.Character
if not character then return end
local humanoid =
character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:ChangeState(
Enum.HumanoidStateType.Jumping
)
end
end)
infiniteJumpButton.MouseButton1Click:Connect(function()
infiniteJump = not infiniteJump
infiniteJumpButton.Text =
"InFINITE JUMP: " ..
(infiniteJump and "ON" or "OFF")
end)
--------------------------------------------------
-- FLY
-- LOOK DIRECTION + WASD / MOBILE JOYSTICK
--------------------------------------------------
local function stopFlying()
flying = false
flyButton.Text = "FLY: OFF"
if flyConnection then
flyConnection:Disconnect()
flyConnection = nil
end
local character = player.Character
if character then
local humanoid =
character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.PlatformStand = false
humanoid.AutoRotate = true
end
end
end
local function startFlying()
local character = player.Character
if not character then return end
local root =
character:WaitForChild("HumanoidRootPart")
local humanoid =
character:WaitForChild("Humanoid")
flying = true
flyButton.Text = "FLY: ON"
humanoid.PlatformStand = true
humanoid.AutoRotate = false
flyConnection =
RunService.RenderStepped:Connect(function()
if not flying or not root.Parent then
stopFlying()
return
end
local moveDirection =
humanoid.MoveDirection
if moveDirection.Magnitude > 0 then
local camera =
workspace.CurrentCamera
local lookDirection =
camera.CFrame.LookVector
root.AssemblyLinearVelocity =
lookDirection.Unit * flySpeed
root.CFrame = CFrame.lookAt(
root.Position,
root.Position + lookDirection
)
else
root.AssemblyLinearVelocity =
Vector3.zero
end
end)
end
flyButton.MouseButton1Click:Connect(function()
if flying then
stopFlying()
else
startFlying()
end
end)
flySpeedBox.FocusLost:Connect(function()
local value = tonumber(flySpeedBox.Text)
if value then
flySpeed =
math.clamp(value, 1, 250)
flySpeedBox.Text =
tostring(flySpeed)
end
end)
--------------------------------------------------
-- ESP
--------------------------------------------------
local function getHealthColor(health, maxHealth)
if health <= 0 then
return Color3.fromRGB(180, 0, 255)
end
local percentage =
health / maxHealth
if percentage <= 0.25 then
return Color3.fromRGB(255, 0, 0)
elseif percentage <= 0.50 then
return Color3.fromRGB(255, 255, 0)
else
return Color3.fromRGB(0, 255, 0)
end
end
local function addESP(target)
if target == player then return end
local character =
target.Character
if not character then return end
local humanoid =
character:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
if espObjects[target] then
return
end
local highlight =
Instance.new("Highlight")
highlight.Adornee = character
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.Parent = character
local billboard =
Instance.new("BillboardGui")
billboard.Size =
UDim2.new(0, 220, 0, 45)
billboard.StudsOffset =
Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.Adornee = character
billboard.Parent = character
local label =
Instance.new("TextLabel")
label.Size =
UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 1
label.TextStrokeTransparency = 0
label.TextScaled = true
label.Font = Enum.Font.SourceSansBold
label.Parent = billboard
local function updateESP()
local health =
math.max(0, humanoid.Health)
local maxHealth =
humanoid.MaxHealth
local color =
getHealthColor(
health,
maxHealth
)
label.Text =
target.Name ..
" [" ..
math.floor(health) ..
"/" ..
math.floor(maxHealth) ..
"]"
label.TextColor3 = color
highlight.FillColor = color
highlight.OutlineColor = RED
end
updateESP()
local connection =
humanoid.HealthChanged:Connect(
updateESP
)
espObjects[target] = {
highlight = highlight,
billboard = billboard,
connection = connection
}
end
local function removeESP(target)
local data =
espObjects[target]
if not data then return end
if data.connection then
data.connection:Disconnect()
end
if data.highlight then
data.highlight:Destroy()
end
if data.billboard then
data.billboard:Destroy()
end
espObjects[target] = nil
end
local function enableESP()
espEnabled = true
espButton.Text = "ESP: ON"
for _, target in
ipairs(Players:GetPlayers()) do
addESP(target)
end
end
local function disableESP()
espEnabled = false
espButton.Text = "ESP: OFF"
for _, target in
ipairs(Players:GetPlayers()) do
removeESP(target)
end
end
espButton.MouseButton1Click:Connect(function()
if espEnabled then
disableESP()
else
enableESP()
end
end)
Players.PlayerAdded:Connect(function(target)
target.CharacterAdded:Connect(function()
if espEnabled then
task.wait(0.5)
addESP(target)
end
end)
end)
Players.PlayerRemoving:Connect(function(target)
removeESP(target)
end)
--------------------------------------------------
-- NOCLIP
--------------------------------------------------
local function setNoclip(enabled)
noclip = enabled
noclipButton.Text =
"NOCLIP: " ..
(enabled and "ON" or "OFF")
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
if enabled then
noclipConnection =
RunService.Stepped:Connect(
function()
local character =
player.Character
if not character then
return
end
for _, part in
ipairs(
character:GetDescendants()
) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
)
end
end
noclipButton.MouseButton1Click:Connect(function()
setNoclip(not noclip)
end)
--------------------------------------------------
-- WALK FLING
--------------------------------------------------
local function flingTarget(target)
if not walkFling then return end
local character =
target.Character
if not character then return end
local targetRoot =
character:FindFirstChild(
"HumanoidRootPart"
)
local myCharacter =
player.Character
if not myCharacter or not targetRoot then
return
end
local myRoot =
myCharacter:FindFirstChild(
"HumanoidRootPart"
)
if not myRoot then return end
if flingCooldown[target] then
return
end
flingCooldown[target] = true
local direction =
targetRoot.Position -
myRoot.Position
if direction.Magnitude > 0 then
direction =
direction.Unit
targetRoot.AssemblyLinearVelocity =
direction * 100 +
Vector3.new(0, 60, 0)
end
task.delay(0.5, function()
flingCooldown[target] = nil
end)
end
RunService.Heartbeat:Connect(function()
if not walkFling then return end
local character =
player.Character
if not character then return end
local root =
character:FindFirstChild(
"HumanoidRootPart"
)
if not root then return end
for _, target in
ipairs(Players:GetPlayers()) do
if target ~= player then
local targetCharacter =
target.Character
if targetCharacter then
local targetRoot =
targetCharacter:FindFirstChild(
"HumanoidRootPart"
)
if targetRoot then
local distance =
(
root.Position -
targetRoot.Position
).Magnitude
if distance <= 4 then
flingTarget(target)
end
end
end
end
end
end)
flingButton.MouseButton1Click:Connect(function()
walkFling = not walkFling
flingButton.Text =
"WALK FLING: " ..
(walkFling and "ON" or "OFF")
end)
--------------------------------------------------
-- MINIMIZE
--------------------------------------------------
minimize.MouseButton1Click:Connect(function()
menu.Visible = false
reopen.Visible = true
end)
reopen.MouseButton1Click:Connect(function()
menu.Visible = true
reopen.Visible = false
end)
--------------------------------------------------
-- DRAGGING
--------------------------------------------------
local dragging = false
local dragStart
local startPosition
title.Active = true
title.InputBegan:Connect(function(input)
if input.UserInputType ==
Enum.UserInputType.MouseButton1
or input.UserInputType ==
Enum.UserInputType.Touch then
dragging = true
dragStart =
input.Position
startPosition =
menu.Position
input.Changed:Connect(function()
if input.UserInputState ==
Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if not dragging then return end
if input.UserInputType ==
Enum.UserInputType.MouseMovement
or input.UserInputType ==
Enum.UserInputType.Touch then
local delta =
input.Position -
dragStart
menu.Position =
UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
end
end)
--------------------------------------------------
-- RESPAWN
--------------------------------------------------
player.CharacterAdded:Connect(function()
task.wait(0.5)
applyMovement()
if noclip then
setNoclip(true)
end
if espEnabled then
for _, target in
ipairs(Players:GetPlayers()) do
if target ~= player then
addESP(target)
end
end
end
end)
--------------------------------------------------
-- KEEP MOVEMENT
--------------------------------------------------
RunService.Heartbeat:Connect(function()
local character =
player.Character
if not character then return end
local humanoid =
character:FindFirstChildOfClass(
"Humanoid"
)
if humanoid then
humanoid.WalkSpeed =
walkSpeed
humanoid.UseJumpPower = true
humanoid.JumpPower =
jumpPower
end
end)No comments yet for this script.



