Run it
Copy the script and paste it into your executor.
()
()
Players=:()
RunService=:()
Workspace=:()
UIS=:()
StarterGui=:()
LocalPlayer=Players.LocalPlayer
hasVIM, VIM = (() :() )
Character=LocalPlayer.Character LocalPlayer.CharacterAdded:()
HRP=Character:(,)
Settings={
Enabled=,
HoldBefore=,
HoldAfter=,
DoubleEGap=,
DiveDuration=,
TriggerDist=,
MinOffset=,
CentralThreshold=,
MinSpeed=,
Cooldown=,
Trajectory=,
}
diving=
lastDive=
TrackedBalls={}
cachedBalls={}
lastScan=
goalCenter=
(t,m) (,t,m) (() StarterGui:(,{Title=t,Text=m,Duration=}) )
(k,down) hasVIM (() VIM:(down,k,,) )
() (.KeyCode.E,) .() (.KeyCode.E,) .(Settings.DoubleEGap) (.KeyCode.E,) .() (.KeyCode.E,)
(dir, reason)
diving
()-lastDive < Settings.Cooldown
diving= lastDive=()
side=
dir> side= dir< side=
(..side, reason)
.(()
mk=
dir> mk=.KeyCode.D dir< mk=.KeyCode.A
(.(, side, reason))
(.KeyCode.W, )
mk (mk,)
.(Settings.HoldBefore)
()
.(Settings.HoldAfter)
(.KeyCode.A,) (.KeyCode.D,) (.KeyCode.W,)
.(Settings.Cooldown)
diving=
)
(()
_, obj (Workspace:())
obj.Name:():()
part=
obj:() part=obj part=obj:(, )
part (part.Position-HRP.Position).Magnitude<
goalCenter=part.Position
(, obj.Name)
goalCenter goalCenter=HRP.Position - HRP.CFrame.LookVector*
)
(o) o n=o.Name n:(,)== n:():()
(m) m:() m m:() m.PrimaryPart m:(, )
()
now=()
now-lastScan < cachedBalls
lastScan=now
found={}
_, child (Workspace:()) (child) p=(child) p .(found,p)
_, fname ({,}) folder=Workspace:(fname) folder _,ch (folder:()) p=(ch) p .(found,p)
#found== _, obj (Workspace:()) #found>= (obj) p=(obj) p p.Size.Magnitude< (Character p:(Character)) dup= _,f (found) f==p dup= dup .(found,p)
cachedBalls=found
found
()
now=()
all=()
_,bp (all)
d=TrackedBalls[bp]
d
TrackedBalls[bp]={part=bp,lastPos=bp.Position,lastTime=now,aiVel=.(,,),realVel=bp.AssemblyLinearVelocity,lastSpeed=,shotTime=,shooterName=,shooterLook=,history={}}
(, bp.Parent.Name)
dt=now-d.lastTime
dt>=
aiV=(bp.Position-d.lastPos)/dt
aiV=d.aiVel:(aiV, )
d.lastPos=bp.Position d.lastTime=now d.realVel=bp.AssemblyLinearVelocity
speed=.(d.aiVel.Magnitude, d.realVel.Magnitude)
d.lastSpeed< speed>
d.shotTime=now
nearest=
nearestDist=
_,pl (Players:())
pl.Character pl.Character:()
hrp=pl.Character.HumanoidRootPart
dist=(hrp.Position-bp.Position).Magnitude
dist<nearestDist dist< nearestDist=dist nearest=pl
nearest
d.shooterName=nearest.Name
hrp=nearest.Character:()
hrp d.shooterLook=hrp.CFrame.LookVector
(.(, nearest.Name, nearestDist, speed))
(.(, bp.Parent.Name, d.lastSpeed, speed))
d.lastSpeed=speed
.(d.history,{vel=d.aiVel,t=now})
#d.history> .(d.history,)
p,_ (TrackedBalls) p.Parent TrackedBalls[p]=
(data, relPos, relVel, timeTo)
typ=
curveCorr=
conf=
shooterOffset=
futureY=relPos.Y + relVel.Y*timeTo + *(-)*timeTo*timeTo
#data.history>=
o=data.history[].vel
n=data.history[#data.history].vel
o.Magnitude> n.Magnitude>
dot=.(o.Unit:(n.Unit),-,)
ang=.(.(dot))
HRP
delta=n-o
relDelta=HRP.CFrame:(delta)
.(relDelta.X)> ang> ang<
typ=
curveCorr=relDelta.X*
ang>
typ=
conf=
data.shooterLook ()-data.shotTime< HRP
relLook=HRP.CFrame:(data.shooterLook)
shooterOffset=relLook.X**timeTo
futureX=relPos.X + relVel.X*timeTo + curveCorr**timeTo*timeTo + shooterOffset
conf< futureX=futureX*
goalCenter
toGoal=goalCenter - data.part.Position
toGoal.Magnitude> toGoal.Magnitude<
relGoal=HRP.CFrame:(goalCenter)
conf<
futureX=futureX* + relGoal.X*
typ, futureX, futureY, conf, curveCorr, shooterOffset
()
HRP
best=
bestScore=-
part,data (TrackedBalls)
part part.Parent
vel=data.aiVel
data.realVel.Magnitude>vel.Magnitude+ vel=data.realVel
speed=vel.Magnitude
speed>=Settings.MinSpeed
pos=part.Position
toP=HRP.Position-pos
dist=toP.Magnitude
dist<=Settings.TriggerDist
approach=vel:(toP.Unit)
approach>
shotRecent=()-data.shotTime<
isDrib=
shotRecent
_,pl (Players:())
pl~=LocalPlayer pl.Character pl.Character:()
(pl.Character.HumanoidRootPart.Position-pos).Magnitude< speed< isDrib=
isDrib HRP (HRP.Position-pos).Magnitude< speed< isDrib=
isDrib
timeTo=dist/.(speed,)
timeTo<=
relP=HRP.CFrame:(pos)
relV=HRP.CFrame:(vel)
typ, futureX, futureY, conf, curve, shooterOff=(data, relP, relV, timeTo)
absX=.(futureX)
absX>=Settings.MinOffset absX<=
score=approach* + speed* - dist* - absX*
shotRecent score=score+
dist> score=score+
typ== score=score+
score>bestScore
bestScore=score
dir=futureX> -
absX < Settings.CentralThreshold dir=
best={part=part,vel=vel,speed=speed,dist=dist,timeTo=timeTo,futureX=futureX,futureY=futureY,dir=dir,score=score,name=part.Parent.Name,typ=typ,conf=conf,curve=curve,shooterOff=shooterOff,shotRecent=shotRecent,shooterName=data.shooterName }
best
(th)
base=
th.speed>= base=
th.speed>= base=
th.speed>= base=
base=
th.dist> base=base+
th.dist> base=base+
base=base + .(th.futureX)*
th.typ== base=base+
th.typ== base=
th.dist< th.timeTo< base=
base
trajFolder=Workspace:()
trajFolder trajFolder=.() trajFolder.Name= trajFolder.Parent=Workspace
b0=.() b0.Anchored= b0.CanCollide= b0.Transparency= b0.Size=.(,,) b0.Parent=trajFolder
b1=.() b1.Anchored= b1.CanCollide= b1.Transparency= b1.Size=.(,,) b1.Parent=trajFolder
a0=.(,b0) a1=.(,b1)
beam=.() beam.Attachment0=a0 beam.Attachment1=a1 beam.Width0= beam.Width1= beam.FaceCamera= beam.LightEmission= beam.Enabled= beam.Parent=b0
marker=.() marker.Anchored= marker.CanCollide= marker.Shape=.PartType.Ball marker.Material=.Material.Neon marker.Size=.(,,) marker.Transparency= marker.Parent=trajFolder
bill=.() bill.Size=.(,,,) bill.StudsOffset=.(,,) bill.AlwaysOnTop= bill.Parent=marker
label=.() label.Size=.(,,,) label.BackgroundTransparency= label.BackgroundColor3=.(,,) label.TextColor3=.(,,) label.TextScaled= label.TextWrapped= label.Parent=bill
RunService.Heartbeat:(()
(()
()
th=()
Settings.Trajectory th
b0.CFrame=.(th.part.Position)
b1.CFrame=.(th.part.Position + th.vel*th.timeTo)
beam.Enabled=
marker.CFrame=.(th.part.Position + th.vel*th.timeTo)
marker.Transparency=
th.speed> beam.Color=ColorSequence.(.(,,)) marker.Color=.(,,)
th.typ== beam.Color=ColorSequence.(.(,,)) marker.Color=.(,,)
th.typ== beam.Color=ColorSequence.(.(,,)) marker.Color=.(,,)
beam.Color=ColorSequence.(.(,,)) marker.Color=.(,,)
dirStr=th.dir== th.dir>
label.Text=.(, th.typ, dirStr, th.speed, th.name, th.shooterName , th.futureY, th.timeTo, (th), th.shotRecent )
beam beam.Enabled=
marker marker.Transparency=
Settings.Enabled diving th
perfect=(th)
th.timeTo <= perfect
(.(, th.name, th.typ, th.dist, th.speed, th.futureY, th.timeTo, perfect, th.dir))
(th.dir, .(, th.name, th.typ, th.dist, th.speed, th.futureY, th.timeTo, perfect, th.shotRecent , th.dir))
)
)
.(()
.()
(, )
(, )
.()
(, )
.()
(-, )
.()
(, )
()
)
Workspace.ChildAdded:((c) (c) .() p=(c) p TrackedBalls[p]={part=p,lastPos=p.Position,lastTime=(),aiVel=.(,,),realVel=p.AssemblyLinearVelocity,lastSpeed=,shotTime=,history={},shooterName=,shooterLook=} )
UIS.InputBegan:((inp,gp)
gp
inp.KeyCode==.KeyCode.H (,)
inp.KeyCode==.KeyCode.J (-,)
inp.KeyCode==.KeyCode.M (,)
inp.KeyCode==.KeyCode.Y () all=() (,#all) _,p (all) d=TrackedBalls[p] (p.Parent.Name, , HRP .((p.Position-HRP.Position).Magnitude) , , d .(.(d.aiVel.Magnitude,d.realVel.Magnitude)) )
inp.KeyCode==.KeyCode.P Settings.Trajectory= Settings.Trajectory (, Settings.Trajectory ) Settings.Trajectory beam.Enabled= marker.Transparency=
inp.KeyCode==.KeyCode.G Settings.Enabled= Settings.Enabled (, Settings.Enabled )
)
(, )tutorial: press 5 on your keyboard (pc only script) then execute the script and enjoy also the script will probably only work in real matches because in public there are multiple balls

Universal