local CustomDarkTheme = {
TextColor = Color3.fromRGB(240, 240, 240),
Background = Color3.fromRGB(25, 25, 25),
Topbar = Color3.fromRGB(34, 34, 34),
Shadow = Color3.fromRGB(20, 20, 20),
NotificationBackground = Color3.fromRGB(20, 20, 20),
NotificationActionsBackground = Color3.fromRGB(230, 230, 230),
TabBackground = Color3.fromRGB(80, 80, 80),
TabStroke = Color3.fromRGB(85, 85, 85),
TabBackgroundSelected = Color3.fromRGB(210, 210, 210),
TabTextColor = Color3.fromRGB(240, 240, 240),
SelectedTabTextColor = Color3.fromRGB(50, 50, 50),
ElementBackground = Color3.fromRGB(35, 35, 35),
ElementBackgroundHover = Color3.fromRGB(40, 40, 40),
SecondaryElementBackground = Color3.fromRGB(25, 25, 25),
ElementStroke = Color3.fromRGB(50, 50, 50),
SecondaryElementStroke = Color3.fromRGB(40, 40, 40),
SliderBackground = Color3.fromRGB(50, 138, 220),
SliderProgress = Color3.fromRGB(50, 138, 220),
SliderStroke = Color3.fromRGB(58, 163, 255),
ToggleBackground = Color3.fromRGB(30, 30, 30),
ToggleEnabled = Color3.fromRGB(0, 146, 214),
ToggleDisabled = Color3.fromRGB(100, 100, 100),
ToggleEnabledStroke = Color3.fromRGB(0, 170, 255),
ToggleDisabledStroke = Color3.fromRGB(125, 125, 125),
ToggleEnabledOuterStroke = Color3.fromRGB(100, 100, 100),
ToggleDisabledOuterStroke = Color3.fromRGB(65, 65, 65),
DropdownSelected = Color3.fromRGB(40, 40, 40),
DropdownUnselected = Color3.fromRGB(30, 30, 30),
InputBackground = Color3.fromRGB(30, 30, 30),
InputStroke = Color3.fromRGB(65, 65, 65),
PlaceholderColor = Color3.fromRGB(178, 178, 178)
}
local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()
local Window = Rayfield:CreateWindow({
Name = "Friendly hacks",
Icon = 0, -- Icon in Topbar. Can use Lucide Icons (string) or Roblox Image (number). 0 to use no icon (default).
LoadingTitle = "Rayfield Interface Suite",
LoadingSubtitle = "by Mango",
ShowText = "HACK", -- for mobile users to unhide rayfield, change if you'd like
Theme = CustomDarkTheme, -- Check https://[Log in to view URL]
ToggleUIKeybind = "K", -- The keybind to toggle the UI visibility (string like "K" or Enum.KeyCode)
DisableRayfieldPrompts = false,
DisableBuildWarnings = false, -- Prevents Rayfield from warning when the script has a version mismatch with the interface
ConfigurationSaving = {
Enabled = true,
FolderName = nil, -- Create a custom folder for your hub/game
FileName = "Big Hub"
},
Discord = {
Enabled = false, -- Prompt the user to join your Discord server if their executor supports it
Invite = "noinvitelink", -- The Discord invite code, do not include discord.gg/. E.g. discord.gg/ ABCD would be ABCD
RememberJoins = true -- Set this to false to make them join the discord every time they load it up
},
KeySystem = true, -- Set this to true to use our key system
KeySettings = {
Title = "90 hour key",
Subtitle = "Link",
Note = "Linkvertize is where the key is", -- Use this to tell the user how to get a key
FileName = "Key", -- It is recommended to use something unique as other scripts using Rayfield may overwrite your key file
SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
GrabKeyFromSite = true, -- If this is true, set Key below to the RAW site you would like Rayfield to get the key from
Key = {"FREEKEY"} -- List of keys that will be accepted by the system, can be RAW file links (pastebin, github etc) or simple strings ("hello","key22")
}
})
--// THEME MANAGER TAB (put this right AFTER your CreateWindow)
local ThemeTab = Window:CreateTab("Theme Manager", "palette") -- "palette" is the tab icon (Lucide)
ThemeTab:CreateSection("Theme Presets")
-- Dropdown to change theme
ThemeTab:CreateDropdown({
Name = "Select Theme",
Options = {
"Default",
"AmberGlow",
"Amethyst",
"Bloom",
"DarkBlue",
"Green",
"Light",
"Ocean",
"Serenity",
"AMOLED",
"Purpleset",
"AMOLEDPurple",
"Custom Dark" -- this will use your CustomDarkTheme table
},
CurrentOption = {"Custom Dark"}, -- starts on your custom one
MultipleOptions = false,
Flag = "ThemeManagerTheme",
Callback = function(Option)
-- Option might be a table or a single string depending on Rayfield version
local chosen = typeof(Option) == "table" and Option[1] or Option
if chosen == "Custom Dark" then
-- Use your Lua table theme
Window.ModifyTheme(CustomDarkTheme)
else
-- Use built-in Rayfield themes by identifier
Window.ModifyTheme(chosen)
end
end
})
--// TRANSPARENCY CONTROL
ThemeTab:CreateSection("GUI Transparency")
-- Helper function: change Rayfield GUI transparency
local function SetGuiTransparency(percent)
local transparency = math.clamp(percent / 100, 0, 1)
-- Try gethui() (executor), fall back to CoreGui
local guiParent = (gethui and gethui()) or game:GetService("CoreGui")
if not guiParent then return end
local rf = guiParent:FindFirstChild("Rayfield")
if not rf then return end
for _, obj in ipairs(rf:GetDescendants()) do
if obj:IsA("Frame") or obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
-- Only touch things that aren't already fully invisible
if obj.BackgroundTransparency < 1 then
obj.BackgroundTransparency = transparency
end
elseif obj:IsA("ImageLabel") or obj:IsA("ImageButton") then
if obj.ImageTransparency < 1 then
obj.ImageTransparency = transparency
end
end
end
end
-- Slider to control transparency
ThemeTab:CreateSlider({
Name = "GUI Transparency",
Range = {0, 100}, -- 0% = solid, 100% = invisible
Increment = 5,
Suffix = "%",
CurrentValue = 0,
Flag = "GuiTransparency",
Callback = function(Value)
SetGuiTransparency(Value)
end
})
-- Optional: button to reset transparency instantly
ThemeTab:CreateButton({
Name = "Reset Transparency",
Callback = function()
SetGuiTransparency(0)
end
})
local ATab = Window:CreateTab("MainScript🏠", nil) -- Title, Image
local Section = ATab:CreateSection("MainScript🏠")
local Toggle = ATab:CreateToggle({
Name = "Fly",
CurrentValue = false,
Flag = "Toggle2234", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
-- OP Fly Script
-- Talk To Me: qrcode1 on discord
-- Keybinds : X To Fly Or press the button
-- Instances:
local ScreenGui = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local TextLabel = Instance.new("TextLabel")
local TextLabel_2 = Instance.new("TextLabel")
local TextButton = Instance.new("TextButton")
--Properties:
ScreenGui.Parent = game.CoreGui
Frame.Parent = ScreenGui
Frame.BackgroundColor3 = Color3.fromRGB(24, 255, 51)
Frame.BorderColor3 = Color3.fromRGB(255, 0, 4)
Frame.BorderSizePixel = 15
Frame.Position = UDim2.new(0.0575905927, 0, 0.653887033, 0)
Frame.Size = UDim2.new(0, 295, 0, 152)
Frame.Active = true
Frame.Draggable = true
TextLabel.Parent = Frame
TextLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
TextLabel.BackgroundTransparency = 1.000
TextLabel.BorderColor3 = Color3.fromRGB(255, 255, 255)
TextLabel.BorderSizePixel = 0
TextLabel.Size = UDim2.new(0, 295, 0, 63)
TextLabel.Font = Enum.Font.SciFi
TextLabel.Text = "OP FLY SCRIPT"
TextLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel.TextScaled = true
TextLabel.TextSize = 14.000
TextLabel.TextStrokeTransparency = 0.000
TextLabel.TextWrapped = true
TextLabel_2.Parent = Frame
TextLabel_2.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_2.BackgroundTransparency = 1.000
TextLabel_2.BorderColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_2.BorderSizePixel = 0
TextLabel_2.Position = UDim2.new(0, 0, 0.342105269, 0)
TextLabel_2.Size = UDim2.new(0, 295, 0, 18)
TextLabel_2.Font = Enum.Font.SciFi
TextLabel_2.Text = "(May Not Work On All Games)"
TextLabel_2.TextColor3 = Color3.fromRGB(255, 255, 255)
TextLabel_2.TextScaled = true
TextLabel_2.TextSize = 14.000
TextLabel_2.TextStrokeTransparency = 0.000
TextLabel_2.TextWrapped = true
TextButton.Parent = Frame
TextButton.BackgroundColor3 = Color3.fromRGB(8, 0, 255)
TextButton.Position = UDim2.new(0.159322038, 0, 0.552631557, 0)
TextButton.Size = UDim2.new(0, 200, 0, 50)
TextButton.Font = Enum.Font.SciFi
TextButton.Text = "Click Me To Fly"
TextButton.TextColor3 = Color3.fromRGB(255, 255, 255)
TextButton.TextScaled = true
TextButton.TextSize = 14.000
TextButton.TextStrokeTransparency = 0.000
TextButton.TextWrapped = true
TextButton.MouseButton1Down:connect(function()
local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()
localplayer = plr
if workspace:FindFirstChild("Core") then
workspace.Core:Destroy()
end
local Core = Instance.new("Part")
Core.Name = "Core"
Core.Size = Vector3.new(0.05, 0.05, 0.05)
spawn(function()
Core.Parent = workspace
local Weld = Instance.new("Weld", Core)
Weld.Part0 = Core
Weld.Part1 = localplayer.Character.LowerTorso
Weld.C0 = CFrame.new(0, 0, 0)
end)
workspace:WaitForChild("Core")
local torso = workspace.Core
flying = true
local speed=10
local keys={a=false,d=false,w=false,s=false}
local e1
local e2
local function start()
local pos = Instance.new("BodyPosition",torso)
local gyro = Instance.new("BodyGyro",torso)
pos.Name="EPIXPOS"
pos.maxForce = Vector3.new(math.huge, math.huge, math.huge)
pos.position = torso.Position
gyro.maxTorque = Vector3.new(9e9, 9e9, 9e9)
gyro.cframe = torso.CFrame
repeat
wait()
localplayer.Character.Humanoid.PlatformStand=true
local new=gyro.cframe - gyro.cframe.p + pos.position
if not keys.w and not keys.s and not keys.a and not keys.d then
speed=5
end
if keys.w then
new = new + workspace.CurrentCamera.CoordinateFrame.lookVector * speed
speed=speed+0
end
if keys.s then
new = new - workspace.CurrentCamera.CoordinateFrame.lookVector * speed
speed=speed+0
end
if keys.d then
new = new * CFrame.new(speed,0,0)
speed=speed+0
end
if keys.a then
new = new * CFrame.new(-speed,0,0)
speed=speed+0
end
if speed>10 then
speed=5
end
pos.position=new.p
if keys.w then
gyro.cframe = workspace.CurrentCamera.CoordinateFrame*CFrame.Angles(-math.rad(speed*0),0,0)
elseif keys.s then
gyro.cframe = workspace.CurrentCamera.CoordinateFrame*CFrame.Angles(math.rad(speed*0),0,0)
else
gyro.cframe = workspace.CurrentCamera.CoordinateFrame
end
until flying == false
if gyro then gyro:Destroy() end
if pos then pos:Destroy() end
flying=false
localplayer.Character.Humanoid.PlatformStand=false
speed=10
end
e1=mouse.KeyDown:connect(function(key)
if not torso or not torso.Parent then flying=false e1:disconnect() e2:disconnect() return end
if key=="w" then
keys.w=true
elseif key=="s" then
keys.s=true
elseif key=="a" then
keys.a=true
elseif key=="d" then
keys.d=true
elseif key=="x" then
if flying==true then
flying=false
else
flying=true
start()
end
end
end)
e2=mouse.KeyUp:connect(function(key)
if key=="w" then
keys.w=false
elseif key=="s" then
keys.s=false
elseif key=="a" then
keys.a=false
elseif key=="d" then
keys.d=false
end
end)
start()
end)
end,
})
local Slider = ATab:CreateSlider({
Name = "WalkSpeed",
Range = {16, 300},
Increment = 1,
Suffix = "Speed",
CurrentValue = 16,
Flag = "Slider1", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = (Value)
end,
})
local Slider = ATab:CreateSlider({
Name = "JumpPower",
Range = {50, 2000},
Increment = 1,
Suffix = "Jump",
CurrentValue = 50,
Flag = "Slider2", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
game.Players.LocalPlayer.Character.Humanoid.JumpPower = (Value)
end,
})
local BTab = Window:CreateTab("FortLineScript🏠", nil) -- Title, Image
local Section = BTab:CreateSection("FortLineScript🏠")
local Button = BTab:CreateButton({
Name = "Fortline leak",
Callback = function()
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local StarterGui = game:GetService("StarterGui")
local Camera = Workspace:FindFirstChildOfClass("Camera") or Workspace.CurrentCamera
-- ===== Rayfield UI =====
local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()
local Window = Rayfield:CreateWindow({
Name = "FORTLINE BIG UPDATE 2025",
Icon = 0,
LoadingTitle = "LOADING",
LoadingSubtitle = "by Chance",
Theme = "Default",
ConfigurationSaving = {Enabled=true, FolderName=nil, FileName="FORTLINE_PRO_2025_CFG"},
})
-- Tabs: Main, Combat, ESP, Aimbot, Movement, Settings
local TabMain = Window:CreateTab("Main", 4483362458)
local TabCombat = Window:CreateTab("Combat", 4483362458)
local TabESP = Window:CreateTab("ESP", 4483362458)
local TabAimbot = Window:CreateTab("Aimbot", 4483362458)
local TabMove = Window:CreateTab("Movement",4483362458)
local TabSettings= Window:CreateTab("Settings",4483362458)
-- ===== Internal state =====
local Connections = {}
local Drawings = {} -- store any drawing objects for cleanup
local PlayersESP = {}
local LoopKillAllRunning = false
local LoopKillPlayers = {} -- name -> bool
local GodRunning = false
local AntiKickRunning = true
-- ===== Cached remote finder =====
local function safeFindWeaponsNetwork()
local ok, net = pcall(function()
local ws = ReplicatedStorage:FindFirstChild("WeaponsSystem")
if not ws then return nil end
local network = ws:FindFirstChild("Network")
if not network then return nil end
return network:FindFirstChild("WeaponHit") or network:FindFirstChild("WeaponHit")
end)
return ok and net or nil
end
local cachedWeaponNetwork = safeFindWeaponsNetwork()
-- attempt a short wait if nil
if not cachedWeaponNetwork then
task.spawn(function()
pcall(function()
cachedWeaponNetwork = ReplicatedStorage:WaitForChild("WeaponsSystem", 2)
and ReplicatedStorage.WeaponsSystem:WaitForChild("Network", 2)
and ReplicatedStorage.WeaponsSystem.Network:FindFirstChild("WeaponHit")
end)
end)
end
-- ===== Utilities =====
local function safeFire(weapon, args)
if not weapon or not cachedWeaponNetwork then return end
pcall(function() cachedWeaponNetwork:FireServer(weapon, args) end)
end
local function findRocketLauncher()
local w = (LocalPlayer.Backpack and LocalPlayer.Backpack:FindFirstChild("RocketLauncher"))
or (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("RocketLauncher"))
return w
end
local function isPartValid(part)
return part and typeof(part.Position) == "Vector3" and part:IsA("BasePart")
end
-- ===== Combat: Fire helper, Kill All, Loop Kill player =====
local function FireWeaponAtPart(part)
if not isPartValid(part) then return false end
local weapon = findRocketLauncher()
if not weapon then return false end
if not cachedWeaponNetwork then cachedWeaponNetwork = safeFindWeaponsNetwork() end
if not cachedWeaponNetwork then return false end
pcall(function()
cachedWeaponNetwork:FireServer(weapon, {
p = part.Position,
pid = 0,
part = part,
d = 0, maxDist = 0, h = part, m = Enum.Material.Concrete,
n = Vector3.new(0,0,0), t = 0, sid = 0
})
end)
return true
end
local function KillAll()
for _, pl in ipairs(Players:GetPlayers()) do
if pl ~= LocalPlayer and pl.Character then
local head = pl.Character:FindFirstChild("Head") or pl.Character:FindFirstChild("HumanoidRootPart")
if head and head:IsA("BasePart") then
pcall(function() FireWeaponAtPart(head) end)
end
end
end
end
local function ToggleLoopKillAll()
LoopKillAllRunning = not LoopKillAllRunning
if LoopKillAllRunning then
task.spawn(function()
while LoopKillAllRunning do
pcall(KillAll)
task.wait(0.5)
end
end)
end
end
local function ToggleLoopKillPlayer(name)
if not name or name == "" then return end
LoopKillPlayers[name] = not LoopKillPlayers[name]
if LoopKillPlayers[name] then
task.spawn(function()
while LoopKillPlayers[name] do
local p = Players:FindFirstChild(name)
if p and p.Character then
local head = p.Character:FindFirstChild("Head") or p.Character:FindFirstChild("HumanoidRootPart")
if head and head:IsA("BasePart") then
pcall(function() FireWeaponAtPart(head) end)
end
end
task.wait(0.5)
end
end)
end
end
-- Combat UI
TabCombat:CreateButton({Name="Kill All (once)", Callback=function() pcall(KillAll) end})
TabCombat:CreateButton({Name="Toggle LoopKill All", Callback=ToggleLoopKillAll})
TabCombat:CreateInput({Name="Kill Player (once)", CurrentValue="", PlaceholderText="Player Name", RemoveTextAfterFocusLost=false, Callback=function(txt)
local p = Players:FindFirstChild(txt)
if p and p.Character then
local head = p.Character:FindFirstChild("Head") or p.Character:FindFirstChild("HumanoidRootPart")
if head then FireWeaponAtPart(head) end
end
end})
TabCombat:CreateInput({Name="Toggle LoopKill Player", CurrentValue="", PlaceholderText="Player Name", RemoveTextAfterFocusLost=false, Callback=ToggleLoopKillPlayer})
-- ===== God Mode (improved) =====
local function ToggleGod()
GodRunning = not GodRunning
if GodRunning then
task.spawn(function()
while GodRunning do
pcall(function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local safePart = Workspace:FindFirstChild("Safe")
if safePart and safePart:IsA("BasePart") then
safePart.CFrame = LocalPlayer.Character.HumanoidRootPart.CFrame
end
end
end)
task.wait(0.1)
end
end)
end
end
TabMain:CreateButton({Name="Toggle God Mode", Callback=ToggleGod})
-- ===== Reset =====
TabMain:CreateButton({Name="Reset (Ragdoll)", Callback=function()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
pcall(function() LocalPlayer.Character.Humanoid.Health = 0 end)
end
end})
-- ===== Hitbox Expander (external) =====
TabMain:CreateButton({Name="Hitbox Expander (external)", Callback=function()
pcall(function()
loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)
end})
-- ===== Movement: Speed, Jump, Fly, Noclip, Teleport UI =====
local defaultSpeed, defaultJump = 16, 50
local speedValue, jumpValue = defaultSpeed, defaultJump
local speedEnabled, jumpEnabled = false, false
local FlyActive = false
local FlySpeed = 70
local NoclipActive = false
local function UpdateHumanoid()
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
local hum = LocalPlayer.Character.Humanoid
hum.WalkSpeed = speedEnabled and speedValue or defaultSpeed
hum.JumpPower = jumpEnabled and jumpValue or defaultJump
end
end
LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
UpdateHumanoid()
end)
TabMove:CreateToggle({Name="Speed Enabled", CurrentValue=false, Callback=function(val) speedEnabled = val UpdateHumanoid() end})
TabMove:CreateSlider({Name="Speed", Range={16,200}, Increment=1, CurrentValue=50, Callback=function(v) speedValue = v UpdateHumanoid() end})
TabMove:CreateToggle({Name="Jump Enabled", CurrentValue=false, Callback=function(val) jumpEnabled = val UpdateHumanoid() end})
TabMove:CreateSlider({Name="Jump Power", Range={50,300}, Increment=1, CurrentValue=100, Callback=function(v) jumpValue = v UpdateHumanoid() end})
TabMove:CreateToggle({Name="Fly (Hold F)", CurrentValue=false, Callback=function(val)
FlyActive = val
end})
TabMove:CreateSlider({Name="Fly Speed", Range={20,200}, Increment=1, CurrentValue=FlySpeed, Callback=function(v) FlySpeed = v end})
TabMove:CreateToggle({Name="Noclip (Toggle N)", CurrentValue=false, Callback=function(v) NoclipActive = v end})
TabMove:CreateInput({Name="Teleport to Player", CurrentValue="", PlaceholderText="Player Name", RemoveTextAfterFocusLost=false, Callback=function(txt)
local p = Players:FindFirstChild(txt)
if p and p.Character and p.Character:FindFirstChild("HumanoidRootPart") and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
pcall(function() LocalPlayer.Character.HumanoidRootPart.CFrame = p.Character.HumanoidRootPart.CFrame end)
end
end})
-- Fly implementation
local bodyVel
task.spawn(function()
while task.wait() do
if FlyActive and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local hrp = LocalPlayer.Character.HumanoidRootPart
if not bodyVel or not bodyVel.Parent then
bodyVel = Instance.new("BodyVelocity")
bodyVel.MaxForce = Vector3.new(1e5,1e5,1e5)
bodyVel.Velocity = Vector3.new(0,0,0)
bodyVel.Parent = hrp
end
local camCf = Camera and Camera.CFrame or CFrame.new()
local forward = camCf.LookVector
local right = camCf.RightVector
local move = Vector3.new(0,0,0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + forward end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - forward end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - right end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + right end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0,1,0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then move = move - Vector3.new(0,1,0) end
bodyVel.Velocity = move.Unit == move.Unit and move.Unit * FlySpeed or Vector3.new(0,0,0)
else
if bodyVel then
pcall(function() bodyVel:Destroy() end)
bodyVel = nil
end
end
end
end)
-- Noclip implementation
task.spawn(function()
while task.wait(0.25) do
if NoclipActive and LocalPlayer.Character then
for _, part in pairs(LocalPlayer.Character:GetDescendants()) do
if part:IsA("BasePart") then
pcall(function() part.CanCollide = false end)
end
end
end
end
end)
-- ===== Anti-kick / Anti-AFK =====
task.spawn(function()
while AntiKickRunning do
pcall(function()
if LocalPlayer and LocalPlayer.SetAttribute then
LocalPlayer:SetAttribute("PreventKick", true)
end
-- anti-AFK: send a controller input
pcall(function() StarterGui:SetCore("ResetButtonCallback", true) end)
end)
task.wait(1)
end
end)
-- ===== ESP System (improved) =====
local ESPSettings = {
Enabled = true,
ShowNames = true,
ShowHealth = true,
ShowDistance = true,
Tracers = true,
BoxScale = 1.0,
TeamColor = true,
}
TabESP:CreateToggle({Name="Enable ESP", CurrentValue=true, Callback=function(v) ESPSettings.Enabled = v end})
TabESP:CreateToggle({Name="Show Names", CurrentValue=true, Callback=function(v) ESPSettings.ShowNames = v end})
TabESP:CreateToggle({Name="Show Health", CurrentValue=true, Callback=function(v) ESPSettings.ShowHealth = v end})
TabESP:CreateToggle({Name="Show Distance", CurrentValue=true, Callback=function(v) ESPSettings.ShowDistance = v end})
TabESP:CreateToggle({Name="Tracers", CurrentValue=true, Callback=function(v) ESPSettings.Tracers = v end})
TabESP:CreateSlider({Name="Box Scale", Range={0.5,2.5}, Increment=0.1, CurrentValue=1.0, Callback=function(v) ESPSettings.BoxScale = v end})
TabESP:CreateToggle({Name="Team color tags", CurrentValue=true, Callback=function(v) ESPSettings.TeamColor = v end})
-- Drawing helpers
local function newSquare()
local sq = Drawing.new("Square")
sq.Thickness = 2
sq.Filled = false
sq.Visible = false
return sq
end
local function newText()
local t = Drawing.new("Text")
t.Size = 16
t.Center = true
t.Outline = true
t.Visible = false
return t
end
local function newLine()
local l = Drawing.new("Line")
l.Thickness = 1
l.Visible = false
return l
end
-- cleanup utility
local function cleanupESPForPlayer(player)
if PlayersESP[player] then
pcall(function()
if PlayersESP[player].Box then PlayersESP[player].Box:Remove() end
if PlayersESP[player].Text then PlayersESP[player].Text:Remove() end
if PlayersESP[player].Tracer then PlayersESP[player].Tracer:Remove() end
end)
PlayersESP[player] = nil
end
end
Players.PlayerRemoving:Connect(function(plr)
cleanupESPForPlayer(plr)
end)
-- ESP render loop
Connections.ESP = RunService.RenderStepped:Connect(function()
if not ESPSettings.Enabled then
for p,_ in pairs(PlayersESP) do cleanupESPForPlayer(p) end
return
end
for _,player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and (player.Character:FindFirstChild("HumanoidRootPart") or player.Character:FindFirstChild("Head")) then
if not PlayersESP[player] then
PlayersESP[player] = {
Box = newSquare(),
Text = newText(),
Tracer = newLine()
}
end
local root = player.Character:FindFirstChild("HumanoidRootPart") or player.Character:FindFirstChild("Head")
if not root then cleanupESPForPlayer(player); continue end
local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position)
local data = PlayersESP[player]
local box = data.Box; local text = data.Text; local tracer = data.Tracer
if onScreen then
local dist = 0
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
dist = math.floor((LocalPlayer.Character.HumanoidRootPart.Position - root.Position).Magnitude)
end
-- scale box by distance
local scale = math.clamp(200 / math.max(dist, 10), 0.7, 2.0) * ESPSettings.BoxScale
local w,h = 50 * scale, 100 * scale
box.Position = Vector2.new(screenPos.X - w/2, screenPos.Y - h/1.8)
box.Size = Vector2.new(w, h)
box.Color = (ESPSettings.TeamColor and (player.Team and (player.Team.TeamColor.Color) or Color3.fromRGB(255,0,0))) or Color3.fromRGB(255,0,0)
box.Visible = true
-- text info
local info = ""
if ESPSettings.ShowNames then info = info .. player.Name .. " " end
if ESPSettings.ShowHealth and player.Character:FindFirstChild("Humanoid") then
info = info .. "[" .. math.floor(player.Character.Humanoid.Health) .. "] "
end
if ESPSettings.ShowDistance then info = info .. "("..dist.."m)" end
text.Position = Vector2.new(screenPos.X, screenPos.Y - h/2 - 14)
text.Text = info
text.Color = Color3.fromRGB(255,255,255)
text.Visible = true
if ESPSettings.Tracers then
tracer.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y) -- bottom centre
tracer.To = Vector2.new(screenPos.X, screenPos.Y)
tracer.Color = box.Color
tracer.Visible = true
else
tracer.Visible = false
end
else
box.Visible = false; text.Visible = false; tracer.Visible = false
end
else
if PlayersESP[player] then cleanupESPForPlayer(player) end
end
end
end)
-- ===== Aimbot: Hold-to-aim, Legit, Smoothing, FOV circle, Silent Aim =====
local Aimbot = {
Enabled = false,
HoldToAim = true,
AimKey = Enum.UserInputType.MouseButton2, -- Right mouse
FOV = 120,
Smooth = 0.25,
Bone = "HumanoidRootPart",
Legit = false, -- lower smoothing & randomization
SilentAim = false, -- when true, FireWeaponAtPart is used directly (no camera move)
AutoHeadshot = false,
DrawFOV = true,
FOVCircle = nil
}
-- FOV circle drawing
local function createFOVCircle()
if Aimbot.FOVCircle then
pcall(function() Aimbot.FOVCircle:Remove() end)
end
local circ = Drawing.new("Circle")
circ.Radius = Aimbot.FOV
circ.Filled = false
circ.Transparency = 1
circ.Thickness = 1
circ.Visible = Aimbot.DrawFOV
Aimbot.FOVCircle = circ
end
createFOVCircle()
TabAimbot:CreateToggle({Name="Enable Aimbot", CurrentValue=false, Callback=function(v) Aimbot.Enabled = v end})
TabAimbot:CreateToggle({Name="Hold-to-Aim (RMB)", CurrentValue=true, Callback=function(v) Aimbot.HoldToAim = v end})
TabAimbot:CreateSlider({Name="Aimbot FOV", Range={50,500}, Increment=1, CurrentValue=Aimbot.FOV, Callback=function(v) Aimbot.FOV = v if Aimbot.FOVCircle then Aimbot.FOVCircle.Radius = v end end})
TabAimbot:CreateSlider({Name="Smoothing", Range={0.01,0.8}, Increment=0.01, CurrentValue=Aimbot.Smooth, Callback=function(v) Aimbot.Smooth = v end})
TabAimbot:CreateInput({Name="Aim Bone", CurrentValue="HumanoidRootPart", PlaceholderText="Bone name", RemoveTextAfterFocusLost=false, Callback=function(v) if v and v ~= "" then Aimbot.Bone = v end end})
TabAimbot:CreateToggle({Name="Legit Mode (subtle)", CurrentValue=false, Callback=function(v) Aimbot.Legit = v end})
TabAimbot:CreateToggle({Name="Silent Aim (fire w/out camera)", CurrentValue=false, Callback=function(v) Aimbot.SilentAim = v end})
TabAimbot:CreateToggle({Name="Auto Headshot", CurrentValue=false, Callback=function(v) Aimbot.AutoHeadshot = v end})
TabAimbot:CreateToggle({Name="Show FOV Circle", CurrentValue=true, Callback=function(v) Aimbot.DrawFOV = v if Aimbot.FOVCircle then Aimbot.FOVCircle.Visible = v end end})
TabAimbot:CreateInput({Name="Aim Hotkey (for HoldToAim leave empty)", CurrentValue="", PlaceholderText="E.g. Q", RemoveTextAfterFocusLost=false, Callback=function(v)
-- optional: map a single-key hotkey to toggle aim while HoldToAim disabled
-- handled below via InputBegan/Ended
end})
-- Helper to get mouse position
local function getMousePos()
local mousePos = UserInputService:GetMouseLocation()
-- On some exploits mouseY includes topbar offset; Camera.ViewportSize is used in FOV circle positioning
return Vector2.new(mousePos.X, mousePos.Y)
end
-- find closest player within FOV (screen-space)
local function getClosestInFOV()
local closest, best = nil, Aimbot.FOV + 0
local mouse = getMousePos()
for _, pl in ipairs(Players:GetPlayers()) do
if pl ~= LocalPlayer and pl.Character and pl.Character:FindFirstChild(Aimbot.Bone) then
local pos = pl.Character[Aimbot.Bone].Position
local screenPos, onScreen = Camera:WorldToViewportPoint(pos)
if onScreen then
local d = (Vector2.new(screenPos.X, screenPos.Y) - mouse).Magnitude
if d < best then
best = d
closest = pl
end
end
end
end
return closest, best
end
-- Draw FOV circle updating
Connections.FOV = RunService.RenderStepped:Connect(function()
if Aimbot.FOVCircle and Aimbot.DrawFOV then
local view = Camera and Camera.ViewportSize or Vector2.new(800,600)
Aimbot.FOVCircle.Position = getMousePos()
Aimbot.FOVCircle.Radius = Aimbot.FOV
Aimbot.FOVCircle.Visible = Aimbot.Enabled and Aimbot.DrawFOV
end
end)
-- Aim actions: move camera to look at target (smooth) OR silent-fire
local function aimAtPlayer(pl)
if not pl or not pl.Character or not pl.Character:FindFirstChild(Aimbot.Bone) then return end
local targetPos = pl.Character[Aimbot.Bone].Position
if Aimbot.SilentAim then
-- Fire directly at head or specified bone (silent)
local aimPart = (Aimbot.AutoHeadshot and pl.Character:FindFirstChild("Head")) or pl.Character[Aimbot.Bone]
if aimPart then FireWeaponAtPart(aimPart) end
else
-- Move camera towards target smoothly
local smooth = Aimbot.Legit and math.max(Aimbot.Smooth * 1.8, 0.05) or Aimbot.Smooth
if Camera and Camera.CFrame then
pcall(function()
Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, targetPos), smooth)
end)
end
end
end
-- Input handling for hold-to-aim
local aiming = false
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
-- Right mouse for hold-to-aim
if Aimbot.HoldToAim and input.UserInputType == Aimbot.AimKey then
aiming = true
end
-- example single-key toggle (Q) for manual aim if not hold-to-aim
if not Aimbot.HoldToAim and input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.Q then
aiming = not aiming
end
end)
UserInputService.InputEnded:Connect(function(input)
if Aimbot.HoldToAim and input.UserInputType == Aimbot.AimKey then
aiming = false
end
end)
-- Aimbot loop
Connections.Aimbot = RunService.RenderStepped:Connect(function()
if not Aimbot.Enabled then return end
if Aimbot.HoldToAim and not aiming then return end
local target, dist = getClosestInFOV()
if target and dist <= Aimbot.FOV then
aimAtPlayer(target)
end
end)
-- ===== FPS & Ping monitor =====
local FPS = 0
local lastTick = tick()
local frameCount = 0
Connections.FPS = RunService.RenderStepped:Connect(function()
frameCount = frameCount + 1
if tick() - lastTick >= 1 then
FPS = frameCount / (tick() - lastTick)
frameCount = 0
lastTick = tick()
end
end)
-- Ping: try to use stats from RunService or network object if available (best-effort)
local Ping = 0
task.spawn(function()
while task.wait(1) do
pcall(function()
-- some exploits expose GetNetworkStats or similar; we fallback to 0
local ok, res = pcall(function() return Workspace:GetServerTimeNow() end)
Ping = 0 -- best-effort; leave 0 if not available
-- alternative methods are exploit-dependent; keep ping as 0 fallback
end)
end
end)
-- show FPS/Ping in top-left using Drawing
local fpsText = Drawing.new("Text")
fpsText.Position = Vector2.new(8,8)
fpsText.Size = 16
fpsText.Outline = true
fpsText.Center = false
fpsText.Visible = true
Connections.FPSText = RunService.RenderStepped:Connect(function()
fpsText.Text = string.format("FPS: %d Ping: %dms", math.floor(FPS), math.floor(Ping))
fpsText.Color = Color3.fromRGB(255,255,255)
end)
table.insert(Drawings, fpsText)
-- ===== Settings / Hotkeys / Cleanup =====
-- Hotkeys
local Hotkeys = {
{key = Enum.KeyCode.N, action = function() NoclipActive = not NoclipActive end, desc = "Toggle Noclip"},
{key = Enum.KeyCode.F, action = function() FlyActive = not FlyActive end, desc = "Toggle Fly"},
{key = Enum.KeyCode.B, action = function() Aimbot.Enabled = not Aimbot.Enabled end, desc = "Toggle Aimbot"},
{key = Enum.KeyCode.K, action = function() ToggleLoopKillAll() end, desc = "Toggle LoopKill All"},
}
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.Keyboard then
for _,h in ipairs(Hotkeys) do
if input.KeyCode == h.key then
pcall(h.action)
end
end
end
end)
-- Settings UI
TabSettings:CreateLabel({Name="Hotkeys (N:Noclip, F:Fly, B:Aimbot, K:LoopKillAll)"})
TabSettings:CreateButton({Name="Unload / Cleanup (SAFE)", Callback=function()
-- call cleanup (defined below)
cleanupAll()
end})
TabSettings:CreateButton({Name="Reload Config", Callback=function() pcall(function() Rayfield:LoadConfiguration() end) end})
-- ===== Cleanup handler (disconnects + remove drawings) =====
function cleanupAll()
-- stop loops/state
LoopKillAllRunning = false
for k,_ in pairs(LoopKillPlayers) do LoopKillPlayers[k] = false end
GodRunning = false
FlyActive = false
NoclipActive = false
Aimbot.Enabled = false
AntiKickRunning = false
-- disconnect connections
for k,conn in pairs(Connections) do
if conn and typeof(conn) == "RBXScriptConnection" then
pcall(function() conn:Disconnect() end)
end
Connections[k] = nil
end
-- remove all drawing objects produced by this script
for _,obj in ipairs(Drawings) do
pcall(function() obj:Remove() end)
end
Drawings = {}
for p,_ in pairs(PlayersESP) do cleanupESPForPlayer(p) end
PlayersESP = {}
-- destroy FOV circle
if Aimbot.FOVCircle then pcall(function() Aimbot.FOVCircle:Remove() end) end
-- unset any attributes
pcall(function() if LocalPlayer and LocalPlayer.SetAttribute then LocalPlayer:SetAttribute("PreventKick", nil) end end)
end
-- Ensure Rayfield config loads (if present)
pcall(function() Rayfield:LoadConfiguration() end)
-- Auto-unload if player leaves or resets (best-effort)
LocalPlayer.AncestryChanged:Connect(function()
if not LocalPlayer.Parent then
pcall(cleanupAll)
end
end)
-- End of script
print("FORTLINE PRO 2025 — BIG UPDATE loaded. Use tabs/hotkeys to control features.")
end,
})
local CTab = Window:CreateTab("TB3", 4483362458) -- Title, Image
local Section = CTab:CreateSection("TB3")
local Button = CTab:CreateButton({
Name = "Inf Money💰🤑💰💵",
Callback = function()
-- The creator of this file is "wtwcaws" on Discord, owner of LTK Hub.
-- The same license applies, this code was posted with his consent.
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local CoreGui = game:GetService("CoreGui")
-- FIRST: Teleport to your location
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(-70.59, 287.06, -319.82)
-- Save old position (after teleport)
local oldPos = LocalPlayer.Character.HumanoidRootPart.CFrame
-- Spam the sell prompt
for i = 1, 999 do
fireproximityprompt(workspace["IceFruit Sell"].ProximityPrompt)
end
task.wait(4.5)
-- Check if money hit max
if LocalPlayer.stored.FilthyStack.Value == LocalPlayer:GetAttribute("MaxMoney") then
-- Re-enable UI
CoreGui:WaitForChild("RobloxGui").Backpack.Visible = true
local pg = LocalPlayer:WaitForChild("PlayerGui")
pg.Hunger.Enabled = true
pg.HealthGui.Enabled = true
pg.Run.Enabled = true
pg.SleepGui.Enabled = true
pg.MoneyGui.Enabled = true
pg.NewMoneyGui.Enabled = true
-- Teleport back
LocalPlayer.Character.HumanoidRootPart.CFrame = oldPos
-- Alert
Notifications:Notify("[ LTK: Hub ] Money Dupe has been completed, you can now go wash your money & repeat.", 10, "success")
end
end,
})
local DTab = Window:CreateTab("Player Mods", nil) -- Title, Image
local Section = DTab:CreateSection("Mods")
local Toggle = DTab:CreateToggle({
Name = "Instant equip",
CurrentValue = false,
Flag = "Toggle13432", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
type GunSettings = FeatureObject & {
SetupListeners: (this: GunSettings) -> ();
SetMods: (this: GunSettings, Mods: { [string]: any }) -> ();
ModifyWeapon: (this: GunSettings, Weapon: Tool) -> ();
FreeWeapon: (this: GunSettings, Weapon: Tool?) -> ();
Binder: Binder;
Cache: { [Tool]: { [string]: any } };
Mods: { [string]: any };
}
local InstantEquip = class "InstantEquip" (GunSettings) {
constructor = function(this: GunSettings, ...)
return this:super(...)
end;
Protected = {
EntryPoint = function(this: GunSettings): ()
this:SetMods({
EquipTime = 0;
})
return this:super()
end;
};
}
end,
})
local Toggle = DTab:CreateToggle({
Name = "No ragdoll",
CurrentValue = false,
Flag = "Toggle19348", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
local function NoRagdoll()
while Rio.NoRagdoll do
-- Wait if the player is dead
if Rio.IsDead then
Rio.Signals.CharacterRespawned.Event:Wait()
end
-- Remove the ragdoll logic if it exists
local RagdollLogic = LocalCharacter:WaitForChild("FallDamageRagdoll", 30)
if RagdollLogic then
RagdollLogic:Destroy()
end
-- Wait for any important signal
Thread.WaitForAny({
Rio.Signals.FeatureDisabled.Event;
Rio.Signals.CharacterRespawned.Event;
})
end
end
end,
})
local Toggle = DTab:CreateToggle({
Name = "InstantPrompt",
CurrentValue = false,
Flag = "Toggle1jiuh", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
type InstantPrompts = FeatureObject & {
Binder: Binder;
Cache: { [ProximityPrompt]: number };
SetupListeners: (this: InstantPrompts) -> ();
SetState: (this: InstantPrompts, State: boolean) -> ();
}
local World = workspace -- make sure this exists
local InstantPrompts = class "InstantPrompts" (Feature) {
constructor = function(this: InstantPrompts, ...)
this:super(...)
this.Binder = Binder.new()
this.Cache = {}
end;
Protected = {
Binder = false;
Cache = false;
State = false;
EntryPoint = function(this: InstantPrompts): ()
local Cache = this.Cache
local Binder = this.Binder
-- cache all existing prompts
for _, Obj in World:GetDescendants() do
if Obj:IsA("ProximityPrompt") then
if not Cache[Obj] then
Cache[Obj] = Obj.HoldDuration
end
end
end
-- start listening for new prompts
this:SetupListeners()
-- actually turn instant prompts ON
return this:SetState(true)
end;
Shutdown = function(this: InstantPrompts): ()
-- restore normal timings
this:SetState(false)
this.Binder:Destroy()
table.clear(this.Cache)
this.Cache = false :: any
this.Binder = false :: any
return this:super()
end;
SetupListeners = function(this: InstantPrompts): ()
local Cache = this.Cache
local Binder = this.Binder
-- when new stuff is added to the world
Binder:Connect(World.DescendantAdded, function(Obj: Instance)
if Obj:IsA("ProximityPrompt") and not Cache[Obj] then
-- save original duration
Cache[Obj] = Obj.HoldDuration
-- if feature is currently ON, make it instant
if this.State then
Obj.HoldDuration = 0
end
-- cleanup when prompt is destroyed
Binder:Once(Obj.Destroying, function()
Cache[Obj] = nil
end)
end
end)
end;
SetState = function(this: InstantPrompts, State: boolean): ()
this.State = State
for Prompt, Duration in pairs(this.Cache) do
if Prompt and Prompt.Parent then
Prompt.HoldDuration = if State then 0 else Duration
end
end
end;
};
}
end,
})
To embed this project on your website, copy the following code and paste it into your website's HTML: