
Keyless

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- CLEANUP OLD GUIS
local oldGui = playerGui:FindFirstChild("PPSAutoMini")
while oldGui do
oldGui:Destroy()
oldGui = playerGui:FindFirstChild("PPSAutoMini")
end
-- GUI SETUP
local gui = Instance.new("ScreenGui")
gui.Name = "PPSAutoMini"
gui.ResetOnSpawn = false
-- MAIN FRAME
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 180, 0, 100)
frame.Position = UDim2.new(0.5, -90, 0.5, -50)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.Active = true
frame.Visible = false
frame.Parent = gui
local frameCorner = Instance.new("UICorner", frame)
frameCorner.CornerRadius = UDim.new(0, 8)
-- MODE SELECTION FRAME
local modeFrame = Instance.new("Frame")
modeFrame.Size = UDim2.new(0, 220, 0, 150)
modeFrame.Position = UDim2.new(0.5, -110, 0.5, -75)
modeFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
modeFrame.Active = true
modeFrame.Parent = gui
local modeCorner = Instance.new("UICorner", modeFrame)
modeCorner.CornerRadius = UDim.new(0, 8)
local modeTitle = Instance.new("TextLabel")
modeTitle.Size = UDim2.new(1, 0, 0, 35)
modeTitle.BackgroundTransparency = 1
modeTitle.Text = "Select Mode"
modeTitle.TextColor3 = Color3.new(1, 1, 1)
modeTitle.TextScaled = true
modeTitle.Font = Enum.Font.SourceSansBold
modeTitle.Parent = modeFrame
-- MODE 1 BUTTON
local mode1Btn = Instance.new("TextButton")
mode1Btn.Size = UDim2.new(1, -20, 0, 40)
mode1Btn.Position = UDim2.new(0, 10, 0, 45)
mode1Btn.Text = "Mode 1 (Normal)"
mode1Btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
mode1Btn.TextColor3 = Color3.new(1, 1, 1)
mode1Btn.TextScaled = true
mode1Btn.Parent = modeFrame
Instance.new("UICorner", mode1Btn).CornerRadius = UDim.new(0, 6)
-- MODE 2 BUTTON
local mode2Btn = Instance.new("TextButton")
mode2Btn.Size = UDim2.new(1, -20, 0, 40)
mode2Btn.Position = UDim2.new(0, 10, 0, 95)
mode2Btn.Text = "Mode 2 (Teleport)"
mode2Btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
mode2Btn.TextColor3 = Color3.new(1, 1, 1)
mode2Btn.TextScaled = true
mode2Btn.Parent = modeFrame
Instance.new("UICorner", mode2Btn).CornerRadius = UDim.new(0, 6)
-- TITLE
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 25)
title.BackgroundTransparency = 1
title.Text = "PPS Controller"
title.TextColor3 = Color3.new(1, 1, 1)
title.TextScaled = true
title.Font = Enum.Font.SourceSansBold
title.Parent = frame
-- TOGGLE BUTTON
local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(1, -10, 0, 35)
toggle.Position = UDim2.new(0, 5, 0, 35)
toggle.Text = "OFF"
toggle.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
toggle.TextColor3 = Color3.new(1, 1, 1)
toggle.TextScaled = true
toggle.Parent = frame
Instance.new("UICorner", toggle).CornerRadius = UDim.new(0, 6)
-- MINIMIZE BUTTON
local minimize = Instance.new("TextButton")
minimize.Size = UDim2.new(0, 25, 0, 25)
minimize.Position = UDim2.new(1, -30, 0, 0)
minimize.Text = "-"
minimize.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
minimize.TextColor3 = Color3.new(1, 1, 1)
minimize.Parent = frame
-- HIDE BUTTON
local hide = Instance.new("TextButton")
hide.Size = UDim2.new(0, 25, 0, 25)
hide.Position = UDim2.new(1, -60, 0, 0)
hide.Text = "O"
hide.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
hide.TextColor3 = Color3.new(1, 1, 1)
hide.Parent = frame
-- CIRCLE BUTTON
local circle = Instance.new("TextButton")
circle.Size = UDim2.new(0, 50, 0, 50)
circle.Position = UDim2.new(1, -60, 0.5, -25)
circle.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
circle.Text = "PPS"
circle.TextColor3 = Color3.new(1, 1, 1)
circle.Visible = false
circle.Active = true
circle.Parent = gui
local circleCorner = Instance.new("UICorner", circle)
circleCorner.CornerRadius = UDim.new(1, 0)
gui.Parent = playerGui
-- DRAGGABLE SYSTEM
local function makeDraggable(obj)
local UserInputService = game:GetService("UserInputService")
local dragging, dragInput, dragStart, startPos
obj.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = obj.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
obj.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
obj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
makeDraggable(frame)
makeDraggable(modeFrame)
makeDraggable(circle)
-- CONFIG AND STATES
local enabled = false
local minimized = false
local selectedMode = 1
-- MODE BUTTON LOGIC
mode1Btn.MouseButton1Click:Connect(function()
selectedMode = 1
title.Text = "PPS (Normal)"
modeFrame.Visible = false
frame.Visible = true
end)
mode2Btn.MouseButton1Click:Connect(function()
selectedMode = 2
title.Text = "PPS (Teleport)"
modeFrame.Visible = false
frame.Visible = true
end)
-- CONTROLS LOGIC
toggle.MouseButton1Click:Connect(function()
enabled = not enabled
toggle.Text = enabled and "ON" or "OFF"
toggle.BackgroundColor3 = enabled and Color3.fromRGB(46, 117, 89) or Color3.fromRGB(40, 40, 40)
end)
minimize.MouseButton1Click:Connect(function()
minimized = not minimized
frame.Size = minimized and UDim2.new(0, 180, 0, 30) or UDim2.new(0, 180, 0, 100)
toggle.Visible = not minimized
end)
hide.MouseButton1Click:Connect(function()
frame.Visible = false
circle.Visible = true
end)
circle.MouseButton1Click:Connect(function()
frame.Visible = true
circle.Visible = false
end)
-- ==========================================
-- PROMPT SYSTEM
-- ==========================================
local prompts = {}
local function isTargetPrompt(v)
if v:IsA("ProximityPrompt") then
local text = ((v.ActionText or "") .. " " .. (v.ObjectText or "")):lower()
return text:find("close") or text:find("remove") or text:find("revive")
end
return false
end
local function addPrompt(v)
if isTargetPrompt(v) then
prompts[v] = true
end
end
local function scanWorkspace()
for _, v in ipairs(Workspace:GetDescendants()) do
addPrompt(v)
end
end
scanWorkspace()
Workspace.DescendantAdded:Connect(addPrompt)
Workspace.DescendantRemoving:Connect(function(v)
prompts[v] = nil
end)
local function getPromptPosition(v)
local p = v.Parent
if not p then return nil end
if p:IsA("Attachment") then
return p.WorldPosition
elseif p:IsA("BasePart") or p:IsA("Model") then
return p:GetPivot().Position
end
return nil
end
-- BACKEND LOOP
local lastScan = 0
task.spawn(function()
while true do
task.wait() -- Minimal engine yield
if tick() - lastScan > 3 then
lastScan = tick()
scanWorkspace()
end
if enabled then
local character = player.Character
local rootPart = character and character:FindFirstChild("HumanoidRootPart")
if rootPart then
for v in pairs(prompts) do
if v and v.Parent then
local pos = getPromptPosition(v)
if pos then
pcall(function()
v.MaxActivationDistance = 9999999
v.RequiresLineOfSight = false
if selectedMode == 2 then
local currentPos = rootPart.Position
local direction = (currentPos - pos).Unit
if direction.Magnitude == 0 or tostring(direction) == "NAN" then
direction = Vector3.new(1, 0, 0)
else
direction = Vector3.new(direction.X, 0, direction.Z).Unit
end
local teleportOffset = pos + (direction * 9) + Vector3.new(0, 2, 0)
rootPart.CFrame = CFrame.new(teleportOffset, pos)
rootPart.AssemblyLinearVelocity = Vector3.zero
end
fireproximityprompt(v, 0)
end) -- Fixed the syntax error here
end
else
prompts[v] = nil
end
end
end
end
end
end)
Bro you the goat
Bro aunque es bueno pero no sirve con el g toilet ni con los boxes que tienen más de 5000 vida