
Key Required VerifiedUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Stats = game:GetService("Stats")
local Workspace = game:GetService("Workspace")
local LP = Players.LocalPlayer
local notify
local createTween
local enabled = true
local ghostModel, ghostPart, pingGui
local ghostFuturePart, futureGui
-- tracers removed
local ghostRig = {} -- [partName] = {part=BasePart, aura=ParticleEmitter}
local ghostClone -- past ping chams
local ghostMap = {} -- past chams [partName] = cloned BasePart
local ghostCloneFuture -- predictive chams
local ghostMapFuture = {} -- future chams
local portals = {}
local lastSampleRoot = nil
local lastColor = Color3.fromRGB(40,180,255)
local renderConn, inputConn, playerAddedConn, charAddedConn
local menuVisibleState = false
local playersVisibleState = false
local playersFrame
local targetHighlights = {} -- [playerName] = Highlight
local flingActive = false
local selectedTargets = {}
local invisibleFlingActive = false
local antiFlingActive = false
local walkFlingActive = false
local voidAnchor, voidChams, voidBV, voidBP, voidPrevSubject, voidPrevType, voidPrevMode
local voidY = 12000
local voidOldPos
local walkFlingConn
local antiFlingConn
local F2Clone, F2PrevSubject, F2PrevType, F2PrevMode, F2Active
local smoothingClone, smoothingConn, smoothingPrevSubject
local F2BConn, F2EConn, F2StepConn
local F2Keys = {w=false,a=false,s=false,d=false,up=false,down=false}
local AFLastSafe
local currentFlingTarget = nil
local function cleanup()
flingActive = false
pcall(function()
if F2StepConn then F2StepConn:Disconnect() end
if F2BConn then F2BConn:Disconnect() end
if F2EConn then F2EConn:Disconnect() end
if F2Clone then F2Clone:Destroy() end
if smoothingConn then smoothingConn:Disconnect() smoothingConn = nil end
if smoothingClone then smoothingClone:Destroy() smoothingClone = nil end
if walkFlingConn then walkFlingConn:Disconnect() end
if antiFlingConn then antiFlingConn:Disconnect() end
end)
if renderConn then renderConn:Disconnect() renderConn=nil end
if inputConn then inputConn:Disconnect() inputConn=nil end
if playerAddedConn then playerAddedConn:Disconnect() playerAddedConn=nil end
if charAddedConn then charAddedConn:Disconnect() charAddedConn=nil end
if controlGui then pcall(function() controlGui:Destroy() end) controlGui=nil end
if tracerGui then pcall(function() tracerGui:Destroy() end) tracerGui=nil tracerLinePast=nil tracerLineFuture=nil end
if pingGui then pcall(function() pingGui:Destroy() end) pingGui=nil end
if futureGui then pcall(function() futureGui:Destroy() end) futureGui=nil end
if ghostModel then pcall(function() ghostModel:Destroy() end) ghostModel=nil ghostClone=nil ghostCloneFuture=nil end
for i=#portals,1,-1 do
local p = portals[i]
if p and p.model then pcall(function() p.model:Destroy() end) end
portals[i]=nil
end
end
if _G.GhostPing and _G.GhostPing.cleanup then pcall(_G.GhostPing.cleanup) end
if _G.GhostPingUI and _G.GhostPingUI.cleanupUI then pcall(_G.GhostPingUI.cleanupUI) end
local function cleanupUI()
local pg = LP:FindFirstChild("PlayerGui")
if controlGui then pcall(function() controlGui:Destroy() end) controlGui=nil end
if tracerGui then pcall(function() tracerGui:Destroy() end) tracerGui=nil tracerLine=nil end
if pg then
local old1 = pg:FindFirstChild("GhostControlUI")
if old1 then pcall(function() old1:Destroy() end) end
local old2 = pg:FindFirstChild("GhostTracerGui")
if old2 then pcall(function() old2:Destroy() end) end
end
end
local settings = {
pingChams = true,
predictionChams = true,
pingColor = Color3.fromRGB(40,180,255),
predictionColor = Color3.fromRGB(160,100,255),
material = Enum.Material.ForceField,
opacity = 0.5,
delayMul = 1.0,
tracer = true,
aaMode = "Off",
aaSpinSpeed = 180,
aaApply = false,
menuKeybind = Enum.KeyCode.RightControl,
uiScale = 1.0,
watermarkEnabled = false,
watermarkOptions = {
["Username"] = true,
["FPS"] = true,
["Ping"] = true,
["Avatar"] = true
},
lighting = {
enabled = false,
brightness = 2,
exposure = 0,
fogEnd = 100000,
fogStart = 0,
clockTime = 12,
outdoorAmbient = Color3.fromRGB(128, 128, 128),
ambient = Color3.fromRGB(0, 0, 0),
colorShift_Top = Color3.fromRGB(0, 0, 0),
colorShift_Bottom = Color3.fromRGB(0, 0, 0),
shadowSoftness = 0.5,
globalShadows = true
},
esp = {
enabled = false,
box = false,
name = false,
health = false,
tracers = false,
weapon = false,
visibleOnly = false,
teamCheck = false,
maxDistance = 1000,
showDistance = false,
showHealth = false
},
exploits = {
noCameraRotate = false,
walkSpeedEnabled = false,
walkSpeedActive = false,
walkSpeed = 16,
walkSpeedMethod = "Default", -- "Default" or "CFrame"
jumpPowerEnabled = false,
jumpPower = 50,
fovEnabled = false,
fovAmount = 90,
gravityEnabled = false,
gravityAmount = 196.2,
antiVoidEnabled = false,
showVoidLevel = false,
voidGodMode = false,
hipHeightEnabled = false,
hipHeightAmount = 2,
flightEnabled = false,
flightActive = false,
flightSpeed = 50,
flightKeybind = Enum.KeyCode.F,
walkSpeedKeybind = Enum.KeyCode.C,
noclipEnabled = false,
noclipActive = false,
noclipKeybind = Enum.KeyCode.V
},
desync = {
enabled = false,
method = "Velocity", -- "Velocity", "CFrame", "Freeze"
power = 50,
range = 5,
visualize = false,
color = Color3.fromRGB(255, 0, 0),
movement = {
type = "None", -- "None", "Spinbot", "Backwards", "Upside down"
speed = 50
},
chams = {
enabled = false,
color = Color3.fromRGB(0, 255, 255)
}
},
fling = {
smoothing = false
}
}
local aaGyro
local isBinding = false
local isLoaded = false
local keybindListEnabled = false
local keybindListFrame = nil
local isAdmin = (LP.UserId == 10198515386 or LP.UserId == 10136987698)
local voidHighlight = Instance.new("Part")
voidHighlight.Name = "VoidHighlight"
voidHighlight.Anchored = true
voidHighlight.CanCollide = false
voidHighlight.CastShadow = false
voidHighlight.Material = Enum.Material.ForceField
voidHighlight.Transparency = 1
voidHighlight.Size = Vector3.new(5000, 1, 5000)
voidHighlight.Parent = workspace
local voidFloor = Instance.new("Part")
voidFloor.Name = "VoidFloor"
voidFloor.Anchored = true
voidFloor.CanCollide = false
voidFloor.Transparency = 1
voidFloor.Size = Vector3.new(100, 1, 100)
voidFloor.Parent = workspace
local function tagCharacter(char)
if not char then return end
task.wait(1) -- Wait for character to fully load
if char:FindFirstChild("AtlantaSigma_User") then return end
local tag = Instance.new("StringValue")
tag.Name = "AtlantaSigma_User"
tag.Value = "Active"
tag.Parent = char
end
local desyncGhost
local desyncChamsFolder = nil
local function updateDesyncLogic()
local lastRealPos = nil
local spinAngle = 0
while task.wait() do
if settings.desync.enabled then
local char = LP.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp then
local power = settings.desync.power
local range = settings.desync.range
-- Desync Movement Logic (Spinbot, Backwards, Upside down)
local moveType = settings.desync.movement.type
local oldCF = hrp.CFrame
if moveType ~= "None" then
local fakeCF = oldCF
if moveType == "Spinbot" then
spinAngle = (spinAngle + settings.desync.movement.speed) % 360
fakeCF = oldCF * CFrame.Angles(0, math.rad(spinAngle), 0)
elseif moveType == "Backwards" then
fakeCF = oldCF * CFrame.Angles(0, math.rad(180), 0)
elseif moveType == "Upside down" then
fakeCF = oldCF * CFrame.Angles(math.rad(180), 0, 0)
end
hrp.CFrame = fakeCF
RunService.Heartbeat:Wait()
hrp.CFrame = oldCF
end
-- Method Logic
if settings.desync.method == "Velocity" then
local oldVel = hrp.AssemblyLinearVelocity
hrp.AssemblyLinearVelocity = Vector3.new(0, power * 100, 0)
RunService.Heartbeat:Wait()
hrp.AssemblyLinearVelocity = oldVel
elseif settings.desync.method == "CFrame" then
local currentCF = hrp.CFrame
hrp.CFrame = currentCF * CFrame.new(0, range * 10, 0)
RunService.Heartbeat:Wait()
hrp.CFrame = currentCF
elseif settings.desync.method == "Freeze" then
if not lastRealPos then lastRealPos = hrp.CFrame end
if tick() % 0.5 < 0.05 then
lastRealPos = hrp.CFrame
else
hrp.CFrame = lastRealPos
RunService.Heartbeat:Wait()
end
end
-- Desync Chams (Mirror what others see)
if settings.desync.chams.enabled then
if not desyncChamsFolder then
desyncChamsFolder = Instance.new("Folder")
desyncChamsFolder.Name = "DesyncChams"
desyncChamsFolder.Parent = workspace
local highlight = Instance.new("Highlight")
highlight.Name = "ChamHighlight"
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.Parent = desyncChamsFolder
end
local highlight = desyncChamsFolder:FindFirstChild("ChamHighlight")
if highlight then
highlight.FillColor = settings.desync.chams.color
highlight.OutlineColor = settings.desync.chams.color
end
for _, part in pairs(char:GetChildren()) do
if part:IsA("BasePart") then
local chamPart = desyncChamsFolder:FindFirstChild(part.Name)
if not chamPart then
chamPart = Instance.new("Part")
chamPart.Name = part.Name
chamPart.Size = part.Size
chamPart.CanCollide = false
chamPart.Anchored = true
chamPart.Transparency = 1 -- Let highlight handle visuals
chamPart.Parent = desyncChamsFolder
end
-- Calculate visual position
local visualCF = part.CFrame
if moveType == "Spinbot" then
visualCF = (hrp.CFrame * CFrame.Angles(0, math.rad(spinAngle), 0)) * (hrp.CFrame:Inverse() * part.CFrame)
elseif moveType == "Backwards" then
visualCF = (hrp.CFrame * CFrame.Angles(0, math.rad(180), 0)) * (hrp.CFrame:Inverse() * part.CFrame)
elseif moveType == "Upside down" then
visualCF = (hrp.CFrame * CFrame.Angles(math.rad(180), 0, 0)) * (hrp.CFrame:Inverse() * part.CFrame)
end
chamPart.CFrame = visualCF
end
end
elseif desyncChamsFolder then
desyncChamsFolder:ClearAllChildren()
desyncChamsFolder:Destroy()
desyncChamsFolder = nil
end
if settings.desync.visualize then
if not desyncGhost then
desyncGhost = Instance.new("Part")
desyncGhost.Name = "DesyncGhost"
desyncGhost.Anchored = true
desyncGhost.CanCollide = false
desyncGhost.Transparency = 0.5
desyncGhost.Material = Enum.Material.ForceField
desyncGhost.Size = Vector3.new(2, 2, 1)
desyncGhost.Parent = workspace
end
desyncGhost.Color = settings.desync.color
desyncGhost.CFrame = hrp.CFrame
desyncGhost.Visible = true
elseif desyncGhost then
desyncGhost.Visible = false
end
end
else
lastRealPos = nil
if desyncChamsFolder then
desyncChamsFolder:ClearAllChildren()
desyncChamsFolder:Destroy()
desyncChamsFolder = nil
end
if desyncGhost then
desyncGhost.Visible = false
end
end
end
end
task.spawn(updateDesyncLogic)
local function updateFlingSmoothing()
while task.wait() do
local isFlinging = flingActive or walkFlingActive or invisibleFlingActive
local shouldSmooth = settings.fling.smoothing and isFlinging
if shouldSmooth then
local char = LP.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then continue end
-- Method 4: Visual Model Proxy (The "Ghost" Character)
-- This is the most reliable method. We create a local-only model that looks like you,
-- lock your camera to it, and move it smoothly. Meanwhile, your REAL character
-- is flinging around at extreme velocities but is completely invisible to you.
if not smoothingClone then
smoothingClone = Instance.new("Model")
smoothingClone.Name = "VisualProxy"
-- Clone visuals
for _, v in pairs(char:GetChildren()) do
if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then
local c = v:Clone()
c.CanCollide = false
c.Anchored = true
c.Parent = smoothingClone
elseif v:IsA("Accessory") then
local c = v:Clone()
local handle = c:FindFirstChild("Handle")
if handle then
handle.CanCollide = false
handle.Anchored = true
end
c.Parent = smoothingClone
end
end
smoothingClone.Parent = workspace
smoothingPrevSubject = workspace.CurrentCamera.CameraSubject
workspace.CurrentCamera.CameraSubject = smoothingClone:FindFirstChild("Head") or smoothingClone:GetChildren()[1]
end
-- Hide real character ONLY on client
for _, v in pairs(char:GetChildren()) do
if v:IsA("BasePart") then
v.LocalTransparencyModifier = 1
elseif v:IsA("Accessory") and v:FindFirstChild("Handle") then
v.Handle.LocalTransparencyModifier = 1
end
end
-- Update real character with chaos (Server-side fling)
hrp.AssemblyLinearVelocity = Vector3.new(999999, 999999, 999999)
hrp.AssemblyAngularVelocity = Vector3.new(999999, 999999, 999999)
-- Move visual proxy smoothly to where we actually are
local stableCF = hrp.CFrame
-- Remove any crazy rotation from the stable CFrame for the proxy
local look = stableCF.LookVector
local flatCF = CFrame.new(stableCF.Position, stableCF.Position + Vector3.new(look.X, 0, look.Z))
for _, v in pairs(smoothingClone:GetChildren()) do
if v:IsA("BasePart") then
-- Calculate offset from real HRP
local realPart = char:FindFirstChild(v.Name)
if realPart then
local offset = hrp.CFrame:Inverse() * realPart.CFrame
v.CFrame = flatCF * offset
end
elseif v:IsA("Accessory") then
local handle = v:FindFirstChild("Handle")
local realAcc = char:FindFirstChild(v.Name)
local realHandle = realAcc and realAcc:FindFirstChild("Handle")
if handle and realHandle then
local offset = hrp.CFrame:Inverse() * realHandle.CFrame
handle.CFrame = flatCF * offset
end
end
end
elseif smoothingClone then
-- Cleanup
smoothingClone:Destroy()
smoothingClone = nil
local cam = workspace.CurrentCamera
if smoothingPrevSubject then
cam.CameraSubject = smoothingPrevSubject
end
-- Restore visibility
local char = LP.Character
if char then
for _, v in pairs(char:GetChildren()) do
if v:IsA("BasePart") then
v.LocalTransparencyModifier = 0
elseif v:IsA("Accessory") and v:FindFirstChild("Handle") then
v.Handle.LocalTransparencyModifier = 0
end
end
end
end
end
end
task.spawn(updateFlingSmoothing)
local flightBV, flightBG
local function updateFlight()
local char = LP.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
if settings.exploits.flightEnabled and settings.exploits.flightActive and root and hum then
if not flightBV then
flightBV = Instance.new("BodyVelocity")
flightBV.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
flightBV.Velocity = Vector3.new(0, 0, 0)
flightBV.Parent = root
flightBG = Instance.new("BodyGyro")
flightBG.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
flightBG.P = 10000
flightBG.D = 100
flightBG.CFrame = root.CFrame
flightBG.Parent = root
end
hum.PlatformStand = true
local cam = workspace.CurrentCamera
local moveDir = Vector3.new(0, 0, 0)
if UIS:IsKeyDown(Enum.KeyCode.W) then moveDir = moveDir + cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.S) then moveDir = moveDir - cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.Space) then moveDir = moveDir + Vector3.new(0, 1, 0) end
if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir = moveDir - Vector3.new(0, 1, 0) end
if moveDir.Magnitude > 0 then
flightBV.Velocity = moveDir.Unit * settings.exploits.flightSpeed
else
flightBV.Velocity = Vector3.new(0, 0, 0)
end
flightBG.CFrame = cam.CFrame
else
if flightBV then flightBV:Destroy() flightBV = nil end
if flightBG then flightBG:Destroy() flightBG = nil end
if hum then hum.PlatformStand = false end
end
end
LP.CharacterAdded:Connect(tagCharacter)
if LP.Character then task.spawn(tagCharacter, LP.Character) end
local BUFFER = {}
local BUFFER_MAX_SECONDS = 3.0
local rtt = 0.2
local lastPingUpdate = 0
local PING_UPDATE_INTERVAL = 0.2
local pingBuf = {}
local function median(tbl)
local n = #tbl
if n == 0 then return nil end
table.sort(tbl)
if n % 2 == 1 then
return tbl[(n+1)//2]
else
return (tbl[n//2] + tbl[n//2+1]) * 0.5
end
end
local function pushPing(sec)
pingBuf[#pingBuf+1] = sec
if #pingBuf > 20 then table.remove(pingBuf, 1) end
end
local function probePingMsStats()
local ms
local okPS, ps = pcall(function() return Stats.PerformanceStats end)
if okPS and ps and typeof(ps.Ping) == "number" and ps.Ping > 0 then
ms = ps.Ping
end
if not ms then
local okItem, item = pcall(function() return Stats.Network.ServerStatsItem["Data Ping"] end)
if okItem and item then
local okStr, s = pcall(function() return item:GetValueString() end)
if okStr and s and tonumber(s) then
ms = tonumber(s)
else
local okVal, v = pcall(function() return item:GetValue() end)
if okVal and typeof(v) == "number" then ms = v end
end
end
end
return ms
end
local function probePingMsRF()
local okRS, RS = pcall(function() return game:GetService("ReplicatedStorage") end)
if not okRS then return nil end
local rf = RS:FindFirstChild("PingRF")
if not rf or not rf.IsA or not rf:IsA("RemoteFunction") then return nil end
local t0 = tick()
local ok, _ = pcall(function() return rf:InvokeServer() end)
if not ok then return nil end
local t1 = tick()
return (t1 - t0) * 1000.0
end
local function Fling2Begin()
if F2Active then return end
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = hum and hum.RootPart
if not root then return end
F2Active = true
F2PrevSubject = workspace.CurrentCamera.CameraSubject
F2PrevType = workspace.CurrentCamera.CameraType
F2PrevMode = LP.CameraMode
F2Clone = Instance.new("Model")
F2Clone.Name = "FlingClone"
for _,v in pairs(char:GetChildren()) do
if v:IsA("BasePart") or v:IsA("Accessory") then
local c = v:Clone()
if c:IsA("BasePart") then
c.CanCollide = false
c.Transparency = 0.5
elseif c:IsA("Accessory") and c:FindFirstChild("Handle") then
c.Handle.CanCollide = false
c.Handle.Transparency = 0.5
end
c.Parent = F2Clone
end
end
F2Clone.Parent = workspace
workspace.CurrentCamera.CameraSubject = F2Clone:FindFirstChild("Humanoid") or F2Clone:FindFirstChild("Head") or F2Clone.PrimaryPart
F2BConn = UIS.InputBegan:Connect(function(input, gp)
if gp or not F2Active then return end
local k = input.KeyCode
if k == Enum.KeyCode.W then F2Keys.w = true elseif k==Enum.KeyCode.A then F2Keys.a=true elseif k==Enum.KeyCode.S then F2Keys.s=true elseif k==Enum.KeyCode.D then F2Keys.d=true elseif k==Enum.KeyCode.Space then F2Keys.up=true elseif k==Enum.KeyCode.LeftShift then F2Keys.down=true end
end)
F2EConn = UIS.InputEnded:Connect(function(input, gp)
if gp or not F2Active then return end
local k = input.KeyCode
if k == Enum.KeyCode.W then F2Keys.w = false elseif k==Enum.KeyCode.A then F2Keys.a=false elseif k==Enum.KeyCode.S then F2Keys.s=false elseif k==Enum.KeyCode.D then F2Keys.d=false elseif k==Enum.KeyCode.Space then F2Keys.up=false elseif k==Enum.KeyCode.LeftShift then F2Keys.down=false end
end)
F2StepConn = RunService.RenderStepped:Connect(function(dt)
if not F2Active or not F2Clone or not F2Clone.PrimaryPart then return end
local speed = 16
local dx = (F2Keys.d and 1 or 0) - (F2Keys.a and 1 or 0)
local dz = (F2Keys.s and 1 or 0) - (F2Keys.w and 1 or 0)
local dy = (F2Keys.up and 1 or 0) - (F2Keys.down and 1 or 0)
local vec = Vector3.new(dx, dy, dz)
if vec.Magnitude > 0 then
local cf = F2Clone:GetPivot()
local move = cf * CFrame.new(vec.X*speed*dt, vec.Y*speed*dt, vec.Z*speed*dt)
F2Clone:PivotTo(move)
if hum and root then
root.CFrame = move
char:SetPrimaryPartCFrame(move)
hum:MoveTo(move.Position)
end
end
end)
end
local function Fling2End()
if F2StepConn then F2StepConn:Disconnect() F2StepConn=nil end
if F2BConn then F2BConn:Disconnect() F2BConn=nil end
if F2EConn then F2EConn:Disconnect() F2EConn=nil end
if F2Clone then pcall(function() F2Clone:Destroy() end) F2Clone=nil end
local cam = workspace.CurrentCamera
if F2PrevSubject then cam.CameraSubject = F2PrevSubject end
if F2PrevType then cam.CameraType = F2PrevType end
if F2PrevMode then pcall(function() LP.CameraMode = F2PrevMode end) end
F2Active = false
F2Keys = {w=false,a=false,s=false,d=false,up=false,down=false}
end
local function WalkFlingStart()
if walkFlingActive then return end
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = hum and hum.RootPart
if not root then return end
walkFlingActive = true
notify("Walk Fling", "Walk Fling has been enabled.", 3)
local movel = 0.1
walkFlingConn = RunService.Heartbeat:Connect(function()
if not walkFlingActive or not root or not root.Parent then
WalkFlingStop()
return
end
-- Logic from FPSBooster_Aggressive.client.lua
local vel = root.Velocity
if not settings.fling.smoothing then
root.Velocity = vel * 10000 + Vector3.new(0, 10000, 0)
end
RunService.RenderStepped:Wait()
if not walkFlingActive then return end
root.Velocity = vel
RunService.Stepped:Wait()
if not walkFlingActive then return end
root.Velocity = vel + Vector3.new(0, movel, 0)
movel = -movel
end)
end
local function WalkFlingStop()
if not walkFlingActive then return end
walkFlingActive = false
if walkFlingConn then walkFlingConn:Disconnect() walkFlingConn=nil end
notify("Walk Fling", "Walk Fling has been disabled.", 3)
-- Reset velocities when stopping
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = hum and hum.RootPart
if root then
root.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
root.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
end
end
local function AntiFlingStart()
if antiFlingActive then return end
antiFlingActive = true
notify("Anti Fling", "Anti Fling has been enabled.", 3)
antiFlingConn = RunService.RenderStepped:Connect(function()
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = hum and hum.RootPart
if not root then return end
local v = root.AssemblyLinearVelocity or root.Velocity
local limit = 120
if v.Magnitude > limit then
pcall(function() root.AssemblyLinearVelocity = Vector3.new() end)
root.Velocity = Vector3.new()
root.RotVelocity = Vector3.new()
if AFLastSafe then
root.CFrame = AFLastSafe
pcall(function() char:SetPrimaryPartCFrame(AFLastSafe) end)
end
else
AFLastSafe = root.CFrame
end
hum.PlatformStand = false
end)
end
local function AntiFlingStop()
if not antiFlingActive then return end
antiFlingActive = false
if antiFlingConn then antiFlingConn:Disconnect() antiFlingConn=nil end
notify("Anti Fling", "Anti Fling has been disabled.", 3)
end
local function SkidFling(TargetPlayer)
local Character = LP.Character
local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid")
local RootPart = Humanoid and Humanoid.RootPart
local TCharacter = TargetPlayer.Character
if not TCharacter then return end
currentFlingTarget = TargetPlayer
local THumanoid = TCharacter:FindFirstChildOfClass("Humanoid")
local TRootPart = THumanoid and THumanoid.RootPart
local THead = TCharacter:FindFirstChild("Head")
local Accessory = TCharacter:FindFirstChildOfClass("Accessory")
local Handle = Accessory and Accessory:FindFirstChild("Handle")
if Character and Humanoid and RootPart then
local OldPos = RootPart.CFrame
local FPDH = workspace.FallenPartsDestroyHeight
workspace.FallenPartsDestroyHeight = 0/0
local Time = tick()
repeat
if not flingActive then break end
if not TRootPart or not TRootPart.Parent then break end
local TPos = TRootPart.Position
local TVel = TRootPart.AssemblyLinearVelocity or TRootPart.Velocity
-- Enhanced Ping-based prediction logic
local pingSec = rtt or 0.1
-- Dynamic prediction: account for ping and a small frame buffer
-- Prediction lead = ping + frame time (1/60) + small constant for server delay
local predictionLead = pingSec + (1/60) + 0.05
local predictedPos = TPos + (TVel * predictionLead)
-- If target is moving fast, add a bit more lead
if TVel.Magnitude > 10 then
predictedPos = predictedPos + (TVel.Unit * 1.2)
end
-- Add some jitter to bypass anti-fling or catch edge cases
local jitter = Vector3.new(math.random(-1, 1), math.random(-1, 1), math.random(-1, 1)) * 0.15
predictedPos = predictedPos + jitter
if invisibleFlingActive then
RootPart.CFrame = CFrame.new(predictedPos)
else
-- Position flinger slightly above target for better impact if not invisible
RootPart.CFrame = CFrame.new(predictedPos + Vector3.new(0, 0.5, 0))
end
if not settings.fling.smoothing then
-- Maximize velocity and rotation for "skid" effect
RootPart.Velocity = Vector3.new(1000000, 1000000, 1000000)
-- Add extreme angular velocity to increase hit force
RootPart.RotVelocity = Vector3.new(0, 1000000, 0)
end
task.wait()
until tick() - Time > 1.5 or not TRootPart or not TRootPart.Parent
RootPart.CFrame = OldPos
RootPart.Velocity = Vector3.new()
RootPart.RotVelocity = Vector3.new()
workspace.FallenPartsDestroyHeight = FPDH
end
end
local function StartFling()
if flingActive then return end
local count = 0
for _ in pairs(selectedTargets) do count = count + 1 end
if count == 0 then
notify("Fling Error", "Please select at least one target first!", 4)
return
end
flingActive = true
notify("Multi-Fling", "Starting fling attack on " .. tostring(count) .. " targets.", 4)
task.spawn(function()
while flingActive do
for _, player in pairs(selectedTargets) do
if not flingActive then break end
if player and player.Parent then
SkidFling(player)
end
task.wait(0.01)
end
task.wait(0.1)
end
end)
end
local function StopFling()
if not flingActive then return end
flingActive = false
notify("Multi-Fling", "Fling attack stopped.", 3)
end
local function applyVisuals()
for _, gp in pairs(ghostMap) do
gp.Material = settings.material
end
for _, gp in pairs(ghostMapFuture) do
gp.Material = settings.material
end
-- tracers removed
end
local function applyLighting()
if not settings.lighting.enabled then return end
local L = game:GetService("Lighting")
L.Brightness = settings.lighting.brightness
L.ExposureCompensation = settings.lighting.exposure
L.FogEnd = settings.lighting.fogEnd
L.FogStart = settings.lighting.fogStart
L.ClockTime = settings.lighting.clockTime
L.OutdoorAmbient = settings.lighting.outdoorAmbient
L.Ambient = settings.lighting.ambient
L.ColorShift_Top = settings.lighting.colorShift_Top
L.ColorShift_Bottom = settings.lighting.colorShift_Bottom
L.ShadowSoftness = settings.lighting.shadowSoftness
L.GlobalShadows = settings.lighting.globalShadows
end
local espObjects = {}
local function GetPlayerWeapon(Character)
for _, tool in ipairs(Character:GetChildren()) do
if tool:IsA("Tool") or tool:IsA("HopperBin") then
return tool.Name
end
end
return "None"
end
local function updateESP()
local camera = workspace.CurrentCamera
if not camera then return end
local viewportSize = camera.ViewportSize
local localRoot = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
local fovFactor = math.tan(math.rad(camera.FieldOfView / 2)) * 2
for player, objects in pairs(espObjects) do
local success, err = pcall(function()
local character = player.Character
local root = character and character:FindFirstChild("HumanoidRootPart")
local hum = character and character:FindFirstChild("Humanoid")
if settings.esp.enabled and character and root and hum and hum.Health > 0 then
-- Team Check
if settings.esp.teamCheck and player.Team == LP.Team then
for _, obj in pairs(objects) do obj.Visible = false end
return
end
-- Max Distance
local distance = localRoot and (root.Position - localRoot.Position).Magnitude or 0
if distance > settings.esp.maxDistance then
for _, obj in pairs(objects) do obj.Visible = false end
return
end
-- Visible Only (Raycast)
if settings.esp.visibleOnly then
local rayOrigin = camera.CFrame.Position
local rayDirection = (root.Position - rayOrigin).Unit * distance
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Exclude
rayParams.FilterDescendantsInstances = {LP.Character, camera}
local raycastResult = workspace:Raycast(rayOrigin, rayDirection, rayParams)
if raycastResult and not raycastResult.Instance:IsDescendantOf(character) then
for _, obj in pairs(objects) do obj.Visible = false end
return
end
end
local pos, onScreen = camera:WorldToViewportPoint(root.Position)
if onScreen then
-- Logic from FPSBooster_NoTextures.client.lua
local boxSize = Vector2.new(2000 / pos.Z, 3000 / pos.Z)
local boxPos = Vector2.new(pos.X - boxSize.X / 2, pos.Y - boxSize.Y / 2)
local boxWidth, boxHeight = boxSize.X, boxSize.Y
-- Sanity check for size
if boxHeight > 2000 then boxHeight = 2000 end
if boxWidth > 2000 then boxWidth = 2000 end
if boxHeight < 1 then boxHeight = 1 end
if boxWidth < 1 then boxWidth = 1 end
-- Update Box
if settings.esp.box then
objects.box.Size = Vector2.new(boxWidth, boxHeight)
objects.box.Position = boxPos
objects.box.Color = theme.accent
objects.box.Thickness = 2
objects.box.Visible = true
else
objects.box.Visible = false
end
-- Update Name
if settings.esp.name then
local infoText = player.DisplayName
if settings.esp.showDistance then
infoText = infoText .. string.format(" [%dm]", math.floor(distance))
end
if settings.esp.showHealth then
infoText = infoText .. string.format(" [%.0fHP]", hum.Health)
end
objects.name.Text = infoText
objects.name.Position = Vector2.new(pos.X, boxPos.Y - 18)
objects.name.Color = Color3.fromRGB(255, 255, 255)
objects.name.Size = 13
objects.name.Visible = true
else
objects.name.Visible = false
end
-- Update Health Bar
if settings.esp.health then
local healthPercent = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
objects.healthBg.Position = Vector2.new(boxPos.X - 6, boxPos.Y)
objects.healthBg.Size = Vector2.new(2, boxHeight)
objects.healthBg.Visible = true
objects.healthBar.Position = Vector2.new(boxPos.X - 6, boxPos.Y + (boxHeight * (1 - healthPercent)))
objects.healthBar.Size = Vector2.new(2, boxHeight * healthPercent)
objects.healthBar.Color = Color3.fromHSV(healthPercent * 0.3, 1, 1)
objects.healthBar.Visible = true
else
objects.healthBg.Visible = false
objects.healthBar.Visible = false
end
-- Update Weapon
if settings.esp.weapon then
objects.weapon.Text = GetPlayerWeapon(character)
objects.weapon.Position = Vector2.new(pos.X, boxPos.Y + boxHeight + 5)
objects.weapon.Color = Color3.fromRGB(200, 200, 200)
objects.weapon.Size = 13
objects.weapon.Visible = true
else
objects.weapon.Visible = false
end
-- Update Tracers
if settings.esp.tracers then
objects.tracer.From = Vector2.new(viewportSize.X / 2, viewportSize.Y)
objects.tracer.To = Vector2.new(pos.X, pos.Y) -- Point to center like FPSBooster
objects.tracer.Color = theme.accent
objects.tracer.Thickness = 1
objects.tracer.Visible = true
else
objects.tracer.Visible = false
end
-- Update Admin Script User Tag
if isAdmin then
local isScriptUser = character:FindFirstChild("AtlantaSigma_User")
if isScriptUser then
objects.scriptUser.Position = Vector2.new(pos.X, boxPos.Y - 35)
objects.scriptUser.Visible = true
else
objects.scriptUser.Visible = false
end
else
objects.scriptUser.Visible = false
end
else
for _, obj in pairs(objects) do obj.Visible = false end
end
else
for _, obj in pairs(objects) do obj.Visible = false end
end
end)
if not success then
-- Silent fail for individual players to prevent the whole ESP from freezing
end
end
end
local function createESP(player)
if player == LP then return end
if espObjects[player] then return end
local objects = {
box = Drawing.new("Square"),
name = Drawing.new("Text"),
healthBg = Drawing.new("Square"),
healthBar = Drawing.new("Square"),
tracer = Drawing.new("Line"),
weapon = Drawing.new("Text"),
scriptUser = Drawing.new("Text")
}
-- Box
objects.box.Thickness = 1
objects.box.Filled = false
objects.box.Visible = false
objects.box.ZIndex = 2
-- Name
objects.name.Size = 13
objects.name.Center = true
objects.name.Outline = true
objects.name.Visible = false
objects.name.ZIndex = 2
-- Health Bar Background
objects.healthBg.Thickness = 1
objects.healthBg.Filled = true
objects.healthBg.Color = Color3.fromRGB(0, 0, 0)
objects.healthBg.Transparency = 0.5
objects.healthBg.Visible = false
objects.healthBg.ZIndex = 1
-- Health Bar Fill
objects.healthBar.Thickness = 1
objects.healthBar.Filled = true
objects.healthBar.Visible = false
objects.healthBar.ZIndex = 2
-- Tracer
objects.tracer.Thickness = 1
objects.tracer.Visible = false
objects.tracer.ZIndex = 1
-- Weapon
objects.weapon.Size = 13
objects.weapon.Center = true
objects.weapon.Outline = true
objects.weapon.Visible = false
objects.weapon.ZIndex = 2
-- Script User Tag
objects.scriptUser.Size = 13
objects.scriptUser.Center = true
objects.scriptUser.Outline = true
objects.scriptUser.Color = Color3.fromRGB(255, 200, 0)
objects.scriptUser.Text = "[SCRIPT USER]"
objects.scriptUser.Visible = false
objects.scriptUser.ZIndex = 3
espObjects[player] = objects
end
local function removeESP(player)
local objects = espObjects[player]
if objects then
for _, obj in pairs(objects) do
if obj.Remove then
obj:Remove()
end
end
espObjects[player] = nil
end
end
Players.PlayerAdded:Connect(createESP)
Players.PlayerRemoving:Connect(removeESP)
for _, p in pairs(Players:GetPlayers()) do createESP(p) end
RunService.RenderStepped:Connect(updateESP)
task.spawn(function()
while task.wait() do
-- Flight
updateFlight()
-- Lighting
if settings.lighting.enabled then
applyLighting()
end
-- Exploits
local character = LP.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid then
-- WalkSpeed
if settings.exploits.walkSpeedEnabled and settings.exploits.walkSpeedActive then
if settings.exploits.walkSpeedMethod == "Default" then
humanoid.WalkSpeed = settings.exploits.walkSpeed
elseif settings.exploits.walkSpeedMethod == "CFrame" then
humanoid.WalkSpeed = 16
local root = character:FindFirstChild("HumanoidRootPart")
if root and humanoid.MoveDirection.Magnitude > 0 then
root.CFrame = root.CFrame + (humanoid.MoveDirection * (settings.exploits.walkSpeed / 50))
end
end
else
humanoid.WalkSpeed = 16
end
-- JumpPower
if settings.exploits.jumpPowerEnabled then
humanoid.JumpPower = settings.exploits.jumpPower
humanoid.UseJumpPower = true
end
end
-- No Camera Rotate/Shake
if settings.exploits.noCameraRotate then
local camera = workspace.CurrentCamera
if camera then
-- This stops external shakes/rotations by forcing CFrame if needed,
-- but usually setting humanoid properties or overriding camera scripts is better.
-- For now, we'll focus on the intent of "stopping anything from rotating or moving my camera"
-- by disabling camera bobbing if possible or just resetting rotation if it's forced.
end
end
-- FOV
if settings.exploits.fovEnabled then
local camera = workspace.CurrentCamera
if camera then
camera.FieldOfView = settings.exploits.fovAmount
end
end
-- Noclip
if settings.exploits.noclipEnabled and settings.exploits.noclipActive and character then
for _, v in pairs(character:GetDescendants()) do
if v:IsA("BasePart") and v.CanCollide then
v.CanCollide = false
end
end
end
-- Gravity
if settings.exploits.gravityEnabled then
workspace.Gravity = settings.exploits.gravityAmount
end
-- HipHeight
if settings.exploits.hipHeightEnabled then
humanoid.HipHeight = settings.exploits.hipHeightAmount
end
-- Anti-Void & Void Highlight
if character and character:FindFirstChild("HumanoidRootPart") then
local root = character.HumanoidRootPart
local voidY = workspace.FallenPartsDestroyHeight
-- Update Highlight
if settings.exploits.showVoidLevel then
voidHighlight.Transparency = 0.5
voidHighlight.CFrame = CFrame.new(root.Position.X, voidY, root.Position.Z)
else
voidHighlight.Transparency = 1
end
-- Anti-Void Logic
if settings.exploits.antiVoidEnabled then
local nextPos = root.Position + root.Velocity * 0.1 -- Predict position in next 0.1s
if root.Position.Y < voidY + 20 or nextPos.Y < voidY + 15 then
root.Velocity = Vector3.new(0, 0, 0) -- Kill downward momentum instantly
root.CFrame = root.CFrame * CFrame.new(0, 30, 0) -- Teleport higher up
task.wait() -- Small yield to ensure physics update
root.Velocity = Vector3.new(0, 60, 0) -- Apply strong upward push
end
end
-- Void God Mode (True Godmode Method)
if settings.exploits.voidGodMode then
-- Method: Temporarily move FallenPartsDestroyHeight to -infinity while in danger
-- and force health/root properties to prevent death.
if root.Position.Y < voidY + 10 then
workspace.FallenPartsDestroyHeight = -math.huge
humanoid.Health = 100
-- Reset velocity if falling too fast
if root.Velocity.Y < -50 then
root.Velocity = Vector3.new(root.Velocity.X, -10, root.Velocity.Z)
end
else
-- Reset to original if safe
workspace.FallenPartsDestroyHeight = voidY
end
voidFloor.CanCollide = true
voidFloor.CFrame = CFrame.new(root.Position.X, voidY + 5, root.Position.Z)
else
workspace.FallenPartsDestroyHeight = voidY
voidFloor.CanCollide = false
end
else
voidHighlight.Transparency = 1
voidFloor.CanCollide = false
end
end
end)
local function createSlider(parent, labelText, initial, min, max, step, onChange)
local row = Instance.new("Frame")
row.BackgroundTransparency = 1
row.Size = UDim2.new(1,0,0,40)
row.Parent = parent
local label = Instance.new("TextLabel")
label.BackgroundTransparency = 1
label.Text = labelText
label.TextColor3 = Color3.fromRGB(180,180,180)
label.Font = Enum.Font.Gotham
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Size = UDim2.new(1,0,0,16)
label.Parent = row
local rail = Instance.new("Frame")
rail.BackgroundColor3 = Color3.fromRGB(30,30,30)
rail.BorderSizePixel = 0
rail.Position = UDim2.new(0,0,0,20)
rail.Size = UDim2.new(1,0,0,6)
rail.Parent = row
local fill = Instance.new("Frame")
fill.BackgroundColor3 = Color3.fromRGB(90,90,90)
fill.BorderSizePixel = 0
fill.Size = UDim2.new((initial-min)/(max-min),0,1,0)
fill.Parent = rail
local knob = Instance.new("Frame")
knob.BackgroundColor3 = Color3.fromRGB(200,200,200)
knob.BorderSizePixel = 0
knob.AnchorPoint = Vector2.new(0.5,0.5)
knob.Position = UDim2.new((initial-min)/(max-min),0,0.5,0)
knob.Size = UDim2.new(0,10,0,10)
knob.Parent = rail
local dragging = false
rail.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging = true end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging = false end
end)
UIS.InputChanged:Connect(function(i)
if not dragging then return end
if i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch then
local x = i.Position.X
local abs = rail.AbsolutePosition.X
local w = rail.AbsoluteSize.X
local alpha = math.clamp((x-abs)/w,0,1)
local val = min + math.floor(((max-min)*alpha)/step+0.5)*step
fill.Size = UDim2.new((val-min)/(max-min),0,1,0)
knob.Position = UDim2.new((val-min)/(max-min),0,0.5,0)
onChange(val)
end
end)
end
local TweenService = game:GetService("TweenService")
local theme = {
background = Color3.fromRGB(20, 20, 24),
backgroundTrans = 0,
sidebar = Color3.fromRGB(25, 25, 30),
sidebarTrans = 0,
accent = Color3.fromRGB(160, 100, 255),
accentTrans = 0,
text = Color3.fromRGB(220, 220, 220),
textTrans = 0,
textDim = Color3.fromRGB(150, 150, 150),
textDimTrans = 0,
glow = false,
snow = false
}
local themeObjects = {}
local function registerTheme(instance, type, prop)
table.insert(themeObjects, {instance=instance, type=type, prop=prop})
end
voidHighlight.Color = theme.accent
registerTheme(voidHighlight, "accent", "Color")
local function applyThemeUpdates()
for _, obj in ipairs(themeObjects) do
if obj.instance and obj.instance.Parent then
if obj.type == "background" then
if obj.prop == "BackgroundColor3" then
obj.instance.BackgroundColor3 = theme.background
obj.instance.BackgroundTransparency = theme.backgroundTrans
else
obj.instance[obj.prop] = theme.background
end
elseif obj.type == "sidebar" then
if obj.prop == "BackgroundColor3" then
if obj.instance:GetAttribute("IsActiveTab") then
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
else
obj.instance.BackgroundColor3 = theme.sidebar
obj.instance.BackgroundTransparency = theme.sidebarTrans
end
else
if obj.instance:GetAttribute("IsActiveTab") then
obj.instance[obj.prop] = theme.accent
else
obj.instance[obj.prop] = theme.sidebar
end
end
elseif obj.type == "accent" then
if obj.prop == "BackgroundColor3" then
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
elseif obj.prop == "Color" and obj.instance:IsA("UIStroke") then
obj.instance.Color = theme.accent
obj.instance.Transparency = theme.accentTrans
else
obj.instance[obj.prop] = theme.accent
end
elseif obj.type == "text" then
if obj.prop == "TextColor3" then
obj.instance.TextColor3 = theme.text
obj.instance.TextTransparency = theme.textTrans
else
obj.instance[obj.prop] = theme.text
end
elseif obj.type == "textDim" then
if obj.prop == "TextColor3" then
obj.instance.TextColor3 = theme.textDim
obj.instance.TextTransparency = theme.textDimTrans
else
obj.instance[obj.prop] = theme.textDim
end
elseif obj.type == "playerListBtn" then
if obj.instance:GetAttribute("Selected") then
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
else
obj.instance.BackgroundColor3 = theme.sidebar
obj.instance.BackgroundTransparency = theme.sidebarTrans
end
elseif obj.type == "toggleOn" then
if obj.instance[obj.prop] ~= Color3.fromRGB(40,40,45) then
obj.instance[obj.prop] = theme.accent
end
end
end
end
end
createTween = function(instance, properties, time, style, dir)
local info = TweenInfo.new(time or 0.2, style or Enum.EasingStyle.Quad, dir or Enum.EasingDirection.Out)
local tween = TweenService:Create(instance, info, properties)
tween:Play()
return tween
end
local notifyContainer
-- Roundness removed as per user request
-- Removing UICorner instances via search and replace...
notify = function(title, text, duration)
if not notifyContainer then return end
duration = duration or 5
local notif = Instance.new("Frame")
notif.Name = "Notification"
notif.BackgroundColor3 = theme.background
notif.BackgroundTransparency = theme.backgroundTrans
notif.Size = UDim2.new(0, 250, 0, 60)
notif.Position = UDim2.new(1, 20, 0, 0) -- Start offscreen
notif.Parent = notifyContainer
registerTheme(notif, "background", "BackgroundColor3")
local titleLabel = Instance.new("TextLabel")
titleLabel.Text = title:upper()
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 13
titleLabel.TextColor3 = theme.accent
titleLabel.TextTransparency = theme.accentTrans
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.BackgroundTransparency = 1
titleLabel.Position = UDim2.new(0, 10, 0, 8)
titleLabel.Size = UDim2.new(1, -20, 0, 15)
titleLabel.Parent = notif
registerTheme(titleLabel, "accent", "TextColor3")
local descLabel = Instance.new("TextLabel")
descLabel.Text = text
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 12
descLabel.TextColor3 = theme.text
descLabel.TextTransparency = theme.textTrans
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.TextWrapped = true
descLabel.BackgroundTransparency = 1
descLabel.Position = UDim2.new(0, 10, 0, 25)
descLabel.Size = UDim2.new(1, -20, 0, 0) -- Height handled by constraint
descLabel.Parent = notif
registerTheme(descLabel, "text", "TextColor3")
local descConstraint = Instance.new("UITextSizeConstraint") -- Not used for wrapping height but for safety
local descSize = game:GetService("TextService"):GetTextSize(text, 12, Enum.Font.Gotham, Vector2.new(230, 1000))
local finalHeight = math.max(60, descSize.Y + 40)
notif.Size = UDim2.new(0, 250, 0, finalHeight)
descLabel.Size = UDim2.new(1, -20, 0, descSize.Y)
local barBg = Instance.new("Frame")
barBg.BackgroundColor3 = theme.sidebar
barBg.BackgroundTransparency = theme.sidebarTrans
barBg.BorderSizePixel = 0
barBg.Position = UDim2.new(0, 0, 1, -3)
barBg.Size = UDim2.new(1, 0, 0, 3)
barBg.Parent = notif
registerTheme(barBg, "sidebar", "BackgroundColor3")
local bar = Instance.new("Frame")
bar.BackgroundColor3 = theme.accent
bar.BackgroundTransparency = theme.accentTrans
bar.BorderSizePixel = 0
bar.Size = UDim2.new(1, 0, 1, 0)
bar.Parent = barBg
registerTheme(bar, "accent", "BackgroundColor3")
-- Animation
createTween(notif, {Position = UDim2.new(0, 0, 0, 0)}, 0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.Out)
task.spawn(function()
createTween(bar, {Size = UDim2.new(0, 0, 1, 0)}, duration, Enum.EasingStyle.Linear)
task.wait(duration)
local t = createTween(notif, {Position = UDim2.new(1, 20, 0, 0), BackgroundTransparency = 1}, 0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.In)
createTween(titleLabel, {TextTransparency = 1}, 0.3)
createTween(descLabel, {TextTransparency = 1}, 0.3)
createTween(barBg, {BackgroundTransparency = 1}, 0.3)
createTween(bar, {BackgroundTransparency = 1}, 0.3)
t.Completed:Wait()
notif:Destroy()
end)
end
local controlGui
local mainFrame
local dockFrame
local watermarkFrame
local function buildSleekUI()
if controlGui then return end
controlGui = Instance.new("ScreenGui")
controlGui.Name = "GhostControlUI"
controlGui.ResetOnSpawn = false
controlGui.IgnoreGuiInset = true
controlGui.Enabled = true
controlGui.DisplayOrder = 999
controlGui.Parent = LP:WaitForChild("PlayerGui")
notifyContainer = Instance.new("Frame")
notifyContainer.Name = "NotificationContainer"
notifyContainer.BackgroundTransparency = 1
notifyContainer.Size = UDim2.new(0, 260, 1, -40)
notifyContainer.Position = UDim2.new(1, -270, 0, 20)
notifyContainer.Parent = controlGui
local notifyLayout = Instance.new("UIListLayout")
notifyLayout.Padding = UDim.new(0, 10)
notifyLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
notifyLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
notifyLayout.SortOrder = Enum.SortOrder.LayoutOrder
notifyLayout.Parent = notifyContainer
local function makeDraggable(frame)
local dragStart, startPos, dragInput, dragging = nil, nil, nil, false
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
frame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end
end)
UIS.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
-- Watermark UI
watermarkFrame = Instance.new("Frame")
watermarkFrame.Name = "Watermark"
watermarkFrame.BackgroundColor3 = theme.background
watermarkFrame.BackgroundTransparency = 0.2
watermarkFrame.Position = UDim2.new(0, 20, 0, 20)
watermarkFrame.Visible = settings.watermarkEnabled
watermarkFrame.Parent = controlGui
registerTheme(watermarkFrame, "background", "BackgroundColor3")
makeDraggable(watermarkFrame)
local watermarkStroke = Instance.new("UIStroke")
watermarkStroke.Color = theme.accent
watermarkStroke.Thickness = 1
watermarkStroke.Parent = watermarkFrame
registerTheme(watermarkStroke, "accent", "Color")
local watermarkAvatar = Instance.new("ImageLabel")
watermarkAvatar.Name = "Avatar"
watermarkAvatar.Size = UDim2.new(0, 18, 0, 18)
watermarkAvatar.Position = UDim2.new(0, 6, 0.5, -9)
watermarkAvatar.BackgroundTransparency = 1
pcall(function()
watermarkAvatar.Image = game:GetService("Players"):GetUserThumbnailAsync(LP.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
end)
watermarkAvatar.Visible = settings.watermarkOptions["Avatar"]
watermarkAvatar.Parent = watermarkFrame
local watermarkLabel = Instance.new("TextLabel")
watermarkLabel.Name = "Label"
watermarkLabel.Text = "skid"
watermarkLabel.Font = Enum.Font.GothamMedium
watermarkLabel.TextSize = 13
watermarkLabel.TextColor3 = theme.text
watermarkLabel.BackgroundTransparency = 1
watermarkLabel.Size = UDim2.new(1, 0, 1, 0)
watermarkLabel.Position = UDim2.new(0, 8, 0, 0)
watermarkLabel.TextXAlignment = Enum.TextXAlignment.Left
watermarkLabel.Parent = watermarkFrame
registerTheme(watermarkLabel, "text", "TextColor3")
local function updateWatermark(fps)
if not settings.watermarkEnabled then
watermarkFrame.Visible = false
return
end
watermarkFrame.Visible = true
local showAvatar = settings.watermarkOptions["Avatar"]
watermarkAvatar.Visible = showAvatar
local parts = {"skid"}
if settings.watermarkOptions["Username"] then
table.insert(parts, LP.DisplayName .. " (@" .. LP.Name .. ")")
end
if settings.watermarkOptions["FPS"] and fps then
table.insert(parts, "FPS: " .. tostring(fps))
end
if settings.watermarkOptions["Ping"] then
local ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue())
table.insert(parts, "Ping: " .. tostring(ping) .. "ms")
end
local fullText = table.concat(parts, " | ")
watermarkLabel.Text = fullText
local textSize = game:GetService("TextService"):GetTextSize(fullText, 13, Enum.Font.GothamMedium, Vector2.new(1000, 20))
local avatarOffset = showAvatar and 28 or 8
watermarkLabel.Position = UDim2.new(0, avatarOffset, 0, 0)
watermarkFrame.Size = UDim2.new(0, textSize.X + avatarOffset + 8, 0, 24)
end
-- Proper FPS/Ping update loop for watermark
task.spawn(function()
local lastFpsUpdate = 0
local fps = 60
while true do
local dt = RunService.RenderStepped:Wait()
if settings.watermarkEnabled then
if tick() - lastFpsUpdate > 0.5 then
fps = math.floor(1/dt)
lastFpsUpdate = tick()
updateWatermark(fps)
end
end
end
end)
-- Loading Screen
-- Create the centered menu-like loading window
local loadingFrame = Instance.new("Frame")
loadingFrame.Name = "LoadingWindow"
loadingFrame.BackgroundColor3 = theme.background
loadingFrame.BorderSizePixel = 0
loadingFrame.Size = UDim2.new(0, 400, 0, 200)
loadingFrame.AnchorPoint = Vector2.new(0.5, 0.5)
loadingFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
loadingFrame.Parent = controlGui
local loadStroke = Instance.new("UIStroke")
loadStroke.Color = Color3.fromRGB(45, 45, 50)
loadStroke.Thickness = 1
loadStroke.Parent = loadingFrame
local logo = Instance.new("TextLabel")
logo.Text = "skid"
logo.Font = Enum.Font.GothamBold
logo.TextSize = 36
logo.TextColor3 = theme.accent
logo.BackgroundTransparency = 1
logo.Size = UDim2.new(1, 0, 0, 50)
logo.Position = UDim2.new(0, 0, 0.25, 0)
logo.TextTransparency = 1
logo.Parent = loadingFrame
local barBg = Instance.new("Frame")
barBg.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
barBg.BorderSizePixel = 0
barBg.Size = UDim2.new(0.8, 0, 0, 6)
barBg.AnchorPoint = Vector2.new(0.5, 0)
barBg.Position = UDim2.new(0.5, 0, 0.7, 0)
barBg.BackgroundTransparency = 1
barBg.Parent = loadingFrame
local barFill = Instance.new("Frame")
barFill.BackgroundColor3 = theme.accent
barFill.BorderSizePixel = 0
barFill.Size = UDim2.new(0, 0, 1, 0)
barFill.Parent = barBg
local loadingLabel = Instance.new("TextLabel")
loadingLabel.Text = "Initializing..."
loadingLabel.Font = Enum.Font.Gotham
loadingLabel.TextSize = 14
loadingLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
loadingLabel.BackgroundTransparency = 1
loadingLabel.Size = UDim2.new(0, 300, 0, 20)
loadingLabel.AnchorPoint = Vector2.new(0.5, 1)
loadingLabel.Position = UDim2.new(0.5, 0, 0.68, 0)
loadingLabel.TextTransparency = 1
loadingLabel.Parent = loadingFrame
-- Main UI Container
mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.BackgroundColor3 = theme.background
registerTheme(mainFrame, "background", "BackgroundColor3")
mainFrame.BorderSizePixel = 0
mainFrame.Size = UDim2.new(0, 650, 0, 450)
mainFrame.Position = UDim2.new(0.5, -325, 0.5, -225)
mainFrame.ClipsDescendants = true
mainFrame.Visible = false
mainFrame.Parent = controlGui
local mainScale = Instance.new("UIScale")
mainScale.Name = "MainScale"
mainScale.Scale = settings.uiScale
mainScale.Parent = mainFrame
-- Dock Bar
dockFrame = Instance.new("Frame")
dockFrame.Name = "DockBar"
dockFrame.BackgroundColor3 = theme.background
registerTheme(dockFrame, "background", "BackgroundColor3")
dockFrame.Size = UDim2.new(0, 180, 0, 40)
dockFrame.Position = UDim2.new(0.5, -90, 0, 20)
dockFrame.BorderSizePixel = 0
dockFrame.Visible = true
dockFrame.Parent = controlGui
local dockScale = Instance.new("UIScale")
dockScale.Name = "DockScale"
dockScale.Scale = settings.uiScale
dockScale.Parent = dockFrame
local dockLayout = Instance.new("UIListLayout")
dockLayout.FillDirection = Enum.FillDirection.Horizontal
dockLayout.SortOrder = Enum.SortOrder.LayoutOrder
dockLayout.VerticalAlignment = Enum.VerticalAlignment.Center
dockLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
dockLayout.Padding = UDim.new(0, 5)
dockLayout.Parent = dockFrame
local dockStroke = Instance.new("UIStroke")
dockStroke.Color = theme.accent
registerTheme(dockStroke, "accent", "Color")
dockStroke.Thickness = 1.5
dockStroke.Parent = dockFrame
local dockGlow = Instance.new("UIStroke")
dockGlow.Name = "DockGlow"
dockGlow.Color = theme.accent
dockGlow.Thickness = 0
dockGlow.Transparency = 0.5
dockGlow.Parent = dockFrame
local dockToggle = Instance.new("TextButton")
dockToggle.Name = "ToggleButton"
dockToggle.Modal = true
dockToggle.Size = UDim2.new(0, 60, 1, 0)
dockToggle.BackgroundTransparency = 1
dockToggle.Text = "main"
dockToggle.Font = Enum.Font.GothamBold
dockToggle.TextSize = 16
dockToggle.TextColor3 = theme.accent
dockToggle.LayoutOrder = 1
registerTheme(dockToggle, "accent", "TextColor3")
dockToggle.Parent = dockFrame
local separator = Instance.new("TextLabel")
separator.Name = "Separator"
separator.Size = UDim2.new(0, 10, 1, 0)
separator.BackgroundTransparency = 1
separator.Text = "|"
separator.Font = Enum.Font.GothamBold
separator.TextSize = 16
separator.TextColor3 = Color3.fromRGB(60, 60, 65)
separator.LayoutOrder = 2
separator.Parent = dockFrame
local playersToggle = Instance.new("TextButton")
playersToggle.Name = "PlayersButton"
playersToggle.Size = UDim2.new(0, 70, 1, 0)
playersToggle.BackgroundTransparency = 1
playersToggle.Text = "players"
playersToggle.Font = Enum.Font.GothamBold
playersToggle.TextSize = 16
playersToggle.TextColor3 = theme.accent
playersToggle.LayoutOrder = 3
registerTheme(playersToggle, "accent", "TextColor3")
playersToggle.Parent = dockFrame
-- Players Toggle Glow
local playersGlow = Instance.new("UIStroke")
playersGlow.Name = "PlayersGlow"
playersGlow.Color = theme.accent
playersGlow.Thickness = 0
playersGlow.Transparency = 0.5
playersGlow.Parent = dockFrame -- We'll handle multiple glows or single frame glow logic later
-- Dock Dragging
local dockDragging, dockDragInput, dockDragStart, dockStartPos
dockFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dockDragging = true
dockDragStart = input.Position
dockStartPos = dockFrame.Position
end
end)
UIS.InputChanged:Connect(function(input)
if dockDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dockDragStart
dockFrame.Position = UDim2.new(dockStartPos.X.Scale, dockStartPos.X.Offset + delta.X, dockStartPos.Y.Scale, dockStartPos.Y.Offset + delta.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dockDragging = false end
end)
local function updateDockGlow()
local active = mainFrame.Visible or (playersFrame and playersFrame.Visible)
createTween(dockGlow, {Thickness = active and 3 or 0}, 0.3)
end
dockToggle.MouseButton1Click:Connect(function()
menuVisibleState = not menuVisibleState
mainFrame.Visible = menuVisibleState
if updateSelectionInterface then updateSelectionInterface(false) end
updateDockGlow()
end)
playersToggle.MouseButton1Click:Connect(function()
playersVisibleState = not playersVisibleState
if playersFrame then
playersFrame.Visible = playersVisibleState
updateSelectionInterface(false)
end
updateDockGlow()
end)
-- Hover effect for dock buttons
local function setupHover(btn)
btn.MouseEnter:Connect(function()
createTween(dockStroke, {Color = theme.accent}, 0.2)
createTween(btn, {TextSize = 18}, 0.2)
end)
btn.MouseLeave:Connect(function()
createTween(dockStroke, {Color = Color3.fromRGB(45, 45, 50)}, 0.2)
createTween(btn, {TextSize = 16}, 0.2)
end)
end
setupHover(dockToggle)
setupHover(playersToggle)
local snowContainer = Instance.new("Frame")
snowContainer.Name = "SnowContainer"
snowContainer.BackgroundTransparency = 1
snowContainer.Size = UDim2.new(1, 0, 1, 0)
snowContainer.ZIndex = 10
snowContainer.Parent = mainFrame
-- Players Frame Implementation
playersFrame = Instance.new("Frame")
playersFrame.Name = "PlayersFrame"
playersFrame.BackgroundColor3 = theme.background
registerTheme(playersFrame, "background", "BackgroundColor3")
playersFrame.BorderSizePixel = 0
playersFrame.Size = UDim2.new(0, 300, 0, 400)
playersFrame.Position = UDim2.new(0.5, 335, 0.5, -200) -- Positioned to the right of main frame
playersFrame.Visible = false
playersFrame.Parent = controlGui
local playersScale = Instance.new("UIScale")
playersScale.Name = "PlayersScale"
playersScale.Scale = settings.uiScale
playersScale.Parent = playersFrame
-- Selection Interface (Avatars and Display Names)
local selectionFrame = Instance.new("CanvasGroup")
selectionFrame.Name = "SelectionInterface"
selectionFrame.BackgroundColor3 = theme.background
selectionFrame.BorderSizePixel = 0
selectionFrame.Size = UDim2.new(0, 200, 0, 400)
selectionFrame.Position = UDim2.new(1, 10, 0, 0) -- Positioned to the right of players frame
selectionFrame.Visible = false
selectionFrame.GroupTransparency = 1
selectionFrame.Parent = playersFrame
local selectionStroke = Instance.new("UIStroke")
selectionStroke.Color = Color3.fromRGB(45, 45, 50)
selectionStroke.Thickness = 1
selectionStroke.Parent = selectionFrame
local selectionTitle = Instance.new("TextLabel")
selectionTitle.Size = UDim2.new(1, 0, 0, 40)
selectionTitle.BackgroundTransparency = 1
selectionTitle.Text = "Selected Targets"
selectionTitle.TextColor3 = theme.accent
selectionTitle.Font = Enum.Font.GothamBold
selectionTitle.TextSize = 16
selectionTitle.Parent = selectionFrame
local selectionScroll = Instance.new("ScrollingFrame")
selectionScroll.Size = UDim2.new(1, -10, 1, -50)
selectionScroll.Position = UDim2.new(0, 5, 0, 45)
selectionScroll.BackgroundTransparency = 1
selectionScroll.BorderSizePixel = 0
selectionScroll.ScrollBarThickness = 2
selectionScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
selectionScroll.Parent = selectionFrame
local selectionList = Instance.new("UIListLayout")
selectionList.Padding = UDim.new(0, 8)
selectionList.HorizontalAlignment = Enum.HorizontalAlignment.Center
selectionList.Parent = selectionScroll
local function updateSelectionInterface(smooth)
if not selectionFrame then return end
-- Update Highlights
for name, highlight in pairs(targetHighlights) do
if not selectedTargets[name] then
highlight:Destroy()
targetHighlights[name] = nil
end
end
for name, player in pairs(selectedTargets) do
if not targetHighlights[name] and player and player.Character then
local highlight = Instance.new("Highlight")
highlight.Name = "SelectionHighlight_" .. name
highlight.Adornee = player.Character
highlight.FillColor = theme.accent
highlight.OutlineColor = Color3.new(1, 1, 1)
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = player.Character
targetHighlights[name] = highlight
-- Update color if theme changes
registerTheme(highlight, "accent", "FillColor")
end
end
-- If parent (playersFrame) is hidden, we hide too
if not playersFrame.Visible then
selectionFrame.Visible = false
selectionFrame.GroupTransparency = 1
return
end
for _, child in ipairs(selectionScroll:GetChildren()) do
if child:IsA("Frame") then child:Destroy() end
end
local count = 0
for name, player in pairs(selectedTargets) do
if player and player.Parent then
count = count + 1
local item = Instance.new("Frame")
item.Size = UDim2.new(0.9, 0, 0, 50)
item.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
item.Parent = selectionScroll
local img = Instance.new("ImageLabel")
img.Size = UDim2.new(0, 40, 0, 40)
img.Position = UDim2.new(0, 5, 0, 5)
img.BackgroundTransparency = 1
pcall(function()
img.Image = Players:GetUserThumbnailAsync(player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
end)
img.Parent = item
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, -55, 1, 0)
nameLabel.Position = UDim2.new(0, 50, 0, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = player.DisplayName
nameLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
nameLabel.Font = Enum.Font.GothamMedium
nameLabel.TextSize = 12
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.Parent = item
end
end
selectionScroll.CanvasSize = UDim2.new(0, 0, 0, count * 58)
local shouldBeVisible = false
if playersFrame and playersFrame.Visible and (count > 0) and (not mainFrame.Visible) then
shouldBeVisible = true
end
if smooth == nil then smooth = true end -- Default to smooth
if shouldBeVisible then
if not selectionFrame.Visible then
selectionFrame.Visible = true
if smooth then
selectionFrame.GroupTransparency = 1
createTween(selectionFrame, {GroupTransparency = 0}, 0.3)
else
selectionFrame.GroupTransparency = 0
end
end
else
if smooth then
createTween(selectionFrame, {GroupTransparency = 1}, 0.3).Completed:Connect(function()
if not (playersFrame.Visible and (count > 0) and (not mainFrame.Visible)) then
selectionFrame.Visible = false
end
end)
else
selectionFrame.Visible = false
selectionFrame.GroupTransparency = 1
end
end
end
-- Players Frame Dragging
local playersDragging, playersDragInput, playersDragStart, playersStartPos
playersFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
playersDragging = true
playersDragStart = input.Position
playersStartPos = playersFrame.Position
end
end)
UIS.InputChanged:Connect(function(input)
if playersDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - playersDragStart
local newPos = UDim2.new(playersStartPos.X.Scale, playersStartPos.X.Offset + delta.X, playersStartPos.Y.Scale, playersStartPos.Y.Offset + delta.Y)
playersFrame.Position = newPos
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then playersDragging = false end
end)
local playersTitle = Instance.new("TextLabel")
playersTitle.Size = UDim2.new(1, 0, 0, 35)
playersTitle.BackgroundTransparency = 1
playersTitle.Text = "Multi-Target Fling"
playersTitle.TextColor3 = theme.accent
playersTitle.Font = Enum.Font.GothamBold
playersTitle.TextSize = 18
registerTheme(playersTitle, "accent", "TextColor3")
playersTitle.Parent = playersFrame
local searchFrame = Instance.new("Frame")
searchFrame.Size = UDim2.new(1, -20, 0, 30)
searchFrame.Position = UDim2.new(0, 10, 0, 35)
searchFrame.BackgroundColor3 = theme.sidebar
registerTheme(searchFrame, "sidebar", "BackgroundColor3")
searchFrame.Parent = playersFrame
local searchIcon = Instance.new("ImageLabel")
searchIcon.Size = UDim2.new(0, 16, 0, 16)
searchIcon.Position = UDim2.new(0, 8, 0.5, -8)
searchIcon.BackgroundTransparency = 1
searchIcon.Image = "rbxassetid://6031154871"
searchIcon.ImageColor3 = theme.textDim
registerTheme(searchIcon, "textDim", "ImageColor3")
searchIcon.Parent = searchFrame
local searchBox = Instance.new("TextBox")
searchBox.Size = UDim2.new(1, -35, 1, 0)
searchBox.Position = UDim2.new(0, 30, 0, 0)
searchBox.BackgroundTransparency = 1
searchBox.Text = ""
searchBox.PlaceholderText = "Search players..."
searchBox.TextColor3 = theme.text
searchBox.PlaceholderColor3 = theme.textDim
registerTheme(searchBox, "text", "TextColor3")
registerTheme(searchBox, "textDim", "PlaceholderColor3")
searchBox.TextSize = 14
searchBox.Font = Enum.Font.Gotham
searchBox.TextXAlignment = Enum.TextXAlignment.Left
searchBox.Parent = searchFrame
local playerScroll = Instance.new("ScrollingFrame")
playerScroll.Size = UDim2.new(1, -20, 0, 195) -- Adjusted height for search bar
playerScroll.Position = UDim2.new(0, 10, 0, 70)
playerScroll.BackgroundTransparency = 1
playerScroll.BorderSizePixel = 0
playerScroll.ScrollBarThickness = 2
playerScroll.ClipsDescendants = true
playerScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
playerScroll.Parent = playersFrame
local playerList = Instance.new("UIListLayout")
playerList.Padding = UDim.new(0, 5)
playerList.Parent = playerScroll
local flingControls = Instance.new("Frame")
flingControls.Size = UDim2.new(1, -20, 0, 120)
flingControls.Position = UDim2.new(0, 10, 1, -130)
flingControls.BackgroundTransparency = 1
flingControls.Parent = playersFrame
local function createPlayersToggle(name, pos, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.48, 0, 0, 30)
btn.Position = pos
btn.BackgroundColor3 = theme.sidebar
registerTheme(btn, "sidebar", "BackgroundColor3")
btn.Text = name
btn.TextColor3 = theme.textDim
registerTheme(btn, "textDim", "TextColor3")
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.Parent = flingControls
local active = false
btn.MouseButton1Click:Connect(function()
active = not active
btn.TextColor3 = active and theme.accent or theme.textDim
callback(active)
end)
return btn
end
local invFlingBtn = createPlayersToggle("Invisible Fling", UDim2.new(0, 0, 0, 0), function(v)
invisibleFlingActive = v
if v then Fling2Begin() else Fling2End() end
end)
local walkFlingBtn = createPlayersToggle("Walk Fling", UDim2.new(0.52, 0, 0, 0), function(v)
if v then WalkFlingStart() else WalkFlingStop() end
end)
local antiFlingBtn = createPlayersToggle("Anti-Fling", UDim2.new(0, 0, 0, 40), function(v)
if v then AntiFlingStart() else AntiFlingStop() end
end)
local startFling = Instance.new("TextButton")
startFling.Size = UDim2.new(0.48, 0, 0, 30)
startFling.Position = UDim2.new(0.52, 0, 0, 40)
startFling.BackgroundColor3 = theme.sidebar
registerTheme(startFling, "sidebar", "BackgroundColor3")
startFling.Text = "Start Fling"
startFling.TextColor3 = Color3.fromRGB(0, 255, 127) -- Keep start green? Or use accent? User says "fix the colors... as they dont match my colors". Usually start/stop are special.
startFling.Font = Enum.Font.GothamBold
startFling.TextSize = 14
startFling.Parent = flingControls
local stopFling = Instance.new("TextButton")
stopFling.Size = UDim2.new(1, 0, 0, 30)
stopFling.Position = UDim2.new(0, 0, 0, 80)
stopFling.BackgroundColor3 = theme.sidebar
registerTheme(stopFling, "sidebar", "BackgroundColor3")
stopFling.Text = "Stop All Processes"
stopFling.TextColor3 = Color3.fromRGB(255, 64, 64) -- Keep stop red?
stopFling.Font = Enum.Font.GothamBold
stopFling.TextSize = 14
stopFling.Parent = flingControls
local function updatePlayerList()
local searchText = searchBox.Text:lower()
for _, child in ipairs(playerScroll:GetChildren()) do
if child:IsA("TextButton") then child:Destroy() end
end
local count = 0
for _, player in ipairs(Players:GetPlayers()) do
if player == LP then continue end
if searchText ~= "" and not (player.Name:lower():find(searchText) or player.DisplayName:lower():find(searchText)) then
continue
end
count = count + 1
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 32)
btn:SetAttribute("Selected", selectedTargets[player.Name] ~= nil)
btn.BackgroundColor3 = selectedTargets[player.Name] and theme.accent or theme.sidebar
btn.BackgroundTransparency = selectedTargets[player.Name] and theme.accentTrans or theme.sidebarTrans
registerTheme(btn, "playerListBtn", "BackgroundColor3")
btn.Text = ""
btn.AutoButtonColor = false
btn.Parent = playerScroll
local pfp = Instance.new("ImageLabel")
pfp.Size = UDim2.new(0, 24, 0, 24)
pfp.Position = UDim2.new(0, 4, 0.5, -12)
pfp.BackgroundTransparency = 1
pfp.Image = Players:GetUserThumbnailAsync(player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)
pfp.Parent = btn
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, -35, 1, 0)
nameLabel.Position = UDim2.new(0, 32, 0, 0)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = player.DisplayName .. " (@" .. player.Name .. ")"
nameLabel.TextColor3 = theme.text
nameLabel.TextTransparency = theme.textTrans
registerTheme(nameLabel, "text", "TextColor3")
nameLabel.TextSize = 11
nameLabel.Font = Enum.Font.Gotham
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.Parent = btn
btn.MouseButton1Click:Connect(function()
if selectedTargets[player.Name] then
selectedTargets[player.Name] = nil
btn:SetAttribute("Selected", false)
notify("Selection", "Deselected " .. player.DisplayName, 2)
else
selectedTargets[player.Name] = player
btn:SetAttribute("Selected", true)
notify("Selection", "Selected " .. player.DisplayName, 2)
end
if btn:GetAttribute("Selected") then
btn.BackgroundColor3 = theme.accent
btn.BackgroundTransparency = theme.accentTrans
else
btn.BackgroundColor3 = theme.sidebar
btn.BackgroundTransparency = theme.sidebarTrans
end
updateSelectionInterface(true)
end)
end
playerScroll.CanvasSize = UDim2.new(0, 0, 0, count * 37)
end
searchBox:GetPropertyChangedSignal("Text"):Connect(updatePlayerList)
startFling.MouseButton1Click:Connect(StartFling)
stopFling.MouseButton1Click:Connect(function()
StopFling()
Fling2End()
WalkFlingStop()
AntiFlingStop()
end)
Players.PlayerAdded:Connect(updatePlayerList)
Players.PlayerRemoving:Connect(function(player)
selectedTargets[player.Name] = nil
if targetHighlights[player.Name] then
targetHighlights[player.Name]:Destroy()
targetHighlights[player.Name] = nil
end
updatePlayerList()
updateSelectionInterface(true)
end)
-- Character added listener to re-apply highlights if character respawns
local function setupCharAdded(player)
player.CharacterAdded:Connect(function()
task.wait(0.5) -- Wait for char to load
if selectedTargets[player.Name] then
-- Force refresh highlight
if targetHighlights[player.Name] then
targetHighlights[player.Name]:Destroy()
targetHighlights[player.Name] = nil
end
updateSelectionInterface(false)
end
end)
end
for _, player in ipairs(Players:GetPlayers()) do
setupCharAdded(player)
end
Players.PlayerAdded:Connect(setupCharAdded)
updatePlayerList()
updateSelectionInterface(false)
-- Fling Logic (Enhanced from roblox.lua)
-- All logic moved to core functions for maintainability
stopFling.MouseButton1Click:Connect(function()
StopFling()
Fling2End()
WalkFlingStop()
AntiFlingStop()
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then hum.HipHeight = 2 end
end)
local mainStroke = Instance.new("UIStroke")
mainStroke.Color = Color3.fromRGB(45, 45, 50)
mainStroke.Thickness = 1
mainStroke.Parent = mainFrame
local glowStroke = Instance.new("UIStroke")
glowStroke.Name = "GlowStroke"
glowStroke.Color = theme.accent
glowStroke.Thickness = 0
glowStroke.Transparency = 0.5
glowStroke.Parent = mainFrame
-- Dragging
local dragging, dragInput, dragStart, startPos
local isSliderDragging = false -- Global flag to prevent menu drag when using sliders
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if not isSliderDragging then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end
end)
mainFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UIS.InputChanged:Connect(function(input)
if input == dragInput and dragging and not isSliderDragging then
local delta = input.Position - dragStart
createTween(mainFrame, {Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)}, 0.05)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
-- Sidebar
local sidebar = Instance.new("Frame")
sidebar.BackgroundColor3 = theme.sidebar
registerTheme(sidebar, "sidebar", "BackgroundColor3")
sidebar.BorderSizePixel = 0
sidebar.Size = UDim2.new(0, 160, 1, 0)
sidebar.Parent = mainFrame
local titleLabel = Instance.new("TextLabel")
titleLabel.Text = "skid"
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 22
titleLabel.TextColor3 = theme.accent
registerTheme(titleLabel, "accent", "TextColor3")
titleLabel.BackgroundTransparency = 1
titleLabel.Size = UDim2.new(1, 0, 0, 60)
titleLabel.Parent = sidebar
local tabContainer = Instance.new("Frame")
tabContainer.BackgroundTransparency = 1
tabContainer.Position = UDim2.new(0, 0, 0, 70)
tabContainer.Size = UDim2.new(1, 0, 1, -70)
tabContainer.Parent = sidebar
local tabLayout = Instance.new("UIListLayout")
tabLayout.Padding = UDim.new(0, 5)
tabLayout.SortOrder = Enum.SortOrder.LayoutOrder
tabLayout.Parent = tabContainer
-- Content Area
local contentArea = Instance.new("Frame")
contentArea.BackgroundTransparency = 1
contentArea.Position = UDim2.new(0, 170, 0, 10)
contentArea.Size = UDim2.new(1, -180, 1, -20)
contentArea.Parent = mainFrame
-- UI Helper Functions
local tabs = {}
local activeTab = nil
local function switchTab(tabName)
if activeTab == tabName then return end
if activeTab and tabs[activeTab] then
createTween(tabs[activeTab].btn, {BackgroundColor3 = theme.sidebar, TextColor3 = theme.textDim}, 0.2)
tabs[activeTab].btn:SetAttribute("IsActiveTab", false)
tabs[activeTab].page.Visible = false
end
activeTab = tabName
if tabs[activeTab] then
createTween(tabs[activeTab].btn, {BackgroundColor3 = theme.accent, TextColor3 = Color3.fromRGB(255, 255, 255)}, 0.2)
tabs[activeTab].btn:SetAttribute("IsActiveTab", true)
tabs[activeTab].page.Visible = true
end
end
local function createTabHeader(text)
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.GothamBold
label.TextSize = 11
label.TextColor3 = Color3.fromRGB(80, 80, 85)
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 0, 30)
label.Parent = tabContainer
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, 15)
pad.Parent = label
end
local function createTab(name)
local btn = Instance.new("TextButton")
btn.Text = " " .. name
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 14
btn.TextColor3 = theme.textDim
registerTheme(btn, "textDim", "TextColor3")
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.BackgroundColor3 = theme.sidebar
registerTheme(btn, "sidebar", "BackgroundColor3")
btn.BorderSizePixel = 0
btn.Size = UDim2.new(0.9, 0, 0, 36)
btn.Position = UDim2.new(0.05, 0, 0, 0)
btn.AutoButtonColor = false
btn.Parent = tabContainer
local page = Instance.new("ScrollingFrame")
page.BackgroundTransparency = 1
page.Size = UDim2.new(1, 0, 1, 0)
page.Visible = false
page.ScrollBarThickness = 4
page.ScrollBarImageColor3 = Color3.fromRGB(60, 60, 65)
page.Parent = contentArea
local pageLayout = Instance.new("UIListLayout")
pageLayout.SortOrder = Enum.SortOrder.LayoutOrder
pageLayout.Padding = UDim.new(0, 10)
pageLayout.Parent = page
local pagePad = Instance.new("UIPadding")
pagePad.PaddingRight = UDim.new(0, 6)
pagePad.PaddingTop = UDim.new(0, 5)
pagePad.PaddingBottom = UDim.new(0, 5)
pagePad.Parent = page
pageLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
page.CanvasSize = UDim2.new(0, 0, 0, pageLayout.AbsoluteContentSize.Y + 10)
end)
btn.MouseButton1Click:Connect(function() switchTab(name) end)
tabs[name] = {btn = btn, page = page}
return page
end
local function createSection(parent, title)
local frame = Instance.new("Frame")
frame.BackgroundColor3 = theme.sidebar
registerTheme(frame, "sidebar", "BackgroundColor3")
frame.Size = UDim2.new(1, 0, 0, 0)
frame.AutomaticSize = Enum.AutomaticSize.Y
frame.Parent = parent
local label = Instance.new("TextLabel")
label.Text = title
label.Font = Enum.Font.GothamBold
label.TextSize = 12
label.TextColor3 = Color3.fromRGB(100, 100, 110)
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, -20, 0, 30)
label.Position = UDim2.new(0, 10, 0, 0)
label.Parent = frame
local container = Instance.new("Frame")
container.BackgroundTransparency = 1
container.Position = UDim2.new(0, 10, 0, 30)
container.Size = UDim2.new(1, -20, 0, 0)
container.AutomaticSize = Enum.AutomaticSize.Y
container.Parent = frame
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 8)
layout.Parent = container
local pad = Instance.new("UIPadding")
pad.PaddingBottom = UDim.new(0, 10)
pad.Parent = container
return container
end
local function createToggle(parent, text, state, callback, hasColor)
local btn = Instance.new("TextButton")
btn.BackgroundTransparency = 1
btn.Size = UDim2.new(1, 0, 0, 30)
btn.Text = ""
btn.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, hasColor and -100 or -50, 1, 0)
label.Parent = btn
local toggleBg = Instance.new("Frame")
toggleBg.BackgroundColor3 = state and theme.accent or Color3.fromRGB(40, 40, 45)
registerTheme(toggleBg, "toggleOn", "BackgroundColor3")
toggleBg.Size = UDim2.new(0, 40, 0, 20)
toggleBg.AnchorPoint = Vector2.new(1, 0.5)
toggleBg.Position = UDim2.new(1, 0, 0.5, 0)
toggleBg.Parent = btn
local circle = Instance.new("Frame")
circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
circle.Size = UDim2.new(0, 16, 0, 16)
circle.AnchorPoint = Vector2.new(0, 0.5)
circle.Position = state and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
circle.Parent = toggleBg
local toggled = state
btn.MouseButton1Click:Connect(function()
toggled = not toggled
createTween(toggleBg, {BackgroundColor3 = toggled and theme.accent or Color3.fromRGB(40, 40, 45)}, 0.2)
createTween(circle, {Position = toggled and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)}, 0.2)
callback(toggled)
notify(text, text .. " has been " .. (toggled and "enabled" or "disabled") .. ".", 3)
end)
return btn
end
local function createToggleWithKeybind(parent, text, state, initialBind, toggleCallback, bindCallback)
local btn = Instance.new("TextButton")
btn.BackgroundTransparency = 1
btn.Size = UDim2.new(1, 0, 0, 30)
btn.Text = ""
btn.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, -120, 1, 0)
label.Parent = btn
local toggleBg = Instance.new("Frame")
toggleBg.BackgroundColor3 = state and theme.accent or Color3.fromRGB(40, 40, 45)
registerTheme(toggleBg, "toggleOn", "BackgroundColor3")
toggleBg.Size = UDim2.new(0, 40, 0, 20)
toggleBg.AnchorPoint = Vector2.new(1, 0.5)
toggleBg.Position = UDim2.new(1, 0, 0.5, 0)
toggleBg.Parent = btn
local circle = Instance.new("Frame")
circle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
circle.Size = UDim2.new(0, 16, 0, 16)
circle.AnchorPoint = Vector2.new(0, 0.5)
circle.Position = state and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
circle.Parent = toggleBg
local bindBtn = Instance.new("TextButton")
bindBtn.Text = initialBind.Name
bindBtn.Font = Enum.Font.GothamMedium
bindBtn.TextSize = 12
bindBtn.TextColor3 = theme.text
registerTheme(bindBtn, "text", "TextColor3")
bindBtn.BackgroundColor3 = theme.sidebar
registerTheme(bindBtn, "sidebar", "BackgroundColor3")
bindBtn.Size = UDim2.new(0, 60, 0, 20)
bindBtn.AnchorPoint = Vector2.new(1, 0.5)
bindBtn.Position = UDim2.new(1, -45, 0.5, 0)
bindBtn.Parent = btn
local toggled = state
btn.MouseButton1Click:Connect(function()
toggled = not toggled
createTween(toggleBg, {BackgroundColor3 = toggled and theme.accent or Color3.fromRGB(40, 40, 45)}, 0.2)
createTween(circle, {Position = toggled and UDim2.new(1, -18, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)}, 0.2)
toggleCallback(toggled)
notify(text, text .. " has been " .. (toggled and "enabled" or "disabled") .. ".", 3)
updateKeybindList()
end)
local binding = false
bindBtn.MouseButton1Click:Connect(function()
binding = true
isBinding = true
bindBtn.Text = "..."
end)
UIS.InputBegan:Connect(function(input)
if binding then
if input.UserInputType == Enum.UserInputType.Keyboard then
binding = false
isBinding = false
local key = input.KeyCode
bindBtn.Text = key.Name
bindCallback(key)
updateKeybindList()
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
binding = false
isBinding = false
bindBtn.Text = initialBind.Name
end
end
end)
return btn
end
local function createSlider(parent, text, value, min, max, step, callback)
local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 0, 50)
frame.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 0, 20)
label.Parent = frame
local valueLabel = Instance.new("TextLabel")
valueLabel.Text = tostring(value)
valueLabel.Font = Enum.Font.Gotham
valueLabel.TextSize = 14
valueLabel.TextColor3 = theme.textDim
registerTheme(valueLabel, "textDim", "TextColor3")
valueLabel.TextXAlignment = Enum.TextXAlignment.Right
valueLabel.BackgroundTransparency = 1
valueLabel.Size = UDim2.new(1, 0, 0, 20)
valueLabel.Parent = frame
local sliderBg = Instance.new("TextButton")
sliderBg.Text = ""
sliderBg.BackgroundColor3 = Color3.fromRGB(40, 40, 45)
sliderBg.Size = UDim2.new(1, 0, 0, 6)
sliderBg.Position = UDim2.new(0, 0, 0, 35)
sliderBg.AutoButtonColor = false
sliderBg.BorderSizePixel = 0
sliderBg.Parent = frame
-- Clickable hitbox (MASSIVE hitbox for easier dragging)
local hitbox = Instance.new("TextButton")
hitbox.Name = "Hitbox"
hitbox.Text = ""
hitbox.BackgroundTransparency = 1
hitbox.Size = UDim2.new(1, 30, 0, 45) -- Very large vertical and horizontal hitbox
hitbox.Position = UDim2.new(0, -15, 0.5, -22)
hitbox.ZIndex = 10
hitbox.Parent = sliderBg
local fill = Instance.new("Frame")
fill.BackgroundColor3 = theme.accent
registerTheme(fill, "accent", "BackgroundColor3")
fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
fill.BorderSizePixel = 0
fill.Parent = sliderBg
local knob = Instance.new("Frame")
knob.Name = "Knob"
knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
knob.Size = UDim2.new(0, 12, 0, 12)
knob.AnchorPoint = Vector2.new(0.5, 0.5)
knob.Position = UDim2.new((value - min) / (max - min), 0, 0.5, 0)
knob.ZIndex = 5
knob.Parent = sliderBg
local knobStroke = Instance.new("UIStroke")
knobStroke.Thickness = 1.5
knobStroke.Color = Color3.fromRGB(0, 0, 0)
knobStroke.Transparency = 0.5
knobStroke.Parent = knob
local dragging = false
local function updateSlider(input)
local alpha = math.clamp((input.Position.X - sliderBg.AbsolutePosition.X) / sliderBg.AbsoluteSize.X, 0, 1)
local newValue = (min + (max - min) * alpha)
newValue = math.floor(newValue / step + 0.5) * step
if step >= 1 then
valueLabel.Text = string.format("%d", newValue)
else
local decimals = 0
local s = tostring(step)
if s:find("%.") then
decimals = #s:split(".")[2]
end
valueLabel.Text = string.format("%." .. decimals .. "f", newValue)
end
fill.Size = UDim2.new(alpha, 0, 1, 0)
knob.Position = UDim2.new(alpha, 0, 0.5, 0)
callback(newValue)
end
hitbox.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
isSliderDragging = true
updateSlider(input)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
isSliderDragging = false
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
updateSlider(input)
end
end)
end
local function updateKeybindList()
if not keybindListFrame then return end
local container = keybindListFrame:FindFirstChild("Container")
if not container then return end
local keybindsToShow = {
{name = "Menu", key = settings.menuKeybind, enabled = true},
{name = "Flight", key = settings.exploits.flightKeybind, enabled = settings.exploits.flightActive},
{name = "WalkSpeed", key = settings.exploits.walkSpeedKeybind, enabled = settings.exploits.walkSpeedActive},
{name = "Noclip", key = settings.exploits.noclipKeybind, enabled = settings.exploits.noclipActive}
}
-- Filter and update/create rows
local visibleCount = 0
local maxWidth = 170 -- Increased default min width further
-- Collect currently visible and enabled binds
local activeBinds = {}
for _, bind in ipairs(keybindsToShow) do
local isExploitEnabled = false
if bind.name == "Menu" then
isExploitEnabled = true
elseif bind.name == "Flight" then
isExploitEnabled = settings.exploits.flightEnabled
elseif bind.name == "WalkSpeed" then
isExploitEnabled = settings.exploits.walkSpeedEnabled
elseif bind.name == "Noclip" then
isExploitEnabled = settings.exploits.noclipEnabled
end
if isExploitEnabled then
table.insert(activeBinds, bind)
end
end
-- Update rows
for i, bind in ipairs(activeBinds) do
visibleCount = visibleCount + 1
local row = container:FindFirstChild("Row_" .. bind.name)
if not row then
row = Instance.new("Frame")
row.Name = "Row_" .. bind.name
row.BackgroundTransparency = 1
row.Size = UDim2.new(1, 0, 0, 30) -- Increased row height further
row.Parent = container
local nameLabel = Instance.new("TextLabel")
nameLabel.Name = "NameLabel"
nameLabel.Font = Enum.Font.Gotham
nameLabel.TextSize = 15 -- Increased text size further
nameLabel.TextColor3 = theme.accent
nameLabel.TextTransparency = 0
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.BackgroundTransparency = 1
nameLabel.Size = UDim2.new(0.6, 0, 1, 0)
nameLabel.Parent = row
nameLabel.ZIndex = 1005
registerTheme(nameLabel, "accent", "TextColor3")
local nameStroke = Instance.new("UIStroke")
nameStroke.Thickness = 0.5
nameStroke.Color = Color3.fromRGB(0, 0, 0)
nameStroke.Transparency = 0.5
nameStroke.Parent = nameLabel
local keyLabel = Instance.new("TextLabel")
keyLabel.Name = "KeyLabel"
keyLabel.Font = Enum.Font.GothamMedium
keyLabel.TextSize = 15 -- Increased text size further
keyLabel.TextColor3 = theme.accent
keyLabel.TextTransparency = 0
keyLabel.TextXAlignment = Enum.TextXAlignment.Right
keyLabel.BackgroundTransparency = 1
keyLabel.Size = UDim2.new(0.4, 0, 1, 0)
keyLabel.Position = UDim2.new(0.6, 0, 0, 0)
keyLabel.Parent = row
keyLabel.ZIndex = 1005
registerTheme(keyLabel, "accent", "TextColor3")
local keyStroke = Instance.new("UIStroke")
keyStroke.Thickness = 0.5
keyStroke.Color = Color3.fromRGB(0, 0, 0)
keyStroke.Transparency = 0.5
keyStroke.Parent = keyLabel
end
row.LayoutOrder = i
row.Visible = true
row.NameLabel.Text = bind.name
-- ULTRA BRIGHT colors for visibility
if bind.enabled then
row.NameLabel.TextColor3 = theme.accent
row.NameLabel.TextTransparency = 0
row.KeyLabel.TextColor3 = theme.accent
row.KeyLabel.TextTransparency = 0
else
row.NameLabel.TextColor3 = theme.accent
row.NameLabel.TextTransparency = 0.5
row.KeyLabel.TextColor3 = theme.accent
row.KeyLabel.TextTransparency = 0.5
end
local keyName = (typeof(bind.key) == "EnumItem" and bind.key.Name) or tostring(bind.key) or "None"
row.KeyLabel.Text = "[" .. keyName .. "]"
local combinedText = bind.name .. " [" .. keyName .. "]"
local textBound = game:GetService("TextService"):GetTextSize(combinedText, 15, Enum.Font.Gotham, Vector2.new(1000, 1000))
if textBound.X + 45 > maxWidth then
maxWidth = textBound.X + 45
end
end
-- Hide unused rows
for _, child in ipairs(container:GetChildren()) do
if child:IsA("Frame") and child.Name:find("Row_") then
local found = false
for _, bind in ipairs(activeBinds) do
if child.Name == "Row_" .. bind.name then
found = true
break
end
end
if not found then
child.Visible = false
end
end
end
local targetHeight = 50 + (visibleCount * 30 + (visibleCount > 0 and (visibleCount-1)*8 or 0))
createTween(keybindListFrame, {Size = UDim2.new(0, maxWidth, 0, targetHeight)}, 0.2)
end
local function createKeybindList()
if keybindListFrame then return end
keybindListFrame = Instance.new("Frame")
keybindListFrame.Name = "KeybindListHUD"
keybindListFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25) -- Deep dark
keybindListFrame.BackgroundTransparency = 0.15
keybindListFrame.Size = UDim2.new(0, 200, 0, 140)
keybindListFrame.Position = UDim2.new(0.98, -210, 0.4, 0)
keybindListFrame.Visible = keybindListEnabled
keybindListFrame.Parent = controlGui
keybindListFrame.ZIndex = 1000
local stroke = Instance.new("UIStroke")
stroke.Color = theme.accent
stroke.Transparency = 0.2
stroke.Thickness = 1.5
stroke.Parent = keybindListFrame
registerTheme(stroke, "accent", "Color")
local header = Instance.new("Frame")
header.Name = "Header"
header.Size = UDim2.new(1, 0, 0, 40)
header.BackgroundTransparency = 1
header.Parent = keybindListFrame
header.ZIndex = 1001
local title = Instance.new("TextLabel")
title.Text = "KEYBINDS"
title.Font = Enum.Font.GothamBold
title.TextSize = 16
title.TextColor3 = theme.accent
title.TextTransparency = 0
title.BackgroundTransparency = 1
title.Size = UDim2.new(1, 0, 1, 0)
title.Parent = header
title.ZIndex = 1002
registerTheme(title, "accent", "TextColor3")
local titleStroke = Instance.new("UIStroke")
titleStroke.Thickness = 0.5
titleStroke.Color = Color3.fromRGB(0, 0, 0)
titleStroke.Transparency = 0.5
titleStroke.Parent = title
local accentBar = Instance.new("Frame")
accentBar.BackgroundColor3 = theme.accent
accentBar.Size = UDim2.new(0.94, 0, 0, 2.5)
accentBar.Position = UDim2.new(0.03, 0, 1, -2)
accentBar.BorderSizePixel = 0
accentBar.Parent = header
accentBar.ZIndex = 1002
registerTheme(accentBar, "accent", "BackgroundColor3")
local container = Instance.new("Frame")
container.Name = "Container"
container.BackgroundTransparency = 1
container.Position = UDim2.new(0, 18, 0, 50)
container.Size = UDim2.new(1, -36, 1, -65)
container.Parent = keybindListFrame
container.ZIndex = 1001
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 8)
layout.Parent = container
-- Dragging logic
local dragging, dragStart, startPos
header.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = keybindListFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
keybindListFrame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
updateKeybindList()
return keybindListFrame
end
local function createButton(parent, text, callback)
local btn = Instance.new("TextButton")
btn.Text = text
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 14
btn.TextColor3 = theme.text
registerTheme(btn, "text", "TextColor3")
btn.BackgroundColor3 = theme.sidebar
registerTheme(btn, "sidebar", "BackgroundColor3")
btn.Size = UDim2.new(1, 0, 0, 32)
btn.Parent = parent
btn.MouseButton1Click:Connect(function()
createTween(btn, {BackgroundColor3 = Color3.fromRGB(50, 50, 55)}, 0.1)
wait(0.1)
createTween(btn, {BackgroundColor3 = theme.sidebar}, 0.1)
callback()
end)
return btn
end
local function createColorPicker(parent, text, initial, callback, initialTrans, isSideBySide)
local h, s, v = initial:ToHSV()
local t = initialTrans or 0
local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 0, 30)
frame.Parent = parent
if isSideBySide then
frame.Size = UDim2.new(0, 40, 0, 30)
frame.AnchorPoint = Vector2.new(1, 0.5)
frame.Position = UDim2.new(1, -50, 0.5, 0) -- Align next to toggle switch
end
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(0.6, 0, 0, 30)
label.Visible = not isSideBySide
label.Parent = frame
local previewBtn = Instance.new("TextButton")
previewBtn.Text = ""
previewBtn.BackgroundColor3 = initial
previewBtn.BackgroundTransparency = t
previewBtn.Size = UDim2.new(0, 40, 0, 20)
previewBtn.AnchorPoint = Vector2.new(1, 0.5)
previewBtn.Position = isSideBySide and UDim2.new(1, 0, 0, 15) or UDim2.new(1, -10, 0, 15)
previewBtn.Parent = frame
-- Detached Draggable Window (Ultra-Compact 2D Picker)
local pickerWindow = Instance.new("Frame")
pickerWindow.Name = "ColorPickerWindow_" .. text
pickerWindow.Size = UDim2.new(0, 240, 0, 340)
pickerWindow.Position = UDim2.new(0.5, -120, 0.5, -170)
pickerWindow.BackgroundColor3 = theme.background
registerTheme(pickerWindow, "background", "BackgroundColor3")
pickerWindow.Visible = false
pickerWindow.ZIndex = 100
pickerWindow.Parent = controlGui
local winStroke = Instance.new("UIStroke")
winStroke.Color = Color3.fromRGB(60, 60, 65)
winStroke.Thickness = 1
winStroke.Parent = pickerWindow
-- Title Bar
local titleBar = Instance.new("TextButton")
titleBar.Text = " " .. text
titleBar.Font = Enum.Font.GothamBold
titleBar.TextSize = 13
titleBar.TextColor3 = theme.text
registerTheme(titleBar, "text", "TextColor3")
titleBar.TextXAlignment = Enum.TextXAlignment.Left
titleBar.BackgroundColor3 = theme.sidebar
registerTheme(titleBar, "sidebar", "BackgroundColor3")
titleBar.Size = UDim2.new(1, 0, 0, 35)
titleBar.AutoButtonColor = false
titleBar.ZIndex = 101
titleBar.Parent = pickerWindow
local titleCover = Instance.new("Frame")
titleCover.BackgroundColor3 = theme.sidebar
registerTheme(titleCover, "sidebar", "BackgroundColor3")
titleCover.BorderSizePixel = 0
titleCover.Size = UDim2.new(1, 0, 0, 8)
titleCover.Position = UDim2.new(0, 0, 1, -8)
titleCover.ZIndex = 101
titleCover.Parent = titleBar
-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Text = "X"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 14
closeBtn.TextColor3 = theme.textDim
registerTheme(closeBtn, "textDim", "TextColor3")
closeBtn.BackgroundTransparency = 1
closeBtn.Size = UDim2.new(0, 35, 0, 35)
closeBtn.Position = UDim2.new(1, -35, 0, 0)
closeBtn.ZIndex = 102
closeBtn.Parent = titleBar
closeBtn.MouseButton1Click:Connect(function()
pickerWindow.Visible = false
end)
-- Dragging Logic
local dragging, dragInput, dragStart, startPos
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = pickerWindow.Position
end
end)
titleBar.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UIS.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
pickerWindow.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
local content = Instance.new("Frame")
content.BackgroundTransparency = 1
content.Position = UDim2.new(0, 12, 0, 45)
content.Size = UDim2.new(1, -24, 1, -55)
content.ZIndex = 101
content.Parent = pickerWindow
-- SV Square (Saturation & Value)
local svSquare = Instance.new("Frame")
svSquare.Size = UDim2.new(0, 180, 0, 180)
svSquare.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
svSquare.ZIndex = 102
svSquare.Parent = content
-- White Saturation Gradient
local satGradFrame = Instance.new("Frame")
satGradFrame.Size = UDim2.new(1, 0, 1, 0)
satGradFrame.BackgroundTransparency = 0
satGradFrame.ZIndex = 103
satGradFrame.Parent = svSquare
local satGrad = Instance.new("UIGradient")
satGrad.Color = ColorSequence.new(Color3.new(1,1,1))
satGrad.Transparency = NumberSequence.new(0, 1)
satGrad.Parent = satGradFrame
-- Black Value Gradient
local valGradFrame = Instance.new("Frame")
valGradFrame.Size = UDim2.new(1, 0, 1, 0)
valGradFrame.BackgroundTransparency = 0
valGradFrame.ZIndex = 104
valGradFrame.Parent = svSquare
local valGrad = Instance.new("UIGradient")
valGrad.Color = ColorSequence.new(Color3.new(0,0,0))
valGrad.Rotation = 90
valGrad.Transparency = NumberSequence.new(1, 0)
valGrad.Parent = valGradFrame
-- SV Cursor
local svCursor = Instance.new("Frame")
svCursor.Size = UDim2.new(0, 10, 0, 10)
svCursor.AnchorPoint = Vector2.new(0.5, 0.5)
svCursor.Position = UDim2.new(s, 0, 1 - v, 0)
svCursor.BackgroundColor3 = Color3.new(1,1,1)
svCursor.ZIndex = 105
svCursor.Parent = svSquare
local cursorStroke = Instance.new("UIStroke")
cursorStroke.Thickness = 1.5
cursorStroke.Color = Color3.new(0,0,0)
cursorStroke.Parent = svCursor
-- Hue Slider (Vertical)
local hueSlider = Instance.new("Frame")
hueSlider.Size = UDim2.new(0, 20, 0, 180)
hueSlider.Position = UDim2.new(0, 195, 0, 0)
hueSlider.ZIndex = 102
hueSlider.Parent = content
local hueGrad = Instance.new("UIGradient")
hueGrad.Rotation = 90
hueGrad.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromHSV(0,1,1)),
ColorSequenceKeypoint.new(0.16, Color3.fromHSV(0.16,1,1)),
ColorSequenceKeypoint.new(0.33, Color3.fromHSV(0.33,1,1)),
ColorSequenceKeypoint.new(0.5, Color3.fromHSV(0.5,1,1)),
ColorSequenceKeypoint.new(0.66, Color3.fromHSV(0.66,1,1)),
ColorSequenceKeypoint.new(0.83, Color3.fromHSV(0.83,1,1)),
ColorSequenceKeypoint.new(1, Color3.fromHSV(1,1,1))
})
hueGrad.Parent = hueSlider
local hueKnob = Instance.new("Frame")
hueKnob.Size = UDim2.new(1, 4, 0, 6)
hueKnob.Position = UDim2.new(0, -2, h, 0)
hueKnob.BackgroundColor3 = Color3.new(1,1,1)
hueKnob.ZIndex = 103
hueKnob.Parent = hueSlider
local hKnobStroke = Instance.new("UIStroke")
hKnobStroke.Thickness = 1.5
hKnobStroke.Color = Color3.new(0,0,0)
hKnobStroke.Parent = hueKnob
-- Transparency Slider (Horizontal)
local transSlider = Instance.new("Frame")
transSlider.Size = UDim2.new(1, 0, 0, 20)
transSlider.Position = UDim2.new(0, 0, 0, 195)
transSlider.ZIndex = 102
transSlider.Parent = content
local transGrad = Instance.new("UIGradient")
transGrad.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1)
})
transGrad.Parent = transSlider
local transKnob = Instance.new("Frame")
transKnob.Size = UDim2.new(0, 6, 1, 4)
transKnob.Position = UDim2.new(t, -3, 0, -2)
transKnob.BackgroundColor3 = Color3.new(1,1,1)
transKnob.ZIndex = 103
transKnob.Parent = transSlider
local tKnobStroke = Instance.new("UIStroke")
tKnobStroke.Thickness = 1.5
tKnobStroke.Color = Color3.new(0,0,0)
tKnobStroke.Parent = transKnob
-- Display Area
local display = Instance.new("Frame")
display.Size = UDim2.new(1, 0, 0, 40)
display.Position = UDim2.new(0, 0, 0, 230)
display.BackgroundTransparency = 1
display.ZIndex = 102
display.Parent = content
local colorPreview = Instance.new("Frame")
colorPreview.Size = UDim2.new(0, 40, 0, 40)
colorPreview.BackgroundColor3 = initial
colorPreview.BackgroundTransparency = t
colorPreview.ZIndex = 103
colorPreview.Parent = display
local cpStroke = Instance.new("UIStroke")
cpStroke.Color = Color3.fromRGB(60, 60, 65)
cpStroke.Thickness = 2
cpStroke.Parent = colorPreview
local valLabel = Instance.new("TextLabel")
valLabel.Size = UDim2.new(1, -50, 1, 0)
valLabel.Position = UDim2.new(0, 50, 0, 0)
valLabel.BackgroundTransparency = 1
valLabel.Text = "RGB: " .. math.floor(initial.R*255) .. ", " .. math.floor(initial.G*255) .. ", " .. math.floor(initial.B*255)
valLabel.Font = Enum.Font.GothamMedium
valLabel.TextSize = 12
valLabel.TextColor3 = theme.text
registerTheme(valLabel, "text", "TextColor3")
valLabel.TextXAlignment = Enum.TextXAlignment.Left
valLabel.ZIndex = 103
valLabel.Parent = display
local function updateColor()
local newCol = Color3.fromHSV(h, s, v)
previewBtn.BackgroundColor3 = newCol
previewBtn.BackgroundTransparency = t
colorPreview.BackgroundColor3 = newCol
colorPreview.BackgroundTransparency = t
svSquare.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
-- Update transparency gradient colors
transGrad.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, newCol),
ColorSequenceKeypoint.new(1, newCol)
})
valLabel.Text = string.format("RGB: %d, %d, %d A: %d%%",
math.floor(newCol.R*255),
math.floor(newCol.G*255),
math.floor(newCol.B*255),
math.floor((1-t)*100))
callback(newCol, t)
end
-- SV Input
local svDragging = false
local function updateSV(input)
local relativeX = math.clamp((input.Position.X - svSquare.AbsolutePosition.X) / svSquare.AbsoluteSize.X, 0, 1)
local relativeY = math.clamp((input.Position.Y - svSquare.AbsolutePosition.Y) / svSquare.AbsoluteSize.Y, 0, 1)
s = relativeX
v = 1 - relativeY
svCursor.Position = UDim2.new(s, 0, 1 - v, 0)
updateColor()
end
svSquare.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
svDragging = true
isSliderDragging = true
updateSV(input)
end
end)
-- Hue Input
local hueDragging = false
local function updateHue(input)
local relativeY = math.clamp((input.Position.Y - hueSlider.AbsolutePosition.Y) / hueSlider.AbsoluteSize.Y, 0, 1)
h = relativeY
hueKnob.Position = UDim2.new(0, -2, h, 0)
updateColor()
end
hueSlider.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
hueDragging = true
isSliderDragging = true
updateHue(input)
end
end)
-- Transparency Input
local transDragging = false
local function updateTrans(input)
local relativeX = math.clamp((input.Position.X - transSlider.AbsolutePosition.X) / transSlider.AbsoluteSize.X, 0, 1)
t = relativeX
transKnob.Position = UDim2.new(t, -3, 0, -2)
updateColor()
end
transSlider.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
transDragging = true
isSliderDragging = true
updateTrans(input)
end
end)
UIS.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
if svDragging then updateSV(input) end
if hueDragging then updateHue(input) end
if transDragging then updateTrans(input) end
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
svDragging = false
hueDragging = false
transDragging = false
isSliderDragging = false
end
end)
previewBtn.MouseButton1Click:Connect(function()
pickerWindow.Visible = not pickerWindow.Visible
if pickerWindow.Visible then
pickerWindow.ZIndex = 100
end
end)
updateColor()
return previewBtn
end
local function createKeybind(parent, text, initial, callback)
local currentKey = initial
local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 0, 30)
frame.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, -60, 1, 0)
label.Parent = frame
local bindBtn = Instance.new("TextButton")
bindBtn.Text = currentKey.Name
bindBtn.Font = Enum.Font.GothamMedium
bindBtn.TextSize = 12
bindBtn.TextColor3 = theme.text
registerTheme(bindBtn, "text", "TextColor3")
bindBtn.BackgroundColor3 = theme.sidebar
registerTheme(bindBtn, "sidebar", "BackgroundColor3")
bindBtn.Size = UDim2.new(0, 60, 0, 24)
bindBtn.AnchorPoint = Vector2.new(1, 0.5)
bindBtn.Position = UDim2.new(1, 0, 0.5, 0)
bindBtn.Parent = frame
bindBtn.MouseButton1Click:Connect(function()
binding = true
isBinding = true
bindBtn.Text = "..."
end)
UIS.InputBegan:Connect(function(input)
if binding then
if input.UserInputType == Enum.UserInputType.Keyboard then
binding = false
isBinding = false
currentKey = input.KeyCode
bindBtn.Text = currentKey.Name
callback(currentKey)
updateKeybindList()
elseif input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.MouseButton2 then
binding = false
isBinding = false
bindBtn.Text = currentKey.Name
end
end
end)
return bindBtn
end
local function createDropdown(parent, text, options, initial, callback)
local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 0, 55)
frame.ZIndex = 5
frame.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 0, 20)
label.Parent = frame
local dropBtn = Instance.new("TextButton")
dropBtn.Text = initial
dropBtn.Font = Enum.Font.GothamMedium
dropBtn.TextSize = 13
dropBtn.TextColor3 = theme.text
registerTheme(dropBtn, "text", "TextColor3")
dropBtn.TextXAlignment = Enum.TextXAlignment.Left
dropBtn.BackgroundColor3 = theme.sidebar
registerTheme(dropBtn, "sidebar", "BackgroundColor3")
dropBtn.Size = UDim2.new(1, 0, 0, 30)
dropBtn.Position = UDim2.new(0, 0, 0, 25)
dropBtn.AutoButtonColor = false
dropBtn.Parent = frame
local btnStroke = Instance.new("UIStroke")
btnStroke.Color = Color3.fromRGB(60, 60, 65)
btnStroke.Thickness = 1
btnStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
btnStroke.Parent = dropBtn
local btnPad = Instance.new("UIPadding")
btnPad.PaddingLeft = UDim.new(0, 10)
btnPad.Parent = dropBtn
local arrow = Instance.new("TextLabel")
arrow.Text = "+"
arrow.Font = Enum.Font.GothamBold
arrow.TextSize = 16
arrow.TextColor3 = theme.textDim
registerTheme(arrow, "textDim", "TextColor3")
arrow.BackgroundTransparency = 1
arrow.Size = UDim2.new(0, 30, 1, 0)
arrow.Position = UDim2.new(1, -30, 0, 0)
arrow.Parent = dropBtn
local listContainer = Instance.new("Frame")
listContainer.BackgroundColor3 = theme.sidebar
registerTheme(listContainer, "sidebar", "BackgroundColor3")
listContainer.BorderSizePixel = 0
listContainer.Position = UDim2.new(0, 0, 0, 60)
listContainer.Size = UDim2.new(1, 0, 0, 0)
listContainer.ClipsDescendants = true
listContainer.Visible = false
listContainer.ZIndex = 10
listContainer.Parent = frame
local listStroke = Instance.new("UIStroke")
listStroke.Color = Color3.fromRGB(60, 60, 65)
listStroke.Thickness = 1
listStroke.Parent = listContainer
local listLayout = Instance.new("UIListLayout")
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 2)
listLayout.Parent = listContainer
local listPad = Instance.new("UIPadding")
listPad.PaddingTop = UDim.new(0, 5)
listPad.PaddingBottom = UDim.new(0, 5)
listPad.PaddingLeft = UDim.new(0, 5)
listPad.PaddingRight = UDim.new(0, 5)
listPad.Parent = listContainer
local expanded = false
local itemHeight = 25
local selected = initial
local function updateList()
local listSize = math.min(#options * (itemHeight + 2) + 10, 150)
createTween(listContainer, {Size = UDim2.new(1, 0, 0, expanded and listSize or 0)}, 0.2)
createTween(frame, {Size = UDim2.new(1, 0, 0, expanded and (55 + listSize + 5) or 55)}, 0.2)
end
for i, opt in ipairs(options) do
local optBtn = Instance.new("TextButton")
optBtn.Text = " " .. opt
optBtn.Font = Enum.Font.Gotham
optBtn.TextSize = 13
optBtn.TextColor3 = (opt == selected) and theme.accent or theme.textDim
optBtn.TextXAlignment = Enum.TextXAlignment.Left
optBtn.BackgroundTransparency = 1
optBtn.Size = UDim2.new(1, 0, 0, itemHeight)
optBtn.ZIndex = 11
optBtn.Parent = listContainer
optBtn.MouseButton1Click:Connect(function()
selected = opt
dropBtn.Text = opt
expanded = false
arrow.Text = "+"
updateList()
task.delay(0.2, function() if not expanded then listContainer.Visible = false end end)
-- Update all option colors
for _, otherBtn in ipairs(listContainer:GetChildren()) do
if otherBtn:IsA("TextButton") then
otherBtn.TextColor3 = (otherBtn.Text:sub(3) == selected) and theme.accent or theme.textDim
end
end
callback(opt)
end)
end
dropBtn.MouseButton1Click:Connect(function()
expanded = not expanded
arrow.Text = expanded and "-" or "+"
listContainer.Visible = true
updateList()
if not expanded then
task.delay(0.2, function() if not expanded then listContainer.Visible = false end end)
end
end)
return frame
end
local function createMultiDropdown(parent, text, items, callback, initial)
local frame = Instance.new("Frame")
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 0, 0, 55)
frame.ZIndex = 5
frame.Parent = parent
local label = Instance.new("TextLabel")
label.Text = text
label.Font = Enum.Font.Gotham
label.TextSize = 14
label.TextColor3 = theme.text
registerTheme(label, "text", "TextColor3")
label.TextXAlignment = Enum.TextXAlignment.Left
label.BackgroundTransparency = 1
label.Size = UDim2.new(1, 0, 0, 20)
label.Position = UDim2.new(0, 0, 0, 0)
label.Parent = frame
local dropdownBtn = Instance.new("TextButton")
dropdownBtn.Text = "Select..."
dropdownBtn.Font = Enum.Font.GothamMedium
dropdownBtn.TextSize = 13
dropdownBtn.TextColor3 = theme.textDim
registerTheme(dropdownBtn, "textDim", "TextColor3")
dropdownBtn.TextXAlignment = Enum.TextXAlignment.Left
dropdownBtn.BackgroundColor3 = theme.sidebar
registerTheme(dropdownBtn, "sidebar", "BackgroundColor3")
dropdownBtn.Size = UDim2.new(1, 0, 0, 30)
dropdownBtn.Position = UDim2.new(0, 0, 0, 25)
dropdownBtn.AutoButtonColor = false
dropdownBtn.Parent = frame
local btnStroke = Instance.new("UIStroke")
btnStroke.Color = Color3.fromRGB(60, 60, 65)
btnStroke.Thickness = 1
btnStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
btnStroke.Parent = dropdownBtn
local btnPad = Instance.new("UIPadding")
btnPad.PaddingLeft = UDim.new(0, 10)
btnPad.Parent = dropdownBtn
local arrow = Instance.new("TextLabel")
arrow.Text = "+"
arrow.Font = Enum.Font.GothamBold
arrow.TextSize = 16
arrow.TextColor3 = theme.textDim
registerTheme(arrow, "textDim", "TextColor3")
arrow.BackgroundTransparency = 1
arrow.Size = UDim2.new(0, 30, 1, 0)
arrow.Position = UDim2.new(1, -30, 0, 0)
arrow.Parent = dropdownBtn
local listContainer = Instance.new("Frame")
listContainer.BackgroundColor3 = theme.sidebar
registerTheme(listContainer, "sidebar", "BackgroundColor3")
listContainer.BorderSizePixel = 0
listContainer.Position = UDim2.new(0, 0, 0, 60)
listContainer.Size = UDim2.new(1, 0, 0, 0)
listContainer.ClipsDescendants = true
listContainer.Visible = false
listContainer.ZIndex = 10
listContainer.Parent = frame
local listStroke = Instance.new("UIStroke")
listStroke.Color = Color3.fromRGB(60, 60, 65)
listStroke.Thickness = 1
listStroke.Parent = listContainer
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 2)
layout.Parent = listContainer
local listPad = Instance.new("UIPadding")
listPad.PaddingTop = UDim.new(0, 5)
listPad.PaddingBottom = UDim.new(0, 5)
listPad.PaddingLeft = UDim.new(0, 5)
listPad.PaddingRight = UDim.new(0, 5)
listPad.Parent = listContainer
local expanded = false
local itemHeight = 25
local selectedItems = initial or {}
local function updateLabel()
local active = {}
for n, s in pairs(selectedItems) do
if s then table.insert(active, n) end
end
if #active == 0 then
dropdownBtn.Text = "Select..."
dropdownBtn.TextColor3 = theme.textDim
elseif #active == 1 then
dropdownBtn.Text = active[1]
dropdownBtn.TextColor3 = theme.text
else
dropdownBtn.Text = #active .. " Selected"
dropdownBtn.TextColor3 = theme.text
end
end
for _, name in ipairs(items) do
local initialValue = selectedItems[name] or false
selectedItems[name] = initialValue
local itemBtn = Instance.new("TextButton")
itemBtn.Text = " " .. name
itemBtn.Font = Enum.Font.Gotham
itemBtn.TextSize = 13
itemBtn.TextColor3 = initialValue and theme.accent or theme.textDim
itemBtn.TextXAlignment = Enum.TextXAlignment.Left
itemBtn.BackgroundTransparency = 1
itemBtn.Size = UDim2.new(1, 0, 0, itemHeight)
itemBtn.ZIndex = 11
itemBtn.Parent = listContainer
itemBtn.MouseButton1Click:Connect(function()
selectedItems[name] = not selectedItems[name]
itemBtn.TextColor3 = selectedItems[name] and theme.accent or theme.textDim
updateLabel()
callback(selectedItems)
end)
end
updateLabel()
dropdownBtn.MouseButton1Click:Connect(function()
expanded = not expanded
arrow.Text = expanded and "-" or "+"
listContainer.Visible = true
local listSize = expanded and (#items * (itemHeight + 2) + 10) or 0
createTween(listContainer, {Size = UDim2.new(1, 0, 0, listSize)}, 0.2)
createTween(frame, {Size = UDim2.new(1, 0, 0, expanded and (55 + listSize + 5) or 55)}, 0.2)
if not expanded then
task.delay(0.2, function() if not expanded then listContainer.Visible = false end end)
end
end)
return frame
end
local function createTabHeader(text)
local container = Instance.new("Frame")
container.BackgroundTransparency = 1
container.Size = UDim2.new(1, 0, 0, 30) -- Increased height
container.Parent = tabContainer
local header = Instance.new("TextLabel")
header.Text = text
header.Font = Enum.Font.GothamBlack -- Thicker font
header.TextSize = 10 -- Smaller but bolder
header.TextColor3 = theme.textDim
registerTheme(header, "textDim", "TextColor3")
header.TextTransparency = 0.5 -- More faded
header.TextXAlignment = Enum.TextXAlignment.Left
header.BackgroundTransparency = 1
header.Size = UDim2.new(1, 0, 1, 0)
header.Position = UDim2.new(0, 15, 0, 5) -- Pushed down slightly
header.Parent = container
-- Optional: Add a subtle divider line below the text if desired,
-- but just making it small/bold/faded usually helps distinction.
return container
end
-- Build Tabs
createTabHeader("MAIN")
local generalTab = createTab("General")
local visualsTab = createTab("Visuals")
local desyncTab = createTab("Desync")
createTabHeader("MISC")
local settingsTab = createTab("Settings")
-- General Tab
local exploitSec = createSection(generalTab, "Exploits")
createToggle(exploitSec, "No Camera Rotation", settings.exploits.noCameraRotate, function(v)
settings.exploits.noCameraRotate = v
end)
createToggleWithKeybind(exploitSec, "Enable WalkSpeed", settings.exploits.walkSpeedEnabled, settings.exploits.walkSpeedKeybind, function(v)
settings.exploits.walkSpeedEnabled = v
settings.exploits.walkSpeedActive = v
if updateKeybindList then updateKeybindList() end
end, function(k)
settings.exploits.walkSpeedKeybind = k
if updateKeybindList then updateKeybindList() end
end)
createSlider(exploitSec, "WalkSpeed", settings.exploits.walkSpeed, 16, 200, 1, function(v)
settings.exploits.walkSpeed = v
end)
createDropdown(exploitSec, "WalkSpeed Method", {"Default", "CFrame"}, settings.exploits.walkSpeedMethod, function(v)
settings.exploits.walkSpeedMethod = v
end)
createToggle(exploitSec, "Enable JumpPower", settings.exploits.jumpPowerEnabled, function(v)
settings.exploits.jumpPowerEnabled = v
end)
createSlider(exploitSec, "JumpPower", settings.exploits.jumpPower, 50, 500, 1, function(v)
settings.exploits.jumpPower = v
end)
createToggle(exploitSec, "Enable FOV", settings.exploits.fovEnabled, function(v)
settings.exploits.fovEnabled = v
end)
createSlider(exploitSec, "FOV", settings.exploits.fovAmount, 30, 120, 1, function(v)
settings.exploits.fovAmount = v
end)
createToggle(exploitSec, "Enable Gravity", settings.exploits.gravityEnabled, function(v)
settings.exploits.gravityEnabled = v
if not v then workspace.Gravity = 196.2 end
end)
createSlider(exploitSec, "Gravity", settings.exploits.gravityAmount, 0, 196.2, 0.1, function(v)
settings.exploits.gravityAmount = v
end)
createToggle(exploitSec, "Enable HipHeight", settings.exploits.hipHeightEnabled, function(v)
settings.exploits.hipHeightEnabled = v
if not v then
local char = LP.Character
local hum = char and char:FindFirstChild("Humanoid")
if hum then
hum.HipHeight = 2 -- Default HipHeight
end
end
end)
createSlider(exploitSec, "HipHeight", settings.exploits.hipHeightAmount, -2, 20, 0.1, function(v)
settings.exploits.hipHeightAmount = v
end)
createToggle(exploitSec, "Anti-Void", settings.exploits.antiVoidEnabled, function(v)
settings.exploits.antiVoidEnabled = v
end)
createToggle(exploitSec, "Show Void Level", settings.exploits.showVoidLevel, function(v)
settings.exploits.showVoidLevel = v
end)
createToggle(exploitSec, "Void God Mode", settings.exploits.voidGodMode, function(v)
settings.exploits.voidGodMode = v
end)
createToggleWithKeybind(exploitSec, "Flight", settings.exploits.flightEnabled, settings.exploits.flightKeybind, function(v)
settings.exploits.flightEnabled = v
settings.exploits.flightActive = v
if updateKeybindList then updateKeybindList() end
end, function(k)
settings.exploits.flightKeybind = k
if updateKeybindList then updateKeybindList() end
end)
createToggleWithKeybind(exploitSec, "Noclip", settings.exploits.noclipEnabled, settings.exploits.noclipKeybind, function(v)
settings.exploits.noclipEnabled = v
settings.exploits.noclipActive = v
if updateKeybindList then updateKeybindList() end
end, function(k)
settings.exploits.noclipKeybind = k
if updateKeybindList then updateKeybindList() end
end)
createSlider(exploitSec, "Flight Speed", settings.exploits.flightSpeed, 10, 300, 1, function(v)
settings.exploits.flightSpeed = v
end)
-- Desync Tab
local desyncSec = createSection(desyncTab, "Desync")
createToggle(desyncSec, "Enabled", settings.desync.enabled, function(v)
settings.desync.enabled = v
end)
createDropdown(desyncSec, "Method", {"Velocity", "CFrame", "Freeze"}, settings.desync.method, function(v)
settings.desync.method = v
end)
createSlider(desyncSec, "Power", settings.desync.power, 1, 100, 1, function(v)
settings.desync.power = v
end)
createSlider(desyncSec, "Range", settings.desync.range, 1, 20, 0.5, function(v)
settings.desync.range = v
end)
local desyncVisToggle = createToggle(desyncSec, "Visualize", settings.desync.visualize, function(v)
settings.desync.visualize = v
end)
createColorPicker(desyncVisToggle, "Visualize Color", settings.desync.color, function(v)
settings.desync.color = v
end, nil, true)
local desyncMoveSec = createSection(desyncTab, "Movement")
createDropdown(desyncMoveSec, "Type", {"None", "Spinbot", "Backwards", "Upside down"}, settings.desync.movement.type, function(v)
settings.desync.movement.type = v
end)
createSlider(desyncMoveSec, "Spin Speed", settings.desync.movement.speed, 1, 100, 1, function(v)
settings.desync.movement.speed = v
end)
local desyncFlingSec = createSection(desyncTab, "Fling")
createToggle(desyncFlingSec, "Client Smoothing", settings.fling.smoothing, function(v)
settings.fling.smoothing = v
end)
-- Visuals Tab
local mainSec = createSection(visualsTab, "Main")
local pingToggle = createToggle(mainSec, "Ping Chams", settings.pingChams, function(v) settings.pingChams = v end)
createColorPicker(pingToggle, "Ping Color", settings.pingColor, function(v) settings.pingColor = v end, nil, true)
local predToggle = createToggle(mainSec, "Prediction Chams", settings.predictionChams, function(v) settings.predictionChams = v end)
createColorPicker(predToggle, "Prediction Color", settings.predictionColor, function(v) settings.predictionColor = v end, nil, true)
local desyncToggle = createToggle(mainSec, "Desync Chams", settings.desync.chams.enabled, function(v)
settings.desync.chams.enabled = v
end)
createColorPicker(desyncToggle, "Desync Chams Color", settings.desync.chams.color, function(v)
settings.desync.chams.color = v
end, nil, true)
local latSec = createSection(visualsTab, "Latency")
createSlider(latSec, "Delay Multiplier", settings.delayMul, 0.5, 1.5, 0.05, function(v) settings.delayMul = v end)
local playerVisSec = createSection(visualsTab, "Player Visuals")
createToggle(playerVisSec, "ESP", settings.esp.enabled, function(v)
settings.esp.enabled = v
end)
createMultiDropdown(playerVisSec, "ESP Options", {"Bounding Box", "Name", "Health", "Tracers", "Weapon", "Visible Only", "Team Check", "Show Distance", "Show Health"}, function(selected)
settings.esp.box = selected["Bounding Box"]
settings.esp.name = selected["Name"]
settings.esp.health = selected["Health"]
settings.esp.tracers = selected["Tracers"]
settings.esp.weapon = selected["Weapon"]
settings.esp.visibleOnly = selected["Visible Only"]
settings.esp.teamCheck = selected["Team Check"]
settings.esp.showDistance = selected["Show Distance"]
settings.esp.showHealth = selected["Show Health"]
end, {
["Bounding Box"] = settings.esp.box,
["Name"] = settings.esp.name,
["Health"] = settings.esp.health,
["Tracers"] = settings.esp.tracers,
["Weapon"] = settings.esp.weapon,
["Visible Only"] = settings.esp.visibleOnly,
["Team Check"] = settings.esp.teamCheck,
["Show Distance"] = settings.esp.showDistance,
["Show Health"] = settings.esp.showHealth
})
createSlider(playerVisSec, "Max Distance", settings.esp.maxDistance, 100, 5000, 50, function(val)
settings.esp.maxDistance = val
end)
local lightSec = createSection(visualsTab, "Lighting")
createToggle(lightSec, "Enable Lighting Override", settings.lighting.enabled, function(v)
settings.lighting.enabled = v
if v then applyLighting() end
end)
createSlider(lightSec, "Brightness", settings.lighting.brightness, 0, 10, 0.1, function(v)
settings.lighting.brightness = v
applyLighting()
end)
createSlider(lightSec, "Exposure", settings.lighting.exposure, -5, 5, 0.1, function(v)
settings.lighting.exposure = v
applyLighting()
end)
createSlider(lightSec, "Fog Start", settings.lighting.fogStart, 0, 10000, 10, function(v)
settings.lighting.fogStart = v
applyLighting()
end)
createSlider(lightSec, "Fog End", settings.lighting.fogEnd, 0, 100000, 100, function(v)
settings.lighting.fogEnd = v
applyLighting()
end)
createSlider(lightSec, "Clock Time", settings.lighting.clockTime, 0, 24, 0.1, function(v)
settings.lighting.clockTime = v
applyLighting()
end)
createSlider(lightSec, "Shadow Softness", settings.lighting.shadowSoftness, 0, 1, 0.05, function(v)
settings.lighting.shadowSoftness = v
applyLighting()
end)
createToggle(lightSec, "Global Shadows", settings.lighting.globalShadows, function(v)
settings.lighting.globalShadows = v
applyLighting()
end)
createColorPicker(lightSec, "Outdoor Ambient", settings.lighting.outdoorAmbient, function(c, t)
settings.lighting.outdoorAmbient = c
applyLighting()
end)
createColorPicker(lightSec, "Ambient", settings.lighting.ambient, function(c, t)
settings.lighting.ambient = c
applyLighting()
end)
createColorPicker(lightSec, "ColorShift Top", settings.lighting.colorShift_Top, function(c, t)
settings.lighting.colorShift_Top = c
applyLighting()
end)
createColorPicker(lightSec, "ColorShift Bottom", settings.lighting.colorShift_Bottom, function(c, t)
settings.lighting.colorShift_Bottom = c
applyLighting()
end)
-- Settings Tab
local menuSec = createSection(settingsTab, "Configuration")
-- General Settings Header
local genHeader = Instance.new("TextLabel")
genHeader.Text = "GENERAL"
genHeader.Font = Enum.Font.GothamBold
genHeader.TextSize = 12
genHeader.TextColor3 = theme.textDim
genHeader.BackgroundTransparency = 1
genHeader.Size = UDim2.new(1, 0, 0, 20)
genHeader.TextXAlignment = Enum.TextXAlignment.Left
genHeader.Parent = menuSec
registerTheme(genHeader, "textDim", "TextColor3")
createKeybind(menuSec, "Menu Keybind", settings.menuKeybind, function(key)
settings.menuKeybind = key
updateKeybindList()
end)
createToggle(menuSec, "Keybind List", keybindListEnabled, function(v)
keybindListEnabled = v
if v then
if not keybindListFrame then createKeybindList() end
keybindListFrame.Visible = true
else
if keybindListFrame then keybindListFrame.Visible = false end
end
end)
createSlider(menuSec, "UI Scale", settings.uiScale, 0.5, 1.5, 0.05, function(v)
settings.uiScale = v
if mainFrame:FindFirstChild("MainScale") then mainFrame.MainScale.Scale = v end
if dockFrame:FindFirstChild("DockScale") then dockFrame.DockScale.Scale = v end
if playersFrame:FindFirstChild("PlayersScale") then playersFrame.PlayersScale.Scale = v end
end)
createButton(menuSec, "Rejoin Server", function()
local ts = game:GetService("TeleportService")
local players = game:GetService("Players")
if #players:GetPlayers() <= 1 then
players.LocalPlayer:Kick("\nRejoining...")
wait()
ts:Teleport(game.PlaceId, players.LocalPlayer)
else
ts:TeleportToPlaceInstance(game.PlaceId, game.JobId, players.LocalPlayer)
end
end)
-- Theme Settings Header
local themeHeader = Instance.new("TextLabel")
themeHeader.Text = "THEME"
themeHeader.Font = Enum.Font.GothamBold
themeHeader.TextSize = 12
themeHeader.TextColor3 = theme.textDim
themeHeader.BackgroundTransparency = 1
themeHeader.Size = UDim2.new(1, 0, 0, 20)
themeHeader.TextXAlignment = Enum.TextXAlignment.Left
themeHeader.Parent = menuSec
registerTheme(themeHeader, "textDim", "TextColor3")
createColorPicker(menuSec, "Accent Color", theme.accent, function(c, t)
theme.accent = c
theme.accentTrans = t
applyThemeUpdates()
if glowStroke then glowStroke.Color = c end
end, theme.accentTrans)
createColorPicker(menuSec, "Background Color", theme.background, function(c, t)
theme.background = c
theme.backgroundTrans = t
applyThemeUpdates()
end, theme.backgroundTrans)
createColorPicker(menuSec, "Foreground Color", theme.sidebar, function(c, t)
theme.sidebar = c
theme.sidebarTrans = t
applyThemeUpdates()
end, theme.sidebarTrans)
createColorPicker(menuSec, "Text Color", theme.text, function(c, t)
theme.text = c
theme.textTrans = t
applyThemeUpdates()
end, theme.textTrans)
createColorPicker(menuSec, "Dim Text Color", theme.textDim, function(c, t)
theme.textDim = c
theme.textDimTrans = t
applyThemeUpdates()
end, theme.textDimTrans)
local snowLoopRunning = false
createMultiDropdown(menuSec, "Menu Effects", {"Glow Effect", "Snow Effect"}, function(selected)
theme.glow = selected["Glow Effect"]
if glowStroke then
glowStroke.Thickness = theme.glow and 4 or 0
end
theme.snow = selected["Snow Effect"]
if theme.snow and not snowLoopRunning then
snowLoopRunning = true
task.spawn(function()
while theme.snow and mainFrame.Visible do
local flake = Instance.new("Frame")
flake.BackgroundColor3 = Color3.new(1,1,1)
flake.BorderSizePixel = 0
flake.Size = UDim2.new(0, math.random(2,4), 0, math.random(2,4))
flake.Position = UDim2.new(math.random(), 0, -0.1, 0)
flake.BackgroundTransparency = math.random(0.3, 0.7)
flake.Parent = snowContainer
local dur = math.random(2, 5)
createTween(flake, {Position = UDim2.new(flake.Position.X.Scale + (math.random(-10,10)/100), 0, 1.1, 0), BackgroundTransparency = 1}, dur)
game:GetService("Debris"):AddItem(flake, dur)
task.wait(math.random(1,5)/20)
end
snowLoopRunning = false
end)
end
end, {["Glow Effect"] = theme.glow, ["Snow Effect"] = theme.snow})
createButton(menuSec, "Test Notification", function()
notify("skid", "skid", 5)
end)
-- Watermark Header
local watermarkHeader = Instance.new("TextLabel")
watermarkHeader.Text = "WATERMARK"
watermarkHeader.Font = Enum.Font.GothamBold
watermarkHeader.TextSize = 12
watermarkHeader.TextColor3 = theme.textDim
watermarkHeader.BackgroundTransparency = 1
watermarkHeader.Size = UDim2.new(1, 0, 0, 20)
watermarkHeader.TextXAlignment = Enum.TextXAlignment.Left
watermarkHeader.Parent = menuSec
registerTheme(watermarkHeader, "textDim", "TextColor3")
createToggle(menuSec, "Show Watermark", settings.watermarkEnabled, function(v)
settings.watermarkEnabled = v
watermarkFrame.Visible = v
updateWatermark()
end)
createMultiDropdown(menuSec, "Watermark Options", {"Username", "FPS", "Ping", "Avatar"}, function(selected)
settings.watermarkOptions = selected
updateWatermark()
end, settings.watermarkOptions)
-- Select first tab
switchTab("General")
-- Loading Animation
createTween(logo, {TextTransparency = 0, Position = UDim2.new(0, 0, 0.25, 0)}, 0.8)
createTween(barBg, {BackgroundTransparency = 0, Position = UDim2.new(0.5, 0, 0.7, 0)}, 0.8)
createTween(loadingLabel, {TextTransparency = 0}, 0.8)
wait(0.5)
loadingLabel.Text = "Loading Assets..."
createTween(barFill, {Size = UDim2.new(0.3, 0, 1, 0)}, 0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut)
wait(0.6)
loadingLabel.Text = "Initializing Physics..."
createTween(barFill, {Size = UDim2.new(0.7, 0, 1, 0)}, 0.6, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut)
wait(0.7)
loadingLabel.Text = "Starting Services..."
createTween(barFill, {Size = UDim2.new(1, 0, 1, 0)}, 0.4, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut)
wait(0.5)
createTween(loadingFrame, {BackgroundTransparency = 1}, 0.5)
createTween(logo, {TextTransparency = 1}, 0.5)
createTween(barBg, {BackgroundTransparency = 1}, 0.5)
createTween(barFill, {BackgroundTransparency = 1}, 0.5)
createTween(loadingLabel, {TextTransparency = 1}, 0.5)
mainFrame.Visible = false
loadingFrame:Destroy()
_G.GhostPingUI = { cleanupUI = cleanupUI }
end
local function updatePing()
local now = tick()
if now - lastPingUpdate < PING_UPDATE_INTERVAL then return end
lastPingUpdate = now
local samples = {}
local rfMs = probePingMsRF()
if rfMs then table.insert(samples, rfMs) end
local sMs = probePingMsStats()
if sMs then table.insert(samples, sMs) end
if #samples > 0 then
local ms = median(samples)
local sec = math.clamp(ms * 0.001, 0.002, 1.0)
pushPing(sec)
local med = median({table.unpack(pingBuf)})
local alpha = (#pingBuf >= 5) and 0.25 or 0.5
if med then
rtt = rtt * (1 - alpha) + med * alpha
else
rtt = sec
end
end
end
local function sizeFromCharacter(char)
if not char then return Vector3.new(4,6,2) end
local ok, size = pcall(function() return char:GetExtentsSize() end)
if ok and size then
return Vector3.new(math.max(2, size.X), math.max(3, size.Y), math.max(1, size.Z))
end
return Vector3.new(4,6,2)
end
local function collectRigParts(char)
local parts = {}
if not char then return parts end
for _, d in ipairs(char:GetDescendants()) do
if d:IsA("BasePart") and d.Name ~= "HumanoidRootPart" then
parts[#parts+1] = d
end
end
return parts
end
local function getRootPart(char)
if not char then return nil end
return char:FindFirstChild("HumanoidRootPart")
or char:FindFirstChild("Torso")
or char:FindFirstChild("UpperTorso")
or char:FindFirstChild("LowerTorso")
end
local function isFirstPerson()
local cam = Workspace.CurrentCamera
local head = LP.Character and LP.Character:FindFirstChild("Head")
local lock = LP.CameraMode == Enum.CameraMode.LockFirstPerson
local near = head and (cam.CFrame.Position - head.Position).Magnitude < 1.2
return lock or near
end
local function clearGhostRig()
for _, info in pairs(ghostRig) do
if info.box then info.box:Destroy() end
if info.part then info.part:Destroy() end
end
ghostRig = {}
end
local function clearGhostClone()
ghostMap = {}
if ghostClone then
ghostClone:Destroy()
ghostClone = nil
end
end
local function rebuildGhostRig(char)
clearGhostRig()
local parts = collectRigParts(char)
for _, src in ipairs(parts) do
local gp = Instance.new("Part")
gp.Name = "Ghost_"..src.Name
gp.Anchored = true
gp.CanCollide = false
gp.Transparency = 1
gp.Material = Enum.Material.Neon
gp.Size = src.Size
gp.Parent = ghostModel
local aura = Instance.new("ParticleEmitter")
aura.Name = "Aura_"..src.Name
aura.Rate = 40
aura.Lifetime = NumberRange.new(0.4, 0.7)
aura.Speed = NumberRange.new(0.0, 0.05)
aura.SpreadAngle = Vector2.new(20, 20)
aura.Rotation = NumberRange.new(0, 360)
aura.RotSpeed = NumberRange.new(-20, 20)
aura.Size = NumberSequence.new({
NumberSequenceKeypoint.new(0, math.max(0.1, math.min(src.Size.Magnitude/12, 0.4))),
NumberSequenceKeypoint.new(1, 0.0)
})
aura.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.0),
NumberSequenceKeypoint.new(1, 1.0)
})
aura.LightInfluence = 0
aura.LockedToPart = true
aura.EmissionDirection = Enum.NormalId.Front
aura.Enabled = true
aura.Parent = gp
ghostRig[src.Name] = {part = gp, aura = aura}
end
end
local function rebuildGhostClone(char, col, trans)
clearGhostClone()
ghostClone = Instance.new("Model")
ghostClone.Name = "GhostClone"
ghostClone.Parent = ghostModel
local parts = collectRigParts(char)
for _, src in ipairs(parts) do
local gp
if src:IsA("MeshPart") or src:IsA("Part") then
gp = src:Clone()
for _, d in ipairs(gp:GetDescendants()) do
if d:IsA("JointInstance") or d:IsA("Constraint") or d:IsA("Motor6D") then
d:Destroy()
end
end
gp.Size = gp.Size * 1.03
else
gp = Instance.new("Part")
gp.Size = src.Size * 1.03
end
gp.Name = "Ghost_"..src.Name
gp.Anchored = true
gp.CanCollide = false
gp.CanQuery = false
gp.CanTouch = false
gp.CastShadow = false
gp.Material = Enum.Material.ForceField
gp.Color = col
gp.Transparency = trans
gp.Parent = ghostClone
ghostMap[src.Name] = gp
end
end
local function clearGhostCloneFuture()
ghostMapFuture = {}
if ghostCloneFuture then
ghostCloneFuture:Destroy()
ghostCloneFuture = nil
end
end
local function rebuildGhostCloneFuture(char, col, trans)
clearGhostCloneFuture()
ghostCloneFuture = Instance.new("Model")
ghostCloneFuture.Name = "GhostCloneFuture"
ghostCloneFuture.Parent = ghostModel
local parts = collectRigParts(char)
for _, src in ipairs(parts) do
local gp
if src:IsA("MeshPart") or src:IsA("Part") then
gp = src:Clone()
for _, d in ipairs(gp:GetDescendants()) do
if d:IsA("JointInstance") or d:IsA("Constraint") or d:IsA("Motor6D") then
d:Destroy()
end
end
else
gp = Instance.new("Part")
gp.Size = src.Size
end
gp.Name = "GhostFuture_"..src.Name
gp.Anchored = true
gp.CanCollide = false
gp.CanQuery = false
gp.CanTouch = false
gp.CastShadow = false
gp.Material = Enum.Material.ForceField
gp.Color = col
gp.Transparency = trans
gp.Parent = ghostCloneFuture
ghostMapFuture[src.Name] = gp
end
end
local function ensureGhost()
if not ghostModel then
ghostModel = Instance.new("Model")
ghostModel.Name = "ServerApproxGhost"
ghostModel.Parent = workspace
end
if not ghostPart then
ghostPart = Instance.new("Part")
ghostPart.Name = "ServerApproxPart"
ghostPart.Anchored = true
ghostPart.CanCollide = false
ghostPart.CanQuery = false
ghostPart.CanTouch = false
ghostPart.Transparency = 1
ghostPart.Size = sizeFromCharacter(LP.Character)
ghostPart.Parent = ghostModel
end
if not ghostFuturePart then
ghostFuturePart = Instance.new("Part")
ghostFuturePart.Name = "PredictionApproxPart"
ghostFuturePart.Anchored = true
ghostFuturePart.CanCollide = false
ghostFuturePart.CanQuery = false
ghostFuturePart.CanTouch = false
ghostFuturePart.Transparency = 1
ghostFuturePart.Size = sizeFromCharacter(LP.Character)
ghostFuturePart.Parent = ghostModel
end
-- tracers removed
if not pingGui then
pingGui = Instance.new("BillboardGui")
pingGui.Name = "PingInfo"
pingGui.Size = UDim2.new(0, 140, 0, 24)
pingGui.Adornee = ghostPart
pingGui.StudsOffset = Vector3.new(0, ghostPart and (ghostPart.Size.Y/2 + 2) or 6, 0)
pingGui.AlwaysOnTop = true
pingGui.Parent = ghostModel
local lbl = Instance.new("TextLabel")
lbl.Name = "Label"
lbl.BackgroundTransparency = 1
lbl.Size = UDim2.new(1,0,1,0)
lbl.Font = Enum.Font.GothamBold
lbl.TextScaled = true
lbl.TextColor3 = Color3.fromRGB(220,220,220)
lbl.Text = "Ping: -- ms"
lbl.TextStrokeTransparency = 0
lbl.TextStrokeColor3 = Color3.fromRGB(0,0,0)
lbl.Parent = pingGui
end
if not futureGui then
futureGui = Instance.new("BillboardGui")
futureGui.Name = "FutureInfo"
futureGui.Size = UDim2.new(0, 140, 0, 24)
futureGui.Adornee = ghostFuturePart
futureGui.StudsOffset = Vector3.new(0, ghostFuturePart and (ghostFuturePart.Size.Y/2 + 2) or 6, 0)
futureGui.AlwaysOnTop = true
futureGui.Parent = ghostModel
local lbl = Instance.new("TextLabel")
lbl.Name = "Label"
lbl.BackgroundTransparency = 1
lbl.Size = UDim2.new(1,0,1,0)
lbl.Font = Enum.Font.GothamBold
lbl.TextScaled = true
lbl.TextColor3 = Color3.fromRGB(220,220,220)
lbl.Text = "Vel: --"
lbl.TextStrokeTransparency = 0
lbl.TextStrokeColor3 = Color3.fromRGB(0,0,0)
lbl.Parent = futureGui
end
end
local function overwriteCharacterSelections()
local char = LP.Character
if not char then return end
for _, inst in ipairs(char:GetDescendants()) do
if inst:IsA("SelectionBox") then
inst.Color3 = Color3.fromRGB(40,180,255)
inst.LineThickness = 0.05
inst.SurfaceTransparency = 1
inst.Adornee = char
end
end
end
local function captureOffsets(char, root)
local map = {}
if not char or not root then return map end
for _, d in ipairs(char:GetDescendants()) do
if d:IsA("BasePart") and d ~= root then
-- relative to HRP at this moment
map[d.Name] = root.CFrame:ToObjectSpace(d.CFrame)
end
end
return map
end
local function pushSample(tClient, char)
local root = getRootPart(char)
if not root then return end
local offsets = captureOffsets(char, root)
local vel = Vector3.new()
local angVel = Vector3.new()
local moveDir = Vector3.new()
local walkSpeed = 0
local hum = char and char:FindFirstChildOfClass("Humanoid")
local ok1, v = pcall(function() return root.AssemblyLinearVelocity end)
if ok1 and typeof(v) == "Vector3" then vel = v end
local ok2, w = pcall(function() return root.AssemblyAngularVelocity end)
if ok2 and typeof(w) == "Vector3" then angVel = w end
if hum then
local ok3, md = pcall(function() return hum.MoveDirection end)
if ok3 and typeof(md) == "Vector3" then moveDir = md end
local ok4, ws = pcall(function() return hum.WalkSpeed end)
if ok4 and type(ws) == "number" then walkSpeed = ws end
end
table.insert(BUFFER, {t=tClient, cf=root.CFrame, offsets=offsets, vel=vel, angVel=angVel, md=moveDir, ws=walkSpeed})
local cutoff = tClient - BUFFER_MAX_SECONDS
local i = 1
while i <= #BUFFER and BUFFER[i].t < cutoff do
table.remove(BUFFER, i)
end
end
local function lerpCFrame(a, b, alpha)
local pos = a.Position:Lerp(b.Position, alpha)
local ax, ay, az = a:ToOrientation()
local bx, by, bz = b:ToOrientation()
local dx = math.atan2(math.sin(bx - ax), math.cos(bx - ax))
local dy = math.atan2(math.sin(by - ay), math.cos(by - ay))
local dz = math.atan2(math.sin(bz - az), math.cos(bz - az))
local rx = ax + dx * alpha
local ry = ay + dy * alpha
local rz = az + dz * alpha
return CFrame.new(pos) * CFrame.fromOrientation(rx, ry, rz)
end
local function sampleAtClientTime(target)
if #BUFFER == 0 then return nil end
local prev = BUFFER[1]
for i = 1, #BUFFER do
local s = BUFFER[i]
if s.t >= target then
local p = BUFFER[math.max(i-1,1)]
local n = s
if p.t == n.t then return {root=p.cf, offsets=p.offsets} end
local alpha = math.clamp((target - p.t) / (n.t - p.t), 0, 1)
-- interpolate HRP only; use nearest offsets for limbs
local cf = lerpCFrame(p.cf, n.cf, alpha)
local offsets = {}
if p.offsets or n.offsets then
for name, aOff in pairs(p.offsets or {}) do
local bOff = (n.offsets and n.offsets[name]) or aOff
offsets[name] = lerpCFrame(aOff, bOff, alpha)
end
for name, bOff in pairs(n.offsets or {}) do
if not offsets[name] then
local aOff = (p.offsets and p.offsets[name]) or bOff
offsets[name] = lerpCFrame(aOff, bOff, alpha)
end
end
end
return {root=cf, offsets=offsets}
end
prev = s
end
return {root=prev.cf, offsets=prev.offsets}
end
local function predictAtClientTime(target)
if #BUFFER < 1 then return nil end
local meas = BUFFER[#BUFFER]
local prev = BUFFER[#BUFFER-1] or meas
local lx, ly, lz = meas.cf:ToOrientation()
local dtMeas = math.max(0.0001, meas.t - (_G._PF and _G._PF.t or meas.t))
local pf = _G._PF
if not pf then
local px, py, pz = prev.cf:ToOrientation()
local dtPrev = math.max(0.0001, meas.t - prev.t)
local initYawRate = (ly - py) / dtPrev
pf = {
pos = meas.cf.Position,
vel = meas.vel or Vector3.new(),
yaw = ly,
yawRate = (meas.angVel and meas.angVel.Y) or initYawRate,
pitch = lx,
roll = lz,
t = meas.t
}
else
local xPred = pf.pos + pf.vel * dtMeas
local vPred = pf.vel
if meas.md and meas.ws and meas.md.Magnitude > 0.05 then
local desiredPlanar = meas.md.Unit * meas.ws
local desired = Vector3.new(desiredPlanar.X, vPred.Y, desiredPlanar.Z)
vPred = vPred:Lerp(desired, 0.5)
end
local yawPred = pf.yaw + pf.yawRate * dtMeas
local alpha = 0.6
local beta = 0.3
local posRes = (meas.cf.Position - xPred)
local yawRes = (ly - yawPred)
pf.pos = xPred + posRes * alpha
pf.vel = vPred + (posRes * (beta / dtMeas))
local maxSpd = 120
if pf.vel.Magnitude > maxSpd then pf.vel = pf.vel.Unit * maxSpd end
pf.yaw = yawPred + yawRes * alpha
local yawRateNew = pf.yawRate + (yawRes * (beta / dtMeas))
local maxYawRate = math.rad(540)
if yawRateNew > maxYawRate then yawRateNew = maxYawRate end
if yawRateNew < -maxYawRate then yawRateNew = -maxYawRate end
pf.yawRate = yawRateNew
pf.pitch = lx
pf.roll = lz
pf.t = meas.t
end
_G._PF = pf
local d = math.max(0, target - meas.t)
local pos = pf.pos + pf.vel * d
local rx = pf.pitch
local ry = pf.yaw + pf.yawRate * d
local rz = pf.roll
local predictedCF = CFrame.new(pos) * CFrame.fromOrientation(rx, ry, rz)
local lastSmoothT = _G._GhostFutureSmoothT or tick()
local nowT = tick()
local dtSmooth = math.max(0.0001, nowT - lastSmoothT)
local smoothAlpha = math.clamp(dtSmooth * 8, 0.08, 0.45)
_G._GhostFutureSmooth = _G._GhostFutureSmooth or predictedCF
local cf = lerpCFrame(_G._GhostFutureSmooth, predictedCF, smoothAlpha)
_G._GhostFutureSmooth = cf
_G._GhostFutureSmoothT = nowT
return {root=cf, offsets=meas.offsets}
end
local function colorForDelay(d)
local t = math.clamp((d - 0.03) / (0.5 - 0.03), 0, 1)
local c1 = Color3.fromRGB(40,180,255)
local c2 = Color3.fromRGB(255,180,60)
local c3 = Color3.fromRGB(255,60,60)
local mid = Color3.new(
c1.R + (c2.R - c1.R) * t,
c1.G + (c2.G - c1.G) * t,
c1.B + (c2.B - c1.B) * t
)
local c = Color3.new(
mid.R + (c3.R - mid.R) * t,
mid.G + (c3.G - mid.G) * t,
mid.B + (c3.B - mid.B) * t
)
return c
end
renderConn = RunService.RenderStepped:Connect(function()
updatePing()
ensureGhost()
local char = LP.Character
if char then
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then
if not ghostModel or (ghostClone == nil) then
rebuildGhostClone(char, Color3.fromRGB(40,180,255), 0.6)
end
pushSample(tick(), char)
end
local sz = sizeFromCharacter(char)
ghostPart.Size = sz
overwriteCharacterSelections()
end
local sampleDelay = math.clamp(rtt * settings.delayMul, 0.03, 0.8)
BUFFER_MAX_SECONDS = math.clamp(sampleDelay * 6, 3, 8)
local now = tick()
local samplePast = sampleAtClientTime(now - sampleDelay)
local futureLead = 0.12
if _G._PF and _G._PF.vel then
futureLead = math.clamp(_G._PF.vel.Magnitude * 0.004, 0.12, 0.40)
else
local last = BUFFER[#BUFFER]
if last and last.vel then
futureLead = math.clamp(last.vel.Magnitude * 0.004, 0.12, 0.40)
end
end
local sampleFuture = predictAtClientTime(now + sampleDelay + futureLead)
local alpha = math.clamp(0.6 - sampleDelay * 0.5, 0.1, 0.6)
local trailLife = math.clamp(sampleDelay * 1.8, 0.15, 1.2)
local colPast = settings.pingColor
local colFuture = settings.predictionColor
local colLocal = Color3.fromRGB(240,240,240)
lastColor = colPast
if (not ghostClone or not ghostCloneFuture) and LP.Character then
rebuildGhostClone(LP.Character, Color3.fromRGB(40,180,255), 0.6)
rebuildGhostCloneFuture(LP.Character, Color3.fromRGB(160,100,255), 0.6)
end
if samplePast and samplePast.root and settings.pingChams then
local yawOffset = 0
if settings.aaMode == "Spin" then
yawOffset = math.rad((now * settings.aaSpinSpeed) % 360)
elseif settings.aaMode == "Backwards" then
yawOffset = math.pi
end
local rootPast = samplePast.root * CFrame.Angles(0, yawOffset, 0)
do
local lastSmoothT = _G._GhostPastSmoothT or tick()
local nowT = tick()
local dtSmooth = math.max(0.0001, nowT - lastSmoothT)
local smoothAlpha = math.clamp(dtSmooth * 10, 0.12, 0.55)
_G._GhostPastSmooth = _G._GhostPastSmooth or rootPast
_G._GhostPastSmooth = lerpCFrame(_G._GhostPastSmooth, rootPast, smoothAlpha)
_G._GhostPastSmoothT = nowT
end
ghostPart.CFrame = _G._GhostPastSmooth
lastSampleRoot = _G._GhostPastSmooth
local lpRoot = getRootPart(LP.Character)
local hum = LP.Character and LP.Character:FindFirstChildOfClass("Humanoid")
local speedMeas = lpRoot and lpRoot.AssemblyLinearVelocity.Magnitude or 0
local speedIntent = 0
if hum and hum.MoveDirection.Magnitude > 0.01 then
speedIntent = hum.MoveDirection.Magnitude * (hum.WalkSpeed or 16)
end
local speed = math.max(speedMeas, speedIntent)
local transPast = math.clamp(0.9 - math.min(speed / 16, 1) * 0.65, 0.2, 1)
do
local lastFadeT = _G._GhostPastTransT or tick()
local nowT = tick()
local dt = math.max(0.0001, nowT - lastFadeT)
local a = math.clamp(dt * 1.5, 0.02, 0.18)
_G._GhostPastTransSm = _G._GhostPastTransSm or transPast
_G._GhostPastTransSm = _G._GhostPastTransSm + (transPast - _G._GhostPastTransSm) * a
_G._GhostPastTransT = nowT
end
for name, gp in pairs(ghostMap) do
local off = samplePast.offsets and samplePast.offsets[name]
gp.Color = colPast
gp.Transparency = _G._GhostPastTransSm
gp.Material = settings.material
if off then
gp.CFrame = _G._GhostPastSmooth * off
end
end
-- legacy aura rig update
for name, info in pairs(ghostRig) do
local off = samplePast.offsets and samplePast.offsets[name]
if off then
info.part.CFrame = samplePast.root * off
if info.aura then
info.aura.Color = ColorSequence.new(colPast)
info.aura.Rate = 20 + math.floor(sampleDelay * 120)
info.aura.Lifetime = NumberRange.new(
math.clamp(0.25 + sampleDelay * 0.6, 0.25, 1.5),
math.clamp(0.5 + sampleDelay * 0.8, 0.5, 1.8)
)
info.aura.Size = NumberSequence.new({
NumberSequenceKeypoint.new(0, math.max(0.1, math.min(info.part.Size.Magnitude/12, 0.45))),
NumberSequenceKeypoint.new(1, 0.0)
})
info.aura.Enabled = _G._GhostPastTransSm < 0.999
end
end
end
-- tracer to past ghost
local root = getRootPart(LP.Character)
local cam = Workspace.CurrentCamera
-- tracers removed
local hrp = getRootPart(LP.Character)
local hum = LP.Character and LP.Character:FindFirstChildOfClass("Humanoid")
if settings.aaApply and hrp then
if not aaGyro or aaGyro.Parent ~= hrp then
aaGyro = Instance.new("BodyGyro")
aaGyro.Name = "GhostAA_Gyro"
aaGyro.P = 10000
aaGyro.D = 500
aaGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
aaGyro.Parent = hrp
end
local _, y, _ = hrp.CFrame:ToOrientation()
aaGyro.CFrame = CFrame.new(hrp.Position) * CFrame.Angles(0, y + yawOffset, 0)
hrp.AssemblyAngularVelocity = Vector3.new()
if hum then hum.AutoRotate = false end
else
if aaGyro then aaGyro:Destroy() aaGyro = nil end
if hum then hum.AutoRotate = true end
end
else
for _, gp in pairs(ghostMap) do gp.Transparency = 1 end
end
if sampleFuture and sampleFuture.root and settings.predictionChams then
local yawOffset = 0
if settings.aaMode == "Spin" then
yawOffset = math.rad((now * settings.aaSpinSpeed) % 360)
elseif settings.aaMode == "Backwards" then
yawOffset = math.pi
end
local rootFuture = sampleFuture.root * CFrame.Angles(0, yawOffset, 0)
if ghostFuturePart then
ghostFuturePart.CFrame = rootFuture
ghostFuturePart.Size = ghostPart.Size
end
local lpRoot = getRootPart(LP.Character)
local hum = LP.Character and LP.Character:FindFirstChildOfClass("Humanoid")
local speedMeas = lpRoot and lpRoot.AssemblyLinearVelocity.Magnitude or 0
local speedIntent = 0
if hum and hum.MoveDirection.Magnitude > 0.01 then
speedIntent = hum.MoveDirection.Magnitude * (hum.WalkSpeed or 16)
end
local speed = math.max(speedMeas, speedIntent)
local transFuture = math.clamp(0.9 - math.min(speed / 16, 1) * 0.65, 0.2, 1)
if isFirstPerson() then
transFuture = 1
end
do
local lastFadeT = _G._GhostFutureTransT or tick()
local nowT = tick()
if isFirstPerson() then
_G._GhostFutureTransSm = 1
else
local dt = math.max(0.0001, nowT - lastFadeT)
local a = math.clamp(dt * 1.5, 0.02, 0.18)
_G._GhostFutureTransSm = _G._GhostFutureTransSm or transFuture
_G._GhostFutureTransSm = _G._GhostFutureTransSm + (transFuture - _G._GhostFutureTransSm) * a
end
_G._GhostFutureTransT = nowT
end
for name, gp in pairs(ghostMapFuture) do
local off = sampleFuture.offsets and sampleFuture.offsets[name]
gp.Color = colFuture
gp.Transparency = _G._GhostFutureTransSm
gp.Material = settings.material
if off then
gp.CFrame = rootFuture * off
end
end
-- tracer to future ghost
local root = getRootPart(LP.Character)
local cam = Workspace.CurrentCamera
-- tracers removed
if futureGui and futureGui:FindFirstChild("Label") then
local pf = _G._PF
local velMag = (pf and pf.vel and pf.vel.Magnitude) or 0
futureGui.Adornee = ghostFuturePart
futureGui.StudsOffset = Vector3.new(0, ghostFuturePart and (ghostFuturePart.Size.Y/2 + 2) or 6, 0)
futureGui.Label.Text = string.format("Vel: %.1f", velMag)
futureGui.Label.TextColor3 = colFuture
local vis = math.clamp(speed / 14, 0, 1)
local targetTT = 1 - vis
local lastTT = _G._GhostFutureTextTransT or tick()
local nowTT = tick()
local dtTT = math.max(0.0001, nowTT - lastTT)
local aTT = math.clamp(dtTT * 3, 0.03, 0.25)
_G._GhostFutureTextTransSm = _G._GhostFutureTextTransSm or targetTT
_G._GhostFutureTextTransSm = _G._GhostFutureTextTransSm + (targetTT - _G._GhostFutureTextTransSm) * aTT
_G._GhostFutureTextTransT = nowTT
futureGui.Label.TextTransparency = _G._GhostFutureTextTransSm
futureGui.Label.TextStrokeTransparency = _G._GhostFutureTextTransSm
futureGui.Enabled = settings.predictionChams and (_G._GhostFutureTextTransSm < 0.98)
end
else
for _, gp in pairs(ghostMapFuture) do gp.Transparency = 1 end
if futureGui then futureGui.Enabled = false end
end
for _, gp in pairs(ghostMap) do gp.Color = colPast end
for _, gp in pairs(ghostMapFuture) do gp.Color = colFuture end
if pingGui and pingGui:FindFirstChild("Label") then
pingGui.Adornee = ghostPart
pingGui.StudsOffset = Vector3.new(0, ghostPart and (ghostPart.Size.Y/2 + 2) or 6, 0)
pingGui.Label.Text = string.format("Ping: %.0f ms | Delay: %.3f s", rtt*1000, sampleDelay)
pingGui.Label.TextColor3 = colPast
local lpRoot = getRootPart(LP.Character)
local hum = LP.Character and LP.Character:FindFirstChildOfClass("Humanoid")
local speedMeas = lpRoot and lpRoot.AssemblyLinearVelocity.Magnitude or 0
local speedIntent = 0
if hum and hum.MoveDirection.Magnitude > 0.01 then
speedIntent = hum.MoveDirection.Magnitude * (hum.WalkSpeed or 16)
end
local speed = math.max(speedMeas, speedIntent)
local vis = math.clamp(speed / 14, 0, 1)
local targetTT = 1 - vis
local lastTT = _G._GhostTextTransT or tick()
local nowTT = tick()
local dtTT = math.max(0.0001, nowTT - lastTT)
local aTT = math.clamp(dtTT * 3, 0.03, 0.25)
_G._GhostTextTransSm = _G._GhostTextTransSm or targetTT
_G._GhostTextTransSm = _G._GhostTextTransSm + (targetTT - _G._GhostTextTransSm) * aTT
_G._GhostTextTransT = nowTT
pingGui.Label.TextTransparency = _G._GhostTextTransSm
pingGui.Label.TextStrokeTransparency = _G._GhostTextTransSm
pingGui.Enabled = settings.pingChams and (_G._GhostTextTransSm < 0.995)
end
if settings.pingChams or settings.predictionChams then
if pingGui and pingGui:FindFirstChild("Label") then pingGui.Label.Visible = true end
for _, info in pairs(ghostRig) do if info.aura then info.aura.Enabled = true end end
else
if pingGui and pingGui:FindFirstChild("Label") then pingGui.Label.Visible = false end
for _, gp in pairs(ghostMap) do gp.Transparency = 1 end
for _, gp in pairs(ghostMapFuture) do gp.Transparency = 1 end
for _, info in pairs(ghostRig) do if info.aura then info.aura.Enabled = false end end
-- tracers removed
end
end)
_G.GhostPing = { cleanup = cleanup }
playerAddedConn = Players.PlayerAdded:Connect(function(p)
if p == LP then
charAddedConn = p.CharacterAdded:Connect(function()
if ghostPart then ghostPart.Size = sizeFromCharacter(LP.Character) end
overwriteCharacterSelections()
end)
end
end)
if LP.Character then
overwriteCharacterSelections()
end
-- Input Handler
local lastBindingCheck = tick()
inputConn = UIS.InputBegan:Connect(function(input, gpe)
-- Safety check: if isBinding is true for more than 10 seconds, reset it
if isBinding and tick() - lastBindingCheck > 10 then
isBinding = false
end
if isBinding then lastBindingCheck = tick() end
if gpe or isBinding then return end
local key = input.KeyCode
if key == settings.menuKeybind or key == Enum.KeyCode.Insert then
if not isLoaded then
notify("System", "Please wait for the script to finish loading...", 3)
return
end
if dockFrame then
dockFrame.Visible = not dockFrame.Visible
-- Force unlock mouse even in first person
if dockFrame.Visible then
UIS.MouseIconEnabled = true
if dockToggle then dockToggle.Modal = true end
else
if dockToggle then dockToggle.Modal = false end
end
if mainFrame then
if dockFrame.Visible then
mainFrame.Visible = menuVisibleState
if playersFrame then playersFrame.Visible = playersVisibleState end
else
mainFrame.Visible = false
if playersFrame then playersFrame.Visible = false end
end
end
-- Sync selection interface
if updateSelectionInterface then updateSelectionInterface(false) end
-- Sync dock glow
if updateDockGlow then updateDockGlow() end
end
elseif key == settings.exploits.flightKeybind then
if settings.exploits.flightEnabled then
settings.exploits.flightActive = not settings.exploits.flightActive
notify("Flight", "Flight has been " .. (settings.exploits.flightActive and "enabled" or "disabled") .. ".", 3)
updateKeybindList()
end
elseif key == settings.exploits.walkSpeedKeybind then
if settings.exploits.walkSpeedEnabled then
settings.exploits.walkSpeedActive = not settings.exploits.walkSpeedActive
notify("WalkSpeed", "WalkSpeed has been " .. (settings.exploits.walkSpeedActive and "enabled" or "disabled") .. ".", 3)
updateKeybindList()
end
elseif key == settings.exploits.noclipKeybind then
if settings.exploits.noclipEnabled then
settings.exploits.noclipActive = not settings.exploits.noclipActive
notify("Noclip", "Noclip has been " .. (settings.exploits.noclipActive and "enabled" or "disabled") .. ".", 3)
updateKeybindList()
end
end
end)
-- Realtime Keybind Update Loop
task.spawn(function()
while task.wait(0.5) do
if updateKeybindList then
updateKeybindList()
end
end
end)
-- Initialize UI
task.spawn(function()
buildSleekUI()
if isAdmin then
task.wait(1)
notify("Admin Whitelist", "Welcome back, Admin! Script user tags are now visible.", 10)
end
task.wait(2) -- Simulate loading time or wait for actual loading
isLoaded = true
notify("Notice", "super ultra alpha beta build", 5)
notify("Notice", "press right control to open the dockbar", 5)
end)No comments yet for this script.



