Last active
September 15, 2026 02:25
-
-
Save Surpprf/a3cc9dcf4afedfb0cd1904b1de4653b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| game:GetService("StarterGui"):SetCore("SendNotification", { | |
| Title = "DEBUG", | |
| Text = "Script loaded in server " .. game.JobId | |
| }) | |
| local HOP_LINK = "https://gist.githubusercontent.com/Surpprf/a3cc9dcf4afedfb0cd1904b1de4653b0/raw/gistfile1.txt" | |
| local queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport) | |
| if queueteleport then | |
| queueteleport("loadstring(game:HttpGet('" .. HOP_LINK .. "'))()") | |
| game.Players.LocalPlayer.OnTeleport:Connect(function(State) | |
| if State == Enum.TeleportState.Started then | |
| queueteleport("loadstring(game:HttpGet('" .. HOP_LINK .. "'))()") | |
| end | |
| end) | |
| end | |
| _G.HopLink = HOP_LINK | |
| 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 = {} | |
| _G.autofarmEnabled = false | |
| _G.cashDropSniperEnabled = false | |
| _G.isSpamming = false | |
| _G.SpamE = false | |
| _G.RestrictedPlayerScannerActive = false | |
| 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 ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| local Workspace = game:GetService("Workspace") | |
| if not game:IsLoaded() then | |
| game.Loaded:Wait() | |
| end | |
| 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 guiPosition = UDim2.new(0.5, -90, 0, 10) | |
| 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 function serverHop() | |
| if queueteleport then | |
| pcall(function() | |
| queueteleport("loadstring(game:HttpGet('" .. HOP_LINK .. "'))()") | |
| end) | |
| end | |
| task.wait(0.5) | |
| local servers = {} | |
| local requestFunction = request or http_request or (syn and syn.request) or (fluxus and fluxus.request) or (http and http.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" | |
| }) | |
| end) | |
| if ok and req then | |
| local body = req.Body or req.body | |
| if body then | |
| local decodeOk, decoded = pcall(function() | |
| return HttpService:JSONDecode(body) | |
| end) | |
| if decodeOk and decoded and decoded.data then | |
| for _, v in ipairs(decoded.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 | |
| end | |
| if #servers > 0 then | |
| pcall(function() | |
| TeleportService:TeleportToPlaceInstance(game.PlaceId, servers[math.random(1, #servers)], player) | |
| end) | |
| else | |
| pcall(function() | |
| TeleportService:Teleport(game.PlaceId, player) | |
| end) | |
| end | |
| end | |
| local hopping = false | |
| local function onErrorPrompt(child) | |
| if child and child.Name == "ErrorPrompt" and not hopping then | |
| hopping = true | |
| task.spawn(function() | |
| pcall(serverHop) | |
| task.wait(12) | |
| hopping = false | |
| end) | |
| end | |
| end | |
| local function hookOverlay(overlay) | |
| if not overlay then return end | |
| trackConnection(overlay.ChildAdded:Connect(onErrorPrompt)) | |
| for _, existing in ipairs(overlay:GetChildren()) do | |
| onErrorPrompt(existing) | |
| end | |
| end | |
| pcall(function() | |
| local CoreGui = game:GetService("CoreGui") | |
| 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) | |
| trackThread(task.spawn(function() | |
| while true do | |
| pcall(function() | |
| local CoreGui = game:GetService("CoreGui") | |
| local robloxPromptGui = CoreGui:FindFirstChild("RobloxPromptGui") | |
| if robloxPromptGui then | |
| local overlay = robloxPromptGui: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 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 _ = 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 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 _ = 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 _ = 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 | |
| createGui() | |
| trackConnection(player.CharacterAdded:Connect(function() | |
| task.wait(0.1) | |
| if _G.autofarmEnabled then | |
| lockTopDownCamera() | |
| end | |
| end)) | |
| task.spawn(function() | |
| task.wait(3) | |
| if not _G.autofarmEnabled then | |
| _G.autofarmEnabled = true | |
| _G.isSpamming = true | |
| lockTopDownCamera() | |
| createCustomNotification("AutoFarm", "Active") | |
| end | |
| end) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment