Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UIS = :()
Stats = :()
Workspace = :()
LP = Players.LocalPlayer
notify
createTween
enabled =
ghostModel, ghostPart, pingGui
ghostFuturePart, futureGui
ghostRig = {}
ghostClone
ghostMap = {}
ghostCloneFuture
ghostMapFuture = {}
portals = {}
lastSampleRoot =
lastColor = .(,,)
renderConn, inputConn, playerAddedConn, charAddedConn
menuVisibleState =
playersVisibleState =
playersFrame
targetHighlights = {}
flingActive =
selectedTargets = {}
invisibleFlingActive =
antiFlingActive =
walkFlingActive =
voidAnchor, voidChams, voidBV, voidBP, voidPrevSubject, voidPrevType, voidPrevMode
voidY =
voidOldPos
walkFlingConn
antiFlingConn
F2Clone, F2PrevSubject, F2PrevType, F2PrevMode, F2Active
smoothingClone, smoothingConn, smoothingPrevSubject
F2BConn, F2EConn, F2StepConn
F2Keys = {w=,a=,s=,d=,up=,down=}
AFLastSafe
currentFlingTarget =
()
flingActive =
(()
F2StepConn F2StepConn:()
F2BConn F2BConn:()
F2EConn F2EConn:()
F2Clone F2Clone:()
smoothingConn smoothingConn:() smoothingConn =
smoothingClone smoothingClone:() smoothingClone =
walkFlingConn walkFlingConn:()
antiFlingConn antiFlingConn:()
)
renderConn renderConn:() renderConn=
inputConn inputConn:() inputConn=
playerAddedConn playerAddedConn:() playerAddedConn=
charAddedConn charAddedConn:() charAddedConn=
controlGui (() controlGui:() ) controlGui=
tracerGui (() tracerGui:() ) tracerGui= tracerLinePast= tracerLineFuture=
pingGui (() pingGui:() ) pingGui=
futureGui (() futureGui:() ) futureGui=
ghostModel (() ghostModel:() ) ghostModel= ghostClone= ghostCloneFuture=
i=#portals,,-
p = portals[i]
p p.model (() p.model:() )
portals[i]=
.GhostPing .GhostPing.cleanup (.GhostPing.cleanup)
.GhostPingUI .GhostPingUI.cleanupUI (.GhostPingUI.cleanupUI)
()
pg = LP:()
controlGui (() controlGui:() ) controlGui=
tracerGui (() tracerGui:() ) tracerGui= tracerLine=
pg
old1 = pg:()
old1 (() old1:() )
old2 = pg:()
old2 (() old2:() )
settings = {
pingChams = ,
predictionChams = ,
pingColor = .(,,),
predictionColor = .(,,),
material = .Material.ForceField,
opacity = ,
delayMul = ,
tracer = ,
aaMode = ,
aaSpinSpeed = ,
aaApply = ,
menuKeybind = .KeyCode.RightControl,
uiScale = ,
watermarkEnabled = ,
watermarkOptions = {
[] = ,
[] = ,
[] = ,
[] =
},
lighting = {
enabled = ,
brightness = ,
exposure = ,
fogEnd = ,
fogStart = ,
clockTime = ,
outdoorAmbient = .(, , ),
ambient = .(, , ),
colorShift_Top = .(, , ),
colorShift_Bottom = .(, , ),
shadowSoftness = ,
globalShadows =
},
esp = {
enabled = ,
box = ,
name = ,
health = ,
tracers = ,
weapon = ,
visibleOnly = ,
teamCheck = ,
maxDistance = ,
showDistance = ,
showHealth =
},
exploits = {
noCameraRotate = ,
walkSpeedEnabled = ,
walkSpeedActive = ,
walkSpeed = ,
walkSpeedMethod = ,
jumpPowerEnabled = ,
jumpPower = ,
fovEnabled = ,
fovAmount = ,
gravityEnabled = ,
gravityAmount = ,
antiVoidEnabled = ,
showVoidLevel = ,
voidGodMode = ,
hipHeightEnabled = ,
hipHeightAmount = ,
flightEnabled = ,
flightActive = ,
flightSpeed = ,
flightKeybind = .KeyCode.F,
walkSpeedKeybind = .KeyCode.C,
noclipEnabled = ,
noclipActive = ,
noclipKeybind = .KeyCode.V
},
desync = {
enabled = ,
method = ,
power = ,
range = ,
visualize = ,
color = .(, , ),
movement = {
= ,
speed =
},
chams = {
enabled = ,
color = .(, , )
}
},
fling = {
smoothing =
}
}
aaGyro
isBinding =
isLoaded =
keybindListEnabled =
keybindListFrame =
isAdmin = (LP.UserId == LP.UserId == )
voidHighlight = .()
voidHighlight.Name =
voidHighlight.Anchored =
voidHighlight.CanCollide =
voidHighlight.CastShadow =
voidHighlight.Material = .Material.ForceField
voidHighlight.Transparency =
voidHighlight.Size = .(, , )
voidHighlight.Parent =
voidFloor = .()
voidFloor.Name =
voidFloor.Anchored =
voidFloor.CanCollide =
voidFloor.Transparency =
voidFloor.Size = .(, , )
voidFloor.Parent =
(char)
char
.()
char:()
tag = .()
tag.Name =
tag.Value =
tag.Parent = char
desyncGhost
desyncChamsFolder =
()
lastRealPos =
spinAngle =
.()
settings.desync.enabled
char = LP.Character
hrp = char char:()
hrp
power = settings.desync.power
range = settings.desync.range
moveType = settings.desync.movement.type
oldCF = hrp.CFrame
moveType ~=
fakeCF = oldCF
moveType ==
spinAngle = (spinAngle + settings.desync.movement.speed) %
fakeCF = oldCF * .(, .(spinAngle), )
moveType ==
fakeCF = oldCF * .(, .(), )
moveType ==
fakeCF = oldCF * .(.(), , )
hrp.CFrame = fakeCF
RunService.Heartbeat:()
hrp.CFrame = oldCF
settings.desync.method ==
oldVel = hrp.AssemblyLinearVelocity
hrp.AssemblyLinearVelocity = .(, power * , )
RunService.Heartbeat:()
hrp.AssemblyLinearVelocity = oldVel
settings.desync.method ==
currentCF = hrp.CFrame
hrp.CFrame = currentCF * .(, range * , )
RunService.Heartbeat:()
hrp.CFrame = currentCF
settings.desync.method ==
lastRealPos lastRealPos = hrp.CFrame
() % <
lastRealPos = hrp.CFrame
hrp.CFrame = lastRealPos
RunService.Heartbeat:()
settings.desync.chams.enabled
desyncChamsFolder
desyncChamsFolder = .()
desyncChamsFolder.Name =
desyncChamsFolder.Parent =
highlight = .()
highlight.Name =
highlight.DepthMode = .HighlightDepthMode.AlwaysOnTop
highlight.FillTransparency =
highlight.OutlineTransparency =
highlight.Parent = desyncChamsFolder
highlight = desyncChamsFolder:()
highlight
highlight.FillColor = settings.desync.chams.color
highlight.OutlineColor = settings.desync.chams.color
_, part (char:())
part:()
chamPart = desyncChamsFolder:(part.Name)
chamPart
chamPart = .()
chamPart.Name = part.Name
chamPart.Size = part.Size
chamPart.CanCollide =
chamPart.Anchored =
chamPart.Transparency =
chamPart.Parent = desyncChamsFolder
visualCF = part.CFrame
moveType ==
visualCF = (hrp.CFrame * .(, .(spinAngle), )) * (hrp.CFrame:() * part.CFrame)
moveType ==
visualCF = (hrp.CFrame * .(, .(), )) * (hrp.CFrame:() * part.CFrame)
moveType ==
visualCF = (hrp.CFrame * .(.(), , )) * (hrp.CFrame:() * part.CFrame)
chamPart.CFrame = visualCF
desyncChamsFolder
desyncChamsFolder:()
desyncChamsFolder:()
desyncChamsFolder =
settings.desync.visualize
desyncGhost
desyncGhost = .()
desyncGhost.Name =
desyncGhost.Anchored =
desyncGhost.CanCollide =
desyncGhost.Transparency =
desyncGhost.Material = .Material.ForceField
desyncGhost.Size = .(, , )
desyncGhost.Parent =
desyncGhost.Color = settings.desync.color
desyncGhost.CFrame = hrp.CFrame
desyncGhost.Visible =
desyncGhost
desyncGhost.Visible =
lastRealPos =
desyncChamsFolder
desyncChamsFolder:()
desyncChamsFolder:()
desyncChamsFolder =
desyncGhost
desyncGhost.Visible =
.(updateDesyncLogic)
()
.()
isFlinging = flingActive walkFlingActive invisibleFlingActive
shouldSmooth = settings.fling.smoothing isFlinging
shouldSmooth
char = LP.Character
hrp = char char:()
hrp
smoothingClone
smoothingClone = .()
smoothingClone.Name =
_, v (char:())
v:() v.Name ~=
c = v:()
c.CanCollide =
c.Anchored =
c.Parent = smoothingClone
v:()
c = v:()
handle = c:()
handle
handle.CanCollide =
handle.Anchored =
c.Parent = smoothingClone
smoothingClone.Parent =
smoothingPrevSubject = .CurrentCamera.CameraSubject
.CurrentCamera.CameraSubject = smoothingClone:() smoothingClone:()[]
_, v (char:())
v:()
v.LocalTransparencyModifier =
v:() v:()
v.Handle.LocalTransparencyModifier =
hrp.AssemblyLinearVelocity = .(, , )
hrp.AssemblyAngularVelocity = .(, , )
stableCF = hrp.CFrame
look = stableCF.LookVector
flatCF = .(stableCF.Position, stableCF.Position + .(look.X, , look.Z))
_, v (smoothingClone:())
v:()
realPart = char:(v.Name)
realPart
offset = hrp.CFrame:() * realPart.CFrame
v.CFrame = flatCF * offset
v:()
handle = v:()
realAcc = char:(v.Name)
realHandle = realAcc realAcc:()
handle realHandle
offset = hrp.CFrame:() * realHandle.CFrame
handle.CFrame = flatCF * offset
smoothingClone
smoothingClone:()
smoothingClone =
cam = .CurrentCamera
smoothingPrevSubject
cam.CameraSubject = smoothingPrevSubject
char = LP.Character
char
_, v (char:())
v:()
v.LocalTransparencyModifier =
v:() v:()
v.Handle.LocalTransparencyModifier =
.(updateFlingSmoothing)
flightBV, flightBG
()
char = LP.Character
root = char char:()
hum = char char:()
settings.exploits.flightEnabled settings.exploits.flightActive root hum
flightBV
flightBV = .()
flightBV.MaxForce = .(.huge, .huge, .huge)
flightBV.Velocity = .(, , )
flightBV.Parent = root
flightBG = .()
flightBG.MaxTorque = .(.huge, .huge, .huge)
flightBG.P =
flightBG.D =
flightBG.CFrame = root.CFrame
flightBG.Parent = root
hum.PlatformStand =
cam = .CurrentCamera
moveDir = .(, , )
UIS:(.KeyCode.W) moveDir = moveDir + cam.CFrame.LookVector
UIS:(.KeyCode.S) moveDir = moveDir - cam.CFrame.LookVector
UIS:(.KeyCode.A) moveDir = moveDir - cam.CFrame.RightVector
UIS:(.KeyCode.D) moveDir = moveDir + cam.CFrame.RightVector
UIS:(.KeyCode.Space) moveDir = moveDir + .(, , )
UIS:(.KeyCode.LeftShift) moveDir = moveDir - .(, , )
moveDir.Magnitude >
flightBV.Velocity = moveDir.Unit * settings.exploits.flightSpeed
flightBV.Velocity = .(, , )
flightBG.CFrame = cam.CFrame
flightBV flightBV:() flightBV =
flightBG flightBG:() flightBG =
hum hum.PlatformStand =
LP.CharacterAdded:(tagCharacter)
LP.Character .(tagCharacter, LP.Character)
BUFFER = {}
BUFFER_MAX_SECONDS =
rtt =
lastPingUpdate =
PING_UPDATE_INTERVAL =
pingBuf = {}
(tbl)
n = #tbl
n ==
.(tbl)
n % ==
tbl[(n+)//]
(tbl[n//] + tbl[n//+]) *
(sec)
pingBuf[#pingBuf+] = sec
#pingBuf > .(pingBuf, )
()
ms
okPS, ps = (() Stats.PerformanceStats )
okPS ps (ps.Ping) == ps.Ping >
ms = ps.Ping
ms
okItem, item = (() Stats.Network.ServerStatsItem[] )
okItem item
okStr, s = (() item:() )
okStr s (s)
ms = (s)
okVal, v = (() item:() )
okVal (v) == ms = v
ms
()
okRS, RS = (() :() )
okRS
rf = RS:()
rf rf.IsA rf:()
t0 = ()
ok, _ = (() rf:() )
ok
t1 = ()
(t1 - t0) *
()
F2Active
char = LP.Character
hum = char char:()
root = hum hum.RootPart
root
F2Active =
F2PrevSubject = .CurrentCamera.CameraSubject
F2PrevType = .CurrentCamera.CameraType
F2PrevMode = LP.CameraMode
F2Clone = .()
F2Clone.Name =
_,v (char:())
v:() v:()
c = v:()
c:()
c.CanCollide =
c.Transparency =
c:() c:()
c.Handle.CanCollide =
c.Handle.Transparency =
c.Parent = F2Clone
F2Clone.Parent =
.CurrentCamera.CameraSubject = F2Clone:() F2Clone:() F2Clone.PrimaryPart
F2BConn = UIS.InputBegan:((input, gp)
gp F2Active
k = input.KeyCode
k == .KeyCode.W F2Keys.w = k==.KeyCode.A F2Keys.a= k==.KeyCode.S F2Keys.s= k==.KeyCode.D F2Keys.d= k==.KeyCode.Space F2Keys.up= k==.KeyCode.LeftShift F2Keys.down=
)
F2EConn = UIS.InputEnded:((input, gp)
gp F2Active
k = input.KeyCode
k == .KeyCode.W F2Keys.w = k==.KeyCode.A F2Keys.a= k==.KeyCode.S F2Keys.s= k==.KeyCode.D F2Keys.d= k==.KeyCode.Space F2Keys.up= k==.KeyCode.LeftShift F2Keys.down=
)
F2StepConn = RunService.RenderStepped:((dt)
F2Active F2Clone F2Clone.PrimaryPart
speed =
dx = (F2Keys.d ) - (F2Keys.a )
dz = (F2Keys.s ) - (F2Keys.w )
dy = (F2Keys.up ) - (F2Keys.down )
vec = .(dx, dy, dz)
vec.Magnitude >
cf = F2Clone:()
move = cf * .(vec.X*speed*dt, vec.Y*speed*dt, vec.Z*speed*dt)
F2Clone:(move)
hum root
root.CFrame = move
char:(move)
hum:(move.Position)
)
()
F2StepConn F2StepConn:() F2StepConn=
F2BConn F2BConn:() F2BConn=
F2EConn F2EConn:() F2EConn=
F2Clone (() F2Clone:() ) F2Clone=
cam = .CurrentCamera
F2PrevSubject cam.CameraSubject = F2PrevSubject
F2PrevType cam.CameraType = F2PrevType
F2PrevMode (() LP.CameraMode = F2PrevMode )
F2Active =
F2Keys = {w=,a=,s=,d=,up=,down=}
()
walkFlingActive
char = LP.Character
hum = char char:()
root = hum hum.RootPart
root
walkFlingActive =
(, , )
movel =
walkFlingConn = RunService.Heartbeat:(()
walkFlingActive root root.Parent
()
vel = root.Velocity
settings.fling.smoothing
root.Velocity = vel * + .(, , )
RunService.RenderStepped:()
walkFlingActive
root.Velocity = vel
RunService.Stepped:()
walkFlingActive
root.Velocity = vel + .(, movel, )
movel = -movel
)
()
walkFlingActive
walkFlingActive =
walkFlingConn walkFlingConn:() walkFlingConn=
(, , )
char = LP.Character
hum = char char:()
root = hum hum.RootPart
root
root.AssemblyLinearVelocity = .(, , )
root.AssemblyAngularVelocity = .(, , )
()
antiFlingActive
antiFlingActive =
(, , )
antiFlingConn = RunService.RenderStepped:(()
char = LP.Character
hum = char char:()
root = hum hum.RootPart
root
v = root.AssemblyLinearVelocity root.Velocity
limit =
v.Magnitude > limit
(() root.AssemblyLinearVelocity = .() )
root.Velocity = .()
root.RotVelocity = .()
AFLastSafe
root.CFrame = AFLastSafe
(() char:(AFLastSafe) )
AFLastSafe = root.CFrame
hum.PlatformStand =
)
()
antiFlingActive
antiFlingActive =
antiFlingConn antiFlingConn:() antiFlingConn=
(, , )
(TargetPlayer)
Character = LP.Character
Humanoid = Character Character:()
RootPart = Humanoid Humanoid.RootPart
TCharacter = TargetPlayer.Character
TCharacter
currentFlingTarget = TargetPlayer
THumanoid = TCharacter:()
TRootPart = THumanoid THumanoid.RootPart
THead = TCharacter:()
Accessory = TCharacter:()
Handle = Accessory Accessory:()
Character Humanoid RootPart
OldPos = RootPart.CFrame
FPDH = .FallenPartsDestroyHeight
.FallenPartsDestroyHeight = /
Time = ()
flingActive
TRootPart TRootPart.Parent
TPos = TRootPart.Position
TVel = TRootPart.AssemblyLinearVelocity TRootPart.Velocity
pingSec = rtt
predictionLead = pingSec + (/) +
predictedPos = TPos + (TVel * predictionLead)
TVel.Magnitude >
predictedPos = predictedPos + (TVel.Unit * )
jitter = .(.(-, ), .(-, ), .(-, )) *
predictedPos = predictedPos + jitter
invisibleFlingActive
RootPart.CFrame = .(predictedPos)
RootPart.CFrame = .(predictedPos + .(, , ))
settings.fling.smoothing
RootPart.Velocity = .(, , )
RootPart.RotVelocity = .(, , )
.()
() - Time > TRootPart TRootPart.Parent
RootPart.CFrame = OldPos
RootPart.Velocity = .()
RootPart.RotVelocity = .()
.FallenPartsDestroyHeight = FPDH
()
flingActive
count =
_ (selectedTargets) count = count +
count ==
(, , )
flingActive =
(, .. (count) .. , )
.(()
flingActive
_, player (selectedTargets)
flingActive
player player.Parent
(player)
.()
.()
)
()
flingActive
flingActive =
(, , )
()
_, gp (ghostMap)
gp.Material = settings.material
_, gp (ghostMapFuture)
gp.Material = settings.material
()
settings.lighting.enabled
L = :()
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
espObjects = {}
(Character)
_, tool (Character:())
tool:() tool:()
tool.Name
()
camera = .CurrentCamera
camera
viewportSize = camera.ViewportSize
localRoot = LP.Character LP.Character:()
fovFactor = .(.(camera.FieldOfView / )) *
player, objects (espObjects)
success, err = (()
character = player.Character
root = character character:()
hum = character character:()
settings.esp.enabled character root hum hum.Health >
settings.esp.teamCheck player.Team == LP.Team
_, obj (objects) obj.Visible =
distance = localRoot (root.Position - localRoot.Position).Magnitude
distance > settings.esp.maxDistance
_, obj (objects) obj.Visible =
settings.esp.visibleOnly
rayOrigin = camera.CFrame.Position
rayDirection = (root.Position - rayOrigin).Unit * distance
rayParams = RaycastParams.()
rayParams.FilterType = .RaycastFilterType.Exclude
rayParams.FilterDescendantsInstances = {LP.Character, camera}
raycastResult = :(rayOrigin, rayDirection, rayParams)
raycastResult raycastResult.Instance:(character)
_, obj (objects) obj.Visible =
pos, onScreen = camera:(root.Position)
onScreen
boxSize = .( / pos.Z, / pos.Z)
boxPos = .(pos.X - boxSize.X / , pos.Y - boxSize.Y / )
boxWidth, boxHeight = boxSize.X, boxSize.Y
boxHeight > boxHeight =
boxWidth > boxWidth =
boxHeight < boxHeight =
boxWidth < boxWidth =
settings.esp.box
objects.box.Size = .(boxWidth, boxHeight)
objects.box.Position = boxPos
objects.box.Color = theme.accent
objects.box.Thickness =
objects.box.Visible =
objects.box.Visible =
settings.esp.name
infoText = player.DisplayName
settings.esp.showDistance
infoText = infoText .. .(, .(distance))
settings.esp.showHealth
infoText = infoText .. .(, hum.Health)
objects.name.Text = infoText
objects.name.Position = .(pos.X, boxPos.Y - )
objects.name.Color = .(, , )
objects.name.Size =
objects.name.Visible =
objects.name.Visible =
settings.esp.health
healthPercent = .(hum.Health / hum.MaxHealth, , )
objects.healthBg.Position = .(boxPos.X - , boxPos.Y)
objects.healthBg.Size = .(, boxHeight)
objects.healthBg.Visible =
objects.healthBar.Position = .(boxPos.X - , boxPos.Y + (boxHeight * ( - healthPercent)))
objects.healthBar.Size = .(, boxHeight * healthPercent)
objects.healthBar.Color = .(healthPercent * , , )
objects.healthBar.Visible =
objects.healthBg.Visible =
objects.healthBar.Visible =
settings.esp.weapon
objects.weapon.Text = (character)
objects.weapon.Position = .(pos.X, boxPos.Y + boxHeight + )
objects.weapon.Color = .(, , )
objects.weapon.Size =
objects.weapon.Visible =
objects.weapon.Visible =
settings.esp.tracers
objects.tracer.From = .(viewportSize.X / , viewportSize.Y)
objects.tracer.To = .(pos.X, pos.Y)
objects.tracer.Color = theme.accent
objects.tracer.Thickness =
objects.tracer.Visible =
objects.tracer.Visible =
isAdmin
isScriptUser = character:()
isScriptUser
objects.scriptUser.Position = .(pos.X, boxPos.Y - )
objects.scriptUser.Visible =
objects.scriptUser.Visible =
objects.scriptUser.Visible =
_, obj (objects) obj.Visible =
_, obj (objects) obj.Visible =
)
success
(player)
player == LP
espObjects[player]
objects = {
box = .(),
name = .(),
healthBg = .(),
healthBar = .(),
tracer = .(),
weapon = .(),
scriptUser = .()
}
objects.box.Thickness =
objects.box.Filled =
objects.box.Visible =
objects.box.ZIndex =
objects.name.Size =
objects.name.Center =
objects.name.Outline =
objects.name.Visible =
objects.name.ZIndex =
objects.healthBg.Thickness =
objects.healthBg.Filled =
objects.healthBg.Color = .(, , )
objects.healthBg.Transparency =
objects.healthBg.Visible =
objects.healthBg.ZIndex =
objects.healthBar.Thickness =
objects.healthBar.Filled =
objects.healthBar.Visible =
objects.healthBar.ZIndex =
objects.tracer.Thickness =
objects.tracer.Visible =
objects.tracer.ZIndex =
objects.weapon.Size =
objects.weapon.Center =
objects.weapon.Outline =
objects.weapon.Visible =
objects.weapon.ZIndex =
objects.scriptUser.Size =
objects.scriptUser.Center =
objects.scriptUser.Outline =
objects.scriptUser.Color = .(, , )
objects.scriptUser.Text =
objects.scriptUser.Visible =
objects.scriptUser.ZIndex =
espObjects[player] = objects
(player)
objects = espObjects[player]
objects
_, obj (objects)
obj.Remove
obj:()
espObjects[player] =
Players.PlayerAdded:(createESP)
Players.PlayerRemoving:(removeESP)
_, p (Players:()) (p)
RunService.RenderStepped:(updateESP)
.(()
.()
()
settings.lighting.enabled
()
character = LP.Character
humanoid = character character:()
humanoid
settings.exploits.walkSpeedEnabled settings.exploits.walkSpeedActive
settings.exploits.walkSpeedMethod ==
humanoid.WalkSpeed = settings.exploits.walkSpeed
settings.exploits.walkSpeedMethod ==
humanoid.WalkSpeed =
root = character:()
root humanoid.MoveDirection.Magnitude >
root.CFrame = root.CFrame + (humanoid.MoveDirection * (settings.exploits.walkSpeed / ))
humanoid.WalkSpeed =
settings.exploits.jumpPowerEnabled
humanoid.JumpPower = settings.exploits.jumpPower
humanoid.UseJumpPower =
settings.exploits.noCameraRotate
camera = .CurrentCamera
camera
settings.exploits.fovEnabled
camera = .CurrentCamera
camera
camera.FieldOfView = settings.exploits.fovAmount
settings.exploits.noclipEnabled settings.exploits.noclipActive character
_, v (character:())
v:() v.CanCollide
v.CanCollide =
settings.exploits.gravityEnabled
.Gravity = settings.exploits.gravityAmount
settings.exploits.hipHeightEnabled
humanoid.HipHeight = settings.exploits.hipHeightAmount
character character:()
root = character.HumanoidRootPart
voidY = .FallenPartsDestroyHeight
settings.exploits.showVoidLevel
voidHighlight.Transparency =
voidHighlight.CFrame = .(root.Position.X, voidY, root.Position.Z)
voidHighlight.Transparency =
settings.exploits.antiVoidEnabled
nextPos = root.Position + root.Velocity *
root.Position.Y < voidY + nextPos.Y < voidY +
root.Velocity = .(, , )
root.CFrame = root.CFrame * .(, , )
.()
root.Velocity = .(, , )
settings.exploits.voidGodMode
root.Position.Y < voidY +
.FallenPartsDestroyHeight = -.huge
humanoid.Health =
root.Velocity.Y < -
root.Velocity = .(root.Velocity.X, -, root.Velocity.Z)
.FallenPartsDestroyHeight = voidY
voidFloor.CanCollide =
voidFloor.CFrame = .(root.Position.X, voidY + , root.Position.Z)
.FallenPartsDestroyHeight = voidY
voidFloor.CanCollide =
voidHighlight.Transparency =
voidFloor.CanCollide =
)
(parent, labelText, initial, min, max, step, onChange)
row = .()
row.BackgroundTransparency =
row.Size = .(,,,)
row.Parent = parent
label = .()
label.BackgroundTransparency =
label.Text = labelText
label.TextColor3 = .(,,)
label.Font = .Font.Gotham
label.TextSize =
label.TextXAlignment = .TextXAlignment.Left
label.Size = .(,,,)
label.Parent = row
rail = .()
rail.BackgroundColor3 = .(,,)
rail.BorderSizePixel =
rail.Position = .(,,,)
rail.Size = .(,,,)
rail.Parent = row
fill = .()
fill.BackgroundColor3 = .(,,)
fill.BorderSizePixel =
fill.Size = .((initial-min)/(max-min),,,)
fill.Parent = rail
knob = .()
knob.BackgroundColor3 = .(,,)
knob.BorderSizePixel =
knob.AnchorPoint = .(,)
knob.Position = .((initial-min)/(max-min),,,)
knob.Size = .(,,,)
knob.Parent = rail
dragging =
rail.InputBegan:((i)
i.UserInputType == .UserInputType.MouseButton1 i.UserInputType==.UserInputType.Touch dragging =
)
UIS.InputEnded:((i)
i.UserInputType == .UserInputType.MouseButton1 i.UserInputType==.UserInputType.Touch dragging =
)
UIS.InputChanged:((i)
dragging
i.UserInputType == .UserInputType.MouseMovement i.UserInputType==.UserInputType.Touch
x = i.Position.X
abs = rail.AbsolutePosition.X
w = rail.AbsoluteSize.X
alpha = .((x-abs)/w,,)
val = min + .(((max-min)*alpha)/step+)*step
fill.Size = .((val-min)/(max-min),,,)
knob.Position = .((val-min)/(max-min),,,)
(val)
)
TweenService = :()
theme = {
background = .(, , ),
backgroundTrans = ,
sidebar = .(, , ),
sidebarTrans = ,
accent = .(, , ),
accentTrans = ,
text = .(, , ),
textTrans = ,
textDim = .(, , ),
textDimTrans = ,
glow = ,
snow =
}
themeObjects = {}
(instance, , prop)
.(themeObjects, {instance=instance, =, prop=prop})
voidHighlight.Color = theme.accent
(voidHighlight, , )
()
_, obj (themeObjects)
obj.instance obj.instance.Parent
obj.type ==
obj.prop ==
obj.instance.BackgroundColor3 = theme.background
obj.instance.BackgroundTransparency = theme.backgroundTrans
obj.instance[obj.prop] = theme.background
obj.type ==
obj.prop ==
obj.instance:()
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
obj.instance.BackgroundColor3 = theme.sidebar
obj.instance.BackgroundTransparency = theme.sidebarTrans
obj.instance:()
obj.instance[obj.prop] = theme.accent
obj.instance[obj.prop] = theme.sidebar
obj.type ==
obj.prop ==
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
obj.prop == obj.instance:()
obj.instance.Color = theme.accent
obj.instance.Transparency = theme.accentTrans
obj.instance[obj.prop] = theme.accent
obj.type ==
obj.prop ==
obj.instance.TextColor3 = theme.text
obj.instance.TextTransparency = theme.textTrans
obj.instance[obj.prop] = theme.text
obj.type ==
obj.prop ==
obj.instance.TextColor3 = theme.textDim
obj.instance.TextTransparency = theme.textDimTrans
obj.instance[obj.prop] = theme.textDim
obj.type ==
obj.instance:()
obj.instance.BackgroundColor3 = theme.accent
obj.instance.BackgroundTransparency = theme.accentTrans
obj.instance.BackgroundColor3 = theme.sidebar
obj.instance.BackgroundTransparency = theme.sidebarTrans
obj.type ==
obj.instance[obj.prop] ~= .(,,)
obj.instance[obj.prop] = theme.accent
createTween = (instance, properties, time, style, dir)
info = TweenInfo.(time , style .EasingStyle.Quad, dir .EasingDirection.Out)
tween = TweenService:(instance, info, properties)
tween:()
tween
notifyContainer
notify = (title, text, duration)
notifyContainer
duration = duration
notif = .()
notif.Name =
notif.BackgroundColor3 = theme.background
notif.BackgroundTransparency = theme.backgroundTrans
notif.Size = .(, , , )
notif.Position = .(, , , )
notif.Parent = notifyContainer
(notif, , )
titleLabel = .()
titleLabel.Text = title:()
titleLabel.Font = .Font.GothamBold
titleLabel.TextSize =
titleLabel.TextColor3 = theme.accent
titleLabel.TextTransparency = theme.accentTrans
titleLabel.TextXAlignment = .TextXAlignment.Left
titleLabel.BackgroundTransparency =
titleLabel.Position = .(, , , )
titleLabel.Size = .(, -, , )
titleLabel.Parent = notif
(titleLabel, , )
descLabel = .()
descLabel.Text = text
descLabel.Font = .Font.Gotham
descLabel.TextSize =
descLabel.TextColor3 = theme.text
descLabel.TextTransparency = theme.textTrans
descLabel.TextXAlignment = .TextXAlignment.Left
descLabel.TextWrapped =
descLabel.BackgroundTransparency =
descLabel.Position = .(, , , )
descLabel.Size = .(, -, , )
descLabel.Parent = notif
(descLabel, , )
descConstraint = .()
descSize = :():(text, , .Font.Gotham, .(, ))
finalHeight = .(, descSize.Y + )
notif.Size = .(, , , finalHeight)
descLabel.Size = .(, -, , descSize.Y)
barBg = .()
barBg.BackgroundColor3 = theme.sidebar
barBg.BackgroundTransparency = theme.sidebarTrans
barBg.BorderSizePixel =
barBg.Position = .(, , , -)
barBg.Size = .(, , , )
barBg.Parent = notif
(barBg, , )
bar = .()
bar.BackgroundColor3 = theme.accent
bar.BackgroundTransparency = theme.accentTrans
bar.BorderSizePixel =
bar.Size = .(, , , )
bar.Parent = barBg
(bar, , )
(notif, {Position = .(, , , )}, , .EasingStyle.Quart, .EasingDirection.Out)
.(()
(bar, {Size = .(, , , )}, duration, .EasingStyle.Linear)
.(duration)
t = (notif, {Position = .(, , , ), BackgroundTransparency = }, , .EasingStyle.Quart, .EasingDirection.In)
(titleLabel, {TextTransparency = }, )
(descLabel, {TextTransparency = }, )
(barBg, {BackgroundTransparency = }, )
(bar, {BackgroundTransparency = }, )
t.Completed:()
notif:()
)
controlGui
mainFrame
dockFrame
watermarkFrame
()
controlGui
controlGui = .()
controlGui.Name =
controlGui.ResetOnSpawn =
controlGui.IgnoreGuiInset =
controlGui.Enabled =
controlGui.DisplayOrder =
controlGui.Parent = LP:()
notifyContainer = .()
notifyContainer.Name =
notifyContainer.BackgroundTransparency =
notifyContainer.Size = .(, , , -)
notifyContainer.Position = .(, -, , )
notifyContainer.Parent = controlGui
notifyLayout = .()
notifyLayout.Padding = .(, )
notifyLayout.VerticalAlignment = .VerticalAlignment.Bottom
notifyLayout.HorizontalAlignment = .HorizontalAlignment.Right
notifyLayout.SortOrder = .SortOrder.LayoutOrder
notifyLayout.Parent = notifyContainer
(frame)
dragStart, startPos, dragInput, dragging = , , ,
frame.InputBegan:((input)
input.UserInputType == .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)

Universal