local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local PPS = game:GetService("ProximityPromptService") local TeleportService = game:GetService("TeleportService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local TELEPORT_OFFSET_Y = 4 local AUTO_INTERVAL = 0.4 local CHEST_MARKER = "Ö" local function getChar() local c = player.Character or player.CharacterAdded:Wait() return c, c:WaitForChild("HumanoidRootPart", 3), c:FindFirstChildOfClass("Humanoid") end local function isRealChest(inst: Instance): boolean if not inst:IsA("Model") then return false end if string.match(inst.Name, CHEST_MARKER) then if inst:FindFirstChildWhichIsA("ProximityPrompt", true) then return true end end return false end local function resolveBasePart(inst: Instance?): BasePart? if not inst then return nil end if inst:IsA("BasePart") then return inst end if inst:IsA("Model") then if inst.PrimaryPart then return inst.PrimaryPart end return inst:FindFirstChildWhichIsA("BasePart", true) end return nil end local function safeTeleportTo(part: BasePart) local char, hrp, hum = getChar() if not (char and hrp and hum) or hum.Health <= 0 then return end local pos = part.Position + Vector3.new(0, TELEPORT_OFFSET_Y, 0) char:PivotTo(CFrame.new(pos, pos + part.CFrame.LookVector)) end local function firePrompt(model: Instance) local prompt = model:FindFirstChildWhichIsA("ProximityPrompt", true) if not (prompt and prompt.Enabled) then return end task.spawn(function() prompt:InputHoldBegin() task.wait(prompt.HoldDuration + 0.05) prompt:InputHoldEnd() end) end local function getAllChests(): {Model} local found = {} for _, obj in ipairs(workspace:GetDescendants()) do if isRealChest(obj) then table.insert(found, obj) end end return found end local gui = Instance.new("ScreenGui") gui.Name = "R77_Premium_Chest" gui.ResetOnSpawn = false gui.Parent = playerGui local window = Instance.new("Frame") window.Size = UDim2.fromOffset(280, 300) window.Position = UDim2.fromOffset(100, 100) window.BackgroundColor3 = Color3.fromRGB(20, 20, 25) window.BorderSizePixel = 0 window.Parent = gui Instance.new("UICorner", window).CornerRadius = UDim.new(0, 12) local shadow = Instance.new("ImageLabel") shadow.Name = "Shadow" shadow.AnchorPoint = Vector2.new(0.5, 0.5) shadow.Position = UDim2.new(0.5, 0, 0.5, 0) shadow.Size = UDim2.new(1, 40, 1, 40) shadow.BackgroundTransparency = 1 shadow.Image = "rbxassetid://6014264795" shadow.ImageColor3 = Color3.new(0, 0, 0) shadow.ImageTransparency = 0.5 shadow.Parent = window local topBar = Instance.new("Frame") topBar.Size = UDim2.new(1, 0, 0, 40) topBar.BackgroundColor3 = Color3.fromRGB(30, 30, 40) topBar.BorderSizePixel = 0 topBar.Parent = window local topCorner = Instance.new("UICorner") topCorner.CornerRadius = UDim.new(0, 12) topCorner.Parent = topBar local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -20, 1, 0) title.Position = UDim2.new(0, 15, 0, 0) title.Text = "Akifs ChestFarmer" title.TextColor3 = Color3.new(1, 1, 1) title.TextXAlignment = Enum.TextXAlignment.Left title.Font = Enum.Font.GothamBold title.TextSize = 14 title.BackgroundTransparency = 1 title.Parent = topBar local content = Instance.new("Frame") content.Size = UDim2.new(1, 0, 1, -40) content.Position = UDim2.new(0, 0, 0, 40) content.BackgroundTransparency = 1 content.Parent = window local layout = Instance.new("UIListLayout", content) layout.Padding = UDim.new(0, 10) layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout.VerticalAlignment = Enum.VerticalAlignment.Center local function createButton(text, color) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 240, 0, 45) btn.BackgroundColor3 = color btn.Text = text btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamSemibold btn.TextSize = 14 btn.AutoButtonColor = true btn.Parent = content Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) return btn end local btnAuto = createButton("AUTO COLLECT: OFF", Color3.fromRGB(45, 45, 55)) local btnServer = createButton("SERVER HOP", Color3.fromRGB(70, 40, 120)) local status = Instance.new("TextLabel") status.Size = UDim2.new(1, 0, 0, 30) status.Text = "Searching for chests..." status.TextColor3 = Color3.fromRGB(180, 180, 180) status.Font = Enum.Font.Gotham status.TextSize = 12 status.BackgroundTransparency = 1 status.Parent = content local autoOn = false task.spawn(function() while true do if autoOn then local chests = getAllChests() status.Text = "Found Chests: " .. #chests local closest = nil local minDist = math.huge local _, hrp = getChar() if hrp then for _, c in ipairs(chests) do local part = resolveBasePart(c) if part then local dist = (part.Position - hrp.Position).Magnitude if dist < minDist then minDist = dist closest = c end end end end if closest then local part = resolveBasePart(closest) if part then safeTeleportTo(part) task.wait(0.1) firePrompt(closest) task.wait(0.2) end else status.Text = "No chests nearby..." end end task.wait(AUTO_INTERVAL) end end) btnAuto.MouseButton1Click:Connect(function() autoOn = not autoOn btnAuto.Text = autoOn and "AUTO COLLECT: ON" or "AUTO COLLECT: OFF" btnAuto.BackgroundColor3 = autoOn and Color3.fromRGB(40, 120, 60) or Color3.fromRGB(45, 45, 55) end) btnServer.MouseButton1Click:Connect(function() status.Text = "Hopping server..." local ok, err = pcall(function() local HttpService = game:GetService("HttpService") local url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100" local servers = HttpService:JSONDecode(game:HttpGet(url)).data local newServer = servers[math.random(1, #servers)] if newServer and newServer.id ~= game.JobId then TeleportService:TeleportToPlaceInstance(game.PlaceId, newServer.id, player) end end) if not ok then status.Text = "Hop failed, try again." end end) local dragging, dragStart, startPos topBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true; dragStart = input.Position; startPos = window.Position end end) UIS.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart window.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) topBar.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end)