
Key Required

-- ARAM_EXPLOITS.lua
-- Full standalone LocalScript for Roblox Studio
-- Place in StarterPlayer > StarterPlayerScripts
-- Features: Blue UI, draggable window, A button, ESP, Speed slider, NoClip,
-- Floating AIMBOT [MMB], target lock until 0 HP, ignore Rat & RatCriminal.
local Players=game:GetService("Players")
local UIS=game:GetService("UserInputService")
local RS=game:GetService("RunService")
local VIM=game:GetService("VirtualInputManager")
local player=Players.LocalPlayer
local camera=workspace.CurrentCamera
-- =========================
-- ONE-SCRIPT KEY SYSTEM
-- =========================
-- Local-only key check. This is convenient for a single-script setup,
-- but it is NOT secure against someone inspecting the LocalScript.
local VALID_KEY="ARAM-2026"
local LINK="https://link-hub.net/4890633/YHGbs3YoPMqL"
local keyVerified=false
local function createKeySystem(parentGui,onUnlocked)
local keyFrame=Instance.new("Frame",parentGui)
keyFrame.Name="KeySystem"
keyFrame.Size=UDim2.fromOffset(390,280)
keyFrame.Position=UDim2.new(.5,-195,.5,-120)
keyFrame.BackgroundColor3=Color3.fromRGB(22,22,28)
keyFrame.BorderSizePixel=0
Instance.new("UICorner",keyFrame).CornerRadius=UDim.new(0,20)
local keyStroke=Instance.new("UIStroke",keyFrame)
keyStroke.Color=Color3.fromRGB(70,220,255)
keyStroke.Thickness=1.5
local title=Instance.new("TextLabel",keyFrame)
title.BackgroundTransparency=1
title.Position=UDim2.fromOffset(20,18)
title.Size=UDim2.new(1,-40,0,30)
title.Text="ARAM_EXPLOITS"
title.Font=Enum.Font.GothamBold
title.TextSize=24
title.TextColor3=Color3.fromRGB(120,230,255)
local subtitle=Instance.new("TextLabel",keyFrame)
subtitle.BackgroundTransparency=1
subtitle.Position=UDim2.fromOffset(20,48)
subtitle.Size=UDim2.new(1,-40,0,24)
subtitle.Text="KEY SYSTEM"
subtitle.Font=Enum.Font.Gotham
subtitle.TextSize=13
subtitle.TextColor3=Color3.fromRGB(160,160,170)
local box=Instance.new("TextBox",keyFrame)
box.Size=UDim2.new(1,-40,0,44)
box.Position=UDim2.fromOffset(20,84)
box.BackgroundColor3=Color3.fromRGB(35,35,40)
box.BorderSizePixel=0
box.ClearTextOnFocus=false
box.PlaceholderText="Enter key..."
box.Text=""
box.Font=Enum.Font.Gotham
box.TextSize=16
box.TextColor3=Color3.new(1,1,1)
box.PlaceholderColor3=Color3.fromRGB(100,100,110)
box.TextXAlignment=Enum.TextXAlignment.Center
Instance.new("UICorner",box).CornerRadius=UDim.new(0,12)
local getKey=Instance.new("TextButton",keyFrame)
getKey.Size=UDim2.new(1,-40,0,42)
getKey.Position=UDim2.fromOffset(20,138)
getKey.BackgroundColor3=Color3.fromRGB(40,160,255)
getKey.BorderSizePixel=0
getKey.Text="GET KEY"
getKey.Font=Enum.Font.GothamBold
getKey.TextSize=15
getKey.TextColor3=Color3.new(1,1,1)
Instance.new("UICorner",getKey).CornerRadius=UDim.new(0,12)
local unlock=Instance.new("TextButton",keyFrame)
unlock.Size=UDim2.new(1,-40,0,42)
unlock.Position=UDim2.fromOffset(20,186)
unlock.BackgroundColor3=Color3.fromRGB(40,170,40)
unlock.BorderSizePixel=0
unlock.Text="UNLOCK"
unlock.Font=Enum.Font.GothamBold
unlock.TextSize=15
unlock.TextColor3=Color3.new(1,1,1)
Instance.new("UICorner",unlock).CornerRadius=UDim.new(0,12)
local status=Instance.new("TextLabel",keyFrame)
status.BackgroundTransparency=1
status.Position=UDim2.fromOffset(20,234)
status.Size=UDim2.new(1,-40,0,24)
status.Text="Enter your key"
status.Font=Enum.Font.Gotham
status.TextSize=12
status.TextColor3=Color3.fromRGB(190,190,200)
local function tryUnlock()
if box.Text==VALID_KEY then
keyVerified=true
status.Text="KEY ACCEPTED"
status.TextColor3=Color3.fromRGB(80,210,100)
task.wait(0.15)
keyFrame.Visible=false
if onUnlocked then
onUnlocked()
end
return true
else
status.Text="INVALID KEY"
status.TextColor3=Color3.fromRGB(220,70,70)
box.Text=""
box:CaptureFocus()
return false
end
end
getKey.MouseButton1Click:Connect(function()
local opened=false
pcall(function()
local GuiService=game:GetService("GuiService")
if GuiService and typeof(GuiService.OpenBrowserWindow)=="function" then
GuiService:OpenBrowserWindow(LINK)
opened=true
end
end)
pcall(function()
if setclipboard then
setclipboard(LINK)
end
end)
if opened then
status.Text="Link opened! Complete Linkvertise to get your key."
else
status.Text=LINK
end
status.TextColor3=Color3.fromRGB(80,210,255)
end)
unlock.MouseButton1Click:Connect(tryUnlock)
box.FocusLost:Connect(function(enterPressed)
if enterPressed then
tryUnlock()
end
end)
-- Allow the key window to be moved with a mouse or finger.
local dragging=false
local dragStart=nil
local startPos=nil
keyFrame.Active=true
keyFrame.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
dragging=true
dragStart=i.Position
startPos=keyFrame.Position
end
end)
UIS.InputChanged:Connect(function(i)
if dragging
and (i.UserInputType==Enum.UserInputType.MouseMovement
or i.UserInputType==Enum.UserInputType.Touch) then
local d=i.Position-dragStart
keyFrame.Position=UDim2.new(
startPos.X.Scale,
startPos.X.Offset+d.X,
startPos.Y.Scale,
startPos.Y.Offset+d.Y
)
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
dragging=false
end
end)
return keyFrame
end
local espEnabled=false
local noclipEnabled=false
local aimbotEnabled=false
local speedValue=16
local currentTarget=nil
local aimButton=nil
local autoBiteEnabled=false
local autoBiteButton=nil
-- GUI
local gui=Instance.new("ScreenGui")
gui.Name="ARAM_EXPLOITS"
gui.ResetOnSpawn=false
gui.IgnoreGuiInset=true
gui.Parent=player:WaitForChild("PlayerGui")
local A=Instance.new("TextButton",gui)
A.Size=UDim2.fromOffset(54,54)
A.Position=UDim2.new(.5,-27,0,14)
A.Text="A"
A.Font=Enum.Font.GothamBlack
A.TextScaled=true
A.BackgroundColor3=Color3.fromRGB(22,22,28)
A.TextColor3=Color3.fromRGB(120,230,255)
A.Visible=false
Instance.new("UICorner",A).CornerRadius=UDim.new(1,0)
local AStroke=Instance.new("UIStroke",A)
AStroke.Color=Color3.fromRGB(70,220,255)
local frame=Instance.new("Frame",gui)
frame.Size=UDim2.fromOffset(720,500)
frame.Position=UDim2.new(.5,-175,.5,-210)
frame.BackgroundColor3=Color3.fromRGB(22,22,28)
frame.Visible=false
Instance.new("UICorner",frame).CornerRadius=UDim.new(0,20)
local fStroke=Instance.new("UIStroke",frame)
fStroke.Color=Color3.fromRGB(70,220,255)
local grad=Instance.new("UIGradient",frame)
grad.Color=ColorSequence.new{
ColorSequenceKeypoint.new(0,Color3.fromRGB(30,30,36)),
ColorSequenceKeypoint.new(1,Color3.fromRGB(15,15,20))
}
grad.Rotation=90
local keyFrame=createKeySystem(gui,function()
A.Visible=true
frame.Visible=false
end)
local header=Instance.new("Frame",frame)
header.Size=UDim2.new(1,0,0,55)
header.BackgroundTransparency=1
local title=Instance.new("TextLabel",header)
title.BackgroundTransparency=1
title.Position=UDim2.fromOffset(18,8)
title.Size=UDim2.new(1,-90,0,22)
title.Text="ARAM_EXPLOITS"
title.TextXAlignment=Enum.TextXAlignment.Left
title.Font=Enum.Font.GothamBold
title.TextSize=22
title.TextColor3=Color3.fromRGB(120,230,255)
local desc=Instance.new("TextLabel",header)
desc.BackgroundTransparency=1
desc.Position=UDim2.fromOffset(18,30)
desc.Size=UDim2.new(1,-90,0,16)
desc.Text="Premium Utility Hub"
desc.TextXAlignment=Enum.TextXAlignment.Left
desc.Font=Enum.Font.Gotham
desc.TextSize=11
desc.TextColor3=Color3.fromRGB(120,120,130)
local mini=Instance.new("TextButton",header)
mini.BackgroundTransparency=1
mini.Text="–"
mini.Position=UDim2.new(1,-58,0,10)
mini.Size=UDim2.fromOffset(22,22)
local close=Instance.new("TextButton",header)
close.BackgroundTransparency=1
close.Text="✕"
close.Position=UDim2.new(1,-30,0,10)
close.Size=UDim2.fromOffset(22,22)
local line=Instance.new("Frame",frame)
line.Position=UDim2.fromOffset(15,58)
line.Size=UDim2.new(1,-30,0,1)
line.BackgroundColor3=Color3.fromRGB(50,50,60)
line.BorderSizePixel=0
local body=Instance.new("Frame",frame)
body.Position=UDim2.fromOffset(15,70)
body.Size=UDim2.new(1,-30,1,-85)
body.BackgroundTransparency=1
-- Two-column layout.
-- Left side: ESP / Aimbot / AutoBite / Speed / NoClip
-- Right side: Cheese / Keycard / Teleport
local leftColumn=Instance.new("Frame",body)
leftColumn.Name="LeftColumn"
leftColumn.Position=UDim2.new(0,0,0,0)
leftColumn.Size=UDim2.new(0.49,-5,1,0)
leftColumn.BackgroundTransparency=1
local rightColumn=Instance.new("Frame",body)
rightColumn.Name="RightColumn"
rightColumn.Position=UDim2.new(0.51,5,0,0)
rightColumn.Size=UDim2.new(0.49,-5,1,0)
rightColumn.BackgroundTransparency=1
local leftLayout=Instance.new("UIListLayout",leftColumn)
leftLayout.Padding=UDim.new(0,10)
local rightLayout=Instance.new("UIListLayout",rightColumn)
rightLayout.Padding=UDim.new(0,10)
local function card(h)
local f=Instance.new("Frame",body)
f.Size=UDim2.new(1,0,0,h)
f.BackgroundColor3=Color3.fromRGB(35,35,40)
f.BorderSizePixel=0
Instance.new("UICorner",f).CornerRadius=UDim.new(0,12)
return f
end
local function switchCard(name)
local f=card(50)
local t=Instance.new("TextLabel",f)
t.BackgroundTransparency=1
t.Position=UDim2.fromOffset(15,0)
t.Size=UDim2.new(.6,0,1,0)
t.Text=name
t.TextXAlignment=Enum.TextXAlignment.Left
t.Font=Enum.Font.GothamBold
t.TextSize=16
t.TextColor3=Color3.new(1,1,1)
local b=Instance.new("TextButton",f)
b.Size=UDim2.fromOffset(70,30)
b.Position=UDim2.new(1,-80,.5,-15)
b.Text="OFF"
b.BackgroundColor3=Color3.fromRGB(170,40,40)
Instance.new("UICorner",b).CornerRadius=UDim.new(1,0)
return b
end
local espBtn=switchCard("ESP")
local aimBtn=switchCard("Aimbot")
aimBtn.Text="ADD"
local autoBiteBtn=switchCard("AutoBite")
autoBiteBtn.Text="ADD"
local speedCard=card(75)
local speedText=Instance.new("TextLabel",speedCard)
speedText.BackgroundTransparency=1
speedText.Position=UDim2.fromOffset(15,8)
speedText.Size=UDim2.new(1,-30,0,20)
speedText.Text="Speed : 16"
speedText.TextXAlignment=Enum.TextXAlignment.Left
speedText.Font=Enum.Font.GothamBold
speedText.TextColor3=Color3.new(1,1,1)
local bar=Instance.new("Frame",speedCard)
bar.Position=UDim2.fromOffset(15,42)
bar.Size=UDim2.new(1,-30,0,10)
bar.BackgroundColor3=Color3.fromRGB(55,55,65)
Instance.new("UICorner",bar).CornerRadius=UDim.new(1,0)
local fill=Instance.new("Frame",bar)
fill.Size=UDim2.new(.16,0,1,0)
fill.BackgroundColor3=Color3.fromRGB(70,220,255)
Instance.new("UICorner",fill).CornerRadius=UDim.new(1,0)
local knob=Instance.new("Frame",bar)
knob.Size=UDim2.fromOffset(18,18)
knob.Position=UDim2.new(.16,-9,.5,-9)
knob.BackgroundColor3=Color3.fromRGB(170,245,255)
Instance.new("UICorner",knob).CornerRadius=UDim.new(1,0)
local noclipBtn=switchCard("NoClip")
-- One-click Cheese pickup
local cheeseCard=card(50)
local cheeseBtn=Instance.new("TextButton",cheeseCard)
cheeseBtn.Size=UDim2.new(1,-20,1,-10)
cheeseBtn.Position=UDim2.fromOffset(10,5)
cheeseBtn.Text="TAKE CHEESE"
cheeseBtn.Font=Enum.Font.GothamBold
cheeseBtn.TextSize=15
cheeseBtn.TextColor3=Color3.new(1,1,1)
cheeseBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
Instance.new("UICorner",cheeseBtn).CornerRadius=UDim.new(0,12)
-- One-click Keycard pickup
local keycardCard=card(50)
local keycardBtn=Instance.new("TextButton",keycardCard)
keycardBtn.Size=UDim2.new(1,-20,1,-10)
keycardBtn.Position=UDim2.fromOffset(10,5)
keycardBtn.Text="TAKE KEYCARD"
keycardBtn.Font=Enum.Font.GothamBold
keycardBtn.TextSize=15
keycardBtn.TextColor3=Color3.new(1,1,1)
keycardBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
Instance.new("UICorner",keycardBtn).CornerRadius=UDim.new(0,12)
-- TELEPORT section
local teleportHeader=Instance.new("Frame",body)
teleportHeader.Size=UDim2.new(1,0,0,24)
teleportHeader.BackgroundTransparency=1
local teleportSection=Instance.new("TextLabel",teleportHeader)
teleportSection.Size=UDim2.new(0.38,0,1,0)
teleportSection.BackgroundTransparency=1
teleportSection.Text="TELEPORT"
teleportSection.TextXAlignment=Enum.TextXAlignment.Left
teleportSection.Font=Enum.Font.GothamBold
teleportSection.TextSize=18
teleportSection.TextColor3=Color3.fromRGB(120,230,255)
local teleportWarning=Instance.new("TextLabel",teleportHeader)
teleportWarning.Size=UDim2.new(0.62,0,1,0)
teleportWarning.Position=UDim2.new(0.38,0,0,0)
teleportWarning.BackgroundTransparency=1
teleportWarning.Text="( Do not use teleport with noclip )"
teleportWarning.TextXAlignment=Enum.TextXAlignment.Right
teleportWarning.Font=Enum.Font.Gotham
teleportWarning.TextSize=11
teleportWarning.TextColor3=Color3.fromRGB(190,190,200)
-- One-click teleport to the Escaped Rat base
local escapedRatCard=card(50)
local escapedRatBtn=Instance.new("TextButton",escapedRatCard)
escapedRatBtn.Size=UDim2.new(1,-20,1,-10)
escapedRatBtn.Position=UDim2.fromOffset(10,5)
escapedRatBtn.Text="TELEPORT TO THE ESCAPEDRAT BASE"
escapedRatBtn.Font=Enum.Font.GothamBold
escapedRatBtn.TextSize=13
escapedRatBtn.TextColor3=Color3.new(1,1,1)
escapedRatBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
Instance.new("UICorner",escapedRatBtn).CornerRadius=UDim.new(0,12)
-- Teleport to the Scientiest Section
local scientistCard=card(50)
local scientistBtn=Instance.new("TextButton",scientistCard)
scientistBtn.Size=UDim2.new(1,-20,1,-10)
scientistBtn.Position=UDim2.fromOffset(10,5)
scientistBtn.Text="TELEPORT TO THE SCIENTIEST SECTION"
scientistBtn.Font=Enum.Font.GothamBold
scientistBtn.TextSize=13
scientistBtn.TextColor3=Color3.new(1,1,1)
scientistBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
Instance.new("UICorner",scientistBtn).CornerRadius=UDim.new(0,12)
-- Put the features into two sides of the UI.
espBtn.Parent.Parent=leftColumn
aimBtn.Parent.Parent=leftColumn
autoBiteBtn.Parent.Parent=leftColumn
speedCard.Parent=leftColumn
noclipBtn.Parent.Parent=leftColumn
cheeseCard.Parent=rightColumn
keycardCard.Parent=rightColumn
teleportHeader.Parent=rightColumn
escapedRatCard.Parent=rightColumn
scientistCard.Parent=rightColumn
-- Responsive UI sizing
local BASE_UI_WIDTH=720
local MIN_UI_SCALE=0.65
local MAX_UI_SCALE=1.35
local function updateResponsiveUI()
local scale=math.clamp(
frame.AbsoluteSize.X/BASE_UI_WIDTH,
MIN_UI_SCALE,
MAX_UI_SCALE
)
-- Keep the two columns balanced as the menu is resized.
leftColumn.Size=UDim2.new(0.49,-5,1,0)
rightColumn.Position=UDim2.new(0.51,5,0,0)
rightColumn.Size=UDim2.new(0.49,-5,1,0)
-- Switch rows.
for _,btn in ipairs({espBtn,aimBtn,autoBiteBtn,noclipBtn}) do
local cardFrame=btn.Parent
if cardFrame then
cardFrame.Size=UDim2.new(1,0,0,50*scale)
btn.Size=UDim2.fromOffset(70*scale,30*scale)
btn.Position=UDim2.new(1,-80*scale,.5,-15*scale)
local label=cardFrame:FindFirstChildWhichIsA("TextLabel")
if label then
label.Position=UDim2.fromOffset(15*scale,0)
label.TextSize=16*scale
end
end
end
-- Speed row.
speedCard.Size=UDim2.new(1,0,0,75*scale)
speedText.Position=UDim2.fromOffset(15*scale,8*scale)
speedText.Size=UDim2.new(1,-30*scale,0,20*scale)
speedText.TextSize=16*scale
bar.Position=UDim2.fromOffset(15*scale,42*scale)
bar.Size=UDim2.new(1,-30*scale,0,10*scale)
fill.Size=UDim2.new(fill.Size.X.Scale,0,1,0)
knob.Size=UDim2.fromOffset(18*scale,18*scale)
knob.Position=UDim2.new(fill.Size.X.Scale,-9*scale,.5,-9*scale)
-- Action rows.
for _,cardFrame in ipairs({cheeseCard,keycardCard,escapedRatCard,scientistCard}) do
if cardFrame then
cardFrame.Size=UDim2.new(1,0,0,50*scale)
end
end
for _,btn in ipairs({cheeseBtn,keycardBtn,escapedRatBtn,scientistBtn}) do
btn.Position=UDim2.fromOffset(10*scale,5*scale)
btn.Size=UDim2.new(1,-20*scale,1,-10*scale)
btn.TextSize=(btn==escapedRatBtn or btn==scientistBtn) and 13*scale or 15*scale
end
-- TELEPORT heading.
teleportHeader.Size=UDim2.new(1,0,0,24*scale)
teleportSection.TextSize=18*scale
teleportWarning.TextSize=11*scale
end
-- Drag (PC + Mobile)
local dragging=false
local dragStart=nil
local startPos=nil
header.Active=true
header.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
dragging=true
dragStart=i.Position
startPos=frame.Position
end
end)
UIS.InputChanged:Connect(function(i)
if dragging
and (i.UserInputType==Enum.UserInputType.MouseMovement
or i.UserInputType==Enum.UserInputType.Touch) then
local d=i.Position-dragStart
frame.Position=UDim2.new(
startPos.X.Scale,
startPos.X.Offset+d.X,
startPos.Y.Scale,
startPos.Y.Offset+d.Y
)
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
dragging=false
end
end)
-- Mobile/PC resize handle
local resizeHandle=Instance.new("TextButton",frame)
resizeHandle.Name="ResizeHandle"
resizeHandle.Size=UDim2.fromOffset(24,24)
resizeHandle.Position=UDim2.new(1,-28,1,-28)
resizeHandle.BackgroundColor3=Color3.fromRGB(70,220,255)
resizeHandle.BackgroundTransparency=0.15
resizeHandle.Text="↘"
resizeHandle.Font=Enum.Font.GothamBold
resizeHandle.TextSize=15
resizeHandle.TextColor3=Color3.new(1,1,1)
resizeHandle.AutoButtonColor=false
resizeHandle.Active=true
Instance.new("UICorner",resizeHandle).CornerRadius=UDim.new(0,6)
local resizing=false
local resizeStart=nil
local startSize=nil
resizeHandle.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
resizing=true
resizeStart=i.Position
startSize=frame.AbsoluteSize
end
end)
UIS.InputChanged:Connect(function(i)
if resizing
and (i.UserInputType==Enum.UserInputType.MouseMovement
or i.UserInputType==Enum.UserInputType.Touch) then
local d=i.Position-resizeStart
local newWidth=math.clamp(
startSize.X+d.X,
280,
math.max(300,workspace.CurrentCamera.ViewportSize.X-20)
)
local newHeight=math.clamp(
startSize.Y+d.Y,
300,
math.max(350,workspace.CurrentCamera.ViewportSize.Y-20)
)
frame.Size=UDim2.fromOffset(newWidth,newHeight)
updateResponsiveUI()
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
resizing=false
end
end)
updateResponsiveUI()
A.MouseButton1Click:Connect(function() frame.Visible=not frame.Visible end)
close.MouseButton1Click:Connect(function() frame.Visible=false end)
local minimized=false
mini.MouseButton1Click:Connect(function()
minimized=not minimized
body.Visible=not minimized
frame.Size=minimized and UDim2.fromOffset(350,65) or UDim2.fromOffset(720,500)
if not minimized then
task.defer(updateResponsiveUI)
end
end)
-- Speed slider
local sliding=false
local speedConnections={}
local function disconnectSpeedConnections()
for _,connection in ipairs(speedConnections) do
if connection then
connection:Disconnect()
end
end
table.clear(speedConnections)
end
local function applySpeed(h)
if h and h.Parent then
h.WalkSpeed=speedValue
end
end
local function setupHumanoidSpeed(c)
disconnectSpeedConnections()
local h=c:WaitForChild("Humanoid")
-- Apply the saved value immediately after spawning.
applySpeed(h)
-- Keep the selected value when something in the game changes WalkSpeed.
-- This is for the user's own game; the server should still be the authority
-- for any intended gameplay limits.
table.insert(speedConnections,h:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
if h.WalkSpeed~=speedValue then
applySpeed(h)
end
end))
end
local function updateSpeedSliderFromX(x)
x=math.clamp(x,0,1)
speedValue=math.max(1,math.floor(x*100))
fill.Size=UDim2.new(x,0,1,0)
knob.Position=UDim2.new(x,-9,.5,-9)
speedText.Text="Speed : "..speedValue
local c=player.Character
local h=c and c:FindFirstChildOfClass("Humanoid")
applySpeed(h)
end
bar.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1 then
sliding=true
local x=(i.Position.X-bar.AbsolutePosition.X)/bar.AbsoluteSize.X
updateSpeedSliderFromX(x)
end
end)
knob.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1 then
sliding=true
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1 then
sliding=false
local c=player.Character
local h=c and c:FindFirstChildOfClass("Humanoid")
applySpeed(h)
end
end)
UIS.InputChanged:Connect(function(i)
if sliding and i.UserInputType==Enum.UserInputType.MouseMovement then
local x=(i.Position.X-bar.AbsolutePosition.X)/bar.AbsoluteSize.X
updateSpeedSliderFromX(x)
end
end)
player.CharacterAdded:Connect(function(c)
setupHumanoidSpeed(c)
end)
if player.Character then
task.spawn(setupHumanoidSpeed,player.Character)
end
-- ESP
local function refreshESP()
for _,p in ipairs(Players:GetPlayers()) do
if p~=player and p.Character then
local h=p.Character:FindFirstChild("ARAM_ESP")
if espEnabled then
if not h then
h=Instance.new("Highlight")
h.Name="ARAM_ESP"
h.FillColor=Color3.fromRGB(70,220,255)
h.OutlineColor=Color3.new(1,1,1)
h.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop
h.Parent=p.Character
end
elseif h then
h:Destroy()
end
end
end
end
-- Floating Aimbot button
local function updateAimButton()
if aimButton then
aimButton.BackgroundColor3=aimbotEnabled and Color3.fromRGB(45,175,80) or Color3.fromRGB(180,55,55)
end
end
local function toggleAim()
aimbotEnabled=not aimbotEnabled
if not aimbotEnabled then currentTarget=nil end
updateAimButton()
end
local function createAimButton()
if aimButton then aimButton.Visible=true return end
aimButton=Instance.new("TextButton",gui)
aimButton.Size=UDim2.fromOffset(170,50)
aimButton.Position=UDim2.new(1,-190,.5,-25)
aimButton.Text="🔫 AIMBOT [MMB]"
aimButton.Font=Enum.Font.GothamBold
aimButton.TextSize=16
aimButton.TextColor3=Color3.new(1,1,1)
Instance.new("UICorner",aimButton).CornerRadius=UDim.new(0,14)
local st=Instance.new("UIStroke",aimButton)
st.Color=Color3.fromRGB(120,230,255)
updateAimButton()
aimButton.MouseButton1Click:Connect(toggleAim)
local drag=false
local ds=nil
local sp=nil
aimButton.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
drag=true
ds=i.Position
sp=aimButton.Position
end
end)
UIS.InputChanged:Connect(function(i)
if drag
and (i.UserInputType==Enum.UserInputType.MouseMovement
or i.UserInputType==Enum.UserInputType.Touch) then
local d=i.Position-ds
aimButton.Position=UDim2.new(
sp.X.Scale,
sp.X.Offset+d.X,
sp.Y.Scale,
sp.Y.Offset+d.Y
)
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
drag=false
end
end)
end
local function removeAimButton()
aimbotEnabled=false
currentTarget=nil
if aimButton then aimButton:Destroy() aimButton=nil end
aimBtn.Text="ADD"
aimBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
end
UIS.InputBegan:Connect(function(i,gp)
if gp then return end
if i.UserInputType==Enum.UserInputType.MouseButton3 and aimButton then
toggleAim()
end
end)
-- AutoBite floating button
local function updateAutoBiteButton()
if autoBiteButton then
autoBiteButton.BackgroundColor3=autoBiteEnabled
and Color3.fromRGB(45,175,80)
or Color3.fromRGB(180,55,55)
autoBiteButton.Text="🦷 AUTOBITE"
end
end
local function toggleAutoBite()
autoBiteEnabled=not autoBiteEnabled
if not autoBiteEnabled then
updateAutoBiteButton()
return
end
updateAutoBiteButton()
task.spawn(function()
while autoBiteEnabled and autoBiteButton and autoBiteButton.Parent do
pcall(function()
VIM:SendKeyEvent(true,Enum.KeyCode.Q,false,game)
task.wait(0.06)
VIM:SendKeyEvent(false,Enum.KeyCode.Q,false,game)
end)
task.wait(0.06)
end
end)
end
local function createAutoBiteButton()
if autoBiteButton then
autoBiteButton.Visible=true
return
end
autoBiteButton=Instance.new("TextButton",gui)
autoBiteButton.Size=UDim2.fromOffset(170,50)
autoBiteButton.Position=UDim2.new(1,-190,.5,35)
autoBiteButton.Text="🦷 AUTOBITE"
autoBiteButton.Font=Enum.Font.GothamBold
autoBiteButton.TextSize=16
autoBiteButton.TextColor3=Color3.new(1,1,1)
Instance.new("UICorner",autoBiteButton).CornerRadius=UDim.new(0,14)
local st=Instance.new("UIStroke",autoBiteButton)
st.Color=Color3.fromRGB(120,230,255)
updateAutoBiteButton()
autoBiteButton.MouseButton1Click:Connect(toggleAutoBite)
local drag=false
local ds,sp
autoBiteButton.InputBegan:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
drag=true
ds=i.Position
sp=autoBiteButton.Position
end
end)
UIS.InputChanged:Connect(function(i)
if drag
and (i.UserInputType==Enum.UserInputType.MouseMovement
or i.UserInputType==Enum.UserInputType.Touch) then
local d=i.Position-ds
autoBiteButton.Position=UDim2.new(
sp.X.Scale,
sp.X.Offset+d.X,
sp.Y.Scale,
sp.Y.Offset+d.Y
)
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType==Enum.UserInputType.MouseButton1
or i.UserInputType==Enum.UserInputType.Touch then
drag=false
end
end)
end
local function removeAutoBiteButton()
autoBiteEnabled=false
if autoBiteButton then
autoBiteButton:Destroy()
autoBiteButton=nil
end
autoBiteBtn.Text="ADD"
autoBiteBtn.BackgroundColor3=Color3.fromRGB(170,40,40)
end
-- Buttons
local function setBtn(btn,on)
btn.Text=on and "ON" or "OFF"
btn.BackgroundColor3=on and Color3.fromRGB(40,170,40) or Color3.fromRGB(170,40,40)
end
espBtn.MouseButton1Click:Connect(function()
espEnabled=not espEnabled
setBtn(espBtn,espEnabled)
refreshESP()
end)
noclipBtn.MouseButton1Click:Connect(function()
noclipEnabled=not noclipEnabled
setBtn(noclipBtn,noclipEnabled)
end)
aimBtn.MouseButton1Click:Connect(function()
if not aimButton then
createAimButton()
aimBtn.Text="HIDE"
aimBtn.BackgroundColor3=Color3.fromRGB(70,150,220)
else
removeAimButton()
end
end)
autoBiteBtn.MouseButton1Click:Connect(function()
if not autoBiteButton then
createAutoBiteButton()
autoBiteBtn.Text="HIDE"
autoBiteBtn.BackgroundColor3=Color3.fromRGB(70,150,220)
else
removeAutoBiteButton()
end
end)
-- Cheese pickup
local cheeseBusy=false
local function normalizedName(name)
return string.lower((name or ""):gsub("%s+",""))
end
local function findCheeseTrays()
local trays={}
-- Search the whole Workspace instead of only Workspace.Cafeteria.
-- Some games put the visible "Cheese Tray" objects in nested folders/models.
for _,obj in ipairs(workspace:GetDescendants()) do
if normalizedName(obj.Name)=="cheesetray" then
local prompt=obj:FindFirstChildWhichIsA("ProximityPrompt",true)
-- Also check the object's ancestors in case the prompt is attached
-- to a nearby part/model rather than directly inside the tray.
if not prompt then
local parent=obj.Parent
for _=1,4 do
if not parent then break end
prompt=parent:FindFirstChildWhichIsA("ProximityPrompt",true)
if prompt then break end
parent=parent.Parent
end
end
local targetCFrame=nil
if obj:IsA("BasePart") then
targetCFrame=obj.CFrame
elseif obj:IsA("Model") then
targetCFrame=obj:GetPivot()
else
local part=obj:FindFirstChildWhichIsA("BasePart",true)
if part then
targetCFrame=part.CFrame
end
end
if targetCFrame then
table.insert(trays,{
object=obj,
prompt=prompt,
cframe=targetCFrame
})
end
end
end
return trays
end
local function findTakeTrayButton()
local playerGui=player:FindFirstChild("PlayerGui")
if not playerGui then return nil end
for _,guiObject in ipairs(playerGui:GetDescendants()) do
if guiObject:IsA("GuiButton") and guiObject.Visible and guiObject.Active then
local buttonText=""
pcall(function()
buttonText=guiObject.Text or ""
end)
local normalized=string.lower(buttonText):gsub("%s+","")
if normalized=="taketray" or normalized:find("taketray",1,true) then
return guiObject
end
end
end
return nil
end
local function findTakeKeycardButton()
local playerGui=player:FindFirstChild("PlayerGui")
if not playerGui then return nil end
for _,guiObject in ipairs(playerGui:GetDescendants()) do
if guiObject:IsA("GuiButton") and guiObject.Visible and guiObject.Active then
local buttonText=""
pcall(function()
buttonText=guiObject.Text or ""
end)
local normalized=string.lower(buttonText):gsub("%s+","")
if normalized=="takekeycard" or normalized:find("takekeycard",1,true) then
return guiObject
end
end
end
return nil
end
local function activateTakeKeycardUI(timeout)
local deadline=os.clock()+(timeout or 1.5)
while os.clock()<deadline do
local button=findTakeKeycardButton()
if button then
local ok=pcall(function()
button:Activate()
end)
if ok then
return true
end
end
task.wait(0.05)
end
return false
end
local function activateTakeTrayUI(timeout)
local deadline=os.clock()+(timeout or 1.2)
while os.clock()<deadline do
local button=findTakeTrayButton()
if button then
local ok=pcall(function()
button:Activate()
end)
if ok then
return true
end
end
task.wait(0.05)
end
return false
end
local function takeRandomCheese()
if cheeseBusy then return end
cheeseBusy=true
local character=player.Character
local root=character and character:FindFirstChild("HumanoidRootPart")
if not root then
cheeseBusy=false
return
end
local trays=findCheeseTrays()
if #trays==0 then
cheeseBtn.Text="NO CHEESE"
task.wait(0.8)
cheeseBtn.Text="TAKE CHEESE"
cheeseBusy=false
return
end
local oldCFrame=root.CFrame
local chosen=trays[math.random(1,#trays)]
local trayCFrame=chosen.cframe
local prompt=chosen.prompt
-- Teleport near the selected cheese.
root.CFrame=trayCFrame*CFrame.new(0,2.5,0)
task.wait(0.35)
cheeseBtn.Text="TAKING..."
-- Mobile-friendly route:
-- if the game creates a visible "Take Tray" button in PlayerGui,
-- activate that exact button.
local usedMobileButton=activateTakeTrayUI(1.2)
-- Standard ProximityPrompt fallback, if one exists.
if not usedMobileButton and prompt and prompt.Parent and prompt.Enabled then
pcall(function()
prompt:InputHoldBegin()
local holdTime=tonumber(prompt.HoldDuration) or 0
task.wait(math.max(0.1,holdTime+0.1))
prompt:InputHoldEnd()
end)
task.wait(0.2)
end
-- Desktop / keyboard fallback:
-- the interaction shown in the game uses the F key.
if not usedMobileButton then
pcall(function()
VIM:SendKeyEvent(true,Enum.KeyCode.F,false,game)
task.wait(0.08)
VIM:SendKeyEvent(false,Enum.KeyCode.F,false,game)
end)
task.wait(0.4)
end
-- Return to the exact starting position.
if root and root.Parent then
root.CFrame=oldCFrame
end
cheeseBtn.Text="TAKE CHEESE"
cheeseBusy=false
end
cheeseBtn.MouseButton1Click:Connect(takeRandomCheese)
-- Keycard pickup
local keycardBusy=false
local function findKeycardDrops()
local drops={}
for _,obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("Model") and string.find(obj.Name,"BLR_KeycardDrop",1,true) then
local pivot=obj:GetPivot()
table.insert(drops,{
object=obj,
cframe=pivot
})
end
end
return drops
end
local function takeRandomKeycard()
if keycardBusy then return end
keycardBusy=true
local character=player.Character
local root=character and character:FindFirstChild("HumanoidRootPart")
if not root then
keycardBusy=false
return
end
local drops=findKeycardDrops()
if #drops==0 then
keycardBtn.Text="NO KEYCARD"
task.wait(0.8)
keycardBtn.Text="TAKE KEYCARD"
keycardBusy=false
return
end
local oldCFrame=root.CFrame
local chosen=drops[math.random(1,#drops)]
-- Teleport near the selected keycard.
root.CFrame=chosen.cframe*CFrame.new(0,2.5,0)
task.wait(0.4)
keycardBtn.Text="TAKING..."
-- Mobile-friendly: activate the game's visible "Take Keycard" button.
local usedUI=activateTakeKeycardUI(1.5)
-- Desktop / keyboard fallback: the game shows E for this interaction.
if not usedUI then
pcall(function()
VIM:SendKeyEvent(true,Enum.KeyCode.E,false,game)
task.wait(0.08)
VIM:SendKeyEvent(false,Enum.KeyCode.E,false,game)
end)
task.wait(0.4)
end
-- Return to the exact starting position.
if root and root.Parent then
root.CFrame=oldCFrame
end
keycardBtn.Text="TAKE KEYCARD"
keycardBusy=false
end
keycardBtn.MouseButton1Click:Connect(takeRandomKeycard)
-- Escaped Rat base teleport
local function findEscapedRatBase()
-- Exact object name shown in Explorer.
local exact=workspace:FindFirstChild("EscapedRatSewerGrate",true)
if exact then
return exact
end
-- Fallback: any object containing EscapedRatSewerGrate in its name.
for _,obj in ipairs(workspace:GetDescendants()) do
local name=string.lower(obj.Name)
if string.find(name,"escapedratsewergrate",1,true) then
return obj
end
end
return nil
end
local function getTeleportCFrame(obj)
if obj:IsA("BasePart") then
return obj.CFrame
elseif obj:IsA("Model") then
return obj:GetPivot()
elseif obj:IsA("Attachment") then
return obj.WorldCFrame
end
local parts={}
for _,desc in ipairs(obj:GetDescendants()) do
if desc:IsA("BasePart") then
table.insert(parts,desc)
end
end
if #parts==0 then
return nil
end
local minX,maxX=math.huge,-math.huge
local minY,maxY=math.huge,-math.huge
local minZ,maxZ=math.huge,-math.huge
for _,part in ipairs(parts) do
local half=part.Size*0.5
local p=part.Position
minX=math.min(minX,p.X-half.X)
maxX=math.max(maxX,p.X+half.X)
minY=math.min(minY,p.Y-half.Y)
maxY=math.max(maxY,p.Y+half.Y)
minZ=math.min(minZ,p.Z-half.Z)
maxZ=math.max(maxZ,p.Z+half.Z)
end
return CFrame.new(
(minX+maxX)*0.5,
(minY+maxY)*0.5,
(minZ+maxZ)*0.5
)
end
local function teleportToEscapedRatBase()
local character=player.Character
local root=character and character:FindFirstChild("HumanoidRootPart")
if not root then
return
end
local target=findEscapedRatBase()
if not target then
escapedRatBtn.Text="BASE NOT FOUND"
task.wait(0.8)
escapedRatBtn.Text="TELEPORT TO THE ESCAPEDRAT BASE"
return
end
local targetCFrame=getTeleportCFrame(target)
if not targetCFrame then
escapedRatBtn.Text="NO POSITION"
task.wait(0.8)
escapedRatBtn.Text="TELEPORT TO THE ESCAPEDRAT BASE"
return
end
escapedRatBtn.Text="TELEPORTING..."
-- Teleport slightly above the grate and stay there.
root.CFrame=CFrame.new(targetCFrame.Position+Vector3.new(0,5,0))
task.wait(0.4)
escapedRatBtn.Text="TELEPORT TO THE ESCAPEDRAT BASE"
end
escapedRatBtn.MouseButton1Click:Connect(teleportToEscapedRatBase)
-- Scientiest Section teleport
local function cleanName(name)
return string.lower((name or ""):gsub("%s+",""))
end
local function hasAncestorNamed(obj, wantedNames)
local current=obj.Parent
while current do
local n=cleanName(current.Name)
for _,wanted in ipairs(wantedNames) do
if n==wanted then
return true
end
end
current=current.Parent
end
return false
end
local function findScientiestLever()
-- Find LeverPullDown anywhere in the game first.
-- Then prefer the one that is actually inside ScientistSection/MouseTrap.
local candidates={}
for _,obj in ipairs(game:GetDescendants()) do
if cleanName(obj.Name)=="leverpulldown" then
table.insert(candidates,obj)
end
end
-- Best match: LeverPullDown inside ScientistSection.
for _,obj in ipairs(candidates) do
if hasAncestorNamed(obj,{"scientistsection","scientiestsection"}) then
return obj
end
end
-- Second-best match: LeverPullDown inside MouseTrap.
for _,obj in ipairs(candidates) do
if hasAncestorNamed(obj,{"mousetrap"}) then
return obj
end
end
-- Last fallback: if there is only one LeverPullDown, use it.
if #candidates==1 then
return candidates[1]
end
return nil
end
local function teleportToScientiestSection()
local character=player.Character
local root=character and character:FindFirstChild("HumanoidRootPart")
if not root then
return
end
local target=findScientiestLever()
if not target then
scientistBtn.Text="LEVER NOT FOUND"
task.wait(0.8)
scientistBtn.Text="TELEPORT TO THE SCIENTIEST SECTION"
return
end
local targetCFrame=getTeleportCFrame(target)
if not targetCFrame then
scientistBtn.Text="NO POSITION"
task.wait(0.8)
scientistBtn.Text="TELEPORT TO THE SCIENTIEST SECTION"
return
end
scientistBtn.Text="TELEPORTING..."
-- 5 studs above the exact LeverPullDown object.
local p=targetCFrame.Position
root.CFrame=CFrame.new(p.X,p.Y+5,p.Z)
task.wait(0.4)
scientistBtn.Text="TELEPORT TO THE SCIENTIEST SECTION"
end
scientistBtn.MouseButton1Click:Connect(teleportToScientiestSection)
-- NoClip
RS.Stepped:Connect(function()
if noclipEnabled and player.Character then
for _,v in ipairs(player.Character:GetDescendants()) do
if v:IsA("BasePart") then v.CanCollide=false end
end
end
end)
-- Aimbot: nearest 360°, ignore Rat / Criminal Rat / RatCriminal.
-- Team is checked from Player.Team every time a target is selected and while locked.
local function isIgnoredAimbotTeam(p)
if not p then return false end
local teamName=p.Team and p.Team.Name or ""
-- Normalize the team name so "Criminal Rat", "CriminalRat"
-- and "RatCriminal" can all be treated as the protected team.
local normalized=string.lower(teamName):gsub("%s+","")
return normalized=="rat" or normalized=="criminalrat" or normalized=="ratcriminal"
end
local function closestTarget()
local c=player.Character
if not c then return nil end
local root=c:FindFirstChild("HumanoidRootPart")
if not root then return nil end
local best,bestDist=nil,math.huge
for _,p in ipairs(Players:GetPlayers()) do
if p~=player and p.Character and not isIgnoredAimbotTeam(p) then
local hrp=p.Character:FindFirstChild("HumanoidRootPart")
local head=p.Character:FindFirstChild("Head")
local hum=p.Character:FindFirstChildOfClass("Humanoid")
if hrp and head and hum and hum.Health>0 then
local d=(root.Position-hrp.Position).Magnitude
if d<bestDist then
bestDist=d
best=p
end
end
end
end
return best
end
RS.RenderStepped:Connect(function()
if not aimbotEnabled then
currentTarget=nil
return
end
-- Re-check the locked player's team every frame.
if currentTarget then
if isIgnoredAimbotTeam(currentTarget) then
currentTarget=nil
else
local character=currentTarget.Character
local hum=character and character:FindFirstChildOfClass("Humanoid")
local head=character and character:FindFirstChild("Head")
if hum and head and hum.Health>0 then
camera.CFrame=CFrame.new(camera.CFrame.Position,head.Position)
return
end
currentTarget=nil
end
end
currentTarget=closestTarget()
if currentTarget and not isIgnoredAimbotTeam(currentTarget) then
local character=currentTarget.Character
local head=character and character:FindFirstChild("Head")
local hum=character and character:FindFirstChildOfClass("Humanoid")
if head and hum and hum.Health>0 then
camera.CFrame=CFrame.new(camera.CFrame.Position,head.Position)
else
currentTarget=nil
end
end
end)
-- Keep ESP working after players respawn.
local function setupESPRespawn(p)
if p==player then return end
p.CharacterAdded:Connect(function()
task.wait(0.15)
if espEnabled then
refreshESP()
end
end)
end
for _,pl in ipairs(Players:GetPlayers()) do
setupESPRespawn(pl)
end
Players.PlayerAdded:Connect(setupESPRespawn)
refreshESP()No comments yet for this script.