Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
Workspace = :()
Debris = :()
LocalPlayer = Players.LocalPlayer
Mouse = LocalPlayer:()
character = LocalPlayer.Character LocalPlayer.CharacterAdded:()
hrp = character:()
humanoid = character:()
camera = Workspace.CurrentCamera
leftSwingAnimId =
rightSwingAnimId =
ok, toggleRemote = (()
LocalPlayer:()
:()
:()
:()
:()
:()
)
ok toggleRemote =
toggleArgs = { , }
SIDE_DISTANCE =
SAFE_DISTANCE =
GETUP_FIRE_DISTANCE =
SELFYEET_MIN_INTERVAL =
YEET_MIN_INTERVAL =
YEET_TRIGGER_DISTANCE =
MOVE_INTERVAL =
BACKSTEP_DISTANCE =
GETUP_SPAM_INTERVAL =
SWING_PRIORITY_THRESHOLD =
COMBO_INTERVAL =
SELFYEET_DASH_SPEED =
MAX_YEET_LEAD_TIME =
PREDICT_MIN_DIST =
LATERAL_LEAD_BIAS =
VULN_DOT_THRESHOLD =
VULN_DIST_MIN =
VULN_DIST_MAX =
PREEMPT_SELFYEET_COOLDOWN =
SELFYEET_MIN_RANGE =
CAM_STICK_DISTANCE =
CAM_HEIGHT =
CAM_SMOOTH_ALPHA =
BASE_DOWN_TILT =
AIR_DOWNWARD_AIM_OFFSET =
AIR_DOWNWARD_SELFYEET_BOOST=
ENEMY_RECENT_SWING_TIME =
SAFETY_LATERAL_EVASION =
SAFETY_FORWARD_PULLBACK =
ORBIT_MIN_STEP =
ORBIT_MAX_STEP =
STRIKE_ARC_DEG =
STRIKE_CORRIDOR_WIDTH =
LATERAL_DRIVE_BIAS =
STUCK_TIME =
STUCK_DIST_EPS =
REPULSE_WHEN_TOOCLOSE =
MOVE_TO_TIMEOUT =
HAND_INVERT =
YAW_OFFSET_DEG =
ROLL_LEAN_DEG =
HAND_LEAN_TIME =
LEAN_ANGLE_DEG =
LEAN_DIST_BASE =
LEAN_DIST_NEAR =
LEAN_FORWARD_PUSH =
BEHIND_RADIUS =
BEHIND_SIDE_OFFSET =
BEHIND_EXTRA_LEAD_TIME =
SWITCH_SIDE_COOLDOWN =
BEHIND_SCORE_FRONT_PENALTY =
BEHIND_SCORE_SIDE_BONUS =
BEHIND_CLOSE_RADIUS_MIN =
BEHIND_CLOSE_RADIUS_MAX = SAFE_DISTANCE +
BACK_ENTRY_BOOST =
RUNNING =
CONNS = {}
(conn) conn .(CONNS, conn) ; conn
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.Parent = LocalPlayer:()
statusLabel = .()
statusLabel.Size = .(, , , )
statusLabel.Position = .(, -, , )
statusLabel.BackgroundTransparency =
statusLabel.BackgroundColor3 = .(, , )
statusLabel.TextColor3 = .(, , )
statusLabel.TextScaled =
statusLabel.Font = .Font.GothamMedium
statusLabel.Text =
statusLabel.Parent = gui
gyro = .()
gyro.MaxTorque = .(, , )
gyro.P =
gyro.D =
gyro.CFrame = hrp.CFrame
gyro.Parent = hrp
previousCameraType = camera.CameraType
camera.CameraType = .CameraType.Scriptable
currentCamCFrame = camera.CFrame
selectedTargets, highlights, targetLastSwing = {}, {}, {}
(plr)
plr.Character
h = highlights[plr]
h h.Parent
h = .()
h.Name = .. plr.Name
h.FillTransparency =
h.OutlineTransparency =
h.OutlineColor = .(, , )
h.DepthMode = .HighlightDepthMode.Occluded
h.Parent = plr.Character
highlights[plr] = h
(plr) h = highlights[plr]; h h:() ; highlights[plr] =
(plr)
plr plr == LocalPlayer
plr.Character plr.Character:()
selectedTargets[plr] selectedTargets[plr] = ; (plr)
selectedTargets[plr] = ; (plr)
(inst)
inst
model = inst:()
model
Players:(model)
(Mouse.Button1Down:(()
RUNNING
UserInputService:()
plr = (Mouse.Target)
plr (plr)
))
(Players.PlayerAdded:((plr)
(plr.CharacterAdded:(()
selectedTargets[plr] .(); (plr)
))
))
()
character = LocalPlayer.Character
character
hrp = character:()
humanoid = character:()
character hrp humanoid
()
list = {}
plr, v (selectedTargets)
v plr.Character plr.Character:()
.(list, plr)
list
()
best, bestDist
pos = hrp.Position
plr, v (selectedTargets)
v plr.Character plr.Character:()
d = (plr.Character.HumanoidRootPart.Position - pos).Magnitude
bestDist d < bestDist best, bestDist = plr, d
best, bestDist
(name)
backpack = LocalPlayer:()
backpack LocalPlayer.Character
tool = LocalPlayer.Character:(name) backpack:(name)
tool
tool.Parent ~= LocalPlayer.Character tool.Parent = LocalPlayer.Character
tool
(tool) tool (tool.Activate) == (() tool:() )
(part)
part part:()
okVel, vel = (() part.AssemblyLinearVelocity )
okVel (vel) == vel
part.Velocity
.zero
(myPos, targetHRP, dashSpeed, extraLead)
targetPos = targetHRP.Position
toTarget = targetPos - myPos
dist = toTarget.Magnitude
dist < PREDICT_MIN_DIST targetPos
toTargetUnit = toTarget.Unit
targetVel = (targetHRP)
radial = targetVel:(toTargetUnit)
lateral = targetVel - toTargetUnit * radial
approxTime = .(dist / .(dashSpeed, ), , MAX_YEET_LEAD_TIME + (extraLead ))
targetPos + lateral * approxTime * LATERAL_LEAD_BIAS + toTargetUnit * (radial * * approxTime)
(predicted, targetHRP, enemyLastSwingTime)
targetHRP predicted
now = ()
enemyMidSwing = enemyLastSwingTime (now - enemyLastSwingTime) <= ENEMY_RECENT_SWING_TIME
enemyMidSwing predicted
enemyLook = targetHRP.CFrame.LookVector
enemyRight = targetHRP.CFrame.RightVector
toPredUnit = (predicted - targetHRP.Position).Unit
.(enemyLook:(toPredUnit)) >
predicted = predicted - enemyLook * SAFETY_FORWARD_PULLBACK
predicted = predicted + enemyRight * ((.() < ) -SAFETY_LATERAL_EVASION SAFETY_LATERAL_EVASION)
predicted
(desired)
currentCamCFrame = currentCamCFrame:(desired, CAM_SMOOTH_ALPHA)
camera.CFrame = currentCamCFrame
(lookPoint, isSelfYeet)
myPos = hrp.Position
state = humanoid:()
inAir = (state == .HumanoidStateType.Freefall) (state == .HumanoidStateType.Jumping)
extraDown = BASE_DOWN_TILT
inAir extraDown = extraDown + AIR_DOWNWARD_AIM_OFFSET + (isSelfYeet AIR_DOWNWARD_SELFYEET_BOOST )
flatDir = .(lookPoint.X, myPos.Y, lookPoint.Z) - myPos
flatDir.Magnitude < flatDir = hrp.CFrame.LookVector
dirUnit = flatDir.Unit
camPos = myPos - dirUnit * CAM_STICK_DISTANCE + .(, CAM_HEIGHT, )
desired = .(camPos, lookPoint - .(, extraDown, ))
(desired)
(v, rad)
c, s = .(rad), .(rad)
.(v.X * c - v.Z * s, , v.X * s + v.Z * c)
(pos, forwardFlatUnit, yawOffsetRad, rollRad)
f = (forwardFlatUnit, yawOffsetRad)
f.Magnitude < f = .(,,-)
f = f.Unit
upWorld = .(,,)
right = upWorld:(f).Unit
up = f:(right).Unit
rollRad ~=
cr, sr = .(rollRad), .(rollRad)
r2 = right*cr + up*sr
u2 = f:(r2).Unit
right, up = r2, u2
.(pos, right, up, -f)
(targetHRP)
toTarget = targetHRP.Position - hrp.Position
dist = toTarget.Magnitude
dist < VULN_DIST_MIN dist > VULN_DIST_MAX , dist
toTargetUnit = toTarget.Unit
myRight = hrp.CFrame.RightVector
sideExposure = .(myRight:(toTargetUnit))
sideExposure >= VULN_DOT_THRESHOLD, dist
myLastSwingTime, mySwingActiveUntil = ,
myCurrentHandBias, myHandBiasUntil = ,
(humanoid.AnimationPlayed:((trackObj)
RUNNING
trackObj trackObj.Animation trackObj.Animation.AnimationId
animId = trackObj.Animation.AnimationId
animId == leftSwingAnimId animId == rightSwingAnimId
myLastSwingTime = ()
mySwingActiveUntil = myLastSwingTime + SWING_PRIORITY_THRESHOLD
handSign = (animId == rightSwingAnimId) -
HAND_INVERT handSign = -handSign
myCurrentHandBias = handSign
myHandBiasUntil = myLastSwingTime + HAND_LEAN_TIME
))
(plr)
plr plr == LocalPlayer
plr.Character
thum = plr.Character:(); thum
thum:()
tag = .(); tag.Name = ; tag.Parent = thum
(thum.AnimationPlayed:((trackObj)
RUNNING
trackObj trackObj.Animation trackObj.Animation.AnimationId
animId = trackObj.Animation.AnimationId
animId == leftSwingAnimId animId == rightSwingAnimId
targetLastSwing[plr] = ()
))
_, plr (Players:())
plr ~= LocalPlayer
plr.Character (plr)
(plr.CharacterAdded:(() .(); RUNNING (plr) ))
(Players.PlayerAdded:((plr)
plr ~= LocalPlayer
(plr.CharacterAdded:(() .(); RUNNING (plr) ))
))
lastSideChoice, lastSideTick = ,
(myPos, targetHRP)
basePred = (myPos, targetHRP, SELFYEET_DASH_SPEED, BEHIND_EXTRA_LEAD_TIME)
tCF = targetHRP.CFrame
tLook = tCF.LookVector
tRight = tCF.RightVector
tVel = (targetHRP)
lateralVel = tVel - tLook * tVel:(tLook)
driftSign = (lateralVel:(tRight) >= ) -
() - lastSideTick > SWITCH_SIDE_COOLDOWN
lastSideChoice, lastSideTick = driftSign, ()
behind = basePred - tLook * BEHIND_RADIUS
candRight = behind + tRight * BEHIND_SIDE_OFFSET
candLeft = behind - tRight * BEHIND_SIDE_OFFSET
(pt, sideSign)
toPt = (pt - basePred)
flatToPt = .(toPt.X, , toPt.Z)
flatToPt.Magnitude < -.huge
unit = flatToPt.Unit
behindness = (-tLook):(unit)
frontPenalty = .(, tLook:(unit)) * BEHIND_SCORE_FRONT_PENALTY
sideBonus = (sideSign == lastSideChoice) BEHIND_SCORE_SIDE_BONUS
myFwd = (pt - myPos); myFwd = .(myFwd.X, , myFwd.Z)
approach = (myFwd.Magnitude > ) (myFwd.Unit:(unit))
behindness - frontPenalty + sideBonus + *approach
sRight = (candRight, )
sLeft = (candLeft, -)
best = sRight >= sLeft candRight candLeft
lastSideChoice = (sRight >= sLeft) -
best
lastSelfYeetTime, lastPreemptSelfYeet = ,
() (() - lastSelfYeetTime) >= SELFYEET_MIN_INTERVAL
(point, isSelfYeet)
()
(point, isSelfYeet)
tool = ()
tool (tool); lastSelfYeetTime = ();
(targetPlr)
targetPlr targetPlr.Character targetPlr.Character:()
targetHRP = targetPlr.Character.HumanoidRootPart
targetPoint = (hrp.Position, targetHRP)
targetPoint = (targetPoint, targetHRP, targetLastSwing[targetPlr])
(targetPoint, )
()
tool = () ()
tool
(tool)
myLastSwingTime = ()
mySwingActiveUntil = myLastSwingTime + SWING_PRIORITY_THRESHOLD
(forwardFlatUnit, rightFlatUnit, sign, degrees)
rad = .(.(degrees , , ))
d = forwardFlatUnit * .(rad) + rightFlatUnit * (sign) * .(rad)
d.Magnitude < forwardFlatUnit
d.Unit
activeWaypoint =
lastProgressTime, lastProgressDist = , .huge
moving =
moveStartTick =
(behindness)
BEHIND_CLOSE_RADIUS_MAX - (BEHIND_CLOSE_RADIUS_MAX - BEHIND_CLOSE_RADIUS_MIN) * .(behindness, , )
(myPos, targetHRP, preferSign)
tPos = targetHRP.Position
tCF = targetHRP.CFrame
tLook = tCF.LookVector
vecTM = (myPos - tPos); vecTM = .(vecTM.X, , vecTM.Z)
unitTM = (vecTM.Magnitude > ) vecTM.Unit -tLook
behindness = .(, (-tLook):(unitTM))
desiredR = (behindness)
f = (tPos - myPos); f = .(f.X, , f.Z); f.Magnitude < f = .(,,-) ; f=f.Unit
r = .(,,):(f).Unit
sign = preferSign
sign ==
dotFacing = targetHRP.CFrame.RightVector:(-(tPos - myPos).Unit)
sign = (dotFacing > ) -
forwardBoost = BACK_ENTRY_BOOST * behindness
drive = (r * sign * LATERAL_DRIVE_BIAS + f + f * (forwardBoost / .(desiredR,))).Unit
curR = (tPos - myPos).Magnitude
closenessToRing = .(curR - desiredR)
stepBase = .(curR * , ORBIT_MIN_STEP, ORBIT_MAX_STEP)
step = stepBase * (closenessToRing > )
candidate = myPos + drive * step
v = candidate - tPos
v = .(v.X, , v.Z)
v.Magnitude >
candidate = tPos + v.Unit * desiredR
entryDir = (f + r * sign).Unit
angleToEntry = .(.(.(entryDir:((candidate - tPos).Unit), -, )))
angleToEntry > STRIKE_ARC_DEG
toward = (entryDir + ((candidate - tPos).Unit))*
toward.Magnitude >
candidate = tPos + toward.Unit * (desiredR - STRIKE_CORRIDOR_WIDTH*)
candidate = candidate + entryDir * (STRIKE_CORRIDOR_WIDTH * )
.(candidate.X, myPos.Y, candidate.Z), behindness, desiredR
(point)
activeWaypoint = point
moveStartTick = ()
lastProgressTime = moveStartTick
lastProgressDist = (activeWaypoint - hrp.Position).Magnitude
moving =
humanoid:(activeWaypoint)
(humanoid.MoveToFinished:(() moving = ))
(targetHRP, preferSign)
now = ()
myPos = hrp.Position
activeWaypoint moving
wp = (myPos, targetHRP, preferSign)
(wp)
distNow = (activeWaypoint - myPos).Magnitude
distNow + STUCK_DIST_EPS < lastProgressDist
lastProgressDist = distNow
lastProgressTime = now
tDist = (targetHRP.Position - myPos).Magnitude
tDist < SAFE_DISTANCE *
f = .(targetHRP.Position.X - myPos.X, , targetHRP.Position.Z - myPos.Z).Unit
(myPos - f * REPULSE_WHEN_TOOCLOSE)
(now - moveStartTick) > MOVE_TO_TIMEOUT (now - lastProgressTime) > STUCK_TIME
wp = (myPos, targetHRP, preferSign)
(wp)
(now - moveStartTick) >
steer = (myPos, targetHRP, preferSign)
activeWaypoint = activeWaypoint:(steer, )
humanoid:(activeWaypoint)
currentAction =
lastActionTime =
lastGetupTime =
(RunService.RenderStepped:(()
RUNNING
()
closestTarget, _ = ()
closestTarget
statusLabel.Text =
tHRP = closestTarget.Character closestTarget.Character:()
tHRP statusLabel.Text = ;
myPos = hrp.Position
tPos = tHRP.Position
toTarget = tPos - myPos
distanceToTarget = toTarget.Magnitude
toTargetUnit = (distanceToTarget > ) toTarget.Unit hrp.CFrame.LookVector
preferSign =
() <= myHandBiasUntil myCurrentHandBias ~=
preferSign = (myCurrentHandBias > ) -
(tHRP, preferSign)
() <= myHandBiasUntil myCurrentHandBias ~=
fwdFlat = .(toTargetUnit.X, , toTargetUnit.Z).Unit
rightFlat = .(,,):(fwdFlat).Unit
leanDir = (fwdFlat, rightFlat, (myCurrentHandBias>) -, LEAN_ANGLE_DEG)
closeness = .((SAFE_DISTANCE + - distanceToTarget) / , , )
leanDist = LEAN_DIST_BASE + (LEAN_DIST_NEAR - LEAN_DIST_BASE) * closeness
forcePoint = myPos + leanDir * leanDist + fwdFlat * LEAN_FORWARD_PUSH
humanoid:(forcePoint)
distanceToTarget > .(SAFE_DISTANCE + , SELFYEET_MIN_RANGE + )
(closestTarget)
fwdFlat = .(toTargetUnit.X, , toTargetUnit.Z).Unit
camLook = myPos + fwdFlat *
camFrom = myPos - fwdFlat * CAM_STICK_DISTANCE + .(, CAM_HEIGHT, )
desiredCFrame = .(camFrom, camLook - .(, BASE_DOWN_TILT, ))
currentCamCFrame = currentCamCFrame:(desiredCFrame, CAM_SMOOTH_ALPHA)
camera.CFrame = currentCamCFrame
yawOffset =
rollLean =
() <= myHandBiasUntil myCurrentHandBias ~=
sign = (myCurrentHandBias > ) -
yawOffset = .(sign * YAW_OFFSET_DEG)
rollLean = .(sign * ROLL_LEAN_DEG)
gyro.CFrame = (hrp.Position, fwdFlat, yawOffset, rollLean)
selfVuln, _ = (tHRP)
selfVuln distanceToTarget > SELFYEET_MIN_RANGE (() - lastPreemptSelfYeet) >= PREEMPT_SELFYEET_COOLDOWN
behindPoint = (myPos, tHRP)
behindPoint = (behindPoint, tHRP, targetLastSwing[closestTarget])
(behindPoint, ) lastPreemptSelfYeet = ()
distanceToTarget <= YEET_TRIGGER_DISTANCE
() - lastActionTime >= COMBO_INTERVAL
tool = (currentAction)
tool
(tool)
myLastSwingTime = ()
mySwingActiveUntil = myLastSwingTime + SWING_PRIORITY_THRESHOLD
myHandBiasUntil = myLastSwingTime + HAND_LEAN_TIME
currentAction = (currentAction == )
lastActionTime = ()
tLook = tHRP.CFrame.LookVector
behindnessVec = (myPos - tPos); behindnessVec = .(behindnessVec.X,,behindnessVec.Z)
behindness =
behindnessVec.Magnitude >
behindness = .(, (-tLook):(behindnessVec.Unit))
statusLabel.Text = .(
,
#(()), closestTarget.Name, distanceToTarget,
behindness,
(lastSideChoice== (lastSideChoice> )),
YAW_OFFSET_DEG
)
toggleRemote distanceToTarget <= GETUP_FIRE_DISTANCE
(() - lastGetupTime) >= GETUP_SPAM_INTERVAL
(() toggleRemote:((toggleArgs)) )
lastGetupTime = ()
))
lastCheckedSwing = {}
(RunService.RenderStepped:(()
RUNNING
now = ()
plr, _ (selectedTargets)
plr.Character
root = plr.Character:(); root
t = targetLastSwing[plr]
t (lastCheckedSwing[plr] t <= lastCheckedSwing[plr])
lastCheckedSwing[plr] = t
dist = (root.Position - hrp.Position).Magnitude
iAmMidSwing = now <= mySwingActiveUntil
theyHitBeforeMe = iAmMidSwing
theyHitBeforeMe
dist > SELFYEET_MIN_RANGE
pt = (hrp.Position, root)
pt = (pt, root, t)
(pt, )
toward = (root.Position - hrp.Position); toward = .(toward.X,,toward.Z).Unit
rightFlat = .(,,):(toward).Unit
sign = (.() < ) -
juke = (toward + rightFlat * sign).Unit
humanoid:(hrp.Position + juke * )
()
dist <= SELFYEET_MIN_RANGE ()
))
()
RUNNING
RUNNING =
_, c (CONNS) (() c:() )
.(CONNS)
plr,_ (highlights) (plr)
.(highlights); .(selectedTargets); .(targetLastSwing); .(lastCheckedSwing)
(() camera.CameraType = previousCameraType .CameraType.Custom )
(() gui gui:() )
(() gyro gyro.Parent gyro:() )
(() .Parent = )
(() Debris:(, ) )
(() :() )
(UserInputService.InputBegan:((input, processed)
processed
input.KeyCode == .KeyCode.X
()
input.KeyCode == .KeyCode.H
HAND_INVERT = HAND_INVERT
))
fighter bot, REQUIRES TITAN AND SELFYEET

Ragdoll Testing