Run it
Copy the script and paste it into your executor.
player = :().LocalPlayer
mouse = player:()
cam = .CurrentCamera
char = player.Character
Torsoz = char:()
RA = char:()
LA = char:()
RL = char:()
LL = char:()
H = char:()
Hu = char:()
RS = Torsoz:()
LS = Torsoz:()
RH = Torsoz:()
LH = Torsoz:()
N = Torsoz:()
NV = .(,,)
FOV =
Shift, Space, Sitting = ,,
GravPoint =
Diving =
DivingCooldown =
DivingDir = NV
DivingCF = .(,,)
DivingBG, DivingBV
HWallRunning =
HWRGravDrop =
HWRLastPart
HWRCooldown =
HWRDir
VWallRunning =
VWRLastPart
VWRCooldown =
VWRLeft,VWRRight = ,
Sliding =
SlideCooldown =
Standing =
Action =
animplus =
animspeed =
animangle =
Joint1, Joint2, Joint3, Joint4, Joint5
i, v (char:())
(v.className == v.Name == ) v.className == v.className == v.className == v.Name ==
v:()
loadids = {, , }
stamina =
maxstamina =
defsprint =
sprint = defsprint
pause = .(, char)
pause.Name =
pause.Value =
flow = .(, char)
flow.Name =
flow.Value =
flowcooldown =
m = .(, char)
m.Name =
P = .()
P.Name =
P.formFactor =
P.Size = .(,,)
P.Locked =
P.Anchored =
P.CanCollide =
P.TopSurface =
P.BottomSurface =
.Name =
hue =
(H,S,V)
H = H %
C = V * S
H2 = H/
X = C * ( - .((H2 %) -))
color = .(,,)
H2 <=
color = .(C,,)
<= H2 H2 <=
color = .(C,X,)
<= H2 H2 <=
color = .(X,C,)
<= H2 H2 <=
color = .(,C,X)
<= H2 H2 <=
color = .(,X,C)
<= H2 H2 <=
color = .(X,,C)
<= H2 H2 <=
color = .(C,,X)
m = V - C
.(color.r + m, color.g + m, color.b + m)
(weld)
weld:() ==
a = .(, weld)
a.Name =
weld:() ==
a = .(, weld)
a.Name =
weld:() ==
a = .(, weld)
a.Name =
weld.C0.p, .(weld.XAngle.Value, weld.YAngle.Value, weld.ZAngle.Value)
(weld, i, loops, origpos,origangle, nextpos,nextangle)
weld:() ==
a = .(, weld)
a.Name =
weld:() ==
a = .(, weld)
a.Name =
weld:() ==
a = .(, weld)
a.Name =
tox,toy,toz = ,,
origangle.x > nextangle.x
tox = -.(origangle.x - nextangle.x) /loops*i
tox = .(origangle.x - nextangle.x) /loops*i
origangle.y > nextangle.y
toy = -.(origangle.y - nextangle.y) /loops*i
toy = .(origangle.y - nextangle.y) /loops*i
origangle.z > nextangle.z
toz = -.(origangle.z - nextangle.z) /loops*i
toz = .(origangle.z - nextangle.z) /loops*i
tox2,toy2,toz2 = ,,
origpos.x > nextpos.x
tox2 = -.(origpos.x - nextpos.x) /loops*i
tox2 = .(origpos.x - nextpos.x) /loops*i
origpos.y > nextpos.y
toy2 = -.(origpos.y - nextpos.y) /loops*i
toy2 = .(origpos.y - nextpos.y) /loops*i
origpos.z > nextpos.z
toz2 = -.(origpos.z - nextpos.z) /loops*i
toz2 = .(origpos.z - nextpos.z) /loops*i
weld.XAngle.Value = origangle.x + tox
weld.YAngle.Value = origangle.y + toy
weld.ZAngle.Value = origangle.z + toz
weld.C0 = .(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2) * .(origangle.x + tox,origangle.y + toy,origangle.z + toz)
()
pls = :()
i, v (loadids)
pls:(..v)
()
()
()
i, v (player.PlayerGui:())
v.className == v.Name ==
v:()
g = .(, player.PlayerGui)
g.Name =
c = .(, g)
c.Visible =
c.Size = .(,,,)
c.BackgroundTransparency =
c.Position = .(,-,,-)
c.Name =
t = .(, c)
t.Size = .(,,-,)
t.Position = .(,,,)
t.TextXAlignment =
t.Font =
t.TextTransparency =
t.TextColor3 = .(,,)
t.TextStrokeColor3 = .(,,)
t.TextStrokeTransparency =
t.FontSize =
t.BackgroundTransparency =
t2 = t:()
t2.Parent = c
t2.Size = .(,,,)
l = t:()
l.Parent = c
l.Size = .(,,,)
l.Text =
f1 = .(, c)
f1.Name =
f1.ClipsDescendants =
f1.Size = .(,,,)
f1.BackgroundColor3 = .(,,)
f1.BackgroundTransparency =
f1img = .(, f1)
f1img.BackgroundTransparency =
f1img.Image =
f1img.Size = .(,,,c.Size.Y.Offset)
f2 = .(, c)
f2.Name =
f2.ClipsDescendants =
f2.Size = .(,,,)
f2.BackgroundColor3 = .(,,)
f2.BackgroundTransparency =
f2img = .(, f2)
f2img.BackgroundTransparency =
f2img.Image =
f2img.Size = .(,,,c.Size.Y.Offset)
()
ysize = c.Size.Y.Offset
per = (stamina/maxstamina) * c.Size.Y.Offset
rem = (-(stamina/maxstamina-)) * c.Size.Y.Offset
f1.Size = .(,,,rem)
f2.Size = .(,,,per)
f2.Position = .(,,,rem)
f2img.Position = .(,,,-rem)
t.Text = .(stamina)
t2.Text = maxstamina
()
()
c.Visible =
()
player.CharacterAdded:(()
char = player.Character
Torsoz = char:()
RA = char:()
LA = char:()
RL = char:()
LL = char:()
H = char:()
Hu = char:()
RS = Torsoz:()
LS = Torsoz:()
RH = Torsoz:()
LH = Torsoz:()
N = Torsoz:()
stamina = maxstamina
()
)
(pos, dir, startpos, endpos, distleft, collidedlist)
collidedlist = collidedlist {char}
startpos = startpos pos
distleft = distleft dir.unit * dir.magnitude
endpos = endpos pos + distleft
ray = Ray.(pos, distleft)
hitz,enz = :(ray, collidedlist)
hitz ~=
hitz.CanCollide ==
.(collidedlist, hitz)
newpos = enz
newdistleft = distleft - (dir.unit * (pos - newpos).magnitude)
newdistleft ~= NV
(newpos-(dir*), dir, startpos, endpos, newdistleft+(dir*), collidedlist)
hitz, enz, ray
()
Standing =
hitz,enz = (Torsoz.Position, .(,-,))
tordir = .(Torsoz.CFrame.lookVector.x,,Torsoz.CFrame.lookVector.z)
(hitz ~= hitz.CanCollide == )
cf = .(enz+.(,,), enz+.(,,)+tordir) * .(.pi/,,)
hitz2,enz2 = (enz+.(,,), tordir*-)
Hu.PlatformStand =
Torsoz.CFrame = cf
bp = .(, Torsoz)
bp.Name =
bp.maxForce = .(/,/,/)
bp.D =
bp.position = cf.p
bg = .(, Torsoz)
bg.Name =
bg.maxTorque = .(/,/,/)
bg.cframe = cf
bg.D =
(Joint1,,, NV,NV, .(,-,), .((.pi/)-(.pi/),,.pi/))
(Joint2,,, NV,NV, .(-,-,), .((.pi/)-(.pi/),,-.pi/))
hitz2 ~= hitz2.CanCollide ==
Joint3.C0 = .(,,-) * .(,.pi/,) * .(.pi/,,)
Joint4.C0 = .(-,,-) * .(,-.pi/,) * .(.pi/,,)
Joint5.C0 = .(,,) * .(-.pi/,,)
(Joint3,,, NV,NV, .(,,), .(-(.pi/)-(.pi/),,.pi/))
(Joint4,,, NV,NV, .(-,,), .(-(.pi/)-(.pi/),,-.pi/))
(Joint5,,, NV,NV, .(,,), .(-.pi/,,))
Sitting =
Action =
()
Hu.PlatformStand =
Sitting ==
tordir = Torsoz.Position + (Torsoz.CFrame.lookVector*)
cf = .(Torsoz.Position + .(,,), .(tordir.x,Torsoz.Position.y,tordir.z))
Torsoz.CFrame = cf
i, v (Torsoz:())
v.Name ==
v:()
RH.Part0 =
LH.Part0 =
RS.Part0 =
LS.Part0 =
Joint1.Part0 = Torsoz
Joint1.Part1 = RL
Joint1.C0 = .(,-,)
Joint1.C1 = .(,,)
Joint2.Part0 = Torsoz
Joint2.Part1 = LL
Joint2.C0 = .(-,-,)
Joint2.C1 = .(,,)
Joint3.Part0 = Torsoz
Joint3.Part1 = RA
Joint3.C0 = .(,,)
Joint3.C1 = .(,,)
Joint4.Part0 = Torsoz
Joint4.Part1 = LA
Joint4.C0 = .(-,,)
Joint4.C1 = .(,,)
Joint5.Part0 = Torsoz
Joint5.Part1 = H
Joint5.C0 = .(,,)
Joint5.C1 = .(,-,)
Sitting =
Diving =
Standing =
Action =
()
stamina = stamina -
flow.Value = flow.Value +
flow.Value >
flow.Value =
Standing =
dir = .(Torsoz.CFrame.lookVector.x,,Torsoz.CFrame.lookVector.z)
GravPoint =
DivingDir = dir
cf = .(Torsoz.Position, dir+.(,Torsoz.Position.y,))
DivingCF = cf
DivingDir = dir
Hu.PlatformStand =
bv = .(, Torsoz)
bv.Name =
bv.maxForce = .(/,/,/)
bv.velocity = .(DivingDir.x*,GravPoint,DivingDir.z*)
DivingBV = bv
bg = .(, Torsoz)
bg.Name =
bg.maxTorque = .(/,/,/)
bg.cframe = .(Torsoz.Position, Torsoz.Position+bv.velocity) * .(-.pi/,,)
bg.D =
DivingBG = bg
joint = Joint3
joint.C1 = .(,,)
joint2 = Joint4
joint2.C1 = .(,,)
joint3 = Joint1
joint3.C1 = .(,,)
joint4 = Joint2
joint4.C1 = .(,,)
joint5 = Joint5
Diving =
Action =
i = ,
(joint,i,, .(,,), NV, .(,,), .(-,-.pi/,.pi/))
(joint2,i,, .(-,,), NV, .(-,,), .(-,.pi/,-.pi/))
(joint3,i,, .(,-,), NV, .(,-,), .(-,-.pi/,.pi/))
(joint4,i,, .(-,-,), NV, .(-,-,), .(-,.pi/,-.pi/))
(joint5,i,, .(,,), NV, .(,,), .(,,))
()
counter =
Diving ==
counter = counter +
bg.Parent = Torsoz
hitz, enz = (Torsoz.Position, bv.velocity.unit*)
hitz ~= hitz.CanCollide ==
hitz2, enz2 = (Torsoz.Position, .(,-,))
hitz2 ~=
Diving =
Action =
Torsoz.CFrame = Torsoz.CFrame * .(,-,)
Torsoz.Velocity = NV
flow.Value =
counter >
()
bv.velocity = (dir*) + .(,-,)
bgcf = bg.cframe
haslanded =
count =
haslanded ==
bg.cframe = bgcf * .(-*count,,)
hitz, enz = (Torsoz.Position, ((Torsoz.CFrame*.(,-,)).p - Torsoz.CFrame.p).unit*)
hitz ~= hitz.CanCollide ==
haslanded =
hitz2, enz2 = (Torsoz.Position, .(,-,))
hitz2 ==
Torsoz.Velocity = NV
haslanded ==
bp = .(, Torsoz)
bp.Name =
bp.maxForce = .(,/,)
bp.P =
bp.position = enz2 + .(,,)
:():(bp, )
bv.velocity = (dir*) + .(,-(Torsoz.Position - enz2).magnitude*,)
count = count +
count <=
i = count
j1,j1a = (joint)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
(joint,i,, j1,j1a, .(,,-), .(.pi/,,-.pi/))
(joint2,i,, j2,j2a, .(-,,-), .(.pi/,,.pi/))
(joint3,i,, j3,j3a, .(,,-), .(-,,))
(joint4,i,, j4,j4a, .(-,,-), .(-,,-))
(joint5,i,, j5,j5a, .(,,), .(-,,))
count >=
()
Torsoz.Velocity = NV
()
DivingCooldown =
(part, position)
obj = part.CFrame:(position)
siz = part.Size/
i,v (.NormalId:())
vec = .(v)
wvec = part.CFrame:(vec)
vz = (obj)/(siz*vec)
(.(vz.X-) < .(vz.Y-) < .(vz.Z-) < )
wvec,vec
part.className ==
part.CFrame:(.(,,-)), .(,,-)
(part, pos, side)
(part.className == part.Shape == .PartType.Block) part.className ~=
flow.Value = flow.Value +
Standing =
HWallRunning =
Action =
GravPoint =
HWRLastPart = part
dir, dirc = (part, pos)
towall = -dir
dir = (.(NV, dir) * .(,side,)).lookVector
bv = .(, Torsoz)
bv.Name =
bv.maxForce = .(/,/,/)
bv.P =
bv.velocity = (dir*(sprint-)) + .(,GravPoint,)
bg = .(, Torsoz)
bg.Name =
bg.maxTorque = .(/,/,/)
bg.cframe = .(Torsoz.Position+(towall*-), Torsoz.Position) * .(,-side,-side/)
bg.D =
sid = .()
joint1 = Joint3
side == -.pi/
(joint1,,, NV,NV, .(,,), .(.pi/,,.pi/))
sid = joint1
(joint1,,, NV,NV, .(,,), .(-.pi/,,.pi/))
j1c0 = joint1.C0
joint2 = Joint4
side == .pi/
(joint2,,, NV,NV, .(-,,), .(.pi/,-,-.pi/))
sid = joint2
(joint2,,, NV,NV, .(-,,), .(-.pi/,,-.pi/))
j2c0 = joint2.C0
joint3 = Joint1
joint3.C1 = .(,,)
side == -.pi/
(joint3,,, NV,NV, .(,-,-), .(,.pi/,))
(joint3,,, NV,NV, .(,-,-), .(,.pi/,))
joint4 = Joint2
joint4.C1 = .(,,)
side == -.pi/
(joint4,,, NV,NV, .(-,-,-), .(,,))
(joint4,,, NV,NV, .(-,-,-), .(,,))
joint5 = Joint5
(joint5,,,NV,NV,.(,,),.(,,side/))
Torsoz.CFrame = .(pos+(towall*-), pos) * .(,-side,-side/)
bg.cframe = .(pos+(towall*-), pos) * .(,-side,-side/)
aniangle =
aniplus =
aniangle2 =
aniplus2 =
prevpart = part
HWRLastPart = part
HWallRunning ==
aniangle > .pi
aniplus =
aniangle < -.pi
aniplus =
aniplus ==
aniangle = aniangle +
aniplus ==
aniangle = aniangle -
aniangle2 > .pi
aniplus2 =
aniangle2 < -.pi
aniplus2 =
aniplus2 ==
aniangle2 = aniangle2 +
aniplus2 ==
aniangle2 = aniangle2 -
Hu.PlatformStand =
hitz, enz = (Torsoz.Position, .(,-,))
hitz2, enz2 = (Torsoz.Position, towall*)
hitz ~= hitz.CanCollide ==
bg.cframe = .(enz2+(towall*-), enz2) * .(,-side,)
offset = (bg.cframe.p.y+enz2.y) - bg.cframe.p.y
Torsoz.CFrame = .(.(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * .(,-side,)
Torsoz.Velocity = NV
hitz2 ~= hitz2.CanCollide ==
hitz2 ~= prevpart
direct = .(Torsoz.Position, Torsoz.Position+dir) * .(,side,)
hitz3, enz3 = (Torsoz.Position, (direct * .(,-side/,)).lookVector*)
hitz3 ~=
Torsoz.CFrame = .(enz2+(towall*-), enz2) * .(,-side*,-side/)
bg.cframe = .(enz2+(towall*-), enz2) * .(,-side*,-side/)
dir, dirc = (hitz2, enz2)
towall = -dir
dir = (.(NV, dir) * .(,side,)).lookVector
prevpart = hitz2
HWRLastPart = hitz2
Torsoz.CFrame = .(Torsoz.Position, Torsoz.Position+dir)
bg.cframe = .(Torsoz.Position, Torsoz.Position+dir)
Torsoz.Velocity = NV
HWRCooldown =
Torsoz.CFrame = .(enz2+(towall*-), enz2) * .(,-side,-side/)
bg.cframe = .(enz2+(towall*-), enz2) * .(,-side,-side/)
Torsoz.CFrame = .(Torsoz.Position, Torsoz.Position+dir)
bg.cframe = .(Torsoz.Position, Torsoz.Position+dir)
Torsoz.Velocity = NV
HWRCooldown =
hitz3, enz3 = (Torsoz.Position, Torsoz.CFrame.lookVector*)
hitz3 ~= hitz3.CanCollide ==
Torsoz.CFrame = .(Torsoz.Position, Torsoz.Position+dir)
bg.cframe = .(Torsoz.Position, Torsoz.Position+dir)
Torsoz.Velocity = NV
HWRCooldown =
bv.Parent = Torsoz
bv.velocity = (dir*(sprint-)) + .(,GravPoint,)
bg.cframe = bg.cframe * .(aniangle/,aniangle/,)
Torsoz.CFrame = Torsoz.CFrame * .(aniangle/,aniangle/,)
j3,j3a = (joint3)
j4,j4a = (joint4)
(joint3,,, j3,j3a, j3,.(-+(aniangle/),,))
(joint4,,, j4,j4a, j4,.(-+(-aniangle/),,))
side == .pi/
j1,j1a = (joint1)
(joint1,,, j1,j1a, j1, .(,,+(aniangle2/)))
j2,j2a = (joint2)
(joint2,,, j2,j2a, j2, .(,,--(aniangle2/)))
()
GravPoint < -
bg.cframe = .(enz2+(towall*-), enz2) * .(,-side,)
offset = .((bg.cframe.p.y+enz2.y) - bg.cframe.p.y)
Torsoz.CFrame = .(.(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * .(,-side,)
HWallRunning ==
HWRCooldown =
joint1.C1 = .(,,)
joint2.C1 = .(,,)
side == -.pi/
joint2.C0 = .(-,,) * .(,side/,-.pi/)
joint2.C0 = .(-,,) * .(,side/,-.pi/)
joint3.C1 = .(,,)
side == -.pi/
joint3.C0 = .(,-,) * .(,.pi+(side/),-.pi/)
joint3.C0 = .(,-,) * .(,(side/),.pi/)
joint4.MaxVelocity =
joint4.DesiredAngle =
joint4.C1 = .(,,)
side == -.pi/
joint4.C0 = .(-,-,) * .(,.pi+(side/),.pi/)
joint4.C0 = .(-,-,) * .(,(side/),-.pi/)
joint5 = Joint5
joint5.C1 = .(,-,) * .(,side/,)
joint5.C0 = .(,,)
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
GravPoint =
collidecount =
bgangle = side/
count =
dir2 = (.(NV, dir) * .(,-side/,)).lookVector
HWRDir = dir2
bv.velocity = (dir2*(sprint+)) + .(,GravPoint,)
HWallRunning ==
hitz, enz = (Torsoz.Position, .(,-,))
hitz2, enz2 = (Torsoz.Position, dir2*)
hitz ~= hitz.CanCollide ==
offset = .(enz.y - Torsoz.CFrame.p.y)
Torsoz.CFrame = .(enz+.(,,), enz+.(,,)+dir2)
Torsoz.Velocity = NV
hitz2 ~= hitz2.CanCollide ==
collidecount = collidecount +
collidecount ==
Torsoz.CFrame = .(Torsoz.Position, Torsoz.Position+dir2) * .(,,)
Torsoz.Velocity = .(,Torsoz.Velocity.y,)
HWRCooldown =
VWRCooldown =
()
side/ >
bgangle >
bgangle = bgangle -
bgangle < -
bgangle = bgangle +
count <=
side == -.pi/
(joint1,count,, j1,j1a, .(,,), .(,side/,.pi/))
(joint2,count,, j2,j2a, .(-,,), .(,side/,-.pi/))
(joint3,count,, j3,j3a, .(,-,), .(,-side/,))
joint3.C0 = joint3.C0 * .((-.pi/)/*count,,)
(joint4,count,, j4,j4a, .(-,-,), .(,-side/,))
joint4.C0 = joint4.C0 * .((.pi/)/*count,,)
(joint1,count,, j1,j1a, .(,,), .(,side/,.pi/))
(joint2,count,, j2,j2a, .(-,,), .(,side/,-.pi/))
(joint3,count,, j3,j3a, .(,-,), .(,-side/,))
joint3.C0 = joint3.C0 * .((.pi/)/*count,,)
(joint4,count,, j4,j4a, .(-,-,), .(,-side/,))
joint4.C0 = joint4.C0 * .((-.pi/)/*count,,)
count = count +
bg.Parent = Torsoz
bg.cframe = .(NV, dir) * .(,side/,-bgangle)
bv.velocity = (dir2*(sprint+)) + .(,GravPoint,)
collidecount ~=
bv.velocity = .(,bv.velocity.y,)
GravPoint < -
()
Hu.PlatformStand =
bv:()
HWRGravDrop =
()
HWallRunning =
(part, pos)
(part.className == part.Shape == .PartType.Block) part.className ~=
()
flow.Value = flow.Value +
Standing =
VWallRunning =
Action =
GravPoint =
percent =
VWRLastPart = part
dir, dirc = (part, pos)
towall = -dir
dir = (.(NV, -dir) * .(.pi/,,)).lookVector
bv = .(, Torsoz)
bv.Name =
bv.maxForce = .(/,/,/)
bv.P =
bv.velocity = (dir*(sprint-))*percent
bg = .(, Torsoz)
bg.Name =
bg.maxTorque = .(/,/,/)
bg.D =
posi = pos + (-towall*)
bg.cframe = .(posi, posi+towall) * .((.pi/),,)
Torsoz.CFrame = .(posi, posi+towall) * .((.pi/),,)
joint1 = Joint3
(joint1,,, NV,NV, .(,,-), .(-.pi/,,.pi/))
joint2 = Joint4
(joint2,,, NV,NV, .(-,,-), .(-.pi/,,-.pi/))
joint3 = Joint1
(joint3,,, NV,NV, .(,-,-), .(,.pi/,))
joint3.C1 = .(,,) * .(,.pi/,)
joint4 = Joint2
(joint4,,, NV,NV, .(-,-,-), .(,.pi/,))
joint4.C1 = .(,,) * .(,.pi/,)
joint5 = Joint5
(joint5,,, NV,NV, .(,,), .(.pi/,,))
aniangle =
aniplus =
VWallRunning ==
hitz, enz = (Torsoz.Position, towall*)
hitz2, enz2 = (Torsoz.Position, (.(NV,towall)*.(.pi/,,)).lookVector*)
aniangle > .pi
aniplus =
aniangle < -.pi
aniplus =
aniplus ==
aniangle = aniangle + (*(percent+))
aniplus ==
aniangle = aniangle - (*(percent+))
bv.velocity = (dir*(sprint-))*percent
VWRLeft ==
bv.velocity = bv.velocity + ((.(NV, towall) * .(,.pi/,)).lookVector * (*percent+))
VWRRight ==
bv.velocity = bv.velocity - ((.(NV, towall) * .(,.pi/,)).lookVector * (*percent+))
bg.cframe = .(posi, posi+towall) * .((.pi/),,) * .(,aniangle/,)
(joint1,,, NV,NV, .(,,-), .(-.pi/,aniangle/,(.pi/)+(aniangle/)))
(joint2,,, NV,NV, .(-,,-), .(-.pi/,aniangle/,(-.pi/)+(-aniangle/)))
(joint3,,, NV,NV, .(,-,-(aniangle/)), .(,.pi/,(aniangle/)-))
(joint4,,, NV,NV, .(-,-,(aniangle/)), .(,.pi/,(-aniangle/)-))
hitz ==
lv = Torsoz.Position + (Torsoz.CFrame.lookVector*)
Torsoz.CFrame = .(Torsoz.Position, .(lv.x,Torsoz.Position.y,lv.z))
hitz2 ~=
percent =
VWallRunning =
Action =
GravPoint = -
()
percent = percent -
percent <=
VWallRunning =
Action =
VWallRunning ==
GravPoint = GravPoint -
dirpos = (-towall *) + .(,GravPoint,)
bv.velocity = .(NV, dirpos).lookVector * dirpos.magnitude
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
counter =
VWallRunning ==
counter = counter +
hitz, enz = (H.Position, .(,-,))
dirpos = (-towall *) + .(,GravPoint,)
bv.velocity = .(NV, dirpos).lookVector * dirpos.magnitude
VWRLeft ==
bv.velocity = bv.velocity + ((.(NV, towall) * .(,.pi/,)).lookVector * )
VWRRight ==
bv.velocity = bv.velocity - ((.(NV, towall) * .(,.pi/,)).lookVector * )
bg.cframe = .(NV, (-towall*) + .(,GravPoint,)) * .(-.pi/,.pi,)
counter <=
(joint1,counter,, j1,j1a, .(,,-), .(.pi/,,.pi/))
(joint2,counter,, j2,j2a, .(-,,-), .(.pi/,,-.pi/))
(joint3,counter,, j3,j3a, .(,-,), .(,.pi/,.pi/))
joint3.C1 = .(, + (/*counter), - (/*counter)) * .(,.pi/,)
(joint4,counter,, j4,j4a, .(-,-,), .(,.pi/,.pi/))
joint4.C1 = .(, + (/*counter), - (/*counter)) * .(,.pi/,)
(joint5,counter,, j5,j5a, .(,,), .(-.pi/,,))
hitz ~=
bv:()
Torsoz.CFrame = .(enz+.(,,), (enz+.(,,)) + ((-towall*) + .(,GravPoint,))) * .(-.pi/,.pi,)
Torsoz.Velocity = NV
Torsoz.RotVelocity = NV
bp = .(, Torsoz)
bp.maxForce = .(/,/,/)
bp.position = Torsoz.CFrame.p
:():(bp, )
flow.Value =
GravPoint > -
GravPoint = GravPoint -
counter >
()
bp = .()
counter2 = counter
bgangleplus =
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
landingpos
VWallRunning ==
counter2 = counter2 +
hitz, enz = (H.Position+.(,,), .(,-,))
counter2 - counter <
bgangleplus = bgangleplus - ((.pi*)/)
counter2 - counter <=
(joint1,counter2-counter,, j1,j1a, .(,,), .(.pi/,,.pi/))
(joint2,counter2-counter,, j2,j2a, .(-,,), .(.pi/,-,-.pi/))
(joint3,counter2-counter,, j3,j3a, .(,-,-), .(,.pi/,))
(joint4,counter2-counter,, j4,j4a, .(-,-,-), .(,.pi/,))
(joint5,counter2-counter,, j5,j5a, .(,,), .(-.pi/,,))
dirpos = (-towall *) + .(,GravPoint,)
bv.velocity = .(NV, dirpos).lookVector * dirpos.magnitude
VWRLeft ==
bv.velocity = bv.velocity + ((.(NV, towall) * .(,.pi/,)).lookVector * )
VWRRight ==
bv.velocity = bv.velocity - ((.(NV, towall) * .(,.pi/,)).lookVector * )
bg.cframe = .(NV, (-towall*) + .(,GravPoint,)) * .((-.pi/) + bgangleplus,.pi,)
hitz ~=
bv:()
landingpos = enz - (towall*)
counter2 - counter >
bp = .(, Torsoz)
bp.maxForce = .(/,/,/)
bp.position = enz+.(,,) + (-towall*)
VWallRunning =
Torsoz.CFrame = bg.cframe + (enz+.(,,))
Torsoz.Velocity = NV
Torsoz.RotVelocity = NV
bp = .(, Torsoz)
bp.maxForce = .(/,/,/)
bp.position = Torsoz.CFrame.p
:():(bp, )
flow.Value =
GravPoint > -
GravPoint = GravPoint -
counter2 >
()
VWallRunning ==
()
joint3.C1 = .(,,) * .(,.pi/,)
joint4.C1 = .(,,) * .(,.pi/,)
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
a
mesh
GravPoint < -
a = P:()
a.Parent = Torsoz
a.Name =
a.BrickColor = BrickColor.()
a.Transparency =
a.CFrame = .(landingpos+.(,,))
mesh = .(, a)
mesh.MeshId =
mesh.Scale = .(,,)
bgcf = .(NV, .(towall.x,,towall.z))
bg.cframe = bgcf * .(-.pi/,,)
bgval = .pi//
i = ,
Hu.PlatformStand =
(joint1,i,, j1,j1a, .(,,), .(.pi/,,.pi/))
(joint2,i,, j2,j2a, .(-,,), .(.pi/,-,-.pi/))
(joint3,i,, j3,j3a, .(,-,-), .(,.pi/,-.pi/))
(joint4,i,, j4,j4a, .(-,-,-), .(,.pi/,-.pi/))
(joint5,i,, j5,j5a, .(,,), .(-.pi/,,))
bp.position = bp.position + .(,-,)
bg.cframe = bgcf * .((-bgval*) + (bgval/*i),,)
Torsoz.CFrame = bg.cframe + bp.position
a ~=
mesh.Scale = mesh.Scale + .(,,)
a.Transparency = + (/*i)
()
a ~=
a:()
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
i = ,
Hu.PlatformStand =
(joint1,i,, j1,j1a, .(,,), .(,,))
(joint2,i,, j2,j2a, .(-,,), .(,,))
(joint3,i,, j3,j3a, .(,-,), .(,.pi/,))
(joint4,i,, j4,j4a, .(-,-,), .(,.pi/,))
(joint5,i,, j5,j5a, .(,,), .(,,))
bp.position = bp.position + .(,,)
bg.cframe = bgcf * .(-bgval + (bgval/*i),,)
Torsoz.CFrame = bg.cframe + bp.position
()
bp:()
bv:()
bg:()
VWallRunning =
()
(pos)
flow.Value = flow.Value +
Action =
Sliding =
GravPoint = Torsoz.Velocity.y
spd = .(Torsoz.Velocity.x,,Torsoz.Velocity.z).magnitude +
dir = .(Torsoz.Velocity.x,,Torsoz.Velocity.z).unit
bv = .(, Torsoz)
bv.maxForce = .(/,/,/)
bv.velocity = dir*spd
bg = .(, Torsoz)
bg.maxTorque = .(/,/,/)
bg.cframe = .(NV, dir) * .(.pi/,,)
joint1 = Joint1
joint2 = Joint2
joint3 = Joint3
joint4 = Joint4
joint5 = Joint5
j1,j1a = (joint1)
j2,j2a = (joint2)
(joint1,,, NV,NV, .(j1.x,j1.y,j1.z), .(j1a.x,.pi/,j1a.z))
joint1.C1 = .(,,) * .(,.pi/,)
(joint2,,, NV,NV, .(j2.x,j2.y,j2.z), .(j2a.x,.pi/,j2a.z))
joint2.C1 = .(,,) * .(,.pi/,)
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
count =
lastpos
Sliding ==
count = count +
Hu.PlatformStand =
hitz1, enz1 = (Torsoz.Position+.(,,), dir *)
hitz2, enz2 = (Torsoz.Position-.(,,), dir *)
ghitz, genz = (Torsoz.Position, .(,-,))
bv.velocity = dir*spd + .(,GravPoint,)
count <=
(joint1,count,, j1,j1a, .(,-,-), .(,(.pi/)+,-))
(joint2,count,, j2,j2a, .(-,-,), .(,(.pi/)-,))
(joint3,count,, j3,j3a, .(,,), .(-,-,.pi/))
(joint4,count,, j4,j4a, .(-,,), .(-,,-.pi/))
(joint5,count,, j5,j5a, .(,,), .(-,-,))
(hitz1 ~= hitz1.CanCollide == ) (hitz2 ~= hitz2.CanCollide == )
bv:()
bg:()
Sliding =
ghitz ~=
GravPoint =
Torsoz.CFrame = .(genz, genz+dir) * .(.pi/,,) + .(,,)
spd = spd -
GravPoint > -
GravPoint = GravPoint -
spd = spd -
spd <
Sliding =
()
Sliding ==
j1,j1a = (joint1)
j2,j2a = (joint2)
j3,j3a = (joint3)
j4,j4a = (joint4)
j5,j5a = (joint5)
i = ,
(joint1,i,, j1,j1a, .(,-,), .(,.pi/,))
(joint2,i,, j2,j2a, .(-,-,), .(,.pi/,))
(joint3,i,, j3,j3a, .(,,), NV)
(joint4,i,, j4,j4a, .(-,,), NV)
(joint5,i,, j5,j5a, .(,,), NV)
hitz, enz = (Torsoz.Position, .(,-,))
bg.cframe = .(NV, dir) * .((.pi/) - ((.pi/)/*i), - (/*i),)
bv.velocity = dir*spd + .(,GravPoint,)
hitz ~=
GravPoint =
Torsoz.CFrame = .(enz, enz+dir) * .((.pi/) - ((.pi/)/*i), - (/*i),) + .(,+(/*i),)
spd = spd -
GravPoint > -
GravPoint = GravPoint -
spd = spd -
()
hitz, enz = (Torsoz.Position, .(,-,))
Torsoz.CFrame = .(enz, enz+dir) + .(,,)
bv:()
bg:()
SlideCooldown =
()
(key)
pause.Value ==
key == .()
Space =
ghitz, genz = (Torsoz.Position, .(,-,))
hitz, enz = (Torsoz.Position+.(,,), Torsoz.CFrame.lookVector*)
righthitz, rightenz
lefthitz, leftenz
HWallRunning ==
righthitz, rightenz = (Torsoz.Position, ((Torsoz.CFrame * .(,,-)).p - Torsoz.CFrame.p).unit*)
lefthitz, leftenz = (Torsoz.Position, ((Torsoz.CFrame * .(-,,-)).p - Torsoz.CFrame.p).unit*)
HWallRunning ==
righthitz, rightenz = (Torsoz.Position, ((.(Torsoz.Position, Torsoz.Position + HWRDir) * .(,,-)).p - Torsoz.Position).unit*)
lefthitz, leftenz = (Torsoz.Position, ((.(Torsoz.Position, Torsoz.Position + HWRDir) * .(-,,-)).p - Torsoz.Position).unit*)
Action == Shift == (hitz == hitz.CanCollide == ) (righthitz == righthitz.CanCollide == ) (lefthitz == lefthitz.CanCollide == ) (ghitz == ghitz.CanCollide == ) (Torsoz.Velocity.y > Torsoz.Velocity.y < ) DivingCooldown <=
stamina >=
()
hitz == VWallRunning ==
VWallRunning =
Shift == Torsoz.Velocity.y > - Diving == DivingCooldown <=
hitz2, enz2 = (Torsoz.Position, .(,-,))
hitz ~=
Action == VWRCooldown ==
hitz2 == hitz2.CanCollide ==
(hitz, enz)
(HWallRunning == (HWallRunning == (HWRLastPart ~= righthitz HWRLastPart ~= lefthitz))) HWRCooldown == VWallRunning ==
(hitz == HWallRunning == ) ((righthitz ~= righthitz.Parent:() == righthitz.Parent.className ~= ) (lefthitz ~= lefthitz.Parent:() == lefthitz.Parent.className ~= ))
hitz2 == hitz2.CanCollide ==
right = (rightenz - Torsoz.Position).magnitude
left = (leftenz - Torsoz.Position).magnitude
right < left
HWallRunning == HWRLastPart ~= righthitz
HWallRunning =
Standing ==
()
()
(righthitz, rightenz, -.pi/)
hitz ==
()
(righthitz, rightenz, -.pi/)
left < right
HWallRunning == HWRLastPart ~= lefthitz
HWallRunning =
Standing ==
()
()
(lefthitz, leftenz, .pi/)
hitz ==
()
(lefthitz, leftenz, .pi/)
HWallRunning ==
HWallRunning =
Action =
key == .()
Shift =
key == .()
Action ==
()
HWallRunning ==
HWRGravDrop =
key == .()
Shift == Action == SlideCooldown == .(Torsoz.Velocity.x,,Torsoz.Velocity.z).magnitude > Torsoz.Velocity.y > -
()
()
key ==
VWRLeft =
key ==
VWRRight =
(key)
key == .()
Space =
key == .()
Shift =
key == .()
Action ==
()
key == .()
Sliding =
key ==
VWRLeft =
key ==
VWRRight =
mouse.KeyDown:((key) (key) )
mouse.KeyUp:((key) (key) )
Joint1 = .(, Torsoz)
(Joint1)
Joint2 = .(, Torsoz)
(Joint2)
Joint3 = .(, Torsoz)
(Joint3)
Joint4 = .(, Torsoz)
(Joint4)
Joint5 = .(, Torsoz)
(Joint5)
()
animatebg = .()
animatebg.D =
GravAction =
PrevGravAction = GravAction
prevrapos = (RA.CFrame * .(,-,)).p
prevlapos = (LA.CFrame * .(,-,)).p
hue =
recyclecount =
tickoffset = ()
fadetab = {}
fadetab2 = {}
animatebgcount =
i = ,
p = P:()
p.Name = ..i
mesh = .(, p)
mesh.MeshId =
mesh.TextureId =
.(fadetab, {p, mesh})
i = ,
p = P:()
p.Name = ..i
mesh = .(, p)
mesh.MeshId =
mesh.TextureId =
.(fadetab2, {p, mesh})
:().Stepped:(()
GravAction =
hue = hue +
hue = hue %
animangle > .pi
animplus =
animangle < -.pi
animplus =
animplus ==
animangle = animangle + animspeed
animplus ==
animangle = animangle - animspeed
hitz, enz = (Torsoz.Position, .(,-,))
Shift ==
Hu.WalkSpeed = sprint
Hu.WalkSpeed =
(FOV >= FOV < ) .(Torsoz.Velocity.x,,Torsoz.Velocity.z).magnitude >
FOV = FOV +
(FOV <= FOV > ) .(Torsoz.Velocity.x,,Torsoz.Velocity.z).magnitude <
FOV = FOV -
pause.Value ==
Hu.WalkSpeed =
Sitting ==
hitz2, enz2 = (Torsoz.Position, .(,-,))
Hu.PlatformStand =
hitz2 ==
()
Diving ==
Hu.PlatformStand =
DivingBV.velocity = .(DivingDir.x*(sprint+),GravPoint,DivingDir.z*(sprint+))
DivingBG.cframe = .(Torsoz.Position, Torsoz.Position+DivingBV.velocity) * .(-.pi/,,)
GravPoint > -
GravPoint = GravPoint -
DivingCooldown >
DivingCooldown = DivingCooldown -
HWallRunning ==
HWRGravDrop ==
GravPoint = GravPoint -
GravPoint = GravPoint -
HWallRunning ==
GravPoint = GravPoint -
.(Torsoz.Velocity.x, , Torsoz.Velocity.z).magnitude > Action == Shift ==
stamina >
stamina = stamina -
stamina <
Shift =
stamina =
Shift =
stamina =
Action ==
animspeed =
(Joint1,,, NV,NV, .(,-,), .(-animangle/,,))
(Joint2,,, NV,NV, .(-,-,), .(animangle/,,))
(Joint3,,, NV,NV, .(,,), .(animangle/,,))
(Joint4,,, NV,NV, .(-,,), .(-animangle/,,))
.(Torsoz.Velocity.x, , Torsoz.Velocity.z).magnitude > Action ~=
stamina < maxstamina
stamina = stamina +
stamina > maxstamina
stamina = maxstamina
stamina = maxstamina
Action ==
animspeed =
(Joint1,,, NV,NV, .(,-,), .(-animangle/,,))
(Joint2,,, NV,NV, .(-,-,), .(animangle/,,))
(Joint3,,, NV,NV, .(,,), .(animangle/,,))
(Joint4,,, NV,NV, .(-,,), .(-animangle/,,))
.(Torsoz.Velocity.x, , Torsoz.Velocity.z).magnitude <
animspeed =
Action ==
(Joint1,,, NV,NV, .(,-,), .(-animangle/,,))
(Joint2,,, NV,NV, .(-,-,), .(animangle/,,))
(Joint3,,, NV,NV, .(,,), .(animangle/,,))
(Joint4,,, NV,NV, .(-,,), .(-animangle/,,))
stamina < maxstamina
Sitting ==
stamina = stamina +
stamina = stamina +
stamina > maxstamina
stamina = maxstamina
stamina = maxstamina
hitz ==
Torsoz.Velocity.y > (Torsoz.Velocity.y < - Torsoz.Velocity.y > -)
Action ==
GravAction =
animspeed =
(Joint1,,, NV,NV, .(,-,), .(-animangle/,,))
(Joint2,,, NV,NV, .(-,-,), .(animangle/,,))
(Joint3,,, NV,NV, .(,,), .((.pi-)+(animangle/),,))
(Joint4,,, NV,NV, .(-,,), .((.pi-)+(-animangle/),,))
animatebg.Parent ~=
animatebg.Parent = Torsoz
animatebg.maxTorque = .(/,,/)
lokvec = Torsoz.CFrame.lookVector*
animatebg.cframe = .(NV, .(lokvec.x,,lokvec.z))
animatebg.Parent =
hitz ==
hitz2, enz2 = (Torsoz.Position, .(,-,))
hitz2 ==
Torsoz.Velocity.y < -
Action ==
GravAction =
animspeed =
animatebg.Parent = Torsoz
animatebg.maxTorque = .(/,,/)
lokvec = Torsoz.CFrame.lookVector*
animatebg.cframe = .(NV, .(lokvec.x,,lokvec.z)) * .(-.pi/,animangle/,)
(Joint1,,, NV,NV, .(,-,), .((animangle/)-,,))
(Joint2,,, NV,NV, .(-,-,), .((-animangle/)-,,-))
(Joint3,,, NV,NV, .(,,), .((.pi+)+(animangle/),,))
(Joint4,,, NV,NV, .(-,,), .((.pi+)+(-animangle/),,-))
hitz2.CanCollide ==
animatebg.Parent ~=
animatebg.Parent = Torsoz
animatebg.maxTorque = .(/,,/)
lokvec = Torsoz.CFrame.lookVector*
animatebg.cframe = .(NV, .(lokvec.x,,lokvec.z))
animatebg.Parent =
GravAction == animatebg.Parent ~=
animatebg.Parent =
.(tickoffset - ()) >
tickoffset = ()
flowcolor = (hue, ,)
recyclecount = (recyclecount % #fadetab) +
flow.Value >
lapos = (LA.CFrame * .(,-,)).p
rapos = (RA.CFrame * .(,-,)).p
p = fadetab[recyclecount]
p[].Parent = m
p[].CFrame = .((lapos+prevlapos)/, lapos)
p[].Scale = .(,,(lapos-prevlapos).magnitude*)
p[].VertexColor = .(flowcolor.r,flowcolor.g,flowcolor.b)
p[].Transparency = .((flow.Value/) - )
p[].Transparency = p[].Transparency + (/#fadetab)
p = fadetab2[recyclecount]
p[].Parent = m
p[].CFrame = .((rapos+prevrapos)/, rapos)
p[].Scale = .(,,(rapos-prevrapos).magnitude*)
p[].VertexColor = .(flowcolor.r,flowcolor.g,flowcolor.b)
p[].Transparency = .((flow.Value/) - )
p[].Transparency = p[].Transparency + (/#fadetab)
i, v (fadetab)
v[].Transparency <
v[].Transparency = v[].Transparency + (/#fadetab)
fadetab2[i][].Transparency = fadetab2[i][].Transparency + (/#fadetab)
v[].Transparency ~=
v[].Transparency =
v[].Position = .(,,)
fadetab2[i][].Transparency =
fadetab2[i][].Position = .(,,)
prevrapos = (RA.CFrame * .(,-,)).p
prevlapos = (LA.CFrame * .(,-,)).p
flow.Value >
char.Parent ~=
char:()
flowcooldown >
flowcooldown = flowcooldown -
HWRCooldown >
HWRCooldown = HWRCooldown -
VWRCooldown >
hitz ~= VWRCooldown >
VWRCooldown = VWRCooldown -
SlideCooldown >
SlideCooldown = SlideCooldown -
Action == Action ==
flow.Value = flow.Value +
flow.Value >
flow.Value =
flowcooldown =
Action ==
flowcooldown =
Action ==
flowcooldown =
Action == Action ==
flow.Value > flowcooldown <=
flow.Value = flow.Value -
flow.Value <
flow.Value =
cam.FieldOfView = FOV
prevanimbgcount = animatebgcount
sprint = defsprint + ((flow.Value/)*)
PrevGravAction = GravAction
()
)found this cool animation parkour KEYS - Shift to run (to enable all the features) - Ctrl or 2 to rest (gives stamina faster and don't need running) - Hold 4 to slide while running - Jump twice while running to dive then parkour roll - Jump in a wall and jump when falling (if it not have reached) to stop from falling down (stands you instead of laying you down) - 90 degrees in a wall (right or left) and jump and run (sadly the animation is not fe and only works in r6)

Universal