
Key Required VerifiedUniversal
local unpack = unpack or table.unpack
local Rayfield
for _, url in ipairs({
"https://sirius.menu/rayfield",
"https://raw.githubusercontent.com/SiriusSoftwareLtd/Rayfield/main/source.lua",
"https://cdn.sirius.menu/rayfield"
}) do
local success, result = pcall(function()
return loadstring(game:HttpGet(url, true))()
end)
if success and result then
Rayfield = result
break
end
task.wait(1)
end
if not Rayfield then
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "Error",
Text = "Rayfield failed to load.",
Duration = 6
})
return
end
local Window = Rayfield:CreateWindow({
Name = "Gooner Hub v2",
LoadingTitle = "Loading...",
LoadingSubtitle = "by DG181",
ConfigurationSaving = {
Enabled = false
}
})
local MainTab = Window:CreateTab("Main", 4483362458)
local AutoTab = Window:CreateTab("Auto", 4483362458)
local ItemsTab = Window:CreateTab("Items", 4483362458)
local ESPTab = Window:CreateTab("ESP", 4483362458)
local TeleportTab = Window:CreateTab("Teleport", 4483362458)
local PlayerTab = Window:CreateTab("Player", 4483362458)
local MiscTab = Window:CreateTab("Misc", 4483362458)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualInputManager = game:GetService("VirtualInputManager")
local LocalPlayer = Players.LocalPlayer
local Characters = workspace:WaitForChild("Characters")
local Items = workspace:WaitForChild("Items")
local Map = workspace:FindFirstChild("Map")
local RemoteEvents = ReplicatedStorage:WaitForChild("RemoteEvents")
RemoteEvents:WaitForChild("RequestStartDraggingItem")
RemoteEvents:WaitForChild("StopDraggingItem")
RemoteEvents:WaitForChild("DamagePlayer")
RemoteEvents:WaitForChild("RequestConsumeItem")
local function getCharacter()
return LocalPlayer.Character
end
local function getRootPart()
local char = LocalPlayer.Character
if char then
char = char:FindFirstChild("HumanoidRootPart")
end
return char
end
local function getHumanoid()
local char = LocalPlayer.Character
if char then
char = char:FindFirstChildOfClass("Humanoid")
end
return char
end
local function getPrimaryPart(obj)
if not obj then return nil end
if obj:IsA("Model") then
local primary = obj.PrimaryPart
if not primary then
primary = obj:FindFirstChildWhichIsA("BasePart")
end
return primary
end
local part = obj:IsA("BasePart") and obj
if not part then
part = obj:FindFirstChildWhichIsA("BasePart")
end
return part
end
local function teleportTo(part)
local root = getRootPart()
if root and part then
root.CFrame = part.CFrame + Vector3.new(0, 5, 0)
end
end
local TempStorage = ReplicatedStorage:FindFirstChild("TempStorage")
local function getDragRemotes()
local remotes = game:GetService("ReplicatedStorage"):FindFirstChild("RemoteEvents")
local startRemote = remotes
if remotes then
startRemote = remotes:FindFirstChild("RequestStartDraggingItem")
end
if remotes then
remotes = remotes:FindFirstChild("StopDraggingItem")
end
return startRemote, remotes
end
local function bringItem(item, position)
if not item then return end
local isDescendant = item:IsDescendantOf(workspace)
if not isDescendant then
isDescendant = TempStorage and item:IsDescendantOf(TempStorage)
end
if not isDescendant then return end
local primary = item.PrimaryPart
if not primary then
primary = item:FindFirstChildWhichIsA("BasePart")
if not primary then
primary = item:FindFirstChild("Handle")
end
end
local foundPart = primary
if not foundPart then return end
if not item.PrimaryPart then
pcall(function()
item.PrimaryPart = foundPart
end)
end
pcall(function()
local startDrag, stopDrag = getDragRemotes()
if not startDrag or not stopDrag then return end
startDrag:FireServer(item)
task.wait(0.05)
if item.PrimaryPart then
item:SetPrimaryPartCFrame(CFrame.new(position))
else
foundPart.CFrame = CFrame.new(position)
end
task.wait(0.05)
stopDrag:FireServer(item)
end)
end
local lightingData = {}
local partData = {}
local effectData = {}
local brightnessEnabled = false
local brightnessConnection
local Lighting = game:GetService("Lighting")
local function applyBrightness()
Lighting.GlobalShadows = false
Lighting.Brightness = 2
Lighting.Ambient = Color3.new(1, 1, 1)
Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
Lighting.ClockTime = 14
Lighting.FogEnd = 1000000000
Lighting.FogStart = 1000000000
end
local function enableBrightness()
local terrain = workspace:FindFirstChildOfClass("Terrain")
if not lightingData.saved then
lightingData.saved = true
lightingData.GlobalShadows = Lighting.GlobalShadows
lightingData.FogEnd = Lighting.FogEnd
lightingData.FogStart = Lighting.FogStart
lightingData.Brightness = Lighting.Brightness
lightingData.Ambient = Lighting.Ambient
lightingData.OutdoorAmbient = Lighting.OutdoorAmbient
lightingData.ClockTime = Lighting.ClockTime
end
applyBrightness()
for _, child in ipairs(Lighting:GetChildren()) do
local isEffect = child:IsA("PostEffect")
if not isEffect then
isEffect = child:IsA("Sky")
if not isEffect then
isEffect = child:IsA("Clouds")
end
end
if isEffect then
if effectData[child] == nil then
effectData[child] = child.Enabled
end
pcall(function()
child.Enabled = false
end)
end
end
if terrain then
terrain.WaterWaveSize = 0
terrain.WaterWaveSpeed = 0
terrain.WaterReflectance = 0
terrain.WaterTransparency = 1
terrain.Decoration = false
end
pcall(function()
settings().Rendering.QualityLevel = Enum.QualityLevel.Level01
end)
if Map then
task.spawn(function()
local count = 0
for _, descendant in ipairs(Map:GetDescendants()) do
count += 1
if descendant:IsA("BasePart") then
if not partData[descendant] then
partData[descendant] = {
Reflectance = descendant.Reflectance,
CastShadow = descendant.CastShadow
}
end
descendant.Reflectance = 0
descendant.CastShadow = false
else
local isParticle = descendant:IsA("ParticleEmitter")
if not isParticle then
isParticle = descendant:IsA("Trail")
if not isParticle then
isParticle = descendant:IsA("Smoke")
if not isParticle then
isParticle = descendant:IsA("Fire")
if not isParticle then
isParticle = descendant:IsA("Sparkles")
if not isParticle then
isParticle = descendant:IsA("SurfaceLight")
if not isParticle then
isParticle = descendant:IsA("PointLight")
if not isParticle then
isParticle = descendant:IsA("SpotLight")
end
end
end
end
end
end
end
if isParticle then
pcall(function()
descendant.Enabled = false
end)
end
end
if count % 150 == 0 then
task.wait()
end
end
Rayfield:Notify({
Title = "FPS Boost",
Content = "Active — Fullbright ON",
Duration = 3
})
end)
end
if brightnessConnection then
brightnessConnection:Disconnect()
end
brightnessConnection = RunService.Heartbeat:Connect(function()
if not brightnessEnabled then
brightnessConnection:Disconnect()
return
end
local needsUpdate = Lighting.ClockTime ~= 14
if not needsUpdate then
needsUpdate = Lighting.Brightness ~= 2
end
if needsUpdate then
applyBrightness()
end
end)
end
local function disableBrightness()
if brightnessConnection then
brightnessConnection:Disconnect()
end
if lightingData.saved then
Lighting.GlobalShadows = lightingData.GlobalShadows
Lighting.FogEnd = lightingData.FogEnd
Lighting.FogStart = lightingData.FogStart
Lighting.Brightness = lightingData.Brightness
Lighting.Ambient = lightingData.Ambient
Lighting.OutdoorAmbient = lightingData.OutdoorAmbient
Lighting.ClockTime = lightingData.ClockTime
end
for effect, state in pairs(effectData) do
if effect and effect.Parent then
pcall(function()
effect.Enabled = state
end)
end
end
for part, data in pairs(partData) do
if part and part.Parent then
part.Reflectance = data.Reflectance
part.CastShadow = data.CastShadow
end
end
Rayfield:Notify({
Title = "FPS Boost",
Content = "Disabled — Graphics restored",
Duration = 2
})
end
MiscTab:CreateToggle({
Name = "Brightness",
CurrentValue = false,
Callback = function(state)
brightnessEnabled = state
if state then
enableBrightness()
else
disableBrightness()
end
end
})
local function onCharacterAdded(char)
local humanoid = char:WaitForChild("Humanoid")
local root = char:WaitForChild("HumanoidRootPart")
task.wait(0.5)
if _G.speedEnabled and _G.walkSpeed then
humanoid.WalkSpeed = _G.walkSpeed
end
if _G.flyEnabled then
task.wait(0.2)
local bodyVelocity = Instance.new("BodyVelocity", root)
local bodyGyro = Instance.new("BodyGyro", root)
bodyVelocity.MaxForce = Vector3.new(9000000000, 9000000000, 9000000000)
bodyGyro.MaxTorque = Vector3.new(9000000000, 9000000000, 9000000000)
if _G.flyConn then
_G.flyConn:Disconnect()
end
_G.flyConn = RunService.RenderStepped:Connect(function()
local camera = workspace.CurrentCamera
local moveVector = Vector3.new()
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveVector += camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveVector -= camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveVector -= camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveVector += camera.CFrame.RightVector
end
bodyVelocity.Velocity = moveVector * (_G.flySpeed or 50)
bodyGyro.CFrame = camera.CFrame
end)
_G.bv = bodyVelocity
_G.bg = bodyGyro
end
end
LocalPlayer.CharacterAdded:Connect(onCharacterAdded)
if LocalPlayer.Character then
task.spawn(onCharacterAdded, LocalPlayer.Character)
end
local antiAFKEnabled = true
task.spawn(function()
while true do
task.wait(55)
if antiAFKEnabled then
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.ButtonL3, false, game)
task.wait(0.1)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.ButtonL3, false, game)
end
end
end)
MiscTab:CreateToggle({
Name = "Anti-AFK",
CurrentValue = true,
Callback = function(state)
antiAFKEnabled = state
end
})
local noclipEnabled = false
RunService.Heartbeat:Connect(function()
if not noclipEnabled then return end
local char = getCharacter()
if char then
for _, descendant in ipairs(char:GetDescendants()) do
if descendant:IsA("BasePart") then
descendant.CanCollide = false
end
end
end
end)
MiscTab:CreateToggle({
Name = "Noclip",
CurrentValue = false,
Callback = function(state)
noclipEnabled = state
end
})
local godModeEnabled = false
task.spawn(function()
while true do
task.wait(0.3)
if godModeEnabled then
local remotes = game:GetService("ReplicatedStorage"):FindFirstChild("RemoteEvents")
local damageRemote = remotes and remotes:FindFirstChild("DamagePlayer")
if damageRemote then
pcall(function()
damageRemote:FireServer(-999999999)
end)
end
end
end
end)
MiscTab:CreateToggle({
Name = "God Mode",
CurrentValue = false,
Callback = function(state)
godModeEnabled = state
end
})
local killAuraEnabled = false
local auraRange = 100
local weaponIDs = {
["Old Axe"] = "1_8982038982",
["Good Axe"] = "112_8982038982",
["Strong Axe"] = "116_8982038982",
Chainsaw = "647_8992824875",
Spear = "196_8999010016"
}
local function getWeapon()
local inventory = game:GetService("Players").LocalPlayer:FindFirstChild("Inventory")
if not inventory then return nil, nil end
for name, id in pairs(weaponIDs) do
local item = inventory:FindFirstChild(name)
if item then
return item, id
end
end
return nil, nil
end
task.spawn(function()
while true do
task.wait(0.1)
if killAuraEnabled then
local char = game:GetService("Players").LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local weaponItem, weaponID = getWeapon()
if root and weaponItem and weaponID then
local remotes = game:GetService("ReplicatedStorage"):FindFirstChild("RemoteEvents")
if remotes then
local equipRemote = remotes:FindFirstChild("EquipItemHandle")
local damageRemote = remotes:FindFirstChild("ToolDamageObject")
if equipRemote then
equipRemote:FireServer("FireAllClients", weaponItem)
end
if damageRemote then
for _, child in ipairs(workspace.Characters:GetChildren()) do
if child:IsA("Model") and child ~= char then
local part = child:FindFirstChildWhichIsA("BasePart")
if part and (part.Position - root.Position).Magnitude <= auraRange then
pcall(function()
damageRemote:InvokeServer(child, weaponItem, weaponID, CFrame.new(part.Position))
end)
end
end
end
end
end
end
end
end
end)
MainTab:CreateToggle({
Name = "Kill Aura",
CurrentValue = false,
Callback = function(state)
killAuraEnabled = state
if state then
Rayfield:Notify({
Title = "Kill Aura",
Content = "Make sure you have a weapon!",
Duration = 3
})
end
end
})
MainTab:CreateSlider({
Name = "Aura Range",
Range = {10, 500},
Increment = 10,
CurrentValue = 100,
Callback = function(value)
auraRange = value
end
})
local autoFishEnabled = false
local lastFishTime = 0
task.spawn(function()
while true do
if not autoFishEnabled then
task.wait(0.5)
else
task.wait()
local playerGui = LocalPlayer:FindFirstChild("PlayerGui")
if playerGui then
playerGui = playerGui:FindFirstChild("FishingCatchFrame", true)
end
local isVisible = playerGui
if playerGui then
isVisible = playerGui.Visible
if isVisible then
isVisible = playerGui.AbsoluteSize.Y > 50
end
end
if isVisible then
local timingBar = playerGui:FindFirstChild("TimingBar")
if timingBar and timingBar.Visible then
local bar = timingBar:FindFirstChild("Bar")
local successArea = timingBar:FindFirstChild("SuccessArea")
local isValid = bar
if bar then
isValid = successArea and bar.Visible and successArea.Visible
end
if isValid then
local barCenter = bar.AbsolutePosition.Y + bar.AbsoluteSize.Y / 2
local successY = successArea.AbsolutePosition.Y
local successEndY = successY + successArea.AbsoluteSize.Y
if successY <= barCenter and barCenter <= successEndY then
local currentTime = tick()
if currentTime - lastFishTime > 0.15 then
lastFishTime = currentTime
VirtualInputManager:SendMouseButtonEvent(0, 0, 0, true, game, 0)
VirtualInputManager:SendMouseButtonEvent(0, 0, 0, false, game, 0)
end
end
end
end
end
end
end
end)
MainTab:CreateToggle({
Name = "Auto Fish",
CurrentValue = false,
Callback = function(state)
autoFishEnabled = state
end
})
local infiniteSaplingEnabled = false
local saplingDelay = 0.2
MainTab:CreateToggle({
Name = "Infinite Sapling",
CurrentValue = false,
Callback = function(state)
infiniteSaplingEnabled = state
end
})
MainTab:CreateSlider({
Name = "Sapling Delay",
Range = {0.2, 2},
Increment = 0.1,
CurrentValue = 0.2,
Callback = function(value)
saplingDelay = value
end
})
local function getSapling()
for _, child in ipairs(Items:GetChildren()) do
if child.Name == "Sapling" and child.PrimaryPart then
return child
end
end
end
local function getGroundPosition(position)
local filter = {}
local raycastParams = RaycastParams.new()
if Map then
local ground = Map:FindFirstChild("Ground")
local snow = Map:FindFirstChild("Snow")
if ground then
table.insert(filter, ground)
end
if snow then
table.insert(filter, snow)
end
end
if #filter == 0 then return nil end
raycastParams.FilterDescendantsInstances = filter
raycastParams.FilterType = Enum.RaycastFilterType.Include
raycastParams.IgnoreWater = true
local result = workspace:Raycast(position, Vector3.new(0, -80, 0), raycastParams)
return result and result.Position
end
local plantRemote
task.spawn(function()
task.wait(1)
for _, descendant in ipairs(ReplicatedStorage:GetDescendants()) do
local isPlant = descendant.Name:lower():find("plant")
if isPlant then
isPlant = descendant:IsA("RemoteEvent")
if not isPlant then
isPlant = descendant:IsA("RemoteFunction")
end
end
if isPlant then
plantRemote = descendant
return
end
end
end)
local saplingOffsets = {}
for i = -2, 2 do
for j = -2, 2 do
table.insert(saplingOffsets, Vector3.new(i * 0.3, 0, j * 0.3))
end
end
local offsetIndex = 0
task.spawn(function()
task.wait(2)
local currentSapling
while true do
task.wait(0.05)
if not infiniteSaplingEnabled then
task.wait(0.3)
else
local root = getRootPart()
if not root then
task.wait(0.5)
else
currentSapling = currentSapling or getSapling()
if not currentSapling then
task.wait(0.5)
else
local groundPos = getGroundPosition(root.Position + Vector3.new(0, 5, 0))
if groundPos and plantRemote then
offsetIndex = offsetIndex % #saplingOffsets + 1
local placePosition = groundPos + saplingOffsets[offsetIndex] + Vector3.new(0, 0.25, 0)
pcall(function()
if plantRemote:IsA("RemoteEvent") then
plantRemote:FireServer(currentSapling, placePosition)
return
end
plantRemote:InvokeServer(currentSapling, placePosition)
end)
end
task.wait(saplingDelay)
end
end
end
end
end)
_G.walkSpeed = 16
_G.speedEnabled = false
PlayerTab:CreateToggle({
Name = "Custom WalkSpeed",
CurrentValue = false,
Callback = function(state)
_G.speedEnabled = state
end
})
PlayerTab:CreateSlider({
Name = "WalkSpeed",
Range = {16, 300},
Increment = 1,
CurrentValue = 16,
Callback = function(value)
_G.walkSpeed = value
end
})
task.spawn(function()
task.wait(2)
while true do
task.wait(0.15)
if _G.speedEnabled then
local humanoid = getHumanoid()
if humanoid and humanoid.WalkSpeed ~= _G.walkSpeed then
humanoid.WalkSpeed = _G.walkSpeed
end
end
end
end)
local infiniteJumpEnabled = false
PlayerTab:CreateToggle({
Name = "Infinite Jump",
CurrentValue = false,
Callback = function(state)
infiniteJumpEnabled = state
end
})
UserInputService.JumpRequest:Connect(function()
if infiniteJumpEnabled then
local humanoid = getHumanoid()
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
_G.flySpeed = 50
_G.flyEnabled = false
PlayerTab:CreateToggle({
Name = "Fly",
CurrentValue = false,
Callback = function(state)
_G.flyEnabled = state
local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
if state then
local bodyVelocity = Instance.new("BodyVelocity", root)
local bodyGyro = Instance.new("BodyGyro", root)
bodyVelocity.MaxForce = Vector3.new(9000000000, 9000000000, 9000000000)
bodyGyro.MaxTorque = Vector3.new(9000000000, 9000000000, 9000000000)
if _G.flyConn then
_G.flyConn:Disconnect()
end
_G.flyConn = RunService.RenderStepped:Connect(function()
local camera = workspace.CurrentCamera
local moveVector = Vector3.new()
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveVector += camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveVector -= camera.CFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveVector -= camera.CFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveVector += camera.CFrame.RightVector
end
bodyVelocity.Velocity = moveVector * _G.flySpeed
bodyGyro.CFrame = camera.CFrame
end)
_G.bv = bodyVelocity
_G.bg = bodyGyro
else
if _G.flyConn then
_G.flyConn:Disconnect()
end
if _G.bv then
_G.bv:Destroy()
end
if _G.bg then
_G.bg:Destroy()
end
end
end
})
PlayerTab:CreateSlider({
Name = "Fly Speed",
Range = {10, 300},
Increment = 5,
CurrentValue = 50,
Callback = function(value)
_G.flySpeed = value
end
})
local mobESPEnabled = false
local itemESPEnabled = false
local chestESPEnabled = false
local playerESPEnabled = false
local chestESPObjects = {}
local playerESPObjects = {}
local chestList = {}
local lastChestUpdate = 0
local lastPlayerUpdate = 0
local function clearESPObjects(list)
for _, obj in pairs(list) do
if obj and obj.Parent then
obj:Destroy()
end
end
table.clear(list)
end
local function clearPlayerHighlights()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local highlight = player.Character:FindFirstChild("PlayerHighlight")
if highlight then
highlight:Destroy()
end
end
end
end
task.spawn(function()
task.wait(3)
while true do
task.wait(not chestESPEnabled and 8 or 4)
if chestESPEnabled then
chestList = {}
for _, child in ipairs(Items:GetChildren()) do
if child.Name:lower():find("chest") then
table.insert(chestList, child)
end
end
end
end
end)
task.spawn(function()
task.wait(3)
while true do
task.wait(2)
if mobESPEnabled or itemESPEnabled or chestESPEnabled or playerESPEnabled then
local root = getRootPart()
if root then
local position = root.Position
if mobESPEnabled then
for _, child in ipairs(Characters:GetChildren()) do
local part = getPrimaryPart(child)
if part then
if (part.Position - position).Magnitude <= 250 then
if not child:FindFirstChild("Highlight") then
local highlight = Instance.new("Highlight", child)
highlight.FillColor = Color3.fromRGB(255, 50, 50)
highlight.OutlineColor = Color3.fromRGB(255, 0, 0)
end
else
local highlight = child:FindFirstChild("Highlight")
if highlight then
highlight:Destroy()
end
end
end
end
else
for _, child in ipairs(Characters:GetChildren()) do
local highlight = child:FindFirstChild("Highlight")
if highlight then
highlight:Destroy()
end
end
end
if itemESPEnabled then
for _, child in ipairs(Items:GetChildren()) do
if not child:FindFirstChild("Highlight") then
local highlight = Instance.new("Highlight", child)
highlight.FillColor = Color3.fromRGB(50, 255, 50)
highlight.OutlineColor = Color3.fromRGB(0, 200, 0)
end
end
else
for _, child in ipairs(Items:GetChildren()) do
local highlight = child:FindFirstChild("Highlight")
if highlight then
highlight:Destroy()
end
end
end
if chestESPEnabled then
local time = tick()
if time - lastChestUpdate >= 4 then
lastChestUpdate = time
clearESPObjects(chestESPObjects)
for _, chest in ipairs(chestList) do
local part = getPrimaryPart(chest)
if part then
local magnitude = (part.Position - position).Magnitude
if magnitude <= 300 then
local billboard = Instance.new("BillboardGui")
billboard.Size = UDim2.new(0, 100, 0, 40)
billboard.AlwaysOnTop = true
billboard.Adornee = part
local label = Instance.new("TextLabel", billboard)
label.Size = UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 1
label.Text = "Chest [" .. math.floor(magnitude) .. "m]"
label.TextColor3 = Color3.fromRGB(255, 255, 0)
label.TextStrokeTransparency = 0
label.Font = Enum.Font.GothamBold
label.TextScaled = true
billboard.Parent = part
table.insert(chestESPObjects, billboard)
end
end
end
end
elseif #chestESPObjects > 0 then
clearESPObjects(chestESPObjects)
end
if playerESPEnabled then
local time = tick()
if time - lastPlayerUpdate >= 4 then
lastPlayerUpdate = time
clearESPObjects(playerESPObjects)
clearPlayerHighlights()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local rootPart = player.Character:FindFirstChild("HumanoidRootPart")
if not player.Character:FindFirstChild("PlayerHighlight") then
local highlight = Instance.new("Highlight", player.Character)
highlight.Name = "PlayerHighlight"
highlight.FillColor = Color3.fromRGB(50, 150, 255)
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.FillTransparency = 0.5
end
if rootPart then
local magnitude = (rootPart.Position - position).Magnitude
local billboard = Instance.new("BillboardGui")
billboard.Size = UDim2.new(0, 130, 0, 40)
billboard.AlwaysOnTop = true
billboard.Adornee = rootPart
billboard.StudsOffset = Vector3.new(0, 3, 0)
local label = Instance.new("TextLabel", billboard)
label.Size = UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 1
label.Text = player.Name .. " [" .. math.floor(magnitude) .. "m]"
label.TextColor3 = Color3.fromRGB(100, 200, 255)
label.TextStrokeTransparency = 0
label.Font = Enum.Font.GothamBold
label.TextScaled = true
billboard.Parent = rootPart
table.insert(playerESPObjects, billboard)
end
end
end
end
elseif #playerESPObjects > 0 then
clearESPObjects(playerESPObjects)
clearPlayerHighlights()
end
end
end
end
end)
ESPTab:CreateToggle({
Name = "Mob ESP",
CurrentValue = false,
Callback = function(state)
mobESPEnabled = state
end
})
ESPTab:CreateToggle({
Name = "Item ESP",
CurrentValue = false,
Callback = function(state)
itemESPEnabled = state
end
})
ESPTab:CreateToggle({
Name = "Chest ESP",
CurrentValue = false,
Callback = function(state)
chestESPEnabled = state
end
})
ESPTab:CreateToggle({
Name = "Player ESP",
CurrentValue = false,
Callback = function(state)
playerESPEnabled = state
end
})
local function findMapObject(name)
if not Map then return nil end
for _, descendant in ipairs(Map:GetDescendants()) do
if not descendant.Name:lower():find(name) then
continue
end
local obj = descendant:IsA("Model") and getPrimaryPart(descendant)
if not obj then
obj = descendant:IsA("BasePart") and descendant
end
if obj then
return obj
end
end
end
TeleportTab:CreateButton({
Name = "Campfire",
Callback = function()
local obj = findMapObject("mainfire") or findMapObject("campfire")
if obj then
teleportTo(obj)
else
Rayfield:Notify({
Title = "Error",
Content = "Not found",
Duration = 2
})
end
end
})
TeleportTab:CreateButton({
Name = "Stronghold",
Callback = function()
local stronghold = workspace:FindFirstChild("Map")
if stronghold then
stronghold = workspace.Map:FindFirstChild("Landmarks")
if stronghold then
stronghold = workspace.Map.Landmarks:FindFirstChild("Stronghold")
if stronghold then
stronghold = workspace.Map.Landmarks.Stronghold:FindFirstChild("Functional")
if stronghold then
stronghold = workspace.Map.Landmarks.Stronghold.Functional:FindFirstChild("EntryDoors")
if stronghold then
stronghold = workspace.Map.Landmarks.Stronghold.Functional.EntryDoors:FindFirstChild("DoorRight")
if stronghold then
stronghold = workspace.Map.Landmarks.Stronghold.Functional.EntryDoors.DoorRight:FindFirstChild("Model")
end
end
end
end
end
end
if stronghold then
local part = stronghold:GetChildren()[5]
if part and part:IsA("BasePart") then
teleportTo(part)
return
end
else
Rayfield:Notify({
Title = "Error",
Content = "Stronghold not found",
Duration = 2
})
end
end
})
local dropdownUpdateDelay = 0
local function setupDropdownRefresh(dropdown, getOptionsFunc, refreshDelay)
dropdownUpdateDelay += 0.5
local delayTime = dropdownUpdateDelay
task.spawn(function()
task.wait(delayTime)
local currentOptions = {}
while true do
task.wait(refreshDelay)
local newOptions = getOptionsFunc()
local changed = #newOptions ~= #currentOptions
if not changed then
for i, opt in ipairs(newOptions) do
if opt ~= currentOptions[i] then
changed = true
break
end
end
end
if changed then
dropdown:Refresh(newOptions)
currentOptions = newOptions
end
end
end)
end
local selectedChest
local function isChestOpen(chest)
local opened = chest:FindFirstChild("Opened")
if opened then
opened = chest.Opened.Value
end
if opened then return true end
local isOpen = chest:FindFirstChild("IsOpen")
if isOpen then
isOpen = chest.IsOpen.Value
end
if isOpen then return true end
local lid = chest:FindFirstChild("Lid") or chest:FindFirstChild("ChestLid")
if lid then
lid = lid:IsA("BasePart") and lid.Transparency > 0.5
end
return lid
end
local chestDropdown = TeleportTab:CreateDropdown({
Name = "Select Chest",
Options = {},
Callback = function(options)
selectedChest = options[1]
end
})
local chestLookup = {}
setupDropdownRefresh(chestDropdown, function()
local counts = {}
local optionList = {}
chestLookup = {}
for _, child in ipairs(Items:GetChildren()) do
local isChest = child:IsA("Model")
if isChest then
isChest = child.Name:lower():find("chest") and not isChestOpen(child)
end
if isChest then
local name = "Chest " .. (child.Name:match("%d+") or "?")
counts[name] = (counts[name] or 0) + 1
local optionName = name .. " #" .. counts[name]
chestLookup[optionName] = child
table.insert(optionList, optionName)
end
end
table.sort(optionList)
return optionList
end, 3)
TeleportTab:CreateButton({
Name = "Go to Chest",
Callback = function()
local chest = chestLookup[selectedChest]
if chest then
teleportTo(getPrimaryPart(chest))
end
end
})
local selectedPlayer
local playerDropdown = TeleportTab:CreateDropdown({
Name = "Select Player",
Options = {},
Callback = function(options)
selectedPlayer = options[1]
end
})
setupDropdownRefresh(playerDropdown, function()
local players = {}
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
table.insert(players, player.Name)
end
end
return players
end, 4)
TeleportTab:CreateButton({
Name = "Go to Player",
Callback = function()
local player = Players:FindFirstChild(selectedPlayer)
if player and player.Character then
teleportTo(player.Character:FindFirstChild("HumanoidRootPart"))
end
end
})
local selectedMob
local mobDropdown = TeleportTab:CreateDropdown({
Name = "Select Mob",
Options = {},
Callback = function(options)
selectedMob = options[1]
end
})
setupDropdownRefresh(mobDropdown, function()
local mobs = {}
for _, child in ipairs(Characters:GetChildren()) do
table.insert(mobs, child.Name)
end
return mobs
end, 4)
TeleportTab:CreateButton({
Name = "Go to Mob",
Callback = function()
for _, child in ipairs(Characters:GetChildren()) do
if child.Name == selectedMob then
teleportTo(getPrimaryPart(child))
return
end
end
end
})
local selectedItem
local itemDropdown = ItemsTab:CreateDropdown({
Name = "Select Item",
Options = {},
CurrentOption = {},
Callback = function(options)
selectedItem = options[1]
end
})
setupDropdownRefresh(itemDropdown, function()
local items = {}
for _, child in ipairs(Items:GetChildren()) do
local isValid = not child.Name:lower():find("chest")
if isValid then
isValid = not table.find(items, child.Name)
end
if isValid then
table.insert(items, child.Name)
end
end
table.sort(items)
return items
end, 4)
ItemsTab:CreateButton({
Name = "Bring Item (All)",
Callback = function()
local root = getRootPart()
if not root then return end
if not selectedItem then
Rayfield:Notify({
Title = "Items",
Content = "Select an item first!",
Duration = 2
})
return
end
local count = 0
for _, child in ipairs(Items:GetChildren()) do
if child.Name == selectedItem then
count += 1
if count > 25 then
break
end
pcall(function()
local primary = child.PrimaryPart
if not primary then
primary = child:FindFirstChildWhichIsA("BasePart")
if not primary then
primary = child:FindFirstChild("Handle")
end
end
local part = primary
if not part then return end
if not child.PrimaryPart then
pcall(function()
child.PrimaryPart = part
end)
end
local position = root.CFrame + Vector3.new(0, count * 2 + 3, 0)
local startDrag, stopDrag = getDragRemotes()
if not startDrag or not stopDrag then return end
startDrag:FireServer(child)
task.wait(0.05)
if child.PrimaryPart then
child:SetPrimaryPartCFrame(position)
else
part.CFrame = position
end
task.wait(0.05)
stopDrag:FireServer(child)
task.wait(0.1)
end)
end
end
local message
if count > 0 then
message = "Brought " .. count .. "x " .. selectedItem
else
message = selectedItem .. " not found in world"
end
Rayfield:Notify({
Title = "Items",
Content = message,
Duration = 3
})
end
})
local campfirePosition = Vector3.new(0, 19, 0)
local workbenchPosition = Vector3.new(21, 16, -5)
local autoCampfire = {}
local autoCook = {}
local autoWorkbench = {}
local autoBiofuel = {}
local function createAutoSection(tab, sectionName, items, stateTable)
tab:CreateSection(sectionName)
for _, item in ipairs(items) do
tab:CreateToggle({
Name = item,
CurrentValue = false,
Callback = function(state)
stateTable[item] = state
end
})
end
tab:CreateButton({
Name = "Enable All",
Callback = function()
for _, item in ipairs(items) do
stateTable[item] = true
end
end
})
tab:CreateButton({
Name = "Disable All",
Callback = function()
for _, item in ipairs(items) do
stateTable[item] = false
end
end
})
end
createAutoSection(AutoTab, "Auto Feed Campfire", {
"Log",
"Coal",
"Fuel Canister",
"Oil Barrel",
"Biofuel"
}, autoCampfire)
createAutoSection(AutoTab, "Auto Cook", {
"Morsel",
"Steak"
}, autoCook)
createAutoSection(AutoTab, "Auto Workbench", {
"UFO Junk",
"UFO Component",
"Old Car Engine",
"Broken Fan",
"Old Microwave",
"Bolt",
"Sheet Metal",
"Old Radio",
"Tyre",
"Washing Machine",
"Broken Microwave",
"Log"
}, autoWorkbench)
createAutoSection(AutoTab, "Auto Biofuel Processor", {
"Carrot",
"Cooked Morsel",
"Morsel",
"Steak",
"Cooked Steak",
"Log"
}, autoBiofuel)
task.spawn(function()
while true do
task.wait(2)
for item, state in pairs(autoCampfire) do
if state then
for _, child in ipairs(Items:GetChildren()) do
if item == child.Name then
bringItem(child, campfirePosition)
end
end
end
end
end
end)
task.spawn(function()
while true do
task.wait(2.5)
for item, state in pairs(autoCook) do
if state then
for _, child in ipairs(Items:GetChildren()) do
if item == child.Name then
bringItem(child, campfirePosition)
end
end
end
end
end
end)
task.spawn(function()
while true do
task.wait(2.5)
for item, state in pairs(autoWorkbench) do
if state then
for _, child in ipairs(Items:GetChildren()) do
if item == child.Name then
bringItem(child, workbenchPosition)
end
end
end
end
end
end)
task.spawn(function()
local biofuelPosition
while true do
task.wait(2)
if not biofuelPosition then
local structures = workspace:FindFirstChild("Structures")
local processor = structures and structures:FindFirstChild("Biofuel Processor")
if processor then
processor = processor:FindFirstChild("Part")
end
if processor then
biofuelPosition = processor.Position + Vector3.new(0, 5, 0)
end
end
if biofuelPosition then
for item, state in pairs(autoBiofuel) do
if state then
for _, child in ipairs(Items:GetChildren()) do
if item == child.Name then
bringItem(child, biofuelPosition)
end
end
end
end
end
end
end)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and input.KeyCode == Enum.KeyCode.G then
Rayfield:ToggleUI()
end
end)
Rayfield:Notify({
Title = "Gooner Hub v2",
Content = "Loaded! Press G to toggle UI",
Duration = 4
})No comments yet for this script.


