Run it
Copy the script and paste it into your executor.
Players = :()
RS = :()
UIS = :()
TS = :()
VIM
(() VIM=:() )
Lighting = :()
TP = :()
HS = :()
StarterGui = :()
Cam = .CurrentCamera
LP = Players.LocalPlayer
Mouse = LP:()
S = {
Aimbot=, SilentAim=, AimAssist=, MagnetAim=, AimMethod=,
AimKey=.UserInputType.MouseButton2, AimKeyMouse=, AimMode=, AimOn=,
HeadOnly=, LockPart=, StickyAim=, Humanize=, Jitter=,
Triggerbot=, AutoShoot=, Prediction=, Smooth=, AssistStr=, MagnetStr=,
FOV=, DynFOV=, DynFOVAdd=, ShowFOV=, TeamCheck=, WallCheck=, VisibleOnly=,
IgnoreFriends=, IgnoreDowned=, MaxDist=, SwitchDelay=, Priority=, HitChance=,
ADSOnly=, HipfireSmooth=, SnapBlend=, FirstBullet=,
Hitbox=, HitboxSize=, KillAura=, AuraRange=, MeleeAim=, DoubleTap=, ForceHeadClose=, CloseRange=, AutoWall=,
AntiRecoil=, LockPitch=, VStr=, HStr=, Pattern=, PatternScale=, PatternCap=, RCSAfter=, NoSpread=, RapidFire=, AutoReload=,
Chams=, NameESP=, DistESP=, HPESP=, WeaponESP=, BoxESP=, Tracers=, Radar=, HitMarker=, DmgNum=, BulletTrace=, Crosshair=, ESPColor=.(,,),
Speed=, SpeedVal=, Fly=, FlySpeed=, InfJump=, Noclip=, Bhop=, JumpPow=, JumpVal=, LongJump=, Orbit=, OrbitSpd=, OrbitRng=, ClickTP=, AirStrafe=, EdgeJump=, CrouchSpam=, Dash=, DashPower=,
InfAmmo=, God=, AntiAFK=, Spinbot=, SpinSpd=, AntiAim=, NoFall=, AntiStun=, AutoHeal=, InfStamina=,
Fullbright=, NoFog=, NoFlash=, NoParticles=, NoShadows=, CustomFOV=, FOVVal=, ThirdPerson=, Freecam=, TimeChanger=, TimeVal=,
Watermark=, PanicKey=.KeyCode.End, Panic=,
ChatSpam=, ChatMsg=, ChatDelay=, EmoteSpam=,
TriggerDelay=, TriggerRange=,
AutoShootDelay=,
DoubleTapDelay=,
ChamsFill=, ChamsOutline=,
CrosshairSize=, CrosshairGap=,
RadarScale=,
ESPMaxDist=,
SilentFovOnly=,
FlyKey=.KeyCode.F,
NoclipKey=.KeyCode.V,
HitMarkerSize=, HitMarkerTime=,
BulletTraceTime=,
AutoReloadKey=.KeyCode.R,
ARMode=, ARSmooth=, AROnlyShoot=, ARReset=,
BoxThickness=, TracerThickness=, TracerOrigin=,
NameSize=, ESPTextOutline=, HPBar=, HPBarH=,
ChamsDepth=, ESPTeamColor=, RainbowESP=, RainbowSpeed=,
RadarSize=, RadarPosX=, RadarPosY=,
GrenadeTraj=, GrenTrajAlways=, GrenTrajSteps=, GrenTrajTime=,
GrenGravity=, GrenSpeed=, GrenUp=, GrenThickness=,
GrenColor=.(,,), GrenBounce=, GrenMaxBounces=,
PerfectThrow=, PerfectThrowKey=.UserInputType.MouseButton1, PerfectThrowAuto=,
PerfectThrowLead=, PerfectThrowSmooth=, PerfectThrowHeight=,
AutoCrouchShoot=, StopMoveShoot=, CrouchKey=.KeyCode.LeftShift,
StopMoveStrict=,
GrenAutoCalibrate=, GrenCalibStatus=,
JigglePeek=, JiggleKey=.KeyCode.LeftAlt, JiggleMode=,
JiggleSpeed=, JiggleDist=, JiggleADS=, JiggleShoot=,
AutoInspect=, InspectKey=.KeyCode.F, InspectDelay=,
AutoEmote=, EmoteDelay=, EmoteKey=.KeyCode.Period,
InspectOnKill=, EmoteOnKill=,
AutoRejoin=, RejoinDelay=, RejoinSameServer=, RejoinOnKick=, RejoinOnLeave=,
}
running=
connections={}
(signal,fn)
connection=signal:((...)
running (...)
)
.(connections,connection)
connection
mutations={}
humanoidStates={}
writeOrder=
(module,object,property,value)
object
ok=(()
properties=mutations[object]
properties properties={}; mutations[object]=properties
record=properties[property]
record record={original=object[property],layers={}}; properties[property]=record
writeOrder+=
record.layers[module]={value=value,order=writeOrder}
object[property]=value
)
ok
(module)
object,properties (mutations)
property,record (properties)
record.layers[module]
record.layers[module]=
top
_,layer (record.layers) top layer.order>top.order top=layer
(() top object[property]=top.value object[property]=record.original )
top properties[property]=
(properties) mutations[object]=
module==
hum,states (humanoidStates)
state,enabled (states) (() hum:(state,enabled) )
.(humanoidStates)
()
object,properties (mutations)
property,record (properties) (() object[property]=record.original )
.(mutations)
()
unsupported={MeleeAim=,DmgNum=,InfStamina=,EmoteSpam=}
key (unsupported) S[key]=
particlesApplied=
lastFlashScan=
cancelCapture
configDefaults=.(S)
configRefresh,configCallbacks,configRules={},{},{}
()
values={}
k,v (S) k~= k~=
(v)== values[k]={enum=(v.EnumType):(),name=v.Name}
(v)== values[k]={r=v.R,g=v.G,b=v.B}
values[k]=v
HS:({version=,settings=values})
(values)
nextValues=.(configDefaults)
(v) (v)== v==v .(v)<.huge
k,v (values)
default=configDefaults[k]
default~= k~= k~=
(default)== (v)==
allowed=(k== (v.enum== v.enum==)) (k== v.enum==)
allowed (v.name)==
ok,item=(() [v.enum][v.name] )
ok item ((item.EnumType==.KeyCode item~=.KeyCode.Unknown) (k== (item==.UserInputType.MouseButton1 item==.UserInputType.MouseButton2 item==.UserInputType.MouseButton3))) nextValues[k]=item
(default)== (v)==
(v.r) (v.g) (v.b) nextValues[k]=.(.(v.r,,),.(v.g,,),.(v.b,,))
(v)==(default)
rule=configRules[k]
(v)==
(v)
rule rule.min v=.(v,rule.min,rule.max); v=.(v*^rule.dec+)/^rule.dec
nextValues[k]=v
rule rule.options .(rule.options,v) nextValues[k]=v
nextValues.AimKeyMouse=nextValues.AimKey.EnumType==.UserInputType
nextValues.AimOn=; nextValues.Panic=
key (unsupported) nextValues[key]=
changed={}
k,v (nextValues) changed[k]=S[k]~=v; S[k]=v
k,v (nextValues) changed[k] v== (k)
particlesApplied=
k,fn (configCallbacks) changed[k] (fn,S[k])
_,fn (configRefresh) (fn)
AUTOEXEC_PATH =
autoExecEnabled =
autoExecProfile =
()
(readfile) ~=
(()
(isfolder) == ()
(isfile) == (AUTOEXEC_PATH)
data = HS:((AUTOEXEC_PATH))
(data) ==
(data.enabled) == autoExecEnabled = data.enabled
(data.profile) ==
#data.profile >
#data.profile <=
data.profile:()
autoExecProfile = data.profile
)
()
(writefile) ~= ,
(isfolder) == (makefolder) ==
() ()
(AUTOEXEC_PATH, HS:({
enabled = autoExecEnabled,
profile = autoExecProfile,
}))
()
autoExecEnabled
(readfile) ~=
()
name = (autoExecProfile ):()
name == name:()
()
path = .. name ..
ok, err = (()
text = (path)
data = HS:(text)
((data) == data.version == (data.settings) == , )
(data.settings)
HK =
CT =
)
ok
( .. name)
( .. (err))
()
CT, HK, lastSwitch, ESP, OSZ = , , , {}, {}
intentionalLeave, rejoinScheduled = ,
savedPlaceId, savedJobId = .PlaceId, .JobId
bindingCapture=
()
camera=.CurrentCamera
camera (S.AimMethod== UIS.MouseBehavior==.MouseBehavior.LockCenter) camera.ViewportSize/
UIS:()
BV, BG, FOVc, CH, radarDots = , , , {}, {}
savedPitch, orbitAng, patternMul, shootStart = , , ,
oldAmb, oldBri, oldFog, oldShadow
lastChat, hitMarks, dmgLabels = , {}, {}
freecamConn, freecamPos
panicAll,dispose
()
freecamConn freecamConn:(); freecamConn=
()
configCallbacks.Freecam=(value) value ()
(()
FOVc=.(); FOVc.Thickness=; FOVc.NumSides=; FOVc.Filled=; FOVc.Visible=; FOVc.ZIndex=; FOVc.Transparency=; FOVc.Color=.(,,)
)
(() i=, l=.(); l.Thickness=; l.Color=.(,,); l.Visible=; CH[i]=l )
grenLines = {}
grenDots = {}
grenImpact =
grenImpactX1, grenImpactX2 = ,
(()
i=,
l=.()
l.Thickness=
l.Color=.(,,)
l.Visible=
l.ZIndex=
l.Transparency=
grenLines[i]=l
i=,
c=.()
c.Thickness=
c.NumSides=
c.Radius=
c.Filled=
c.Visible=
c.ZIndex=
c.Color=.(,,)
c.Transparency=
grenDots[i]=c
grenImpact=.()
grenImpact.Thickness=
grenImpact.NumSides=
grenImpact.Radius=
grenImpact.Filled=
grenImpact.Visible=
grenImpact.ZIndex=
grenImpact.Color=.(,,)
grenImpact.Transparency=
grenImpactX1=.()
grenImpactX1.Thickness=
grenImpactX1.Visible=
grenImpactX1.ZIndex=
grenImpactX1.Color=.(,,)
grenImpactX2=.()
grenImpactX2.Thickness=
grenImpactX2.Visible=
grenImpactX2.ZIndex=
grenImpactX2.Color=.(,,)
)
()
_,l (grenLines) l l.Visible=
_,c (grenDots) c c.Visible=
grenImpact grenImpact.Visible=
grenImpactX1 grenImpactX1.Visible=
grenImpactX2 grenImpactX2.Visible=
(tool)
tool
n=tool.Name:()
n:(,,) n:(,,) n:(,,) n:(,,) n:(,,) n:(,,) n:(,,) n:(,,) n:(,,)
()
S.GrenadeTraj S.Panic running ()
cam = .CurrentCamera
cam ()
char = LP.Character
tool = char char:()
S.GrenTrajAlways (tool) ()
origin = cam.CFrame.Position + cam.CFrame.LookVector*
vel = cam.CFrame.LookVector * (S.GrenSpeed ) + .(, S.GrenUp , )
g = .(, -(S.GrenGravity ), )
dt = S.GrenTrajTime
steps = .(.(S.GrenTrajSteps ), , )
points = {origin}
pos, v = origin, vel
bounces =
maxB = S.GrenMaxBounces
landPos =
params = RaycastParams.()
params.FilterType = .RaycastFilterType.Exclude
ex = {cam}
char .(ex, char)
params.FilterDescendantsInstances = ex
params.IgnoreWater =
i=,steps
nextV = v + g*dt
nextPos = pos + v*dt + g*(*dt*dt)
dir = nextPos - pos
hit = :(pos, dir, params)
hit
.(points, hit.Position)
landPos = hit.Position
S.GrenBounce bounces < maxB
n = hit.Normal
v = nextV - *nextV:(n)*n
v = v *
pos = hit.Position + n*
bounces +=
landPos =
pos = nextPos
v = nextV
.(points, pos)
landPos #points > landPos = points[#points]
baseThick = .(S.GrenThickness , )
colA = S.GrenColor .(, , )
colB = .(, , )
drawn =
nseg = #points -
i=,nseg
a,b = points[i], points[i+]
pa, oa = cam:(a)
pb, ob = cam:(b)
line = grenLines[i]
line oa ob pa.Z > pb.Z >
t = nseg > ((i-)/(nseg-))
r = colA.R + (colB.R - colA.R) * t
gch = colA.G + (colB.G - colA.G) * t
bl = colA.B + (colB.B - colA.B) * t
line.From = .(pa.X, pa.Y)
line.To = .(pb.X, pb.Y)
line.Thickness = baseThick + ( - t) *
line.Color = .(r, gch, bl)
line.Transparency = + t *
line.Visible =
drawn = i
line
line.Visible =
i=drawn+,#grenLines
grenLines[i] grenLines[i].Visible=
dotCount =
stepDot = .(, .(#points / ))
i=,#points,stepDot
dotCount +=
c = grenDots[dotCount]
c
p, on = cam:(points[i])
on p.Z >
t = #points > ((i-)/(#points-))
c.Position = .(p.X, p.Y)
c.Radius = + (-t)*
c.Color = .(
colA.R + (colB.R-colA.R)*t,
colA.G + (colB.G-colA.G)*t,
colA.B + (colB.B-colA.B)*t
)
c.Filled =
c.Visible =
c.Transparency =
c.Visible =
i=dotCount+,#grenDots
grenDots[i] grenDots[i].Visible=
landPos grenImpact
ip, on = cam:(landPos)
on ip.Z >
pulse = + .(.()*)*
grenImpact.Position = .(ip.X, ip.Y)
grenImpact.Radius = pulse
grenImpact.Color = .(, , )
grenImpact.Thickness =
grenImpact.Visible =
grenImpact.Transparency =
s =
grenImpactX1
grenImpactX1.From = .(ip.X - s, ip.Y - s)
grenImpactX1.To = .(ip.X + s, ip.Y + s)
grenImpactX1.Visible =
grenImpactX1.Thickness =
grenImpactX2
grenImpactX2.From = .(ip.X + s, ip.Y - s)
grenImpactX2.To = .(ip.X - s, ip.Y + s)
grenImpactX2.Visible =
grenImpactX2.Thickness =
grenImpact.Visible =
grenImpactX1 grenImpactX1.Visible=
grenImpactX2 grenImpactX2.Visible=
grenImpact
grenImpact.Visible =
grenImpactX1 grenImpactX1.Visible=
grenImpactX2 grenImpactX2.Visible=
(fromPos, targetPos, speed, gravity, upBoost)
g = gravity
v0 = speed
to = targetPos - fromPos
distXZ = .(to.X, , to.Z).Magnitude
distXZ <
(targetPos - fromPos).Unit
y = to.Y
bestDir, bestErr = , .huge
flat = .(to.X, , to.Z).Unit
deg = , ,
pitch = .(deg)
dir = (flat * .(pitch) + .yAxis * .(pitch)).Unit
vel = dir * v0 + .(, upBoost , )
pos = fromPos
v = vel
dt =
err = .huge
_=,
v = v + .(, -g, ) * dt
nextPos = pos + v * dt
(nextPos - targetPos).Magnitude < err
err = (nextPos - targetPos).Magnitude
xz = .(nextPos.X - fromPos.X, , nextPos.Z - fromPos.Z).Magnitude
xz > distXZ + v.Y <
nextPos.Y < targetPos.Y - v.Y <
pos = nextPos
err < bestErr
bestErr = err
bestDir = dir
bestDir, bestErr
()
S.PerfectThrow S.Panic running
char = LP.Character
tool = char char:()
holdingNade = (tool)
S.PerfectThrowAuto holdingNade
holdingNade S.GrenTrajAlways
key = S.PerfectThrowKey
(key)==
key.EnumType==.UserInputType
UIS:(key)
key.EnumType==.KeyCode
UIS:(key)
()
cam = .CurrentCamera
cam
origin = cam.CFrame.Position
me = LP.Character LP.Character:()
me origin = me.Position
best, bestDist = , .huge
_,p (Players:())
(p) p.Character
root = p.Character:()
root
d = (root.Position - origin).Magnitude
d < bestDist d <= (S.MaxDist )
bestDist = d
best = root
best, bestDist
(dt)
()
bindingCapture UIS:() ()
cam = .CurrentCamera
cam
target = ()
target
lead = S.PerfectThrowLead
aimPos = target.Position + .(, S.PerfectThrowHeight , )
vel = target.AssemblyLinearVelocity
vel vel.Magnitude >
aimPos = aimPos + vel * lead
from = cam.CFrame.Position + cam.CFrame.LookVector *
dir = (from, aimPos, S.GrenSpeed , S.GrenGravity , S.GrenUp )
dir
smooth = .(S.PerfectThrowSmooth , , )
alpha = - ( - smooth) ^ (.(dt /, , ) * )
want = .(cam.CFrame.Position, cam.CFrame.Position + dir)
cam.CFrame = cam.CFrame:(want, alpha)
T={bg=.(,,),panel=.(,,),p2=.(,,),card=.(,,),stroke=.(,,),acc=.(,,),txt=.(,,),dim=.(,,),mut=.(,,),ok=.(,,),bad=.(,,)}
(p,r) c=.(); c.CornerRadius=.(,r ); c.Parent=p
(p,c) s=.(); s.Color=c T.stroke; s.Thickness=; s.Parent=p
TIPS = {
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
[]=,
}
Gui=.(); Gui.Name=; Gui.ResetOnSpawn=; Gui.DisplayOrder=; Gui.ZIndexBehavior=.ZIndexBehavior.Sibling
(() Gui.Parent=:() ); Gui.Parent Gui.Parent=LP:()
Tip = .()
Tip.Name =
Tip.Size = .(, , , )
Tip.AutomaticSize = .AutomaticSize.Y
Tip.BackgroundColor3 = .(, , )
Tip.BorderSizePixel =
Tip.Visible =
Tip.ZIndex =
Tip.Parent = Gui
(Tip, )
tipStroke = .(, Tip)
tipStroke.Color = .(, , )
tipPad = .(, Tip)
tipPad.PaddingTop = .(, )
tipPad.PaddingBottom = .(, )
tipPad.PaddingLeft = .(, )
tipPad.PaddingRight = .(, )
tipTitle = .(, Tip)
tipTitle.Size = .(, , , )
tipTitle.BackgroundTransparency =
tipTitle.TextColor3 = .(, , )
tipTitle.Font = .Font.GothamBold
tipTitle.TextSize =
tipTitle.TextXAlignment = .TextXAlignment.Left
tipTitle.ZIndex =
tipBody = .(, Tip)
tipBody.Size = .(, , , )
tipBody.Position = .(, , , )
tipBody.AutomaticSize = .AutomaticSize.Y
tipBody.BackgroundTransparency =
tipBody.TextColor3 = .(, , )
tipBody.Font = .Font.Gotham
tipBody.TextSize =
tipBody.TextXAlignment = .TextXAlignment.Left
tipBody.TextWrapped =
tipBody.ZIndex =
tipConn
(name)
d = TIPS[name]
d Tip.Visible =
tipTitle.Text = name
tipBody.Text = d
Tip.Visible =
tipConn tipConn:()
tipConn = RS.RenderStepped:(()
Tip.Visible
mp = UIS:()
cam = .CurrentCamera
vs = cam cam.ViewportSize .(, )
x, y = mp.X + , mp.Y +
x + > vs.X x = mp.X -
y + > vs.Y y = mp.Y -
Tip.Position = .(x, y)
)
()
Tip.Visible =
tipConn tipConn:(); tipConn =
(row, name)
row name
row.MouseEnter:(() (name) )
row.MouseLeave:(hideTip)
Main=.(,Gui); Main.Size=.(,,,); Main.Position=.(,-,,-); Main.BackgroundColor3=T.bg; Main.BorderSizePixel=; Main.Active=; Main.Draggable=; (Main,); (Main)
()
Main.Visible
point=UIS:()-:():()
origin,size=Main.AbsolutePosition,Main.AbsoluteSize
point.X>=origin.X point.Y>=origin.Y point.X<=origin.X+size.X point.Y<=origin.Y+size.Y
Top=.(,Main); Top.Size=.(,,,); Top.BackgroundColor3=T.panel; Top.BorderSizePixel=; (Top,)
tf=.(,Top); tf.Size=.(,,,); tf.Position=.(,,,-); tf.BackgroundColor3=T.panel; tf.BorderSizePixel=
Title=.(,Top); Title.Size=.(,,,); Title.Position=.(,,,); Title.BackgroundTransparency=; Title.Text=; Title.TextColor3=T.txt; Title.Font=.Font.GothamBold; Title.TextSize=; Title.TextXAlignment=.TextXAlignment.Left
Ver=.(,Top); Ver.Size=.(,,,); Ver.Position=.(,,,-); Ver.BackgroundColor3=T.p2; Ver.Text=; Ver.TextColor3=T.acc; Ver.Font=.Font.GothamBold; Ver.TextSize=; (Ver,)
Close=.(,Top); Close.Size=.(,,,); Close.Position=.(,-,,-); Close.BackgroundColor3=T.p2; Close.Text=; Close.TextColor3=T.dim; Close.Font=.Font.GothamBold; Close.TextSize=; (Close,)
(Close.MouseButton1Click,() Main.Visible= )
Side=.(,Main); Side.Size=.(,,,-); Side.Position=.(,,,); Side.BackgroundColor3=T.panel; Side.BorderSizePixel=; Side.ScrollBarThickness=; Side.CanvasSize=.(,,,)
SideList=.(,Side); SideList.Padding=.(,); SidePad=.(,Side); SidePad.PaddingTop=.(,); SidePad.PaddingLeft=.(,); SidePad.PaddingRight=.(,)
Content=.(,Main); Content.Size=.(,-,,-); Content.Position=.(,,,); Content.BackgroundColor3=T.bg; Content.BorderSizePixel=; Content.ClipsDescendants=
PageTitle=.(,Content); PageTitle.Size=.(,-,,); PageTitle.Position=.(,,,); PageTitle.BackgroundTransparency=; PageTitle.Text=; PageTitle.TextColor3=T.txt; PageTitle.Font=.Font.GothamBold; PageTitle.TextSize=; PageTitle.TextXAlignment=.TextXAlignment.Left
PageDesc=.(,Content); PageDesc.Size=.(,-,,); PageDesc.Position=.(,,,); PageDesc.BackgroundTransparency=; PageDesc.Text=; PageDesc.TextColor3=T.mut; PageDesc.Font=.Font.Gotham; PageDesc.TextSize=; PageDesc.TextXAlignment=.TextXAlignment.Left
Scroll=.(,Content); Scroll.Size=.(,,,-); Scroll.Position=.(,,,); Scroll.BackgroundTransparency=; Scroll.BorderSizePixel=; Scroll.ScrollBarThickness=; Scroll.AutomaticCanvasSize=.AutomaticSize.Y; Scroll.CanvasSize=.(,,,)
SPad=.(,Scroll); SPad.PaddingLeft=.(,); SPad.PaddingRight=.(,); SPad.PaddingBottom=.(,); SPad.PaddingTop=.(,)
SList=.(,Scroll); SList.Padding=.(,); SList.SortOrder=.SortOrder.LayoutOrder
cats={
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
{id=,n=,d=},
}
pages, sideBtns, cur, ord = {}, {}, , {}
(p) ord[p]=(ord[p] )+; ord[p]
i,c (cats)
b=.(,Side); b.Size=.(,,,); b.BackgroundColor3=T.p2; b.BackgroundTransparency=; b.Text=; b.LayoutOrder=i; (b,)
lab=.(,b); lab.Name=; lab.Size=.(,-,,); lab.Position=.(,,,); lab.BackgroundTransparency=; lab.Text=c.n; lab.TextColor3=T.dim; lab.Font=.Font.GothamMedium; lab.TextSize=; lab.TextXAlignment=.TextXAlignment.Left
sideBtns[c.id]=b
page=.(,Scroll); page.Name=c.id; page.Size=.(,,,); page.AutomaticSize=.AutomaticSize.Y; page.BackgroundTransparency=; page.Visible=; page.LayoutOrder=
pl=.(,page); pl.Padding=.(,); pl.SortOrder=.SortOrder.LayoutOrder
pages[c.id]=page
(b.MouseButton1Click,()
cur=c.id; PageTitle.Text=c.n; PageDesc.Text=c.d
id,pg (pages) pg.Visible=(id==c.id)
id,btn (sideBtns)
on=id==c.id; btn.BackgroundTransparency=on ; btn.BackgroundColor3=T.p2; btn.L.TextColor3=on T.txt T.dim
)
Side.CanvasSize=.(,,,#cats*+)
(page,title,sub)
c=.(,page); c.Size=.(,,,); c.AutomaticSize=.AutomaticSize.Y; c.BackgroundColor3=T.card; c.BorderSizePixel=; c.LayoutOrder=(page); (c,); (c)
p=.(,c); p.PaddingTop=.(,); p.PaddingBottom=.(,); p.PaddingLeft=.(,); p.PaddingRight=.(,)
l=.(,c); l.Padding=.(,); l.SortOrder=.SortOrder.LayoutOrder
h=.(,c); h.Size=.(,,,); h.BackgroundTransparency=; h.Text=title; h.TextColor3=T.txt; h.Font=.Font.GothamBold; h.TextSize=; h.TextXAlignment=.TextXAlignment.Left; h.LayoutOrder=
sub s=.(,c); s.Size=.(,,,); s.BackgroundTransparency=; s.Text=sub; s.TextColor3=T.mut; s.Font=.Font.Gotham; s.TextSize=; s.TextXAlignment=.TextXAlignment.Left; s.LayoutOrder=
d=.(,c); d.Size=.(,,,); d.BackgroundColor3=T.stroke; d.BorderSizePixel=; d.LayoutOrder=
c
modulePanels={}
settingsOwner={
StickyAim=,HeadOnly=,Humanize=,Jitter=,
FOV=,DynFOV=,DynFOVAdd=,Smooth=,Prediction=,
AssistStr=,MagnetStr=,HitChance=,MaxDist=,
SwitchDelay=,SnapBlend=,HipfireSmooth=,AimMethod=,
TeamCheck=,WallCheck=,VisibleOnly=,IgnoreFriends=,
IgnoreDowned=,ADSOnly=,FirstBullet=,Priority=,
LockPart=,AimMode=,ShowFOV=,AimKey=,
SilentFovOnly=,
TriggerDelay=,TriggerRange=,
AutoShootDelay=,
DoubleTapDelay=,
AuraRange=,CloseRange=,HitboxSize=,
LockPitch=,VStr=,HStr=,Pattern=,
PatternScale=,PatternCap=,RCSAfter=,
SpeedVal=,FlySpeed=,JumpVal=,DashPower=,
OrbitSpd=,OrbitRng=,SpinSpd=,TimeVal=,
FOVVal=,ChatDelay=,
ChamsFill=,ChamsOutline=,
CrosshairSize=,CrosshairGap=,
RadarScale=,
ESPMaxDist=,
HitMarkerSize=,HitMarkerTime=,
BulletTraceTime=,
AutoReloadKey=,
ARMode=,ARSmooth=,AROnlyShoot=,ARReset=,
BoxThickness=,TracerThickness=,TracerOrigin=,
NameSize=,ESPTextOutline=,HPBar=,HPBarH=,
ChamsDepth=,ESPTeamColor=,RainbowESP=,RainbowSpeed=,
RadarSize=,RadarPosX=,RadarPosY=,
GrenTrajAlways=,GrenTrajSteps=,GrenTrajTime=,
GrenGravity=,GrenSpeed=,GrenUp=,
GrenThickness=,GrenBounce=,GrenMaxBounces=,
PerfectThrowAuto=,PerfectThrowLead=,PerfectThrowSmooth=,
PerfectThrowHeight=,PerfectThrowKey=,
CrouchKey=,StopMoveStrict=,
JiggleKey=,JiggleMode=,JiggleSpeed=,
JiggleDist=,JiggleADS=,JiggleShoot=,
InspectKey=,InspectDelay=,InspectOnKill=,
EmoteDelay=,EmoteKey=,EmoteOnKill=,
RejoinDelay=,RejoinSameServer=,RejoinOnKick=,RejoinOnLeave=,
}
(parent,key)
modulePanels[settingsOwner[key]] parent
(parent,name,key,cb)
key== key== name=name..
cb configCallbacks[key]=cb
parent=(parent,key)
wrapper=.(,parent)
wrapper.Name=..key; wrapper.Size=.(,,,); wrapper.AutomaticSize=.AutomaticSize.Y
wrapper.BackgroundTransparency=; wrapper.LayoutOrder=(parent)
layout=.(,wrapper); layout.SortOrder=.SortOrder.LayoutOrder; layout.Padding=.(,)
body=.(,wrapper); body.Name=; body.Size=.(,,,); body.AutomaticSize=.AutomaticSize.Y; body.BackgroundTransparency=; body.Visible=; body.LayoutOrder=
bodyLayout=.(,body); bodyLayout.SortOrder=.SortOrder.LayoutOrder; bodyLayout.Padding=.(,)
padding=.(,body); padding.PaddingLeft=.(,); padding.PaddingBottom=.(,)
modulePanels[key]=body
r=.(,wrapper); r.Size=.(,,,); r.BackgroundTransparency=; r.LayoutOrder=
lab=.(,r); lab.Size=.(,-,,); lab.Position=.(,); lab.BackgroundTransparency=; lab.Text=name..(unsupported[key] ); lab.TextColor3=unsupported[key] T.mut T.txt; lab.Font=.Font.Gotham; lab.TextSize=; lab.TextXAlignment=.TextXAlignment.Left
track=.(,r); track.Size=.(,,,); track.Position=.(,-,,-); track.BackgroundColor3=S[key] T.acc .(,,); track.BorderSizePixel=; (track,)
knob=.(,track); knob.Size=.(,,,); knob.Position=S[key] .(,-,,-) .(,,,-); knob.BackgroundColor3=.(,,); knob.BorderSizePixel=; (knob,)
b=.(,r); b.Size=.(,-,,); b.Position=.(,); b.BackgroundTransparency=; b.Text=
arrow=.(,r); arrow.Name=; arrow.Size=.(,); arrow.Position=.(,,,-); arrow.BackgroundTransparency=; arrow.Text=; arrow.TextColor3=T.acc; arrow.Font=.Font.GothamBold; arrow.TextSize=
(arrow.MouseButton1Click,() body.Visible= body.Visible; arrow.Rotation=body.Visible )
.(configRefresh,() track.BackgroundColor3=S[key] T.acc .(,,); knob.Position=S[key] .(,-,,-) .(,,,-) )
(b.MouseButton1Click,()
unsupported[key] ; S[key]= S[key]; S[key] (key) ; key== particlesApplied= ; track.BackgroundColor3=S[key] T.acc .(,,); knob.Position=S[key] .(,-,,-) .(,,,-); cb (S[key])
)
(r, name)
(parent,name,key,min,max,dec)
key== name=name..
parent=(parent,key)
configRules[key]={min=min,max=max,dec=dec}
r=.(,parent); r.Size=.(,,,); r.BackgroundTransparency=; r.LayoutOrder=(parent)
lab=.(,r); lab.Size=.(,,,); lab.BackgroundTransparency=; lab.Text=name; lab.TextColor3=T.txt; lab.Font=.Font.Gotham; lab.TextSize=; lab.TextXAlignment=.TextXAlignment.Left
(v) dec> .(..dec..,v) (.(v+))
val=.(,r); val.Size=.(,,,); val.Position=.(,,,); val.BackgroundTransparency=; val.Text=(S[key]); val.TextColor3=T.acc; val.Font=.Font.GothamBold; val.TextSize=; val.TextXAlignment=.TextXAlignment.Right
bar=.(,r); bar.Size=.(,,,); bar.Position=.(,,,); bar.BackgroundColor3=.(,,); bar.BorderSizePixel=; (bar,)
fill=.(,bar); pct=(S[key]-min)/(max-min); fill.Size=.(pct,,,); fill.BackgroundColor3=T.acc; fill.BorderSizePixel=; (fill,)
.(configRefresh,() fill.Size=.(.((S[key]-min)/(max-min),,),,,); val.Text=(S[key]) )
hold=
(x)
key==
rel=.((x-bar.AbsolutePosition.X)/.(bar.AbsoluteSize.X,),,)
v=min+(max-min)*rel; dec== v=.(v+) v=.(v*^dec+)/^dec
S[key]=v; fill.Size=.(rel,,,); val.Text=(v)
(bar.InputBegan,(i) i.UserInputType==.UserInputType.MouseButton1 hold=; (i.Position.X) )
(UIS.InputChanged,(i) hold i.UserInputType==.UserInputType.MouseMovement (i.Position.X) )
(UIS.InputEnded,(i) i.UserInputType==.UserInputType.MouseButton1 hold= )
(r, name)
(parent,name,key,options)
parent=(parent,key)
configRules[key]={options=options}
r=.(,parent); r.Size=.(,,,); r.BackgroundTransparency=; r.LayoutOrder=(parent)
lab=.(,r); lab.Size=.(,,,); lab.BackgroundTransparency=; lab.Text=name; lab.TextColor3=T.txt; lab.Font=.Font.Gotham; lab.TextSize=; lab.TextXAlignment=.TextXAlignment.Left
b=.(,r); b.Size=.(,,,); b.Position=.(,-,,-); b.BackgroundColor3=T.p2; b.Text=(S[key])..; b.TextColor3=T.txt; b.Font=.Font.GothamBold; b.TextSize=; (b,)
idx=.(options,S[key])
.(configRefresh,() idx=.(options,S[key]) ; b.Text=(S[key]).. )
(b.MouseButton1Click,() idx=(idx%#options)+; S[key]=options[idx]; key== S.HeadOnly=(S[key]==); _,refresh (configRefresh) (refresh) ; b.Text=(S[key]).. )
(r, name)
(parent,name,setFn,defaultText,configKey)
parent=(parent,configKey)
r=.(,parent); r.Size=.(,,,); r.BackgroundTransparency=; r.LayoutOrder=(parent)
lab=.(,r); lab.Size=.(,,,); lab.BackgroundTransparency=; lab.Text=name; lab.TextColor3=T.txt; lab.Font=.Font.Gotham; lab.TextSize=; lab.TextXAlignment=.TextXAlignment.Left
b=.(,r); b.Size=.(,,,); b.Position=.(,-,,-); b.BackgroundColor3=T.p2; b.Text=defaultText; b.TextColor3=T.acc; b.Font=.Font.GothamBold; b.TextSize=; (b,)
listen=
configKey .(configRefresh,() listen=; bindingCapture=; b.Text=S[configKey].Name )
(b.MouseButton1Click,()
cancelCapture ()
listen=; bindingCapture=; b.Text=
cancelCapture=() listen=; bindingCapture=; b.Text=configKey S[configKey].Name defaultText
)
(UIS.InputBegan,(i)
listen
configKey== i.UserInputType~=.UserInputType.Keyboard
i.KeyCode==.KeyCode.Escape listen=; b.Text=configKey S[configKey].Name defaultText; .(() bindingCapture= );
i.UserInputType==.UserInputType.Keyboard listen=; b.Text=i.KeyCode.Name; (i.KeyCode,); .(() bindingCapture= )
i.UserInputType==.UserInputType.MouseButton1 i.UserInputType==.UserInputType.MouseButton2 listen=; b.Text=i.UserInputType.Name; (i.UserInputType,); .(() bindingCapture= )
)
(r, name)
(parent,name,fn,danger)
r=.(,parent); r.Size=.(,,,); r.BackgroundTransparency=; r.LayoutOrder=(parent)
b=.(,r); b.Size=.(,,,); b.BackgroundColor3=danger T.bad T.p2; b.Text=name; b.TextColor3=T.txt; b.Font=.Font.GothamBold; b.TextSize=; (b,)
(b.MouseButton1Click,fn)
(r, name)
p=pages.aim
c=(p,,)
(c,,,(v) v S.AimOn= )
(c,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,,,,)
c2=(p,,)
(c2,,,,,)
(c2,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,,,)
(c2,,,{,})
c3=(p,,)
(c3,,)
(c3,,)
(c3,,)
(c3,,)
(c3,,)
(c3,,)
(c3,,)
(c3,,,{,,})
(c3,,,{,,})
(c3,,,{,})
(c3,,)
(c3,,(k,m) S.AimKey=k; S.AimKeyMouse=m ,,)
p=pages.rage
c=(p,,)
(c,,)
(c,,,,,)
(c,,,,,)
(c,,)
(c,,,,,)
(c,,)
(c,,,,,)
(c,,)
(c,,,,,)
(c,,)
(c,,)
(c,,,,,)
(c,,)
c2=(p,,)
(c2,,)
(c2,,,,,)
c3=(p,,)
(c3,,)
(c3,,)
(c3,,,,,)
(c3,,,,,)
(c3,,,,,)
(c3,,(k,m) S.PerfectThrowKey=k ,,)
p=pages.legit
c=(p,,)
(c,,)
(c,,,{,,})
(c,,,,,)
(c,,)
(c,,,,,)
(c,,)
(c,,,,,)
(c,,,,,)
(c,,)
(c,,,,,)
(c,,,,,)
(c,,,,,)
c2=(p,,)
(c2,,)
(c2,,)
(c2,,)
(c2,,(k) (k)== k.EnumType==.KeyCode S.AutoReloadKey=k ,,)
(c2,,)
(c2,,)
(c2,,(k) (k)== k.EnumType==.KeyCode S.CrouchKey=k ,,)
(c2,,)
(c2,,)
p=pages.visuals
c=(p,,)
(c,,)
(c,,,,,)
(c,,,,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,)
(c,,,,,)
(c,,,,,)
c2=(p,,)
(c2,,)
(c2,,,,,)
(c2,,,,,)
(c2,,)
(c2,,)
(c2,,,,,2)
tog(c2,"Crosshair","Crosshair")
slider(c2,"Crosshair Size","CrosshairSize",2,20,0)
slider(c2,"Crosshair Gap","CrosshairGap",0,12,0)
tog(c2,"Watermark","Watermark")
local c3=card(p,"ESP Style","")
slider(c3,"Box Thickness","BoxThickness",1,4,1)
slider(c3,"Tracer Thickness","TracerThickness",1,4,1)
drop(c3,"Tracer Origin","TracerOrigin",{"Bottom","Center","Top"})
slider(c3,"Name Size","NameSize",10,20,0)
tog(c3,"Text Outline","ESPTextOutline")
tog(c3,"Health Bar","HPBar")
slider(c3,"HP Bar Height","HPBarH",2,8,0)
drop(c3,"Chams Depth","ChamsDepth",{"Always","Occluded"})
tog(c3,"Team Color ESP","ESPTeamColor")
tog(c3,"Rainbow ESP","RainbowESP")
slider(c3,"Rainbow Speed","RainbowSpeed",0.1,2,1)
slider(c3,"Radar Size","RadarSize",80,220,0)
slider(c3,"Radar Offset X","RadarPosX",10,400,0)
slider(c3,"Radar Offset Y","RadarPosY",10,400,0)
local c4=card(p,"Grenade Trajectory","Predict throw arc")
tog(c4,"Grenade Trajectory","GrenadeTraj")
tog(c4,"Always Show","GrenTrajAlways")
slider(c4,"Sim Steps","GrenTrajSteps",10,80,0)
slider(c4,"Step Time","GrenTrajTime",0.02,0.12,2)
slider(c4,"Gravity","GrenGravity",50,400,1)
slider(c4,"Throw Speed","GrenSpeed",40,200,0)
slider(c4,"Up Boost","GrenUp",0,80,0)
slider(c4,"Line Thickness","GrenThickness",1,5,0)
tog(c4,"Simulate Bounce","GrenBounce")
slider(c4,"Max Bounces","GrenMaxBounces",0,5,0)
local c6=card(p,"Grenade Auto Setup","Watch a real throw and tune both modules")
btn(c6,"Auto Find Perfect Settings",function()
startGrenadeCalibrate()
end)
local calibLab=Instance.new("TextLabel",c6)
calibLab.Name="CalibStatus"
calibLab.Size=UDim2.new(1,0,0,28)
calibLab.BackgroundTransparency=1
calibLab.TextColor3=T.dim
calibLab.Font=Enum.Font.Gotham
calibLab.TextSize=11
calibLab.TextWrapped=true
calibLab.TextXAlignment=Enum.TextXAlignment.Left
calibLab.Text="Idle — equip a grenade, press button, then throw once"
calibLab.LayoutOrder=nord(c6)
_G.CombatHubCalibLabel = calibLab
btn(c6,"Apply FPS Preset (196 gravity)",function()
S.GrenGravity=196.2; S.GrenSpeed=100; S.GrenUp=20; S.GrenTrajTime=0.05; S.GrenTrajSteps=40
S.PerfectThrowLead=0.15; S.PerfectThrowHeight=2
for _,fn in ipairs(configRefresh) do pcall(fn) end
if _G.CombatHubCalibLabel then _G.CombatHubCalibLabel.Text="Applied FPS preset (196.2 / 100 / 20)" _G.CombatHubCalibLabel.TextColor3=T.ok end
end)
btn(c6,"Apply Soft Preset (120 gravity)",function()
S.GrenGravity=120; S.GrenSpeed=85; S.GrenUp=28; S.GrenTrajTime=0.05; S.GrenTrajSteps=45
S.PerfectThrowLead=0.12; S.PerfectThrowHeight=2.5
for _,fn in ipairs(configRefresh) do pcall(fn) end
if _G.CombatHubCalibLabel then _G.CombatHubCalibLabel.Text="Applied soft preset (120 / 85 / 28)" _G.CombatHubCalibLabel.TextColor3=T.ok end
end)
end
-- MOVE
do local p=pages.move
local c=card(p,"Speed / Fly","")
tog(c,"Speed","Speed"); slider(c,"Speed Value","SpeedVal",16,200,0)
tog(c,"Fly","Fly",function(v) if not v and BV then BV:Destroy() BV=nil end if not v and BG then BG:Destroy() BG=nil end end)
slider(c,"Fly Speed","FlySpeed",20,200,0)
local c2=card(p,"Parkour","")
tog(c2,"Inf Jump","InfJump"); tog(c2,"Bhop","Bhop"); tog(c2,"Edge Jump","EdgeJump")
tog(c2,"Jump Power","JumpPow"); slider(c2,"Jump Value","JumpVal",50,300,0)
tog(c2,"Long Jump","LongJump"); tog(c2,"Air Strafe","AirStrafe"); tog(c2,"Crouch Spam","CrouchSpam")
tog(c2,"Noclip","Noclip"); tog(c2,"Dash (Q)","Dash"); slider(c2,"Dash Power","DashPower",20,150,0)
local c3=card(p,"Position","")
tog(c3,"Orbit","Orbit"); slider(c3,"Orbit Speed","OrbitSpd",1,30,0); slider(c3,"Orbit Range","OrbitRng",3,25,0)
tog(c3,"Jiggle Peek","JigglePeek")
keybind(c3,"Jiggle Key",function(k) if typeof(k)=="EnumItem" then S.JiggleKey=k end end,"LeftAlt","JiggleKey")
drop(c3,"Jiggle Mode","JiggleMode",{"Hold","Toggle"})
slider(c3,"Jiggle Speed","JiggleSpeed",4,30,0)
slider(c3,"Jiggle Distance","JiggleDist",0.5,6,1)
tog(c3,"Only While ADS","JiggleADS")
tog(c3,"Allow While Shooting","JiggleShoot")
tog(c3,"Click TP","ClickTP")
btn(c3,"TP Nearest Enemy",function()
local best,bd=nil,math.huge
for _,pl in ipairs(Players:GetPlayers()) do
if pl~=LP and pl.Character and pl.Character:FindFirstChild("HumanoidRootPart") and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
if S.TeamCheck and pl.Team and LP.Team and pl.Team==LP.Team then continue end
local d=(pl.Character.HumanoidRootPart.Position-LP.Character.HumanoidRootPart.Position).Magnitude
if d<bd then bd=d; best=pl end
end
end
if best then LP.Character.HumanoidRootPart.CFrame=best.Character.HumanoidRootPart.CFrame*CFrame.new(0,0,3) end
end)
end
-- PLAYER
do local p=pages.player
local c=card(p,"Local","")
tog(c,"God Mode","God"); tog(c,"Anti AFK","AntiAFK")
tog(c,"No Fall Damage","NoFall"); tog(c,"Anti Stun / Slow","AntiStun")
tog(c,"Auto Heal","AutoHeal"); tog(c,"Inf Stamina (best effort)","InfStamina")
tog(c,"Auto Inspect Gun","AutoInspect")
tog(c,"Inspect On Kill","InspectOnKill")
keybind(c,"Inspect Key",function(k) if typeof(k)=="EnumItem" and k.EnumType==Enum.KeyCode then S.InspectKey=k end end,"F","InspectKey")
slider(c,"Inspect Delay After Kill","InspectDelay",0.1,3,2)
local c2=card(p,"Anti-Aim","")
tog(c2,"Spinbot","Spinbot"); slider(c2,"Spin Speed","SpinSpd",5,50,0); tog(c2,"Anti Aim","AntiAim")
end
-- WORLD
do local p=pages.world
local c=card(p,"Lighting","")
tog(c,"Fullbright","Fullbright",function(v)
if v then oldAmb=Lighting.Ambient; oldBri=Lighting.Brightness; setProperty("Fullbright",Lighting,"Ambient",Color3.new(1,1,1)); setProperty("Fullbright",Lighting,"Brightness",2)
else if oldAmb then Lighting.Ambient=oldAmb end; if oldBri then Lighting.Brightness=oldBri end end
end)
tog(c,"No Fog","NoFog",function(v) if v then oldFog=Lighting.FogEnd; setProperty("NoFog",Lighting,"FogEnd",1e6) else if oldFog then Lighting.FogEnd=oldFog end end end)
tog(c,"No Shadows","NoShadows",function(v) if v then oldShadow=Lighting.GlobalShadows; setProperty("NoShadows",Lighting,"GlobalShadows",false) else if oldShadow~=nil then Lighting.GlobalShadows=oldShadow end end end)
tog(c,"No Particles","NoParticles")
tog(c,"No Flash / Blind","NoFlash")
tog(c,"Time Changer","TimeChanger"); slider(c,"Clock Time","TimeVal",0,24,0)
local c2=card(p,"Camera","")
tog(c2,"Custom FOV","CustomFOV"); slider(c2,"FOV Value","FOVVal",50,120,0)
tog(c2,"Third Person","ThirdPerson")
tog(c2,"Freecam (Shift+P)","Freecam")
end
-- UTIL
do local p=pages.util
local c=card(p,"Session","")
tog(c,"Auto Rejoin","AutoRejoin")
slider(c,"Rejoin Delay","RejoinDelay",0.5,10,1)
tog(c,"Same Server","RejoinSameServer")
tog(c,"On Kick / Error","RejoinOnKick")
tog(c,"On Accidental Leave","RejoinOnLeave")
keybind(c,"Panic Key",function(k) if typeof(k)=="EnumItem" and k.EnumType==Enum.KeyCode then S.PanicKey=k end end,"End","PanicKey")
btn(c,"REJOIN",function() intentionalLeave=true; pcall(function() TP:Teleport(game.PlaceId,LP) end) end)
btn(c,"SERVER HOP",function()
pcall(function()
local data=HS:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?sortOrder=Asc&limit=100"))
for _,s in ipairs(data.data or {}) do if s.playing<s.maxPlayers and s.id~=game.JobId then TP:TeleportToPlaceInstance(game.PlaceId,s.id,LP) break end end
end)
end)
btn(c,"PANIC (disable all)",function()
panicAll()
end,true)
btn(c,"Unload",function()
intentionalLeave=true; dispose(true)
end,true)
end
local chatBusy=false
local function sendChatMessage(message)
if chatBusy or not running or S.Panic then return end
chatBusy=true
task.spawn(function()
local ok,err=pcall(function()
local textChat=game:GetService("TextChatService")
local channels=textChat:FindFirstChild("TextChannels")
local channel=channels and channels:FindFirstChild("RBXGeneral")
if channel then channel:SendAsync(tostring(message)); return end
local events=game:GetService("ReplicatedStorage"):FindFirstChild("DefaultChatSystemChatEvents")
local remote=events and events:FindFirstChild("SayMessageRequest")
if remote then remote:FireServer(tostring(message),"All") else error("No supported chat channel") end
end)
chatBusy=false
if not ok then warn("[combat hub] chat: "..tostring(err)) end
end)
end
-- SOCIAL
do local p=pages.social
local c=card(p,"Chat","")
tog(c,"Chat Spam","ChatSpam")
local messageBox=Instance.new("TextBox",modulePanels.ChatSpam); messageBox.Size=UDim2.new(1,0,0,28); messageBox.BackgroundColor3=T.p2; messageBox.TextColor3=T.txt; messageBox.Font=Enum.Font.Gotham; messageBox.TextSize=12; messageBox.ClearTextOnFocus=false; messageBox.Text=S.ChatMsg; messageBox.LayoutOrder=nord(modulePanels.ChatSpam); corner(messageBox,6)
connect(messageBox.FocusLost,function() S.ChatMsg=messageBox.Text:sub(1,200) end)
table.insert(configRefresh,function() messageBox.Text=S.ChatMsg end)
slider(c,"Chat Delay","ChatDelay",1,10,0)
btn(c,"Send Test Message",function() sendChatMessage(S.ChatMsg) end)
local c2=card(p,"Emotes","")
tog(c2,"Auto Emote","AutoEmote")
tog(c2,"Emote On Kill","EmoteOnKill")
keybind(c2,"Emote Key",function(k) if typeof(k)=="EnumItem" and k.EnumType==Enum.KeyCode then S.EmoteKey=k end end,"Period","EmoteKey")
slider(c2,"Emote Delay After Kill","EmoteDelay",0.1,3,2)
tog(c2,"Emote Spam (best effort)","EmoteSpam")
end
-- Finish collapsed module panels and remove cards left empty by routing.
for _,panel in pairs(modulePanels) do
local hasRows=false
for _,child in ipairs(panel:GetChildren()) do if child:IsA("GuiObject") then hasRows=true; break end end
if not hasRows then
local label=Instance.new("TextLabel",panel); label.Size=UDim2.new(1,0,0,22); label.BackgroundTransparency=1; local moduleKey=panel.Parent.Name:match("^Module_(.+)$"); label.Text=unsupported[moduleKey] and "Not implemented: requires game-specific integration" or "No additional settings"; label.TextWrapped=true; label.TextColor3=T.dim; label.Font=Enum.Font.Gotham; label.TextSize=11; label.TextXAlignment=Enum.TextXAlignment.Left
end
end
for id,page in pairs(pages) do
if id~="config" then
for _,container in ipairs(page:GetChildren()) do
if container:IsA("Frame") then
local hasControls=false
for _,child in ipairs(container:GetChildren()) do if child:IsA("Frame") and (child.Size.Y.Offset~=1) then hasControls=true; break end end
if not hasControls then container:Destroy() end
end
end
end
end
-- CONFIGS
do
local c=card(pages.config,"Profiles","Save files or copy/paste JSON")
local function box(text,height)
local b=Instance.new("TextBox",c); b.Size=UDim2.new(1,0,0,height); b.BackgroundColor3=T.p2; b.TextColor3=T.txt; b.Font=Enum.Font.Code; b.TextSize=12; b.ClearTextOnFocus=false; b.Text=text; b.LayoutOrder=nord(c); corner(b,6); return b
end
local profile=box("default",28)
local json=box("",100); json.MultiLine=true; json.TextWrapped=true; json.TextXAlignment=Enum.TextXAlignment.Left; json.TextYAlignment=Enum.TextYAlignment.Top; json.PlaceholderText="Export JSON here or paste a config to import"
local status=Instance.new("TextLabel",c); status.Size=UDim2.new(1,0,0,36); status.BackgroundTransparency=1; status.TextColor3=T.dim; status.Font=Enum.Font.Gotham; status.TextSize=11; status.TextWrapped=true; status.Text="Ready"; status.LayoutOrder=nord(c)
local function run(fn)
local ok,result=pcall(fn); status.Text=ok and (result or "Done") or ("Error: "..tostring(result)); status.TextColor3=ok and T.ok or T.bad
end
local function path()
local name=profile.Text:match("^%s*(.-)%s*$")
assert(#name>0 and #name<=48 and name:match("^[%w_-]+$"),"Profile names: letters, numbers, _ and - only")
return "CombatHubConfigs/"..name..".json"
end
local function import(text)
assert(#text<=262144,"Config exceeds 256 KB")
local data=HS:JSONDecode(text)
assert(type(data)=="table" and data.version==1 and type(data.settings)=="table","Invalid config or unsupported version")
applyConfig(data.settings); HK=false; CT=nil
end
btn(c,"Save Profile",function() run(function()
assert(type(writefile)=="function" and type(isfolder)=="function" and type(makefolder)=="function","File storage unavailable; use Export JSON")
local target=path(); if not isfolder("CombatHubConfigs") then makefolder("CombatHubConfigs") end
writefile(target,encodeConfig()); return "Profile saved"
end) end)
btn(c,"Load Profile",function() run(function()
assert(type(readfile)=="function","File storage unavailable; use Import JSON")
import(readfile(path())); return "Profile loaded"
end) end)
btn(c,"Export JSON",function() run(function() json.Text=encodeConfig(); return "JSON exported into the text box" end) end)
btn(c,"Import JSON",function() run(function() import(json.Text); return "JSON imported" end) end)
btn(c,"Reset Defaults",function() run(function() applyConfig({}); HK=false; CT=nil; return "Defaults restored" end) end)
-- Auto Execute UI (additive)
do
local ae = card(pages.config, "Auto Execute", "Load a profile automatically when the script starts")
local aeRow = Instance.new("Frame", ae)
aeRow.Size = UDim2.new(1, 0, 0, 28)
aeRow.BackgroundTransparency = 1
aeRow.LayoutOrder = nord(ae)
local aeLab = Instance.new("TextLabel", aeRow)
aeLab.Size = UDim2.new(1, -50, 1, 0)
aeLab.BackgroundTransparency = 1
aeLab.Text = "Auto Execute on Inject"
aeLab.TextColor3 = T.txt
aeLab.Font = Enum.Font.Gotham
aeLab.TextSize = 12
aeLab.TextXAlignment = Enum.TextXAlignment.Left
local aeTrack = Instance.new("Frame", aeRow)
aeTrack.Size = UDim2.new(0, 36, 0, 18)
aeTrack.Position = UDim2.new(1, -36, 0.5, -9)
aeTrack.BackgroundColor3 = autoExecEnabled and T.acc or Color3.fromRGB(45, 45, 55)
aeTrack.BorderSizePixel = 0
corner(aeTrack, 9)
local aeKnob = Instance.new("Frame", aeTrack)
aeKnob.Size = UDim2.new(0, 14, 0, 14)
aeKnob.Position = autoExecEnabled and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
aeKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
aeKnob.BorderSizePixel = 0
corner(aeKnob, 7)
local aeHit = Instance.new("TextButton", aeRow)
aeHit.Size = UDim2.new(1, 0, 1, 0)
aeHit.BackgroundTransparency = 1
aeHit.Text = ""
connect(aeHit.MouseButton1Click, function()
autoExecEnabled = not autoExecEnabled
aeTrack.BackgroundColor3 = autoExecEnabled and T.acc or Color3.fromRGB(45, 45, 55)
aeKnob.Position = autoExecEnabled and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
end)
bindTip(aeRow, "Auto Execute on Inject")
bindTip(aeProfile, "Profile name to auto-load")
local aeNameLab = Instance.new("TextLabel", ae)
aeNameLab.Size = UDim2.new(1, 0, 0, 14)
aeNameLab.BackgroundTransparency = 1
aeNameLab.Text = "Profile name to auto-load"
aeNameLab.TextColor3 = T.mut
aeNameLab.Font = Enum.Font.Gotham
aeNameLab.TextSize = 11
aeNameLab.TextXAlignment = Enum.TextXAlignment.Left
aeNameLab.LayoutOrder = nord(ae)
local aeProfile = Instance.new("TextBox", ae)
aeProfile.Size = UDim2.new(1, 0, 0, 28)
aeProfile.BackgroundColor3 = T.p2
aeProfile.TextColor3 = T.txt
aeProfile.Font = Enum.Font.Code
aeProfile.TextSize = 12
aeProfile.ClearTextOnFocus = false
aeProfile.Text = autoExecProfile
aeProfile.LayoutOrder = nord(ae)
corner(aeProfile, 6)
local aeStatus = Instance.new("TextLabel", ae)
aeStatus.Size = UDim2.new(1, 0, 0, 28)
aeStatus.BackgroundTransparency = 1
aeStatus.TextColor3 = T.dim
aeStatus.Font = Enum.Font.Gotham
aeStatus.TextSize = 11
aeStatus.TextWrapped = true
aeStatus.Text = autoExecEnabled and ('ON → loads "' .. autoExecProfile .. '" next inject') or "OFF"
aeStatus.LayoutOrder = nord(ae)
btn(ae, "Save Auto Execute Settings", function()
local name = aeProfile.Text:match("^%s*(.-)%s*$") or ""
if not (#name > 0 and #name <= 48 and name:match("^[%w_-]+$")) then
aeStatus.Text = "Error: bad profile name (letters, numbers, _, -)"
aeStatus.TextColor3 = T.bad
return
end
autoExecProfile = name
local ok, err = saveAutoExecPrefs()
if not ok then
aeStatus.Text = "Error: " .. tostring(err)
aeStatus.TextColor3 = T.bad
return
end
aeStatus.Text = autoExecEnabled and ('ON → loads "' .. autoExecProfile .. '" next inject') or "OFF (prefs saved)"
aeStatus.TextColor3 = T.ok
end)
end
end
sideBtns.aim.BackgroundTransparency=0; sideBtns.aim.L.TextColor3=T.txt; pages.aim.Visible=true; cur="aim"; PageTitle.Text="Aim"; PageDesc.Text=cats[1].d
-- watermark
local WM=Instance.new("TextLabel",Gui); WM.Size=UDim2.new(0,260,0,20); WM.Position=UDim2.new(0,10,0,10); WM.BackgroundTransparency=0.3; WM.BackgroundColor3=T.bg; WM.TextColor3=T.txt; WM.Font=Enum.Font.GothamBold; WM.TextSize=11; WM.TextXAlignment=Enum.TextXAlignment.Left; WM.Text=" COMBAT HUB | loading"; corner(WM,4)
-- radar frame
local RadarF=Instance.new("Frame",Gui); RadarF.Size=UDim2.new(0,140,0,140); RadarF.Position=UDim2.new(1,-160,0,20); RadarF.BackgroundColor3=Color3.fromRGB(10,10,14); RadarF.BackgroundTransparency=0.2; RadarF.BorderSizePixel=0; RadarF.Visible=false; corner(RadarF,8); stroke(RadarF)
local RadarC=Instance.new("Frame",RadarF); RadarC.Size=UDim2.new(0,4,0,4); RadarC.Position=UDim2.new(0.5,-2,0.5,-2); RadarC.BackgroundColor3=T.acc; RadarC.BorderSizePixel=0; corner(RadarC,2)
-- Hit marker + bullet trace helpers
local hitMarkerGui, hitMarkerLine1, hitMarkerLine2
local function showHitMarker()
pcall(function()
if not hitMarkerGui or not hitMarkerGui.Parent then
hitMarkerGui = Instance.new("ScreenGui")
hitMarkerGui.Name = "CombatHub_HitMarker"
hitMarkerGui.IgnoreGuiInset = true
hitMarkerGui.ResetOnSpawn = false
hitMarkerGui.DisplayOrder = 1000
hitMarkerGui.Parent = Gui.Parent
local function mk()
local f = Instance.new("Frame")
f.BorderSizePixel = 0
f.BackgroundColor3 = Color3.fromRGB(255,255,255)
f.AnchorPoint = Vector2.new(0.5,0.5)
f.Parent = hitMarkerGui
return f
end
hitMarkerLine1 = mk()
hitMarkerLine2 = mk()
end
local size = S.HitMarkerSize or 18
local cam = workspace.CurrentCamera
local c = cam and cam.ViewportSize/2 or Vector2.new(400,300)
hitMarkerLine1.Size = UDim2.fromOffset(size, 2)
hitMarkerLine2.Size = UDim2.fromOffset(size, 2)
hitMarkerLine1.Position = UDim2.fromOffset(c.X, c.Y)
hitMarkerLine2.Position = UDim2.fromOffset(c.X, c.Y)
hitMarkerLine1.Rotation = 45
hitMarkerLine2.Rotation = -45
hitMarkerLine1.Visible = true
hitMarkerLine2.Visible = true
local life = S.HitMarkerTime or 0.12
task.delay(life, function()
if hitMarkerLine1 then hitMarkerLine1.Visible = false end
if hitMarkerLine2 then hitMarkerLine2.Visible = false end
end)
end)
end
local activeTraces = {}
local function showBulletTrace(worldPos)
pcall(function()
local cam = workspace.CurrentCamera
if not cam then return end
local att0 = Instance.new("Attachment")
local att1 = Instance.new("Attachment")
local part = Instance.new("Part")
part.Anchored = true
part.CanCollide = false
part.Transparency = 1
part.Size = Vector3.new(0.1,0.1,0.1)
part.CFrame = CFrame.new(cam.CFrame.Position)
part.Parent = workspace
att0.Parent = part
att1.WorldPosition = worldPos
att1.Parent = part
local beam = Instance.new("Beam")
beam.Attachment0 = att0
beam.Attachment1 = att1
beam.Width0 = 0.15
beam.Width1 = 0.05
beam.Color = ColorSequence.new(S.ESPColor or Color3.fromRGB(255,60,80))
beam.FaceCamera = true
beam.Parent = part
table.insert(activeTraces, part)
task.delay(S.BulletTraceTime or 0.15, function()
pcall(function() part:Destroy() end)
end)
end)
end
-- Auto reload best-effort
local lastReload = 0
local function tryAutoReload()
if not S.AutoReload or S.Panic then return end
if tick() - lastReload < 0.4 then return end
local char = LP.Character
local tool = char and char:FindFirstChildOfClass("Tool")
if not tool then return end
local need = false
for _, v in ipairs(tool:GetDescendants()) do
if v:IsA("IntValue") or v:IsA("NumberValue") then
local n = v.Name:lower()
if (n:find("ammo",1,true) or n:find("clip",1,true) or n:find("mag",1,true)) and v.Value <= 0 then
need = true
break
end
end
end
if need then
lastReload = tick()
pcall(function()
if VIM then
VIM:SendKeyEvent(true, S.AutoReloadKey or Enum.KeyCode.R, false, game)
task.delay(0.05, function()
pcall(function() VIM:SendKeyEvent(false, S.AutoReloadKey or Enum.KeyCode.R, false, game) end)
end)
end
end)
end
end
-- Auto crouch + stop move while shooting
local crouchHeld = false
local function updateShootStance()
if S.Panic or not running then
if crouchHeld then
pcall(function()
if VIM then VIM:SendKeyEvent(false, S.CrouchKey or Enum.KeyCode.LeftShift, false, game) end
end)
crouchHeld = false
end
return
end
local shooting = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if S.AutoCrouchShoot and shooting then
if not crouchHeld then
pcall(function()
if VIM then VIM:SendKeyEvent(true, S.CrouchKey or Enum.KeyCode.LeftShift, false, game) end
end)
crouchHeld = true
end
if hum then
pcall(function() hum.Crouching = true end)
end
elseif crouchHeld then
pcall(function()
if VIM then VIM:SendKeyEvent(false, S.CrouchKey or Enum.KeyCode.LeftShift, false, game) end
end)
crouchHeld = false
end
if S.StopMoveShoot and shooting and hum then
hum:Move(Vector3.zero, false)
if S.StopMoveStrict and hrp then
local v = hrp.AssemblyLinearVelocity
hrp.AssemblyLinearVelocity = Vector3.new(0, v.Y, 0)
end
if hum then
setProperty("StopMoveShoot", hum, "WalkSpeed", 0)
end
elseif not shooting then
restoreModule("StopMoveShoot")
end
end
-- Grenade auto-calibrate: sample a real thrown projectile and fit gravity/speed
local calibrating = false
local calibConn = nil
local calibSamples = {}
local calibStart = 0
local function setCalibText(t, ok)
local lab = rawget(_G, "CombatHubCalibLabel")
if lab then
lab.Text = t
lab.TextColor3 = ok==true and T.ok or (ok==false and T.bad or T.dim)
end
end
local function finishCalibrate(gravity, speed, upBoost)
calibrating = false
S.GrenAutoCalibrate = false
if calibConn then pcall(function() calibConn:Disconnect() end) calibConn=nil end
if gravity then S.GrenGravity = math.clamp(gravity, 40, 400) end
if speed then S.GrenSpeed = math.clamp(speed, 30, 250) end
if upBoost then S.GrenUp = math.clamp(upBoost, 0, 100) end
-- tune related perfect-throw helpers for current values
S.GrenTrajSteps = math.clamp(math.floor((S.GrenSpeed or 100) / 2), 24, 64)
S.PerfectThrowLead = math.clamp((S.GrenSpeed or 100) / 700, 0.08, 0.35)
for _,fn in ipairs(configRefresh) do pcall(fn) end
setCalibText(string.format("Calibrated: g=%.1f speed=%.1f up=%.1f (applied to both modules)", S.GrenGravity, S.GrenSpeed, S.GrenUp), true)
print(string.format("[combat hub] grenade calib g=%.2f speed=%.2f up=%.2f", S.GrenGravity, S.GrenSpeed, S.GrenUp))
end
local function estimateFromSamples(samples)
if #samples < 4 then return nil end
-- samples: {t, pos}
local t0 = samples[1].t
local p0 = samples[1].pos
-- initial velocity from early samples
local early = samples[math.min(3, #samples)]
local dt1 = early.t - t0
if dt1 <= 1e-3 then return nil end
local v0 = (early.pos - p0) / dt1
local speed = Vector3.new(v0.X, 0, v0.Z).Magnitude
local up = math.max(0, v0.Y)
-- gravity from vertical motion: y = y0 + v0y*t - 0.5*g*t^2
local gSum, gN = 0, 0
for i=3,#samples do
local t = samples[i].t - t0
if t > 0.05 then
local y = samples[i].pos.Y - p0.Y
-- y = v0y*t - 0.5*g*t^2 => g = 2*(v0y*t - y)/t^2
local g = 2 * (v0.Y * t - y) / (t * t)
if g > 20 and g < 500 then
gSum += g
gN += 1
end
end
end
if gN < 1 then return nil end
return gSum / gN, speed, up
end
function startGrenadeCalibrate()
if calibrating then
setCalibText("Already calibrating — throw the grenade now", false)
return
end
calibrating = true
calibSamples = {}
calibStart = tick()
setCalibText("Calibrating… equip grenade and THROW once (4s window)", nil)
local watched = {}
if calibConn then pcall(function() calibConn:Disconnect() end) end
calibConn = workspace.DescendantAdded:Connect(function(obj)
if not calibrating then return end
if not obj:IsA("BasePart") then return end
local n = obj.Name:lower()
local look = n:find("grenade",1,true) or n:find("nade",1,true) or n:find("projectile",1,true)
or n:find("throw",1,true) or n:find("frag",1,true) or n:find("molotov",1,true)
or n:find("flash",1,true) or n:find("smoke",1,true) or n:find("ball",1,true)
-- also accept unanchored parts spawned near camera with velocity
task.defer(function()
if not calibrating or not obj.Parent then return end
local ok,vel = pcall(function() return obj.AssemblyLinearVelocity end)
if not ok or not vel then return end
local cam = workspace.CurrentCamera
if not cam then return end
local near = (obj.Position - cam.CFrame.Position).Magnitude < 25
local moving = vel.Magnitude > 20
if (look or (near and moving and not obj.Anchored)) and not watched[obj] then
watched[obj] = true
setCalibText("Tracking projectile…", nil)
local samples = {}
local start = tick()
local conn
conn = RS.Heartbeat:Connect(function()
if not obj.Parent or tick()-start > 2.5 then
conn:Disconnect()
local g,sp,up = estimateFromSamples(samples)
if g then
finishCalibrate(g, sp, up)
else
setCalibText("Track failed — try a longer open throw", false)
calibrating = false
end
return
end
local ok2,pos = pcall(function() return obj.Position end)
if ok2 then table.insert(samples, {t=tick(), pos=pos}) end
end)
end
end)
end)
-- timeout
task.delay(5, function()
if calibrating then
calibrating = false
if calibConn then pcall(function() calibConn:Disconnect() end) calibConn=nil end
setCalibText("Timed out — press again and throw quickly", false)
end
end)
end
-- Auto jiggle peek (fixed)
local jiggleOn = false
local jigglePhase = 0
local jiggleOrigin = nil
local function jiggleActive()
if not S.JigglePeek or S.Panic or not running then return false end
if bindingCapture or UIS:GetFocusedTextBox() or pointerOverMenu() then return false end
if S.JiggleADS and not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return false end
if not S.JiggleShoot and UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then return false end
local key = S.JiggleKey
if S.JiggleMode == "Toggle" then return jiggleOn end
if typeof(key)=="EnumItem" then
if key.EnumType==Enum.KeyCode then return UIS:IsKeyDown(key) end
if key.EnumType==Enum.UserInputType then return UIS:IsMouseButtonPressed(key) end
end
return UIS:IsKeyDown(Enum.KeyCode.LeftAlt)
end
local function updateJigglePeek(dt)
local char = LP.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hum or not hrp then jiggleOrigin=nil return end
if not jiggleActive() then
jiggleOrigin = nil
return
end
local cam = workspace.CurrentCamera
if not cam then return end
dt = math.clamp(dt or 1/60, 0, 0.1)
if not jiggleOrigin then
jiggleOrigin = hrp.Position
jigglePhase = 0
end
jigglePhase = jigglePhase + (S.JiggleSpeed or 12) * dt
local side = math.sin(jigglePhase * math.pi * 2) -- full left-right cycle
local right = Vector3.new(cam.CFrame.RightVector.X, 0, cam.CFrame.RightVector.Z)
if right.Magnitude < 1e-3 then return end
right = right.Unit
local dist = S.JiggleDist or 2.5
-- target offset from origin along camera right
local target = jiggleOrigin + right * (side * dist)
local to = target - hrp.Position
local flat = Vector3.new(to.X, 0, to.Z)
local speed = math.max(hum.WalkSpeed, 18) * 1.35
if flat.Magnitude > 0.05 then
local dir = flat.Unit
hum:Move(dir, false)
local v = hrp.AssemblyLinearVelocity
hrp.AssemblyLinearVelocity = Vector3.new(dir.X * speed, v.Y, dir.Z * speed)
else
hum:Move(Vector3.zero, false)
end
-- slowly recenter origin so you can walk while jiggling
jiggleOrigin = jiggleOrigin:Lerp(Vector3.new(hrp.Position.X, jiggleOrigin.Y, hrp.Position.Z), dt * 2)
end
-- Auto inspect / emote on kill
local lastInspect, lastEmote = 0, 0
local lastKills = nil
local healthCache = {}
local recentCombat = {} -- player -> last time we aimed/shot near them
local function pressKey(key, dur)
if typeof(key)~="EnumItem" or key.EnumType~=Enum.KeyCode then return end
pcall(function()
if VIM then
VIM:SendKeyEvent(true, key, false, game)
task.delay(dur or 0.08, function()
pcall(function() VIM:SendKeyEvent(false, key, false, game) end)
end)
end
end)
end
local function doInspect()
if not S.AutoInspect or S.Panic then return end
local now = tick()
if now - lastInspect < 0.2 then return end
lastInspect = now
local delay = S.InspectDelay or 0.35
task.delay(delay, function()
if S.Panic or not S.AutoInspect then return end
if UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then return end
pressKey(S.InspectKey or Enum.KeyCode.F, 0.1)
local char = LP.Character
local tool = char and char:FindFirstChildOfClass("Tool")
if tool then
pcall(function()
for _,v in ipairs(tool:GetDescendants()) do
if v:IsA("BindableEvent") and v.Name:lower():find("inspect",1,true) then
v:Fire(); break
end
end
end)
end
end)
end
local function doEmote()
if not S.AutoEmote or S.Panic then return end
local now = tick()
if now - lastEmote < 0.2 then return end
lastEmote = now
local delay = S.EmoteDelay or 0.6
task.delay(delay, function()
if S.Panic or not S.AutoEmote then return end
if UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then return end
pressKey(S.EmoteKey or Enum.KeyCode.Period, 0.1)
pcall(function()
local char = LP.Character
local animate = char and char:FindFirstChild("Animate")
if animate then
local emote = animate:FindFirstChild("PlayEmote") or animate:FindFirstChildWhichIsA("BindableFunction")
if emote and emote:IsA("BindableFunction") then
pcall(function() emote:Invoke("wave") end)
end
end
end)
end)
end
local function onGotKill()
if S.InspectOnKill then doInspect() end
if S.EmoteOnKill then doEmote() end
end
local function markCombat(player)
if player and player ~= LP then recentCombat[player] = tick() end
end
local function updateInspectEmote()
if S.Panic or not running then return end
-- track combat via current aim target
if CT and CT.Parent then
local pl = Players:GetPlayerFromCharacter(CT.Parent)
if pl then markCombat(pl) end
end
if UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then
local cam = workspace.CurrentCamera
if cam then
local origin = cam.CFrame.Position
for _,p in ipairs(Players:GetPlayers()) do
if p ~= LP and p.Character then
local root = p.Character:FindFirstChild("HumanoidRootPart")
if root and (root.Position - origin).Magnitude < 120 then
markCombat(p)
end
end
end
end
end
-- leaderstats kills
pcall(function()
local ls = LP:FindFirstChild("leaderstats")
local kills = ls and (ls:FindFirstChild("Kills") or ls:FindFirstChild("Kill") or ls:FindFirstChild("Wipes"))
if kills and (kills:IsA("IntValue") or kills:IsA("NumberValue")) then
if lastKills ~= nil and kills.Value > lastKills then
onGotKill()
end
lastKills = kills.Value
end
end)
-- health drop to 0 while recently in combat with them
for _,p in ipairs(Players:GetPlayers()) do
if p ~= LP and p.Character then
local hum = p.Character:FindFirstChildOfClass("Humanoid")
if hum then
local prev = healthCache[p]
local hp = hum.Health
if prev and prev > 0 and hp <= 0 then
local t = recentCombat[p]
if t and tick() - t < 8 then
onGotKill()
end
end
healthCache[p] = hp
end
else
healthCache[p] = nil
end
end
end
connect(Players.PlayerRemoving, function(p)
healthCache[p] = nil
recentCombat[p] = nil
end)
-- Auto rejoin on kick / disconnect / accidental leave
local function doRejoin(reason)
if not S.AutoRejoin or rejoinScheduled then return end
if intentionalLeave and not S.RejoinOnLeave then return end
rejoinScheduled = true
local delay = S.RejoinDelay or 2
print("[combat hub] auto-rejoin in "..tostring(delay).."s ("..tostring(reason)..")")
task.delay(delay, function()
pcall(function()
if S.RejoinSameServer and savedJobId and #tostring(savedJobId) > 0 then
TP:TeleportToPlaceInstance(savedPlaceId, savedJobId, LP)
else
TP:Teleport(savedPlaceId, LP)
end
end)
task.delay(5, function() rejoinScheduled = false end)
end)
end
pcall(function()
local GuiService = game:GetService("GuiService")
connect(GuiService.ErrorMessageChanged, function(msg)
if not S.AutoRejoin or not S.RejoinOnKick then return end
if msg and #tostring(msg) > 0 then
doRejoin("error: "..tostring(msg):sub(1,80))
end
end)
end)
pcall(function()
connect(TP.TeleportInitFailed, function(player, result, err)
if player ~= LP then return end
if not S.AutoRejoin then return end
rejoinScheduled = false
doRejoin("teleport failed: "..tostring(err))
end)
end)
-- detect kick-style prompts in CoreGui
pcall(function()
local core = game:GetService("CoreGui")
connect(core.DescendantAdded, function(obj)
if not S.AutoRejoin or not S.RejoinOnKick then return end
local n = obj.Name:lower()
if n:find("error",1,true) or n:find("kick",1,true) or n:find("disconnect",1,true) or n:find("prompt",1,true) then
local text = ""
pcall(function()
if obj:IsA("TextLabel") or obj:IsA("TextButton") then text = obj.Text:lower() end
end)
if text:find("kick") or text:find("disconnect") or text:find("lost connection") or text:find("same account") or text:find("error") then
doRejoin("coregui: "..text:sub(1,60))
end
end
end)
end)
-- accidental leave / player removal
pcall(function()
connect(Players.PlayerRemoving, function(p)
if p ~= LP then return end
if not S.AutoRejoin then return end
if intentionalLeave and not S.RejoinOnLeave then return end
if S.RejoinOnLeave or S.RejoinOnKick then
doRejoin("player removing")
end
end)
end)
-- network disconnect hint via LocalPlayer parent
pcall(function()
connect(LP.AncestryChanged, function(_, parent)
if parent == nil and S.AutoRejoin then
doRejoin("ancestry nil")
end
end)
end)
-- mark intentional leave when user hits unload/rejoin buttons we control
local _oldDispose = dispose
-- wrapped later if dispose exists; also hook REJOIN button is intentional
--------------------------------------------------------------------
-- LOGIC
--------------------------------------------------------------------
local friendshipCache={}
local function alive(p)
if not p or p==LP then return false end
local char=p.Character
local hum=char and char:FindFirstChildOfClass("Humanoid")
if not hum or hum.Health<=0 then return false end
if S.IgnoreDowned and hum.Health<=5 then return false end
if S.TeamCheck and not p.Neutral and not LP.Neutral and p.Team and p.Team==LP.Team then return false end
if S.IgnoreFriends then
local cached=friendshipCache[p.UserId]
if cached==nil then
friendshipCache[p.UserId]="pending"
task.spawn(function()
local ok,result=pcall(function() return LP:IsFriendsWith(p.UserId) end)
if running and p.Parent then friendshipCache[p.UserId]=ok and result or false end
end)
return false
elseif cached=="pending" or cached==true then return false end
end
return true
end
connect(Players.PlayerRemoving,function(p) friendshipCache[p.UserId]=nil end)
local function lineOfSight(part)
if not part or not part.Parent then return false end
local camera=workspace.CurrentCamera
if not camera then return false end
local origin=camera.CFrame.Position
local direction=part.Position-origin
local character=part:FindFirstAncestorOfClass("Model") or part.Parent
if direction.Magnitude<0.001 then return true end
local exclusions={camera}
if LP.Character then table.insert(exclusions,LP.Character) end
local params=RaycastParams.new()
params.FilterType=Enum.RaycastFilterType.Exclude
params.IgnoreWater=true
for _=1,12 do
params.FilterDescendantsInstances=exclusions
local hit=workspace:Raycast(origin,direction,params)
if not hit or hit.Instance:IsDescendantOf(character) then return true end
local obstacle=hit.Instance
if obstacle:IsA("BasePart") and obstacle.Transparency>=0.95 then
table.insert(exclusions,obstacle)
else return false end
end
return false
end
local function wallOk(part)
local camera=workspace.CurrentCamera
if not camera or not part or not part.Parent then return false end
if S.VisibleOnly then
local projected,onScreen=camera:WorldToViewportPoint(part.Position)
if not onScreen or projected.Z<=0 then return false end
end
if S.WallCheck or S.VisibleOnly or S.AutoWall then return lineOfSight(part) end
return true
end
local randomAimParts=setmetatable({},{__mode="k"})
local function aimPart(char)
if not char then return nil end
local root=char:FindFirstChild("HumanoidRootPart")
local mine=LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
if S.ForceHeadClose and root and mine and (root.Position-mine.Position).Magnitude<=S.CloseRange then
return char:FindFirstChild("Head") or root
end
if S.HeadOnly then return char:FindFirstChild("Head") or root end
if S.LockPart=="Torso" then return char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") or root end
if S.LockPart=="Random" then
local cached=randomAimParts[char]
if cached and cached.Parent==char then return cached end
local candidates={}
for _,name in ipairs({"Head","UpperTorso","Torso","HumanoidRootPart"}) do
local part=char:FindFirstChild(name); if part and part:IsA("BasePart") then table.insert(candidates,part) end
end
if #candidates>0 then local part=candidates[math.random(1,#candidates)]; randomAimParts[char]=part; return part end
end
return char:FindFirstChild("Head") or root
end
local function targetMetrics(part,camera,origin,root,fov)
if not part or not part.Parent or not part:IsA("BasePart") then return nil end
if root and (part.Position-root.Position).Magnitude>S.MaxDist then return nil end
if not wallOk(part) then return nil end
local point,onScreen=camera:WorldToViewportPoint(part.Position)
if not onScreen or point.Z<=0 then return nil end
local cross=(Vector2.new(point.X,point.Y)-origin).Magnitude
if cross>fov then return nil end
return cross
end
local function getTarget()
local camera=workspace.CurrentCamera
if not camera then CT=nil; return nil end
Cam=camera
local origin=aimPosition()
local root=LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
local fov=S.FOV+(S.DynFOV and S.DynFOVAdd or 0)
local current
if CT and CT.Parent then
local player=Players:GetPlayerFromCharacter(CT.Parent)
if player and alive(player) then
local part=aimPart(player.Character)
if targetMetrics(part,camera,origin,root,fov) then current=part end
end
end
if current and (S.StickyAim or os.clock()-lastSwitch<S.SwitchDelay) then CT=current; return current end
local best,bestScore=nil,math.huge
for _,player in ipairs(Players:GetPlayers()) do
if alive(player) then
local part=aimPart(player.Character)
local cross=targetMetrics(part,camera,origin,root,fov)
if cross then
local score=cross
if S.Priority=="Distance" then score=(part.Position-(root and root.Position or camera.CFrame.Position)).Magnitude
elseif S.Priority=="LowestHP" then local hum=player.Character and player.Character:FindFirstChildOfClass("Humanoid"); score=hum and hum.Health or math.huge end
if score<bestScore then bestScore=score; best=part end
end
end
end
if best~=CT then lastSwitch=os.clock() end
CT=best
return best
end
local function aimOn()
if S.Panic or not S.Aimbot or bindingCapture or UIS:GetFocusedTextBox() or pointerOverMenu() then return false end
if S.ADSOnly and not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return false end
if S.AimMode=="Toggle" then return S.AimOn end
if S.AimKeyMouse then return UIS:IsMouseButtonPressed(S.AimKey) end
return UIS:IsKeyDown(S.AimKey)
end
local function moveTo(part,str,dt)
local camera=workspace.CurrentCamera
if not camera or not part or not part.Parent then return end
local pos=part.Position+part.AssemblyLinearVelocity*S.Prediction
if S.Humanize then
local t=os.clock()
pos+=Vector3.new(math.noise(t*3,0),math.noise(0,t*3),math.noise(t*3,t*3))*S.Jitter
end
local point,onScreen=camera:WorldToViewportPoint(pos)
if not onScreen or point.Z<=0 then return end
local origin=aimPosition()
local distance=(Vector2.new(point.X,point.Y)-origin).Magnitude
local rate=math.clamp(str,0,1)
if S.MagnetAim and distance<S.FOV*0.35 then rate=math.max(rate,S.MagnetStr) end
local alpha=1-(1-rate)^(math.clamp(dt or 1/60,0,0.1)*60)
if S.AimMethod=="Mouse" and type(mousemoverel)=="function" then
mousemoverel((point.X-origin.X)*alpha,(point.Y-origin.Y)*alpha)
else
if (pos-camera.CFrame.Position).Magnitude>0.001 then
camera.CFrame=camera.CFrame:Lerp(CFrame.lookAt(camera.CFrame.Position,pos),alpha)
end
end
end
local function click()
if not running or S.Panic or bindingCapture then return end
local function single()
if not running or S.Panic then return end
if type(mouse1click)=="function" then pcall(mouse1click)
else
local point=aimPosition()
if not VIM then return end
local ok=pcall(function() VIM:SendMouseButtonEvent(point.X,point.Y,0,true,game,0) end)
if ok then task.defer(function() pcall(function() VIM:SendMouseButtonEvent(point.X,point.Y,0,false,game,0) end) end) end
end
end
single()
if S.DoubleTap then task.delay(S.DoubleTapDelay or 0.04,single) end
end
pcall(function()
if type(hookmetamethod)~="function" or type(checkcaller)~="function" then return end
local old; old=hookmetamethod(game,"__index",function(self,key)
if running and S.SilentAim and not S.Panic and not bindingCapture and not checkcaller() and typeof(self)=="Instance" and self:IsA("Mouse") and (key=="Hit" or key=="Target") then
local chance=S.HitChance
if S.FirstBullet and (not shootStart or tick()-shootStart < 0.05) then chance=100 end
if math.random(1,100)<=chance then
local t=CT
if t and t.Parent then
if S.SilentFovOnly then
local cam=workspace.CurrentCamera
if cam then
local p,on=cam:WorldToViewportPoint(t.Position)
local origin=aimPosition()
local fov=S.FOV+(S.DynFOV and S.DynFOVAdd or 0)
if not on or (Vector2.new(p.X,p.Y)-origin).Magnitude>fov then return old(self,key) end
end
end
local cf=t.CFrame+(t.AssemblyLinearVelocity*S.Prediction)
if key=="Hit" then return cf end
if key=="Target" then return t end
end
end
end
return old(self,key)
end)
end)
connect(RS.RenderStepped,function(dt)
Cam=workspace.CurrentCamera; if not Cam then return end
if S.Panic then
WM.Visible=false; RadarF.Visible=false
if FOVc then FOVc.Visible=false end
for _,line in pairs(CH) do line.Visible=false end
hideGrenTraj()
return
end
if S.Watermark then
WM.Visible=true
WM.Text=string.format(" COMBAT HUB | %d fps | %d ms",math.floor(1/math.max(dt,0.001)),math.floor(LP:GetNetworkPing()*1000))
else WM.Visible=false end
pcall(updateShootStance)
pcall(function() updateJigglePeek(dt) end)
pcall(updateInspectEmote)
local fov=S.FOV+(S.DynFOV and S.DynFOVAdd or 0)
if FOVc then local mp=aimPosition(); FOVc.Position=Vector2.new(mp.X,mp.Y); FOVc.Radius=fov; FOVc.Visible=S.ShowFOV and (S.Aimbot or S.AimAssist or S.SilentAim) and not S.Panic; FOVc.Color=CT and Color3.fromRGB(255,70,70) or Color3.fromRGB(255,255,255) end
if CH[1] then local mp=aimPosition(); local s,g=S.CrosshairSize or 6,S.CrosshairGap or 3; local v=S.Crosshair
CH[1].From=Vector2.new(mp.X-s-g,mp.Y) CH[1].To=Vector2.new(mp.X-g,mp.Y) CH[1].Visible=v
CH[2].From=Vector2.new(mp.X+g,mp.Y) CH[2].To=Vector2.new(mp.X+s+g,mp.Y) CH[2].Visible=v
CH[3].From=Vector2.new(mp.X,mp.Y-s-g) CH[3].To=Vector2.new(mp.X,mp.Y-g) CH[3].Visible=v
CH[4].From=Vector2.new(mp.X,mp.Y+g) CH[4].To=Vector2.new(mp.X,mp.Y+s+g) CH[4].Visible=v
end
pcall(updateGrenadeTrajectory)
pcall(function() updatePerfectThrow(dt) end)
-- anti recoil (camera moves like mouse)
local shooting = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
if S.AntiRecoil and not S.Panic and (not S.AROnlyShoot or shooting) and shooting then
if not savedPitch then savedPitch=Cam.CFrame; shootStart=tick(); patternMul=1 end
if S.Pattern then patternMul=math.min(S.PatternCap,patternMul+(S.PatternScale or 0.15)*dt*60) end
local v = math.clamp((S.VStr or 2.4)*patternMul, 0, 20)
local h = ((math.floor((tick()-(shootStart or tick()))*10)%2==0) and 1 or -1)*(S.HStr or 0.6)*patternMul
local smooth = math.clamp(S.ARSmooth or 1, 0.2, 1)
local mode = S.ARMode or "Camera"
local skipAim = aimOn() or S.AimAssist
if not skipAim then
-- pixel deltas similar to mouse movement
local dx = h * dt * 60 * smooth
local dy = -v * dt * 60 * smooth
if (mode=="Mouse" or mode=="Both") and type(mousemoverel)=="function" then
mousemoverel(dx, dy)
end
if mode=="Camera" or mode=="Both" or type(mousemoverel)~="function" then
-- convert mouse-like deltas into camera pitch/yaw (approx degrees)
local sens = 0.0022 -- similar feel to mouse look
local yaw = -dx * sens
local pitch = -dy * sens
local cf = Cam.CFrame
local pos = cf.Position
-- yaw around world up, pitch around camera right
local rotated = CFrame.fromAxisAngle(Vector3.yAxis, yaw) * (cf - pos)
rotated = CFrame.fromAxisAngle(rotated.RightVector, pitch) * rotated
local look = rotated.LookVector
if S.LockPitch and savedPitch then
look = Vector3.new(look.X, savedPitch.LookVector.Y, look.Z)
if look.Magnitude > 1e-4 then look = look.Unit end
end
Cam.CFrame = CFrame.new(pos, pos + look)
end
elseif S.LockPitch and savedPitch and not aimOn() then
local look,pos,base=Cam.CFrame.LookVector,Cam.CFrame.Position,savedPitch.LookVector
local flat=Vector3.new(look.X,0,look.Z)
if flat.Magnitude>0.001 then Cam.CFrame=CFrame.new(pos,pos+Vector3.new(flat.Unit.X,base.Y,flat.Unit.Z).Unit) end
end
else
if savedPitch and (not shooting) then
-- small grace then reset spray state
if shootStart and tick()-shootStart > (S.ARReset or 0.2) then
savedPitch=nil; patternMul=1; shootStart=0
end
elseif not shooting then
savedPitch=nil; patternMul=1
end
end
if S.AntiRecoil or S.NoSpread or S.RapidFire or S.InfAmmo then
local char=LP.Character; local tool=char and char:FindFirstChildOfClass("Tool")
if tool then for _,value in ipairs(tool:GetDescendants()) do
if value:IsA("NumberValue") or value:IsA("IntValue") then
local name=value.Name:lower()
if S.AntiRecoil and (name:find("recoil",1,true) or name:find("kick",1,true) or name:find("punch",1,true) or name:find("shake",1,true)) then setProperty("AntiRecoil",value,"Value",0) end
if S.NoSpread and (name:find("spread",1,true) or name:find("bloom",1,true)) then setProperty("NoSpread",value,"Value",0) end
if S.RapidFire and value:IsA("NumberValue") and (name:find("cooldown",1,true) or name:find("delay",1,true)) then setProperty("RapidFire",value,"Value",0.02) end
if S.InfAmmo and (name:find("ammo",1,true) or name:find("clip",1,true)) then setProperty("InfAmmo",value,"Value",999) end
end
end end
end
if S.CustomFOV then setProperty("CustomFOV",Cam,"FieldOfView",S.FOVVal) end
if S.ThirdPerson then setProperty("ThirdPerson",LP,"CameraMaxZoomDistance",12); setProperty("ThirdPerson",LP,"CameraMinZoomDistance",8) end
if S.TimeChanger then setProperty("TimeChanger",Lighting,"ClockTime",S.TimeVal) end
if S.NoFlash and os.clock()-lastFlashScan>0.25 then
lastFlashScan=os.clock()
local playerGui=LP:FindFirstChildOfClass("PlayerGui")
if playerGui then
for _,g in ipairs(playerGui:GetDescendants()) do
if g:IsA("Frame") or g:IsA("ImageLabel") then
local name=g.Name:lower()
if name:find("flash",1,true) or name:find("blind",1,true) then setProperty("NoFlash",g,"Visible",false) end
end
end
end
end
if S.NoParticles and not particlesApplied then
particlesApplied=true
for _,object in ipairs(workspace:GetDescendants()) do
if object:IsA("ParticleEmitter") or object:IsA("Trail") or object:IsA("Smoke") then setProperty("NoParticles",object,"Enabled",false) end
end
end
if S.Orbit and not S.Panic and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
local t=getTarget(); if t then orbitAng+=S.OrbitSpd*dt; local o=Vector3.new(math.cos(orbitAng)*S.OrbitRng,0,math.sin(orbitAng)*S.OrbitRng); LP.Character.HumanoidRootPart.CFrame=CFrame.new(t.Position+o,t.Position) end
end
if LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
local hrp=LP.Character.HumanoidRootPart
if S.Spinbot then hrp.CFrame=hrp.CFrame*CFrame.Angles(0,math.rad(S.SpinSpd)*dt*60,0)
elseif S.AntiAim then hrp.CFrame=hrp.CFrame*CFrame.Angles(0,math.rad(math.random(-25,25)),0) end
end
-- Radar markers are reused until a player becomes invalid.
RadarF.Visible=S.Radar; RadarF.Size=UDim2.fromOffset(S.RadarSize or 140,S.RadarSize or 140); RadarF.Position=UDim2.new(1,-(S.RadarPosX or 160),0,S.RadarPosY or 20)
local radarRoot=LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
local seen={}
if S.Radar and radarRoot then
for _,player in ipairs(Players:GetPlayers()) do
local root=player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if root and alive(player) then
seen[player]=true
local dot=radarDots[player]
if not dot then dot=Instance.new("Frame",RadarF); dot.Size=UDim2.fromOffset(4,4); dot.BorderSizePixel=0; corner(dot,2); radarDots[player]=dot end
local rel=radarRoot.CFrame:PointToObjectSpace(root.Position)
local sc=S.RadarScale or 2; dot.Position=UDim2.new(0.5,math.clamp(rel.X/sc,-65,65)-2,0.5,math.clamp(rel.Z/sc,-65,65)-2)
dot.BackgroundColor3=S.ESPColor
end
end
end
for player,dot in pairs(radarDots) do if not seen[player] then dot:Destroy(); radarDots[player]=nil end end
end)
local aimRenderName="CombatHubAim_"..HS:GenerateGUID(false)
RS:BindToRenderStep(aimRenderName,Enum.RenderPriority.Camera.Value+1,function(dt)
if not running or S.Panic or not Gui.Parent or freecamConn then CT=nil; return end
local active=aimOn()
local assist=S.AimAssist and not bindingCapture and not UIS:GetFocusedTextBox() and not pointerOverMenu()
if not active and not assist then if S.SilentAim then getTarget() else CT=nil end; return end
local target=getTarget()
if not target then return end
local strength=active and S.Smooth or S.AssistStr
if active and not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then strength=S.HipfireSmooth end
if active then
local camera=workspace.CurrentCamera
if not camera then return end
local point=camera:WorldToViewportPoint(target.Position)
local distance=(Vector2.new(point.X,point.Y)-aimPosition()).Magnitude
local close=math.clamp(1-distance/math.max(S.FOV,1),0,1)
strength=strength+(1-strength)*S.SnapBlend*close
end
moveTo(target,strength,dt)
end)
connect(Gui.Destroying,function() RS:UnbindFromRenderStep(aimRenderName); S.Panic=true; CT=nil; HK=false; S.AimOn=false end)
connect(UIS.WindowFocusReleased,function() HK=false; S.AimOn=false; if cancelCapture then cancelCapture() end end)
connect(LP.CharacterAdded,function() CT=nil; HK=false; S.AimOn=false; savedPitch=nil end)
local lastShot=0
connect(RS.Heartbeat,function()
if S.Panic then return end
local shotDelay = (S.AutoShoot and S.AutoShootDelay) or S.TriggerDelay or 0.08
if (S.Triggerbot or S.AutoShoot) and tick()-lastShot>shotDelay and not bindingCapture and not UIS:GetFocusedTextBox() then
local menuHover=pointerOverMenu()
if not menuHover then
local fire=false
local camera=workspace.CurrentCamera
if S.Triggerbot and camera then
local aimPoint=aimPosition(); local ray=camera:ViewportPointToRay(aimPoint.X,aimPoint.Y)
local params=RaycastParams.new()
params.FilterType=Enum.RaycastFilterType.Exclude
local exclude={camera}
if LP.Character then table.insert(exclude,LP.Character) end
params.FilterDescendantsInstances=exclude; params.IgnoreWater=true
local range = math.max(S.TriggerRange or 22, 5)
local hit=workspace:Raycast(ray.Origin,ray.Direction*math.min(S.MaxDist, range*20),params)
if hit then
local model=hit.Instance
local player
while model and model~=workspace do
if model:IsA("Model") then player=Players:GetPlayerFromCharacter(model); if player then break end end
model=model.Parent
end
if player and alive(player) then
local sp,on = camera:WorldToViewportPoint(hit.Position)
local dist2d = on and (Vector2.new(sp.X,sp.Y)-aimPoint).Magnitude or math.huge
if dist2d <= (S.TriggerRange or 22) and wallOk(hit.Instance) then fire=true end
end
end
end
if not fire and S.AutoShoot then
local target=getTarget()
fire=target~=nil and lineOfSight(target)
end
if fire then
lastShot=tick()
click()
if S.HitMarker then showHitMarker() end
if S.BulletTrace then local t=CT; if t then showBulletTrace(t.Position) end end
end
end
end
if S.KillAura and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
local my=LP.Character.HumanoidRootPart.Position
for _,p in ipairs(Players:GetPlayers()) do
if alive(p) and p.Character:FindFirstChild("HumanoidRootPart") and (p.Character.HumanoidRootPart.Position-my).Magnitude<=S.AuraRange then
local tool=LP.Character:FindFirstChildOfClass("Tool"); if tool then pcall(function() tool:Activate() end) end; break
end
end
end
if S.Hitbox then
for _,p in ipairs(Players:GetPlayers()) do if alive(p) then
for _,n in ipairs(S.HeadOnly and {"Head"} or {"Head","HumanoidRootPart","UpperTorso","Torso"}) do
local part=p.Character and p.Character:FindFirstChild(n)
if part and part:IsA("BasePart") then setProperty("Hitbox",part,"Size",Vector3.new(S.HitboxSize,S.HitboxSize,S.HitboxSize)); setProperty("Hitbox",part,"Transparency",0.65); setProperty("Hitbox",part,"CanCollide",false) end
end
end end
else restoreModule("Hitbox") end
local char=LP.Character; if not char then return end
local hum=char:FindFirstChildOfClass("Humanoid"); if not hum then return end
if S.Speed then setProperty("Speed",hum,"WalkSpeed",S.SpeedVal) end
if S.JumpPow then setProperty("JumpPow",hum,"UseJumpPower",true); setProperty("JumpPow",hum,"JumpPower",S.JumpVal) end
if S.Bhop and hum.FloorMaterial~=Enum.Material.Air and UIS:IsKeyDown(Enum.KeyCode.Space) then hum.Jump=true end
if S.EdgeJump and hum.FloorMaterial~=Enum.Material.Air then
local root=char:FindFirstChild("HumanoidRootPart")
if root then local params=RaycastParams.new(); params.FilterType=Enum.RaycastFilterType.Exclude; params.FilterDescendantsInstances={char}; local r=workspace:Raycast(root.Position,Vector3.new(0,-(hum.HipHeight+root.Size.Y/2+0.6),0),params) if not r then hum.Jump=true end end
end
if S.CrouchSpam then setProperty("CrouchSpam",hum,"HipHeight",(os.clock()%.2<0.1) and 0.5 or 2) end
if S.God then hum.Health=hum.MaxHealth end
if S.AutoHeal and hum.Health<hum.MaxHealth*0.5 then hum.Health=math.min(hum.MaxHealth,hum.Health+1) end
if S.NoFall then
local states=humanoidStates[hum]
if not states then states={}; humanoidStates[hum]=states end
for _,state in ipairs({Enum.HumanoidStateType.FallingDown,Enum.HumanoidStateType.Ragdoll}) do
if states[state]==nil then states[state]=hum:GetStateEnabled(state) end
hum:SetStateEnabled(state,false)
end
end
if S.AntiStun then setProperty("AntiStun",hum,"WalkSpeed",math.max(hum.WalkSpeed,16)) end
if S.AirStrafe and hum.FloorMaterial==Enum.Material.Air and char:FindFirstChild("HumanoidRootPart") then
local hrp=char.HumanoidRootPart; local dir=Vector3.zero
if UIS:IsKeyDown(Enum.KeyCode.A) then dir-=Cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then dir+=Cam.CFrame.RightVector end
if dir.Magnitude>0 then hrp.AssemblyLinearVelocity=Vector3.new(dir.Unit.X*hrp.AssemblyLinearVelocity.Magnitude,hrp.AssemblyLinearVelocity.Y,dir.Unit.Z*hrp.AssemblyLinearVelocity.Magnitude) end
end
if S.ChatSpam and not chatBusy and tick()-lastChat>=S.ChatDelay then
lastChat=tick(); sendChatMessage(S.ChatMsg)
end
end)
connect(RS.RenderStepped,function()
if not S.Fly or S.Panic then return end
local char=LP.Character; if not char then return end; local hrp=char:FindFirstChild("HumanoidRootPart"); if not hrp then return end
if not BV or BV.Parent~=hrp or not BG or BG.Parent~=hrp then if BV then BV:Destroy() end; if BG then BG:Destroy() end; BV=Instance.new("BodyVelocity"); BV.MaxForce=Vector3.new(9e9,9e9,9e9); BV.Parent=hrp; BG=Instance.new("BodyGyro"); BG.MaxTorque=Vector3.new(9e9,9e9,9e9); BG.Parent=hrp end
Cam=workspace.CurrentCamera; if not Cam then return end
BG.CFrame=Cam.CFrame; local dir=Vector3.zero
if UIS:IsKeyDown(Enum.KeyCode.W) then dir+=Cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.S) then dir-=Cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.A) then dir-=Cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then dir+=Cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.Space) then dir+=Vector3.yAxis end
if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then dir-=Vector3.yAxis end
BV.Velocity=dir.Magnitude>0 and dir.Unit*S.FlySpeed or Vector3.zero
end)
connect(UIS.JumpRequest,function()
if S.Panic then return end
if S.InfJump and LP.Character then local h=LP.Character:FindFirstChildOfClass("Humanoid"); if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end
if S.LongJump and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then local hrp=LP.Character.HumanoidRootPart; hrp.AssemblyLinearVelocity=hrp.AssemblyLinearVelocity+Cam.CFrame.LookVector*80+Vector3.new(0,40,0) end
end)
connect(RS.Stepped,function()
if S.Noclip and not S.Panic and LP.Character then for _,p in ipairs(LP.Character:GetDescendants()) do if p:IsA("BasePart") then setProperty("Noclip",p,"CanCollide",false) end end end
end)
local ESPGui=Instance.new("ScreenGui")
ESPGui.Name="CombatHubESP"; ESPGui.IgnoreGuiInset=true; ESPGui.ResetOnSpawn=false; ESPGui.DisplayOrder=998
ESPGui.Parent=Gui.Parent
local function clearESP(p)
local pack=ESP[p]
if not pack then return end
for key,object in pairs(pack) do if key~="character" and typeof(object)=="Instance" then pcall(function() object:Destroy() end) end end
ESP[p]=nil
end
local function makeESP(p)
clearESP(p)
local pack={}
local box=Instance.new("Frame",ESPGui); box.BackgroundTransparency=1; box.BorderSizePixel=0; box.Visible=false
local outline=Instance.new("UIStroke",box); outline.Thickness=S.BoxThickness or 1.5
pack.box=box; pack.outline=outline
local text=Instance.new("TextLabel",ESPGui); text.BackgroundTransparency=1; text.TextStrokeTransparency=0.25; text.Font=Enum.Font.GothamBold; text.TextSize=S.NameSize or 12; text.TextWrapped=false; text.Visible=false
pack.text=text
local line=Instance.new("Frame",ESPGui); line.BorderSizePixel=0; line.AnchorPoint=Vector2.new(0.5,0.5); line.Visible=false
pack.line=line
pack.character=p.Character
ESP[p]=pack
return pack
end
local function projectedBounds(char,camera)
local cf,size=char:GetBoundingBox()
local minX,minY,maxX,maxY=math.huge,math.huge,-math.huge,-math.huge
for x=-1,1,2 do for y=-1,1,2 do for z=-1,1,2 do
local point=camera:WorldToViewportPoint(cf:PointToWorldSpace(Vector3.new(x*size.X/2,y*size.Y/2,z*size.Z/2)))
if point.Z<=0.1 then return nil end
minX=math.min(minX,point.X); minY=math.min(minY,point.Y)
maxX=math.max(maxX,point.X); maxY=math.max(maxY,point.Y)
end end end
local viewport=camera.ViewportSize
if maxX<0 or maxY<0 or minX>viewport.X or minY>viewport.Y then return nil end
return minX,minY,maxX,maxY
end
local espConnection=connect(RS.RenderStepped,function()
local camera=workspace.CurrentCamera
local enabled=not S.Panic and (S.Chams or S.NameESP or S.DistESP or S.HPESP or S.WeaponESP or S.BoxESP or S.Tracers)
if not camera or not enabled then for p in pairs(ESP) do clearESP(p) end; return end
for _,p in ipairs(Players:GetPlayers()) do
if p~=LP then
local char=p.Character
local root=char and char:FindFirstChild("HumanoidRootPart")
local localRoot=LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
local checkPart=char and (char:FindFirstChild("Head") or root)
local withinRange=root and (not localRoot or (root.Position-localRoot.Position).Magnitude<=(S.ESPMaxDist or S.MaxDist))
if not alive(p) or not root or not withinRange then clearESP(p)
else
local pack=ESP[p]
if not pack or pack.character~=char then pack=makeESP(p) end
local color=S.ESPColor
if S.Chams then
if not pack.hl then
local h=Instance.new("Highlight"); h.Adornee=char; h.FillTransparency=S.ChamsFill or 0.5; h.OutlineTransparency=S.ChamsOutline or 0; h.Parent=char; pack.hl=h
end
pack.hl.FillColor=color; pack.hl.OutlineColor=color; pack.hl.FillTransparency=S.ChamsFill or 0.5; pack.hl.OutlineTransparency=S.ChamsOutline or 0
pack.hl.DepthMode=(S.ChamsDepth=="Occluded") and Enum.HighlightDepthMode.Occluded or Enum.HighlightDepthMode.AlwaysOnTop
elseif pack.hl then pack.hl:Destroy(); pack.hl=nil end
local x1,y1,x2,y2=projectedBounds(char,camera)
pack.box.Visible=S.BoxESP and x1~=nil
pack.text.Visible=(S.NameESP or S.DistESP or S.HPESP or S.WeaponESP) and x1~=nil
pack.line.Visible=S.Tracers and x1~=nil
if x1 then
pack.box.Position=UDim2.fromOffset(x1,y1); pack.box.Size=UDim2.fromOffset(x2-x1,y2-y1); pack.outline.Color=color; pack.outline.Thickness=S.BoxThickness or 1.5
if S.HPBar then
if not pack.hpBg then
local bg=Instance.new("Frame",ESPGui); bg.BorderSizePixel=0; bg.BackgroundColor3=Color3.fromRGB(30,30,30); bg.Visible=false
local fill=Instance.new("Frame",bg); fill.BorderSizePixel=0; fill.BackgroundColor3=Color3.fromRGB(80,220,120); fill.Size=UDim2.new(1,0,1,0)
pack.hpBg=bg; pack.hpFill=fill
end
local hum=char:FindFirstChildOfClass("Humanoid")
local pct=hum and math.clamp(hum.Health/math.max(hum.MaxHealth,1),0,1) or 1
local bh=S.HPBarH or 3
pack.hpBg.Visible=true
pack.hpBg.Position=UDim2.fromOffset(x1,y2+2)
pack.hpBg.Size=UDim2.fromOffset(math.max(x2-x1,4),bh)
pack.hpFill.Size=UDim2.new(pct,0,1,0)
pack.hpFill.BackgroundColor3=Color3.fromRGB(255*(1-pct),220*pct,80)
elseif pack.hpBg then pack.hpBg.Visible=false end
local bits={}
if S.NameESP then table.insert(bits,p.DisplayName.." (@"..p.Name..")") end
if S.DistESP and localRoot then table.insert(bits,tostring(math.floor((root.Position-localRoot.Position).Magnitude)).." studs") end
if S.HPESP then local h=char:FindFirstChildOfClass("Humanoid"); if h then table.insert(bits,tostring(math.floor(h.Health)).." HP") end end
if S.WeaponESP then local tool=char:FindFirstChildOfClass("Tool"); if tool then table.insert(bits,tool.Name) end end
pack.text.Text=table.concat(bits," | "); pack.text.TextSize=S.NameSize or 12; pack.text.TextStrokeTransparency=(S.ESPTextOutline~=false) and 0.25 or 1
local drawColor=color
if S.RainbowESP then
local h=(os.clock()*(S.RainbowSpeed or 0.4))%1
drawColor=Color3.fromHSV(h,0.9,1)
elseif S.ESPTeamColor and p.Team and p.Team.TeamColor then
drawColor=p.Team.TeamColor.Color
end
pack.text.TextColor3=drawColor; color=drawColor
local width=math.max(x2-x1,360)
pack.text.Size=UDim2.fromOffset(width,20); pack.text.Position=UDim2.fromOffset((x1+x2-width)/2,y1-22)
local originMode=S.TracerOrigin or "Bottom"
local a
if originMode=="Center" then a=Vector2.new(camera.ViewportSize.X/2,camera.ViewportSize.Y/2)
elseif originMode=="Top" then a=Vector2.new(camera.ViewportSize.X/2,4)
else a=Vector2.new(camera.ViewportSize.X/2,camera.ViewportSize.Y-4) end
local b=Vector2.new((x1+x2)/2,y2); local delta=b-a; local center=(a+b)/2
pack.line.Position=UDim2.fromOffset(center.X,center.Y); pack.line.Size=UDim2.fromOffset(delta.Magnitude,S.TracerThickness or 1.5)
pack.line.Rotation=math.deg(math.atan2(delta.Y,delta.X)); pack.line.BackgroundColor3=color
end
end
end
end
end)
local espRemoving=connect(Players.PlayerRemoving,clearESP)
connect(Gui.Destroying,function()
espConnection:Disconnect(); espRemoving:Disconnect()
for p in pairs(ESP) do clearESP(p) end
ESPGui:Destroy()
end)
pcall(function() local vu=game:GetService("VirtualUser"); connect(LP.Idled,function() if S.AntiAFK then vu:CaptureController(); vu:ClickButton2(Vector2.new()) end end) end)
local function isAimKey(i) if S.AimKeyMouse then return i.UserInputType==S.AimKey end return i.KeyCode==S.AimKey end
connect(UIS.InputBegan,function(i,g)
if isAimKey(i) and S.Aimbot and not bindingCapture and not UIS:GetFocusedTextBox() and not pointerOverMenu() then
if S.AimMode=="Toggle" then S.AimOn=not S.AimOn else HK=true end
end
if g or bindingCapture or UIS:GetFocusedTextBox() then return end
if i.KeyCode==Enum.KeyCode.RightShift then Main.Visible=not Main.Visible end
if S.JigglePeek and S.JiggleMode=="Toggle" and typeof(S.JiggleKey)=="EnumItem" and S.JiggleKey.EnumType==Enum.KeyCode and i.KeyCode==S.JiggleKey then
jiggleOn = not jiggleOn
end
if i.KeyCode==S.PanicKey then if S.Panic then S.Panic=false else panicAll() end; return end
if S.Panic then return end
Cam=workspace.CurrentCamera; if not Cam then return end
if S.Dash and not pointerOverMenu() and i.KeyCode==Enum.KeyCode.Q and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
local hrp=LP.Character.HumanoidRootPart; hrp.AssemblyLinearVelocity=Cam.CFrame.LookVector*S.DashPower+Vector3.new(0,20,0)
end
if S.ClickTP and not pointerOverMenu() and i.UserInputType==Enum.UserInputType.MouseButton1 and Mouse.Hit and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then
LP.Character.HumanoidRootPart.CFrame=CFrame.new(Mouse.Hit.Position+Vector3.new(0,3,0))
end
if S.Freecam and i.KeyCode==Enum.KeyCode.P and UIS:IsKeyDown(Enum.KeyCode.LeftShift) then
if freecamConn then stopFreecam()
else
Cam=workspace.CurrentCamera; if not Cam then return end; freecamPos=Cam.CFrame; setProperty("Freecam",Cam,"CameraType",Enum.CameraType.Scriptable); setProperty("Freecam",Cam,"CFrame",freecamPos)
freecamConn=connect(RS.RenderStepped,function(dt)
if S.Panic or not S.Freecam or UIS:GetFocusedTextBox() then return end
local dir=Vector3.zero
if UIS:IsKeyDown(Enum.KeyCode.W) then dir+=Cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.S) then dir-=Cam.CFrame.LookVector end
if UIS:IsKeyDown(Enum.KeyCode.A) then dir-=Cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.D) then dir+=Cam.CFrame.RightVector end
if UIS:IsKeyDown(Enum.KeyCode.E) then dir+=Vector3.yAxis end
if UIS:IsKeyDown(Enum.KeyCode.Q) then dir-=Vector3.yAxis end
freecamPos=freecamPos+dir*60*dt; Cam.CFrame=CFrame.new(freecamPos.Position,freecamPos.Position+freecamPos.LookVector)
end)
end
end
end)
connect(UIS.InputEnded,function(i) if isAimKey(i) then HK=false end end)
connect(workspace.DescendantAdded,function(object)
if not S.Panic and S.NoParticles and (object:IsA("ParticleEmitter") or object:IsA("Trail") or object:IsA("Smoke")) then setProperty("NoParticles",object,"Enabled",false) end
end)
panicAll=function()
for key,value in pairs(S) do
if type(value)=="boolean" and key~="AimKeyMouse" and key~="Panic" then S[key]=false end
end
S.Panic=true; S.AimOn=false; HK=false; CT=nil; bindingCapture=false; jiggleOn=false
if cancelCapture then cancelCapture() end
stopFreecam()
pcall(function() if VIM then VIM:SendKeyEvent(false, S.CrouchKey or Enum.KeyCode.LeftShift, false, game) end end)
if BV then BV:Destroy(); BV=nil end
if BG then BG:Destroy(); BG=nil end
restoreAll(); particlesApplied=false
for player in pairs(ESP) do clearESP(player) end
for player,dot in pairs(radarDots) do dot:Destroy(); radarDots[player]=nil end
WM.Visible=false; RadarF.Visible=false
if FOVc then FOVc.Visible=false end
for _,line in pairs(CH) do line.Visible=false end
for _,refresh in ipairs(configRefresh) do pcall(refresh) end
end
dispose=function(destroyGui)
if not running then return end
intentionalLeave=true
panicAll()
running=false
pcall(function() RS:UnbindFromRenderStep(aimRenderName) end)
for _,connection in ipairs(connections) do pcall(function() connection:Disconnect() end) end
table.clear(connections)
if FOVc then pcall(function() FOVc:Remove() end); FOVc=nil end
for key,line in pairs(CH) do pcall(function() line:Remove() end); CH[key]=nil end
for _,line in ipairs(grenLines) do pcall(function() line:Remove() end) end
table.clear(grenLines)
for _,c in ipairs(grenDots) do pcall(function() c:Remove() end) end
table.clear(grenDots)
pcall(function() if grenImpact then grenImpact:Remove() end end)
pcall(function() if grenImpactX1 then grenImpactX1:Remove() end end)
pcall(function() if grenImpactX2 then grenImpactX2:Remove() end end)
grenImpact,grenImpactX1,grenImpactX2=nil,nil,nil
pcall(function() ESPGui:Destroy() end)
if destroyGui then pcall(function() Gui:Destroy() end) end
end
Gui.Destroying:Connect(function() dispose(false) end)
print("[combat hub] audited build loaded | RShift = menu | End = panic | unimplemented modules are labeled")
task.defer(runAutoExec)Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: games.roblox.com.

Universal