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)
Comments
trash script dont waste you time has a key
needs key lying bum