
KeylessUniversal

-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
-- Player & Character
local LocalPlayer = Players.LocalPlayer
local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
-- R15/R6 fallback for HumanoidRootPart
local function resolveHRP(char)
return char:FindFirstChild("HumanoidRootPart")
or char:FindFirstChild("UpperTorso")
or char:FindFirstChild("Torso")
end
local hrp = resolveHRP(character)
-- Configuration (editable via GUI)
local SCAN_RADIUS = 15
local PROX_RADIUS = 15
local INSTANT_METHOD = false
local AUTO_FIRE = false
local TOGGLE_KEY = Enum.KeyCode.RightControl
-- Helper: find world position of any interactable
local function getInteractablePosition(obj)
if obj:IsA("BasePart") then
return obj.Position
end
local part = obj:FindFirstAncestorWhichIsA("BasePart")
if part then
return part.Position
end
local mdl = obj:FindFirstAncestorWhichIsA("Model")
if mdl then
if mdl.PrimaryPart then
return mdl.PrimaryPart.Position
end
local bp = mdl:FindFirstChildWhichIsA("BasePart", true)
if bp then
return bp.Position
end
end
local att = obj:FindFirstAncestorWhichIsA("Attachment")
if att then
return att.WorldCFrame.Position
end
return nil
end
-- Enforce ProximityPrompt activation distance
local function enforcePromptRange()
for _, p in ipairs(workspace:GetDescendants()) do
if p:IsA("ProximityPrompt") then
p.MaxActivationDistance = PROX_RADIUS
end
end
end
workspace.DescendantAdded:Connect(function(d)
if d:IsA("ProximityPrompt") then
d.MaxActivationDistance = PROX_RADIUS
end
end)
enforcePromptRange()
-- Fire helpers
local function fireProximity(prompt)
if INSTANT_METHOD then
pcall(fireproximityprompt, prompt)
else
pcall(function()
prompt:InputHoldBegin()
task.wait(0.1)
prompt:InputHoldEnd()
end)
end
end
local function fireClick(cd)
pcall(fireclickdetector, cd, cd.Parent)
end
-- GUI (one‑time build)
local gui = Instance.new("ScreenGui", LocalPlayer:WaitForChild("PlayerGui"))
gui.Name = "AutoFireGui"
gui.ResetOnSpawn = false
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 380, 0, 240)
frame.Position = UDim2.new(0, 10, 0, 10)
frame.BackgroundColor3 = Color3.fromRGB(28,28,28)
frame.Active = true
frame.Draggable = true
Instance.new("UICorner", frame).CornerRadius = UDim.new(0,8)
-- Title
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1, 0, 0, 24)
title.BackgroundColor3 = Color3.fromRGB(40,40,40)
title.TextColor3 = Color3.new(1,1,1)
title.Font = Enum.Font.GothamBold
title.TextSize = 18
title.TextXAlignment = Enum.TextXAlignment.Left
title.Text = " Auto‑Fire Scanner"
-- Info
local info = Instance.new("TextLabel", frame)
info.Position = UDim2.new(0, 5, 0, 30)
info.Size = UDim2.new(1, -10, 0, 45)
info.BackgroundTransparency = 1
info.TextColor3 = Color3.new(1,1,1)
info.Font = Enum.Font.Gotham
info.TextSize = 14
info.TextWrapped = true
info.Text = "Nearest: none"
-- Labeled TextBox helper
local function newLabeledBox(y, labelText, default, onChange)
local lbl = Instance.new("TextLabel", frame)
lbl.Position = UDim2.new(0.05, 0, 0, y)
lbl.Size = UDim2.new(0.4, -10, 0, 20)
lbl.BackgroundTransparency = 1
lbl.Text = labelText
lbl.TextColor3 = Color3.new(1,1,1)
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 14
lbl.TextXAlignment = Enum.TextXAlignment.Left
local box = Instance.new("TextBox", frame)
box.Position = UDim2.new(0.55, 0, 0, y)
box.Size = UDim2.new(0.4, 0, 0, 20)
box.Text = tostring(default)
box.ClearTextOnFocus= false
box.BackgroundColor3= Color3.fromRGB(50,50,50)
box.TextColor3 = Color3.new(1,1,1)
box.Font = Enum.Font.Gotham
box.TextSize = 14
Instance.new("UICorner", box).CornerRadius = UDim.new(0,6)
box.FocusLost:Connect(function(enter)
if enter then
local v = tonumber(box.Text)
if v and v > 0 then
onChange(v)
else
box.Text = tostring(default)
end
end
end)
return box
end
local scanBox = newLabeledBox(80, "Scan Radius", SCAN_RADIUS, function(v) SCAN_RADIUS = v end)
local proxBox = newLabeledBox(105, "ProximityPrompt Radius", PROX_RADIUS, function(v)
PROX_RADIUS = v
enforcePromptRange()
end)
-- Button factory
local function newButton(text, posX, color)
local b = Instance.new("TextButton", frame)
b.Size = UDim2.new(0.25, 0, 0, 35)
b.Position = UDim2.new(posX, 0, 1, -45)
b.BackgroundColor3 = color
b.TextColor3 = Color3.new(1,1,1)
b.Font = Enum.Font.GothamBold
b.TextSize = 16
b.Text = text
Instance.new("UICorner", b).CornerRadius = UDim.new(0,6)
return b
end
local useBtn = newButton("Use", 0.05, Color3.fromRGB(0,170,0))
local methodBtn = newButton("Method: Hold", 0.36, Color3.fromRGB(70,70,70))
local autoBtn = newButton("Auto: Off", 0.67, Color3.fromRGB(70,70,70))
useBtn.MouseButton1Click:Connect(function()
if currentTarget then
if currentTarget:IsA("ProximityPrompt") then
fireProximity(currentTarget)
else
fireClick(currentTarget)
end
end
end)
methodBtn.MouseButton1Click:Connect(function()
INSTANT_METHOD = not INSTANT_METHOD
methodBtn.Text = INSTANT_METHOD and "Method: Instant" or "Method: Hold"
methodBtn.BackgroundColor3 = INSTANT_METHOD and Color3.fromRGB(0,170,0) or Color3.fromRGB(70,70,70)
end)
autoBtn.MouseButton1Click:Connect(function()
AUTO_FIRE = not AUTO_FIRE
autoBtn.Text = AUTO_FIRE and "Auto: On" or "Auto: Off"
autoBtn.BackgroundColor3 = AUTO_FIRE and Color3.fromRGB(0,170,0) or Color3.fromRGB(70,70,70)
end)
-- Toggle GUI
UserInputService.InputBegan:Connect(function(input, gp)
if not gp and input.KeyCode == TOGGLE_KEY then
gui.Enabled = not gui.Enabled
end
end)
-- Respawn handler
LocalPlayer.CharacterAdded:Connect(function(char)
character = char
hrp = resolveHRP(char)
currentTarget = nil
end)
-- Main scan loop with HRP re‑resolution
task.spawn(function()
while true do
task.wait(0.1)
-- Re-acquire HRP if missing (mid‑session death/rerig)
if not hrp or not hrp.Parent then
character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
hrp = resolveHRP(character)
currentTarget = nil
end
if hrp and hrp.Parent then
local nearest, kind, bestDist = nil, nil, SCAN_RADIUS
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("ProximityPrompt") or obj:IsA("ClickDetector") then
local pos = getInteractablePosition(obj)
if pos then
local d = (pos - hrp.Position).Magnitude
if d <= SCAN_RADIUS and d <= bestDist then
nearest, kind, bestDist = obj, obj.ClassName, d
end
end
end
end
if nearest then
currentTarget = nearest
info.Text = string.format(
"Nearest: %s on \"%s\"\n(%.1f studs)",
kind, nearest.Parent.Name, bestDist
)
if AUTO_FIRE then
if kind == "ProximityPrompt" then
fireProximity(nearest)
else
fireClick(nearest)
end
end
else
currentTarget = nil
info.Text = "Nearest: none"
end
end
end
end)No comments yet for this script.



