New Working ChestFarmer
Key Required

New Working ChestFarmer

Fireworks Playgroundakifrzayev06akifrzayev06 1.3K views 5.8K executesUpdated Jan 9, 2026
5.0/ 5(4 votes)
40100% Positive
Lua Script•222 lines (6758 chars)
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)

Features & Information

ChestFarmer Server Hop

Community Comments (4)

KLPMKLPMJan 12, 2026

Add automatic work function, thank you.

Scripter1234567890Scripter1234567890Jan 22, 2026

Owner can u make it faster

N7F4N7F4Jan 26, 2026

Works Xeno

mixallmeemixallmeeMar 13, 2026

works

More Scripts for Fireworks Playground