
Key RequiredUniversal

--// CONFIGURACIÓN
local DEFAULT_SPEED = 16
local DEFAULT_JUMP = 50
--// SERVICIOS
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
--// PERSONAJE
local character
local humanoid
local function setupCharacter(char)
character = char
humanoid = char:WaitForChild("Humanoid")
humanoid.WalkSpeed = DEFAULT_SPEED
humanoid.UseJumpPower = true
humanoid.JumpPower = DEFAULT_JUMP
end
if player.Character then
setupCharacter(player.Character)
end
player.CharacterAdded:Connect(setupCharacter)
--// GUI
local gui = Instance.new("ScreenGui")
gui.Name = "AdminControlGUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
--// BOTÓN PRINCIPAL
local openButton = Instance.new("TextButton")
openButton.Size = UDim2.fromOffset(55, 55)
openButton.Position = UDim2.new(0, 20, 0.5, -25)
openButton.Text = "MENU"
openButton.TextScaled = true
openButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
openButton.TextColor3 = Color3.new(1, 1, 1)
openButton.Parent = gui
Instance.new("UICorner", openButton).CornerRadius = UDim.new(0, 12)
--// VENTANA
local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(280, 330)
frame.Position = UDim2.new(0.5, -140, 0.5, -165)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.Visible = true
frame.Parent = gui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 15)
--// TÍTULO
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundTransparency = 1
title.Text = "⚙️ CONTROLES"
title.TextColor3 = Color3.new(1, 1, 1)
title.TextScaled = true
title.Parent = frame
--// CREAR CAJA
local function createBox(text, y)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -30, 0, 25)
label.Position = UDim2.fromOffset(15, y)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Color3.new(1, 1, 1)
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = frame
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -30, 0, 35)
box.Position = UDim2.fromOffset(15, y + 25)
box.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
box.TextColor3 = Color3.new(1, 1, 1)
box.PlaceholderText = "Escribe un número"
box.Text = ""
box.ClearTextOnFocus = false
box.Parent = frame
Instance.new("UICorner", box).CornerRadius = UDim.new(0, 8)
return box
end
local speedBox = createBox("⚡ Velocidad", 55)
local jumpBox = createBox("🦘 Salto", 120)
--// BOTÓN NOCLIP
local noclipButton = Instance.new("TextButton")
noclipButton.Size = UDim2.new(1, -30, 0, 40)
noclipButton.Position = UDim2.fromOffset(15, 190)
noclipButton.Text = "👻 Noclip: OFF"
noclipButton.TextScaled = true
noclipButton.BackgroundColor3 = Color3.fromRGB(170, 50, 50)
noclipButton.TextColor3 = Color3.new(1, 1, 1)
noclipButton.Parent = frame
Instance.new("UICorner", noclipButton).CornerRadius = UDim.new(0, 8)
--// BOTÓN APLICAR
local applyButton = Instance.new("TextButton")
applyButton.Size = UDim2.new(1, -30, 0, 40)
applyButton.Position = UDim2.fromOffset(15, 240)
applyButton.Text = "✅ Aplicar"
applyButton.TextScaled = true
applyButton.BackgroundColor3 = Color3.fromRGB(50, 150, 80)
applyButton.TextColor3 = Color3.new(1, 1, 1)
applyButton.Parent = frame
Instance.new("UICorner", applyButton).CornerRadius = UDim.new(0, 8)
--// SALDO
local moneyButton = Instance.new("TextButton")
moneyButton.Size = UDim2.new(1, -30, 0, 35)
moneyButton.Position = UDim2.fromOffset(15, 285)
moneyButton.Text = "💰 Añadir saldo de prueba"
moneyButton.TextScaled = true
moneyButton.BackgroundColor3 = Color3.fromRGB(180, 140, 30)
moneyButton.TextColor3 = Color3.new(1, 1, 1)
moneyButton.Parent = frame
Instance.new("UICorner", moneyButton).CornerRadius = UDim.new(0, 8)
--// APLICAR VELOCIDAD Y SALTO
applyButton.MouseButton1Click:Connect(function()
if not humanoid then return end
local speed = tonumber(speedBox.Text)
local jump = tonumber(jumpBox.Text)
if speed then
humanoid.WalkSpeed = math.clamp(speed, 0, 500)
end
if jump then
humanoid.JumpPower = math.clamp(jump, 0, 500)
end
end)
--// NOCLIP
local noclip = false
noclipButton.MouseButton1Click:Connect(function()
noclip = not noclip
if noclip then
noclipButton.Text = "👻 Noclip: ON"
noclipButton.BackgroundColor3 = Color3.fromRGB(50, 170, 80)
else
noclipButton.Text = "👻 Noclip: OFF"
noclipButton.BackgroundColor3 = Color3.fromRGB(170, 50, 50)
end
end)
RunService.Stepped:Connect(function()
if noclip and character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end)
--// ABRIR / CERRAR GUI
openButton.MouseButton1Click:Connect(function()
frame.Visible = not frame.Visible
end)
--// HACER OBJETO ARRASTRABLE
local function makeDraggable(object)
local dragging = false
local dragStart
local startPosition
object.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPosition = object.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
object.Position = UDim2.new(
startPosition.X.Scale,
startPosition.X.Offset + delta.X,
startPosition.Y.Scale,
startPosition.Y.Offset + delta.Y
)
end
end)
end
makeDraggable(frame)
makeDraggable(openButton)
--// SALDO DE PRUEBA
-- IMPORTANTE:
-- Este botón NO puede cambiar de forma segura el dinero real
-- del servidor desde un LocalScript.
-- Conecta aquí un RemoteEvent de TU propio sistema de dinero.
moneyButton.MouseButton1Click:Connect(function()
print("Botón de saldo de prueba pulsado.")
end)



Bad