Skip to content

Instantly share code, notes, and snippets.

@Surpprf
Created September 15, 2026 01:29
Show Gist options
  • Select an option

  • Save Surpprf/46462b97725ed2e1370d53caebca2d91 to your computer and use it in GitHub Desktop.

Select an option

Save Surpprf/46462b97725ed2e1370d53caebca2d91 to your computer and use it in GitHub Desktop.
_G.HopLink = _G.HopLink or "YOUR_GIST_RAW_LINK_HERE"
if _G.ActiveConnections then
for _, conn in pairs(_G.ActiveConnections) do
if typeof(conn) == "RBXScriptConnection" then
conn:Disconnect()
end
end
end
_G.ActiveConnections = {}
if _G.ActiveThreads then
for _, thread in pairs(_G.ActiveThreads) do
if typeof(thread) == "thread" then
pcall(task.cancel, thread)
end
end
end
_G.ActiveThreads = {}
-- Global state preservation
_G.autofarmEnabled = _G.autofarmEnabled or false
_G.cashDropSniperEnabled = _G.cashDropSniperEnabled or false
_G.isSpamming = _G.isSpamming or false
_G.SpamE = _G.SpamE or false
_G.RestrictedPlayerScannerActive = _G.RestrictedPlayerScannerActive or false
_G.FeaturesToRestore = _G.FeaturesToRestore or {}
-- Services
local player = game.Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
-- Wait for game load
if not game:IsLoaded() then
game.Loaded:Wait()
end
-- Intro skip
task.spawn(function()
pcall(function()
local playerGui = player:WaitForChild("PlayerGui", 15)
if not playerGui then return end
local introGui = playerGui:FindFirstChild("INTRO") or playerGui:WaitForChild("INTRO", 10)
if not introGui then return end
local introScript = introGui:FindFirstChildOfClass("LocalScript")
local loadedVal = player:FindFirstChild("Loaded")
if loadedVal and loadedVal:IsA("BoolValue") then
loadedVal.Value = true
end
if introScript and getsenv then
pcall(function()
local env = getsenv(introScript)
if env.ReturnCamera then env.ReturnCamera() end
if env.FinalOfIntro then env.FinalOfIntro() end
end)
end
if ReplicatedStorage:FindFirstChild("Events") and ReplicatedStorage.Events:FindFirstChild("IntroEnd") then
pcall(function()
ReplicatedStorage.Events.IntroEnd:FireServer()
end)
end
local playBtn = introGui:FindFirstChild("PlayButton")
if playBtn and getconnections then
for _, sig in ipairs({playBtn.MouseButton1Click, playBtn.Activated, playBtn.MouseButton1Down}) do
for _, conn in ipairs(getconnections(sig)) do
if conn.Function then
task.spawn(conn.Function)
end
end
end
end
local camera = Workspace.CurrentCamera
if camera then
camera.CameraType = Enum.CameraType.Custom
if player.Character and player.Character:FindFirstChildOfClass("Humanoid") then
camera.CameraSubject = player.Character:FindFirstChildOfClass("Humanoid")
end
end
pcall(function()
local PlayerScripts = player:FindFirstChild("PlayerScripts")
if PlayerScripts and PlayerScripts:FindFirstChild("PlayerModule") then
local controls = require(PlayerScripts.PlayerModule):GetControls()
controls:Enable()
end
end)
introGui.Enabled = false
introGui:Destroy()
end)
end)
-- Clean old GUIs
for _, guiName in ipairs({"AestheticGui", "CustomNotificationGui"}) do
pcall(function()
local playerGui = player:FindFirstChild("PlayerGui")
if playerGui then
local staleGui = playerGui:FindFirstChild(guiName)
if staleGui then
staleGui:Destroy()
end
end
end)
end
local guiPosition = UDim2.new(0.5, -90, 0, 10)
local function trackConnection(conn)
table.insert(_G.ActiveConnections, conn)
return conn
end
local function trackThread(thread)
table.insert(_G.ActiveThreads, thread)
return thread
end
local function createCustomNotification(header, message)
pcall(function()
local notification = Instance.new("Frame")
notification.Name = "CustomNotification"
notification.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
notification.Size = UDim2.new(0, 220, 0, 80)
notification.Position = UDim2.new(1, 250, 1, -10)
notification.AnchorPoint = Vector2.new(1, 1)
notification.BorderSizePixel = 0
notification.ClipsDescendants = true
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 10)
UICorner.Parent = notification
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(55, 55, 65)
stroke.Thickness = 1
stroke.Parent = notification
local headerLabel = Instance.new("TextLabel")
headerLabel.Name = "Header"
headerLabel.BackgroundTransparency = 1
headerLabel.Size = UDim2.new(1, -10, 0, 30)
headerLabel.Position = UDim2.new(0, 5, 0, 5)
headerLabel.Text = header
headerLabel.TextColor3 = Color3.fromRGB(235, 235, 245)
headerLabel.TextScaled = true
headerLabel.Font = Enum.Font.GothamBold
headerLabel.TextSize = 18
headerLabel.TextXAlignment = Enum.TextXAlignment.Center
headerLabel.TextYAlignment = Enum.TextYAlignment.Center
headerLabel.Parent = notification
local messageLabel = Instance.new("TextLabel")
messageLabel.Name = "Message"
messageLabel.BackgroundTransparency = 1
messageLabel.Size = UDim2.new(1, -10, 1, -40)
messageLabel.Position = UDim2.new(0, 5, 0, 35)
messageLabel.Text = message
messageLabel.TextColor3 = Color3.fromRGB(180, 180, 195)
messageLabel.TextScaled = true
messageLabel.Font = Enum.Font.Gotham
messageLabel.TextSize = 12
messageLabel.TextXAlignment = Enum.TextXAlignment.Center
messageLabel.TextYAlignment = Enum.TextYAlignment.Top
messageLabel.TextWrapped = true
messageLabel.Parent = notification
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CustomNotificationGui"
screenGui.Parent = player:WaitForChild("PlayerGui", 10)
notification.Parent = screenGui
local function slideIn()
TweenService:Create(notification, TweenInfo.new(0.5, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
Position = UDim2.new(1, -10, 1, -10)
}):Play()
end
local function slideOut()
local tween = TweenService:Create(notification, TweenInfo.new(0.5, Enum.EasingStyle.Quint, Enum.EasingDirection.In), {
Position = UDim2.new(1, 250, 1, -10)
})
tween:Play()
trackConnection(tween.Completed:Connect(function()
screenGui:Destroy()
end))
end
trackThread(task.spawn(function()
slideIn()
task.wait(4)
if notification.Parent then
slideOut()
end
end))
end)
end
local restrictedPlayers = {
"emiromania3", "GamerGardenia", "nsomniakk", "Discoperiet", "0bungxa",
"XoAngelsLuckXo", "TrueMystic04", "TemmieTerra", "RealHeatDeveloper",
"AwesomegamerPC", "ViralNorth"
}
local function startCheck()
if _G.RestrictedPlayerScannerActive then
createCustomNotification("Check", "Already Active")
return
end
_G.RestrictedPlayerScannerActive = true
createCustomNotification("Check", "Active")
trackThread(task.spawn(function()
while _G.RestrictedPlayerScannerActive do
for _, plr in pairs(game.Players:GetPlayers()) do
for _, restrictedName in ipairs(restrictedPlayers) do
if string.lower(plr.Name) == string.lower(restrictedName) then
createCustomNotification("Check", "Player Detected")
task.wait(1.5)
_G.RestrictedPlayerScannerActive = false
pcall(function() game:Shutdown() end)
return
end
end
end
task.wait(1)
end
end))
end
local spamEThread = nil
local function startSpamELoop()
if spamEThread then return end
spamEThread = task.spawn(function()
while _G.SpamE do
for i = 1, 75 do
if not _G.SpamE then break end
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.E, false, game)
task.wait(0.002)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.E, false, game)
task.wait(0.002)
end
task.wait(0.01)
end
spamEThread = nil
end)
trackThread(spamEThread)
end
local function toggleSpamE()
_G.SpamE = not _G.SpamE
if _G.SpamE then
startSpamELoop()
createCustomNotification("Spam E", "Active")
else
createCustomNotification("Spam E", "Inactive")
end
end
_G.SpamE = true
startSpamELoop()
local isHealing = false
local isFalling = false
local isDoingSmugglerRun = false
local camera = workspace.CurrentCamera
local cameraConnection = nil
local robbedRegisters = {}
local snipedDrops = {}
local sniperThread = nil
local POSITIONS = {
HEAL = Vector3.new(-1146, -153, -966),
SAFE = Vector3.new(-3029.5, 2331.1, -1955.1),
SPECIAL_REGISTER = Vector3.new(-1005.2, 2.3, -116.8)
}
local RESTRICTED_ZONES = {
{minX = -1000, maxX = -970, minZ = -120, maxZ = -100},
{minX = -1128, maxX = -1088, minZ = -810, maxZ = -750}
}
local SPECIAL_REGISTER_ZONE = { minX = -1035, maxX = -970, minZ = -140, maxZ = -100 }
local BANNED_REGISTERS = {
{-1004.93188, 2.22742605, -118.676834, 0, 0, 1, 0, 1, -0, -1, 0, 0}
}
local BANNED_CASH_LOCATION = {
position = Vector3.new(-1288.16602, -0.954563677, -617.465027)
}
local SMUGGLER_RUN_POSITIONS = {
START = Vector3.new(-1336, 2, -394),
DROP_OFF = Vector3.new(-458, 2, -599)
}
local hopping = false
-- IMPROVED QUEUE & HOP SYSTEM
local function queueScriptImproved()
local link = _G.HopLink
if not link or link == "" or link == "YOUR_GIST_RAW_LINK_HERE" then return end
local queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport)
if not queueteleport then return end
-- Encode state for restore
local stateToRestore = {
autofarm = _G.autofarmEnabled,
cashsniper = _G.cashDropSniperEnabled,
spamE = _G.SpamE,
hopCounter = (_G.HopAttemptCounter or 0) + 1
}
local stateJson = HttpService:JSONEncode(stateToRestore)
-- Robust queued code with multiple retry strategies
local queuedCode = [[
if not game:IsLoaded() then
local loadStart = tick()
while not game:IsLoaded() and (tick() - loadStart) < 15 do
game.Loaded:Wait()
end
end
task.wait(1.5)
local link = "]] .. link .. [["
local stateJson = ']] .. stateJson .. [['
local maxRetries = 12
local success = false
-- Try to restore state
pcall(function()
if HttpService and stateJson and stateJson ~= "" then
local state = HttpService:JSONDecode(stateJson)
_G.autofarmEnabled = state.autofarm or false
_G.cashDropSniperEnabled = state.cashsniper or false
_G.SpamE = state.spamE or false
_G.HopAttemptCounter = state.hopCounter or 1
end
end)
-- Multiple load strategies
for attempt = 1, maxRetries do
local ok, err = pcall(function()
local response = (request or http_request or (syn and syn.request) or (fluxus and fluxus.request))({
Url = link,
Method = "GET",
Timeout = 10
})
if response and response.Body then
loadstring(response.Body)()
success = true
end
end)
if success then
break
end
task.wait(2)
end
-- Fallback: direct loadstring
if not success then
pcall(function()
loadstring(game:HttpGet(link))()
end)
end
]]
pcall(queueteleport, queuedCode)
end
local function getValidServers()
local servers = {}
local requestFunction = request or http_request or (syn and syn.request) or (fluxus and fluxus.request)
if requestFunction then
local ok, req = pcall(function()
return requestFunction({
Url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Desc&limit=100",
Method = "GET",
Timeout = 8
})
end)
if ok and req and req.Body then
local decodeOk, body = pcall(function()
return HttpService:JSONDecode(req.Body)
end)
if decodeOk and body and body.data then
for _, v in ipairs(body.data) do
if type(v) == "table" and tonumber(v.playing) and tonumber(v.maxPlayers)
and v.playing < v.maxPlayers and v.id ~= game.JobId then
table.insert(servers, v.id)
end
end
end
end
end
return servers
end
local function serverHop()
if hopping then return end
hopping = true
-- Queue before teleport
queueScriptImproved()
-- Brief delay to ensure queue registers
task.wait(0.3)
-- Find and teleport to valid server
local servers = getValidServers()
if #servers > 0 then
pcall(function()
TeleportService:TeleportToPlaceInstance(game.PlaceId, servers[math.random(1, #servers)], player)
end)
else
-- Fallback: generic teleport
pcall(function()
TeleportService:Teleport(game.PlaceId, player)
end)
end
-- Reset flag after safe delay
task.wait(10)
hopping = false
end
-- ErrorPrompt detection
local function onErrorPrompt(child)
if child and child.Name == "ErrorPrompt" and not hopping then
hopping = true
task.spawn(function()
task.wait(0.5)
pcall(serverHop)
task.wait(12)
hopping = false
end)
end
end
-- Hook into ErrorPrompt detection
pcall(function()
local function hookOverlay(overlay)
if overlay then
trackConnection(overlay.ChildAdded:Connect(onErrorPrompt))
for _, existing in ipairs(overlay:GetChildren()) do
onErrorPrompt(existing)
end
end
end
local robloxPromptGui = CoreGui:FindFirstChild("RobloxPromptGui")
if robloxPromptGui then
hookOverlay(robloxPromptGui:FindFirstChild("promptOverlay"))
end
trackConnection(CoreGui.DescendantAdded:Connect(function(desc)
if desc.Name == "promptOverlay" and desc.Parent and desc.Parent.Name == "RobloxPromptGui" then
hookOverlay(desc)
elseif desc.Name == "ErrorPrompt" then
onErrorPrompt(desc)
end
end))
end)
-- Continuous ErrorPrompt polling
trackThread(task.spawn(function()
while true do
pcall(function()
local promptGui = CoreGui:FindFirstChild("RobloxPromptGui")
if promptGui then
local overlay = promptGui:FindFirstChild("promptOverlay")
if overlay then
for _, child in ipairs(overlay:GetChildren()) do
if child.Name == "ErrorPrompt" then
onErrorPrompt(child)
end
end
end
end
end)
task.wait(1)
end
end))
local function lockTopDownCamera()
camera.CameraType = Enum.CameraType.Scriptable
if cameraConnection then cameraConnection:Disconnect() end
cameraConnection = trackConnection(RunService.RenderStepped:Connect(function()
local character = player.Character
if character and character:FindFirstChild("Head") then
local headPos = character.Head.Position
camera.CFrame = CFrame.new(headPos + Vector3.new(0, 5, 0), headPos)
end
end))
end
local function unlockCamera()
if cameraConnection then
cameraConnection:Disconnect()
cameraConnection = nil
end
camera.CameraType = Enum.CameraType.Custom
end
local function rapidTeleportOnToggleOff()
local targetPosition = Vector3.new(-1023, 57, -383)
trackThread(task.spawn(function()
for i = 1, 50 do
if _G.autofarmEnabled or _G.cashDropSniperEnabled then break end
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
hrp.CFrame = CFrame.new(targetPosition)
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
else
break
end
task.wait(0.006)
end
end))
end
local function toggleAutofarm()
_G.autofarmEnabled = not _G.autofarmEnabled
if _G.autofarmEnabled then
_G.isSpamming = true
lockTopDownCamera()
createCustomNotification("AutoFarm", "Active")
else
_G.isSpamming = false
unlockCamera()
rapidTeleportOnToggleOff()
createCustomNotification("AutoFarm", "Inactive")
end
end
local function toggleCashDropSniper()
_G.cashDropSniperEnabled = not _G.cashDropSniperEnabled
if _G.cashDropSniperEnabled then
createCustomNotification("CashDrop", "Active")
sniperThread = trackThread(task.spawn(function()
while _G.cashDropSniperEnabled do
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local hrp = char.HumanoidRootPart
local cashDropFound = nil
for _, obj in ipairs(game.Workspace:GetChildren()) do
if obj.Name == "CashDrop" and not snipedDrops[obj] then
cashDropFound = obj
break
end
end
if cashDropFound then
snipedDrops[cashDropFound] = true
trackThread(task.delay(10, function()
snipedDrops[cashDropFound] = nil
end))
local targetPos
if cashDropFound:IsA("Model") then
targetPos = cashDropFound:GetPivot().Position
elseif cashDropFound:IsA("BasePart") then
targetPos = cashDropFound.Position
end
if targetPos then
hrp.CFrame = CFrame.new(targetPos)
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
task.wait(0.8)
if char and char:FindFirstChild("HumanoidRootPart") then
hrp.CFrame = CFrame.new(hrp.Position.X, 100000, hrp.Position.Z)
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(2)
end
else
if hrp.Position.Y < 90000 then
hrp.CFrame = CFrame.new(hrp.Position.X, 100000, hrp.Position.Z)
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
end
end
task.wait(0.001)
end
end))
else
createCustomNotification("CashDrop", "Inactive")
if sniperThread then
task.cancel(sniperThread)
sniperThread = nil
end
rapidTeleportOnToggleOff()
end
end
local function isPositionRestricted(position)
for _, zone in ipairs(RESTRICTED_ZONES) do
if position.X >= zone.minX and position.X <= zone.maxX and position.Z >= zone.minZ and position.Z <= zone.maxZ then
return true
end
end
return false
end
local function teleportPlayerToPosition(position, stayTime)
if _G.autofarmEnabled and (position == POSITIONS.HEAL or not isPositionRestricted(position)) and player.Character and not isFalling and not isDoingSmugglerRun then
local hrp = player.Character:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.CFrame = CFrame.new(position + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
task.wait(stayTime)
end
end
end
local function modifyProximityPrompts(folderName)
trackThread(task.spawn(function()
local folder = game.Workspace:WaitForChild(folderName, 30)
if not folder then return end
local hookedPrompts = {}
local function fixPrompt(prompt)
if prompt:IsA("ProximityPrompt") then
prompt.HoldDuration = 0
prompt.KeyboardKeyCode = Enum.KeyCode.E
prompt.RequiresLineOfSight = false
local parentModel = prompt.Parent and prompt.Parent.Parent
if parentModel and parentModel.Name == "Cash Register" and not hookedPrompts[prompt] then
hookedPrompts[prompt] = true
trackConnection(prompt.Triggered:Connect(function()
robbedRegisters[parentModel] = true
trackThread(task.delay(300, function()
robbedRegisters[parentModel] = nil
end))
end))
end
end
end
for _, desc in ipairs(folder:GetDescendants()) do
fixPrompt(desc)
end
trackConnection(folder.DescendantAdded:Connect(fixPrompt))
end))
end
local function manageTeleportation()
while true do
if _G.autofarmEnabled and not isFalling and not isHealing and not isDoingSmugglerRun then
local foundValidTarget = false
local cashSpawnFolder = game.Workspace:FindFirstChild("CashSpawn")
if cashSpawnFolder then
for _, cashModel in ipairs(cashSpawnFolder:GetChildren()) do
if cashModel.Name == "Cash" and not isHealing and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
local pickedUp = cashModel:FindFirstChild("PickedUp")
local part = cashModel:FindFirstChild("Part")
local isBannedCash = false
local cashPivot = cashModel:GetPivot()
if (cashPivot.Position - BANNED_CASH_LOCATION.position).Magnitude < 0.5 then
isBannedCash = true
end
if pickedUp and not pickedUp.Value and part and not isPositionRestricted(part.Position) and not isBannedCash then
teleportPlayerToPosition(part.Position - Vector3.new(0, 2, 0), 0.22)
foundValidTarget = true
task.wait(0.03)
end
end
end
end
if not foundValidTarget and not isHealing and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
task.wait(0.1)
local atmsFolder = game.Workspace:FindFirstChild("ATMS")
if atmsFolder then
for _, atm in ipairs(atmsFolder:GetChildren()) do
if atm.Name == "ATM" and not isHealing and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
local clickPart = atm:FindFirstChild("ClickPart")
if clickPart then
local attachment = clickPart:FindFirstChild("Attachment")
if attachment then
local proximityPrompt = attachment:FindFirstChild("ProximityPrompt")
if proximityPrompt and proximityPrompt.Enabled then
local mainUnion = atm:FindFirstChild("Main")
if mainUnion then
local meshPart = mainUnion:FindFirstChild("One")
if meshPart then
local backwardOffset = meshPart.CFrame.LookVector * -1.5
local rightOffset = meshPart.CFrame.RightVector * 0.5
local leftOffset = meshPart.CFrame.RightVector * -2.5
local forwardOffset = meshPart.CFrame.LookVector * 2.0
local teleportPosition = meshPart.Position + backwardOffset + rightOffset + leftOffset + forwardOffset
if not isPositionRestricted(teleportPosition) then
teleportPlayerToPosition(teleportPosition, 1.9)
foundValidTarget = true
break
end
end
end
end
end
end
end
end
end
end
if not foundValidTarget and not isHealing and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
task.wait(0.1)
local registersFolder = game.Workspace:FindFirstChild("Registers")
if registersFolder then
for index, register in ipairs(registersFolder:GetChildren()) do
if index == 14 then continue end
local isBanned = false
local registerPivot = register:GetPivot()
for _, bannedPivot in ipairs(BANNED_REGISTERS) do
local bannedCF = CFrame.new(
bannedPivot[1], bannedPivot[2], bannedPivot[3],
bannedPivot[4], bannedPivot[5], bannedPivot[6],
bannedPivot[7], bannedPivot[8], bannedPivot[9],
bannedPivot[10], bannedPivot[11], bannedPivot[12]
)
if (registerPivot.Position - bannedCF.Position).Magnitude < 0.1 then
isBanned = true
break
end
end
if isBanned then continue end
if register.Name == "Cash Register" and not isHealing and not robbedRegisters[register] and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
local humanoidRootPart = register:FindFirstChild("HumanoidRootPart")
if humanoidRootPart and humanoidRootPart:IsA("Part") then
local registerPos = humanoidRootPart.Position
if registerPos.X >= SPECIAL_REGISTER_ZONE.minX and registerPos.X <= SPECIAL_REGISTER_ZONE.maxX and registerPos.Z >= SPECIAL_REGISTER_ZONE.minZ and registerPos.Z <= SPECIAL_REGISTER_ZONE.maxZ then
if not robbedRegisters[register] then
teleportPlayerToPosition(POSITIONS.SPECIAL_REGISTER, 0.85)
foundValidTarget = true
break
end
else
local attachment = humanoidRootPart:FindFirstChild("Attachment")
if attachment then
local proximityPrompt = attachment:FindFirstChild("ProximityPrompt")
if proximityPrompt and proximityPrompt.Enabled then
local forwardOffset = humanoidRootPart.CFrame.LookVector * 1.2
local downOffset = Vector3.new(0, -1.5, 0)
local teleportPosition = humanoidRootPart.Position + forwardOffset + downOffset
if not isPositionRestricted(teleportPosition) then
teleportPlayerToPosition(teleportPosition, 0.85)
foundValidTarget = true
break
end
end
end
end
end
end
end
end
end
if not foundValidTarget and not isHealing and _G.autofarmEnabled and not isFalling and not isDoingSmugglerRun then
teleportPlayerToPosition(POSITIONS.SAFE, 2)
end
end
task.wait(0.1)
end
end
local function checkHealth()
while true do
if _G.autofarmEnabled and player.Character and not isHealing and not isFalling and not isDoingSmugglerRun then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid and humanoid.Health <= 10 then
isHealing = true
while _G.autofarmEnabled and player.Character and humanoid and humanoid.Health <= 36 do
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
hrp.CFrame = CFrame.new(POSITIONS.HEAL + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(0.01)
humanoid = player.Character:FindFirstChild("Humanoid")
if not humanoid then break end
end
if _G.autofarmEnabled and player.Character and humanoid and humanoid.Health > 36 then
while _G.autofarmEnabled and player.Character and humanoid and humanoid.Health <= 90 do
task.wait(0.2)
humanoid = player.Character:FindFirstChild("Humanoid")
if not humanoid then break end
end
end
isHealing = false
end
end
task.wait(0.2)
end
end
local function checkSmugglerRun()
while true do
if _G.autofarmEnabled and not isDoingSmugglerRun and not isHealing and not isFalling then
local buttonsFolder = game.Workspace:FindFirstChild("Buttons")
if buttonsFolder then
local coolDownModel = buttonsFolder:FindFirstChild("Cool Down")
local startModel = buttonsFolder:FindFirstChild("Start Smuggler's Run")
if startModel and not coolDownModel then
isDoingSmugglerRun = true
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
hrp.CFrame = CFrame.new(SMUGGLER_RUN_POSITIONS.START + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(0.5)
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
hrp.CFrame = CFrame.new(SMUGGLER_RUN_POSITIONS.DROP_OFF + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(0.5)
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
hrp.CFrame = CFrame.new(POSITIONS.SAFE + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(0.5)
isDoingSmugglerRun = false
end
end
end
task.wait(0.2)
end
end
local function voidFallProtection()
while true do
if _G.autofarmEnabled and not isFalling then
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = player.Character.HumanoidRootPart
if hrp.Position.Y < -450 then
isFalling = true
for i = 1, 100 do
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
hrp.CFrame = CFrame.new(POSITIONS.HEAL + Vector3.new(0, 5, 0))
hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
end
task.wait(0.01)
end
task.wait(2)
isFalling = false
end
end
end
task.wait(0.05)
end
end
local function clampVelocity()
if (_G.autofarmEnabled or _G.cashDropSniperEnabled) and player.Character and not isFalling and not isDoingSmugglerRun then
local hrp = player.Character:FindFirstChild("HumanoidRootPart")
if hrp then
local currentVelocity = hrp.AssemblyLinearVelocity
if currentVelocity.Magnitude > 250 then
hrp.AssemblyLinearVelocity = currentVelocity.Unit * 250
end
end
end
end
trackConnection(RunService.Heartbeat:Connect(clampVelocity))
modifyProximityPrompts("ATMS")
modifyProximityPrompts("Registers")
trackThread(task.spawn(manageTeleportation))
trackThread(task.spawn(checkHealth))
trackThread(task.spawn(checkSmugglerRun))
trackThread(task.spawn(voidFallProtection))
local function createGui()
pcall(function()
local playerGui = player:WaitForChild("PlayerGui", 10)
if not playerGui then return end
local screenGui = playerGui:FindFirstChild("AestheticGui")
if not screenGui then
screenGui = Instance.new("ScreenGui")
screenGui.Name = "AestheticGui"
screenGui.Parent = playerGui
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Global
screenGui.ResetOnSpawn = false
screenGui.DisplayOrder = 999999999
screenGui.IgnoreGuiInset = true
end
local frame = screenGui:FindFirstChild("MainFrame")
if not frame then
frame = Instance.new("Frame")
frame.Name = "MainFrame"
frame.Size = UDim2.new(0, 180, 0, 206)
frame.Position = guiPosition
frame.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
frame.BorderSizePixel = 0
frame.ZIndex = 2147483646
frame.Parent = screenGui
local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 14)
frameCorner.Parent = frame
local frameStroke = Instance.new("UIStroke")
frameStroke.Color = Color3.fromRGB(45, 45, 55)
frameStroke.Thickness = 1.5
frameStroke.Parent = frame
local buttons = {
{
Name = "Check",
Color = Color3.fromRGB(40, 40, 50),
HoverColor = Color3.fromRGB(55, 55, 70),
Action = startCheck
},
{
Name = "Spam E",
Color = Color3.fromRGB(40, 40, 50),
HoverColor = Color3.fromRGB(55, 55, 70),
Action = toggleSpamE
},
{
Name = "AutoFarm",
Color = Color3.fromRGB(40, 40, 50),
HoverColor = Color3.fromRGB(55, 55, 70),
Action = toggleAutofarm
},
{
Name = "CashDrop",
Color = Color3.fromRGB(40, 40, 50),
HoverColor = Color3.fromRGB(55, 55, 70),
Action = toggleCashDropSniper
}
}
for i, button in ipairs(buttons) do
local buttonObj = Instance.new("TextButton")
buttonObj.Name = button.Name .. "Button"
buttonObj.Size = UDim2.new(0, 156, 0, 38)
buttonObj.Position = UDim2.new(0, 12, 0, 12 + (i - 1) * 46)
buttonObj.BackgroundColor3 = button.Color
buttonObj.TextColor3 = Color3.fromRGB(235, 235, 245)
buttonObj.Text = button.Name
buttonObj.TextSize = 15
buttonObj.Font = Enum.Font.GothamMedium
buttonObj.AutoButtonColor = false
buttonObj.ZIndex = 2147483647
buttonObj.Parent = frame
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 10)
buttonCorner.Parent = buttonObj
local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = Color3.fromRGB(55, 55, 65)
buttonStroke.Thickness = 1
buttonStroke.Parent = buttonObj
trackConnection(buttonObj.MouseEnter:Connect(function()
TweenService:Create(buttonObj, TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
BackgroundColor3 = button.HoverColor
}):Play()
end))
trackConnection(buttonObj.MouseLeave:Connect(function()
TweenService:Create(buttonObj, TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
BackgroundColor3 = button.Color
}):Play()
end))
trackConnection(buttonObj.MouseButton1Click:Connect(button.Action))
end
local dragging, dragInput, dragStart, startPos
local function updateInput(input)
local delta = input.Position - dragStart
local newPosition = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
frame.Position = newPosition
guiPosition = newPosition
end
trackConnection(frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = frame.Position
trackConnection(input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end))
end
end))
trackConnection(frame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end))
trackConnection(UserInputService.InputChanged:Connect(function(input)
if dragging and input == dragInput then
updateInput(input)
end
end))
else
frame.Position = guiPosition
end
end)
end
task.spawn(createGui)
local function onCharacterAdded(character)
task.wait(0.1)
if _G.autofarmEnabled then
lockTopDownCamera()
end
end
trackConnection(player.CharacterAdded:Connect(onCharacterAdded))
if player.Character then
task.spawn(onCharacterAdded, player.Character)
end
trackThread(task.spawn(function()
task.wait(8)
createGui()
end))
-- Re-enable features after teleport if they were active
task.spawn(function()
task.wait(6)
if _G.HopAttemptCounter > 1 then
-- Already teleported, restore state
if _G.autofarmEnabled and not (_G.autofarmEnabled) then
_G.autofarmEnabled = true
_G.isSpamming = true
lockTopDownCamera()
createCustomNotification("AutoFarm", "Restored")
end
else
-- First run, auto-enable
if not _G.autofarmEnabled then
_G.autofarmEnabled = true
_G.isSpamming = true
lockTopDownCamera()
createCustomNotification("AutoFarm", "Active")
end
end
end)
_G.HopLink = "YOUR_GIST_RAW_LINK_HERE"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment