0% found this document useful (0 votes)
91 views33 pages

FDless Reanimate Script Overview

Uploaded by

yusuf15561aa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views33 pages

FDless Reanimate Script Overview

Uploaded by

yusuf15561aa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

--[[

FDless Reanimate from Patchma Hub V43

███ ███ ██ ██ ██ ██ ██████ ██████ ██ ██████


████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ████ ██ █ ██ ██ ██ ██████ ██ ██ ██
██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ███ ███ ██████ ██ ██ ███████ ██████

--note to self: Do NOT call FDless MyWorld Reanimate 💀💀💀

Patchma Hub Discord: [Link]


]]

--no need to get and index the library tables with function names every time the
script uses them
local osclock=[Link]
local tspawn=[Link]
local twait=[Link]
local schar=[Link]
local ssub=[Link]
local sfind=[Link]
local supper=[Link]
local mrandom=[Link]
local sin=[Link]
local cos=[Link]
local abs=[Link]
local rad=[Link]
local min=[Link]
local clamp=[Link]
local tinsert=[Link]
local tclear=[Link]
local tclone=[Link]
local tfind=[Link]
local tunpack=[Link]

--the script doesnt have to read global varaibles every time to get them
--why not have them saved in local varaibles for faster access times
local next=next
local pcall=pcall
local xpcall=xpcall
local type=type
local typeof=typeof
local game=game

local i=[Link]
local v2=[Link]
local v3=[Link]
local c3=[Link]
local cf=[Link]
local cfl=[Link]
local angles=[Link]
local u2=[Link]
local e=Enum
local rp=[Link]
local cs=[Link]
local csk=[Link]

local sine=osclock()
local deltaTime=0
local v3_0=v3(0,0,0)
local v3_101=v3(1,0,1)
local v3_010=v3(0,1,0)
local v3_001=v3(0,0,1)
local cf_0=cf(0,0,0)
local v3_xz=v3_101*10
local v3_xzL=v3_101*250.1
local v3_net=v3_010*25.01

--not "local function rs" to not assign debug names


local rs=function(l)
l=l or mrandom(8,15)
local s=""
for i=1,l do
if mrandom(1,2)==1 then
s=s..schar(mrandom(65,90))
else
s=s..schar(mrandom(97,122))
end
end
return s
end

--it runs even faster if u call __index and __newindex of metatables of userdata
directly
local getMetamethodFromErrorStack=function(userdata,f,test)
local ret=nil
xpcall(f,function()
ret=[Link](2,"f")
end,userdata,nil,0)
if (type(ret)~="function") or not test(ret) then
return f
end
return ret
end
local insSet=getMetamethodFromErrorStack(game,function(a,b,c) a[b]=c
end,function(f) local a=i("Folder") local b=rs() f(a,"Name",b) return [Link]==b
end)
local insGet=getMetamethodFromErrorStack(game,function(a,b) return a[b]
end,function(f) local a=i("Folder") local b=rs() [Link]=b return f(a,"Name")==b
end)
local cfGet=getMetamethodFromErrorStack(cf_0,function(a,b) return a[b]
end,function(f) return f(cf(1,2,3),"Position")==v3(1,2,3) end)
local cfMul=getMetamethodFromErrorStack(cf_0,function(a,b) return a*b
end,function(f) return angles(1,2,3)*angles(1,2,3)==f(angles(1,2,3),angles(1,2,3))
end)
local cfAdd=getMetamethodFromErrorStack(cf_0,function(a,b) return a+b
end,function(f) return cf(1,2,3)+v3(1,2,3)==f(cf(1,2,3),v3(1,2,3)) end)
local v3Get=getMetamethodFromErrorStack(v3_0,function(a,b) return a[b]
end,function(f) return v3(1,2,3).Unit==f(v3(1,2,3),"Unit") end)
--multiplying and adding vector3 is faster if you use the * and + operators

--no need to index instances every time to call their functions


local Clone=insGet(game,"Clone")
local ClearAllChildren=insGet(game,"ClearAllChildren")
local Destroy=insGet(game,"Destroy")
local IsA=insGet(game,"IsA")
local FindFirstChildOfClass=insGet(game,"FindFirstChildOfClass")
local FindFirstChildWhichIsA=insGet(game,"FindFirstChildWhichIsA")
local GetChildren=insGet(game,"GetChildren")
local GetDescendants=insGet(game,"GetDescendants")
local IsDescendantOf=insGet(game,"IsDescendantOf")
local GetPropertyChangedSignal=insGet(game,"GetPropertyChangedSignal")

--findfirstchildofclass faster than getservice


local plrs=FindFirstChildOfClass(game,"Players")
local rus=FindFirstChildOfClass(game,"RunService")
local ws=FindFirstChildOfClass(game,"Workspace")
local uis=FindFirstChildOfClass(game,"UserInputService")
local gs=FindFirstChildOfClass(game,"GuiService")
local sg=FindFirstChildOfClass(game,"StarterGui")
local lp=insGet(plrs,"LocalPlayer")
local pg=FindFirstChildOfClass(lp,"PlayerGui")
local mouse=insGet(lp,"GetMouse")(lp)
local stepped=insGet(rus,"Stepped")
local heartbeat=insGet(rus,"Heartbeat")
local renderstepped=insGet(rus,"RenderStepped")

local GetPlayers=insGet(plrs,"GetPlayers")
local SetCoreGuiEnabled=insGet(sg,"SetCoreGuiEnabled")
local GetCoreGuiEnabled=insGet(sg,"GetCoreGuiEnabled")
local Raycast=insGet(ws,"Raycast")
local Connect=[Link]
local
Disconnect=Connect(GetPropertyChangedSignal(game,"CreatorId"),type).Disconnect
local Wait=[Link]
local GetMouseLocation=insGet(uis,"GetMouseLocation")
local GetFocusedTextBox=insGet(uis,"GetFocusedTextBox")
local GetMouseDelta=insGet(uis,"GetMouseDelta")
local IsMouseButtonPressed=insGet(uis,"IsMouseButtonPressed")
local IsKeyDown=insGet(uis,"IsKeyDown")

local Inverse=cfGet(cf_0,"Inverse")
local Lerp=cfGet(cf_0,"Lerp")

local accessorylimbs={

{meshid="14768666349",textureid="",C0=cf_0,Name="Torso"},
{meshid="14241018198",textureid="",C0=cf_0,Name="Torso"},
{meshid="13421774668",textureid="",C0=cf_0,Name="Torso"},
{meshid="18640899369",textureid="",C0=cf_0,Name="Torso"},

{meshid="11263221350",textureid="11263219250",C0=angles(-
1.5707963267948966,0,1.5707963267948966),Name="Right Leg"},

{meshid="11159370334",textureid="11159284657",C0=angles(1.5707963267948966,0,1.5707
963267948966),Name="Left Leg"},

{meshid="14255522247",textureid="",C0=angles(1.5707963267948966,0,1.570796326794896
6),Name="Left Leg"},
{meshid="14255522247",textureid="",C0=angles(-
1.5707963267948966,0,1.5707963267948966),Name="Right Leg"},

{meshid="17374767929",textureid="",C0=angles(1.5707963267948966,0,1.570796326794896
6),Name="Left Arm"},
{meshid="17374767929",textureid="",C0=angles(-
1.5707963267948966,0,1.5707963267948966),Name="Right Arm"},

{meshid="17387586286",textureid="",C0=angles(1.5707963267948966,0,1.570796326794896
6),Name="Left Leg"},
{meshid="17387586286",textureid="",C0=angles(-
1.5707963267948966,0,1.5707963267948966),Name="Right Leg"},

{meshid="12344207333",textureid="",C0=angles(2,0,0),Name="Left Arm"},
{meshid="12344206657",textureid="",C0=angles(2,0,0),Name="Right Arm"},

{meshid="14768684979",textureid="",C0=angles(0,0,1.5707963267948966),Name="Left
Arm"},

{meshid="14768684979",textureid="",C0=angles(0,0,1.5707963267948966),Name="Right
Arm"},

{meshid="13831073174",textureid="",C0=cfMul(cf(0.017,0,-0.23),angles(-
1.4835298641951802,-0.15707963267948966,2.199114857512855)),Name="Left Arm"},
{meshid="13839903766",textureid="",C0=cfMul(cf(0,-0.62,-
0.01),angles(1.6580627893946132,0.15707963267948966,-
2.199114857512855)),Name="Right Arm"},

{meshid="11159370334",textureid="11159285454",C0=angles(1.5707963267948966,0,1.5707
963267948966),Name="Left Leg"},
{meshid="12652772399",textureid="12652775021",C0=cf(0,-0.125,0),Name="Right
Leg"},

{meshid="18640914129",textureid="",C0=cf_0,Name="Left Arm"},
{meshid="18640914129",textureid="",C0=cf_0,Name="Right Arm"},

{meshid="18640901641",textureid="",C0=cf_0,Name="Left Leg"},
{meshid="18640901641",textureid="",C0=cf_0,Name="Right Leg"},

{meshid="13058309233",textureid="",C0=angles(0,3.141592653589793,0),Name="Head"},

{meshid="11601535857",textureid="",C0=angles(0,3.141592653589793,0),Name="Head"},

{meshid="13058343355",textureid="",C0=angles(0,3.141592653589793,0),Name="Head"},

{meshid="4324138105",textureid="4391374782",C0=angles(0,0,rad(90)),Name="Right
Arm"},
{meshid="4489232754",textureid="4489233876",C0=angles(0,0,rad(-
90)),Name="Left Arm"},

{meshid="4154474745",textureid="4154474807",C0=angles(0,0,rad(90)),Name="Right
Leg"},
{meshid="4094864753",textureid="4094881938",C0=angles(0,0,rad(-
90)),Name="Left Leg"},

{meshid="4819720316",textureid="4819722776",C0=angles(0,0,rad(15)),Name="Torso"}
}

local gp=function(p,n,cl)
for i,v in next,GetChildren(p) do
if IsA(v,cl) and (insGet(v,"Name")==n) then
return v
end
end
return nil
end
local timegp=function(p,n,c,t)
t=osclock()+t
while t>osclock() do
for i,v in next,GetChildren(p) do
if IsA(v,c) and (insGet(v,"Name")==n) then
return v
end
end
Wait(stepped)
end
return nil
end
local makeplaceholder=function(v)
if typeof(v)~="Instance" then
return nil
end
if not insGet(v,"Archivable") then
insSet(v,"Archivable",true)
end
v=Clone(v)
for i,v in next,GetChildren(v) do
if IsA(v,"SpecialMesh") then
insSet(v,"Name",rs())
ClearAllChildren(v)
else
Destroy(v)
end
end
insSet(v,"Name",rs())
insSet(v,"Anchored",true)
insSet(v,"CanCollide",false)
insSet(v,"Transparency",0.25)
insSet(v,"Parent",ws)
return v
end
local emptyfunction=function() end

local allowshiftlock=allowshiftlock~=false
local ctrltp=ctrltp~=false
local placeholders=placeholders~=false
local clickfling=clickfling==true
local highlightflingtargets=highlightflingtargets~=false
local discharscripts=discharscripts~=false and function(v) if IsA(v,"Script") then
insSet(v,"Disabled",true) end end
local flingchangestate=flingchangestate~=false
local respawntp=(type(respawntp)=="number" and respawntp) or 3
local breakjointsmethod=(type(breakjointsmethod)=="number" and breakjointsmethod)
or 1
local simrad=simrad~=false
local hidedeatheffect=hidedeatheffect~=false

local c=nil
local stopreanimate=function()
if c then
c=nil
return true
end
return false
end
local reanimate=function()
--[[
FDless reanimate by MyWorld
aka no client sided instances
"what else do i optimize here"
]]

local novoid = true --prevents parts from going under


[Link] if you control them
local speedlimit = 3000 --makes your parts move slower if the magnitude of
their velocity is higher than this
local retVelTime = 0.51 --time that claimed parts have velocity to reclaim in
case u lose them
local walkSpeed = 16 --your walkspeed (can be changed at runtime)
local jumpPower = 50 --your jump power (can be changed at runtime)
local gravity = 196.2 --how fast the characters velocity decreases while
falling (can be changed at runtime)
local ctrlclicktp = ctrltp --makes you teleport where u point ur mouse cursor
at when click and hold ctrl down
local clickfling = clickfling --makes you fling the person you clicked when
its available to do so
local flingvel = v3(15000,16000,15000) --the rotation velocity that ur
character will have while flinging

if stopreanimate() then return end


c=insGet(lp,"Character")
if not (c and IsDescendantOf(c,ws)) then return end

local rootpart=gp(c,"HumanoidRootPart","BasePart") or
gp(c,"Torso","BasePart") or gp(c,"UpperTorso","BasePart") or
timegp(c,"HumanoidRootPart","BasePart",0.5) or FindFirstChildWhichIsA(c,"BasePart")
if not rootpart then return end

local cam=nil
--theres a way to have [Link] nil on heartbeat and still have the
game run normally
local refcam=function()
local newcam=insGet(ws,"CurrentCamera")
while not newcam do
Wait(GetPropertyChangedSignal(ws,"CurrentCamera"))
newcam=insGet(ws,"CurrentCamera")
end
cam=newcam
end
refcam()
local camcf=insGet(cam,"CFrame")
local enumCamS=[Link]
local camt=insGet(cam,"CameraType")
local camcon0=nil
local camcon1=nil
local camcon2=nil
local onnewcamera=function()
refcam()
if camcon0 then
Disconnect(camcon0)
Disconnect(camcon1)
camcon0=nil
end
if not c then
if insGet(cam,"CameraType")==enumCamS then
insSet(cam,"CameraType",camt)
end
return Disconnect(camcon2)
end
camcon0=Connect(GetPropertyChangedSignal(cam,"CFrame"),function()
if insGet(cam,"CFrame")~=camcf then
insSet(cam,"CFrame",camcf)
end
end)
camcon1=Connect(GetPropertyChangedSignal(cam,"CameraType"),function()
if insGet(cam,"CameraType")~=enumCamS then
insSet(cam,"CameraType",enumCamS)
end
end)
if insGet(cam,"CameraType")~=enumCamS then
insSet(cam,"CameraType",enumCamS)
end
if insGet(cam,"CFrame")~=camcf then
insSet(cam,"CFrame",camcf)
end
end
camcon2=Connect(GetPropertyChangedSignal(ws,"CurrentCamera"),onnewcamera)
onnewcamera()

local velYdelta=insGet(ws,"Gravity")*0.025
Connect(GetPropertyChangedSignal(ws,"Gravity"),function()
velYdelta=insGet(ws,"Gravity")*0.025
end)

local fpdh=insGet(ws,"FallenPartsDestroyHeight")
novoid=novoid and (fpdh+1)

local Yvel=0
local cfr=insGet(rootpart,"CFrame")
local pos=cfGet(cfr,"Position")
cfr=cfl(pos,pos+cfGet(cfr,"LookVector")*v3_101)
local primarypart=nil
local shiftlock=false
local firstperson=false
local xzvel=v3_0
local v3_0150=v3_010*1.5
local camcfLV=cfGet(camcf,"LookVector")
local camrot=cfl(v3_0,camcfLV)
local camcfRV=cfGet(camrot,"RightVector")
local cammag=-v3Get((cfGet(camcf,"Position")-(pos+v3_0150)),"Magnitude")

local R6parts={
head={Name="Head"},
torso={Name="Torso"},
root={Name="HumanoidRootPart"},
leftArm={Name="Left Arm"},
rightArm={Name="Right Arm"},
leftLeg={Name="Left Leg"},
rightLeg={Name="Right Leg"}
}
rootpart=[Link]
local cframes={}
for i,v in next,R6parts do
cframes[v]=cfr
end
local joints={
{
Name="Neck",
Part0=[Link],Part1=[Link],
C0=cf(0,1,0,-1,0,0,0,0,1,0,1,-0),
C1=cf(0,-0.5,0,-1,0,0,0,0,1,0,1,-0)
},
{
Name="RootJoint",
Part0=rootpart,Part1=[Link],
C0=cf(0,0,0,-1,0,0,0,0,1,0,1,-0),
C1=cf(0,0,0,-1,0,0,0,0,1,0,1,-0)
},
{
Name="Right Shoulder",
Part0=[Link],Part1=[Link],
C0=cf(1,0.5,0,0,0,1,0,1,-0,-1,0,0),
C1=cf(-0.5,0.5,0,0,0,1,0,1,-0,-1,0,0)
},
{
Name="Left Shoulder",
Part0=[Link],Part1=[Link],
C0=cf(-1,0.5,0,0,0,-1,0,1,0,1,0,0),
C1=cf(0.5,0.5,0,0,0,-1,0,1,0,1,0,0)
},
{
Name="Right Hip",
Part0=[Link],Part1=[Link],
C0=cf(1,-1,0,0,0,1,0,1,-0,-1,0,0),
C1=cf(0.5,1,0,0,0,1,0,1,-0,-1,0,0)
},
{
Name="Left Hip",
Part0=[Link],Part1=[Link],
C0=cf(-1,-1,0,0,0,-1,0,1,0,1,0,0),
C1=cf(-0.5,1,0,0,0,-1,0,1,0,1,0,0)
}
}

local refreshedjoints={}
local refreshjointsI=nil
refreshjointsI=function(part)
tinsert(refreshedjoints,part)
for i,v in next,joints do
local part0=v.Part0
local part1=v.Part1
if part1 and (part0==part) then

cframes[part1]=cfMul(cframes[part],cfMul(v.C0,Inverse(v.C1)))
if not tfind(refreshedjoints,part1) then
refreshjointsI(part1)
end
elseif part0 and (part1==part) then

cframes[part0]=cfMul(cframes[part],cfMul(v.C1,Inverse(v.C0)))
if not tfind(refreshedjoints,part0) then
refreshjointsI(part0)
end
end
end
end
refreshjointsI(rootpart)
tclear(refreshedjoints)

local attachments={
RightShoulderAttachment={[Link],cf(0,1,0,1,0,0,0,1,0,0,0,1)},
RightGripAttachment={[Link],cf(0,-1,0,1,0,0,0,1,0,0,0,1)},
LeftFootAttachment={[Link],cf(0,-1,0,1,0,0,0,1,0,0,0,1)},
LeftShoulderAttachment={[Link],cf(0,1,0,1,0,0,0,1,0,0,0,1)},
LeftGripAttachment={[Link],cf(0,-1,0,1,0,0,0,1,0,0,0,1)},
RootAttachment={rootpart,cf(0,0,0,1,0,0,0,1,0,0,0,1)},
RightFootAttachment={[Link],cf(0,-1,0,1,0,0,0,1,0,0,0,1)},
NeckAttachment={[Link],cf(0,1,0,1,0,0,0,1,0,0,0,1)},
BodyFrontAttachment={[Link],cf(0,0,-0.5,1,0,0,0,1,0,0,0,1)},
BodyBackAttachment={[Link],cf(0,0,0.5,1,0,0,0,1,0,0,0,1)},
LeftCollarAttachment={[Link],cf(-1,1,0,1,0,0,0,1,0,0,0,1)},
RightCollarAttachment={[Link],cf(1,1,0,1,0,0,0,1,0,0,0,1)},
WaistFrontAttachment={[Link],cf(0,-1,-0.5,1,0,0,0,1,0,0,0,1)},
WaistCenterAttachment={[Link],cf(0,-1,0,1,0,0,0,1,0,0,0,1)},
WaistBackAttachment={[Link],cf(0,-1,0.5,1,0,0,0,1,0,0,0,1)},
HairAttachment={[Link],cf(0,0.6,0,1,0,0,0,1,0,0,0,1)},
HatAttachment={[Link],cf(0,0.6,0,1,0,0,0,1,0,0,0,1)},
FaceFrontAttachment={[Link],cf(0,0,-0.6,1,0,0,0,1,0,0,0,1)},
FaceCenterAttachment={[Link],cf(0,0,0,1,0,0,0,1,0,0,0,1)}
}

local getPart=function(name,blacklist)
for i,v in next,cframes do
if ([Link]==name) and not (blacklist and tfind(blacklist,i)) then
return i
end
end
return nil
end

local getJoint=function(name)
for i,v in next,joints do
if [Link]==name then
return v
end
end
return {C0=cf_0,C1=cf_0}
end

local getPartFromMesh=function(m,t,blacklist)
if blacklist then
for v,_ in next,cframes do
if v.m and (not tfind(blacklist,v)) and sfind(v.m,m) and
sfind(v.t,t) then
return v
end
end
else
for v,_ in next,cframes do
if v.m and sfind(v.m,m) and sfind(v.t,t) then
return v
end
end
end
local p={m=m,t=t}
cframes[p]=cfr
local j={C0=cf_0,C1=cf_0,Part0=p}
p.j=j
return p
end

local getPartJoint=function(p)
if cframes[p] then
local j=p.j
if j then
return j
end
for i,v in next,joints do
if v.Part0==p then
return v
end
end
for i,v in next,joints do
if v.Part1==p then
return v
end
end
end
return nil
end

local getAccWeldFromMesh=function(m,t)
return getPartJoint(getPartFromMesh(m,t))
end

local raycastparams=rp()
[Link]=[Link]
[Link]=true
local rayfilter={}
local characters={}
local refreshrayfilter=function()
tclear(rayfilter)
for i,v in next,characters do
tinsert(rayfilter,v)
end
[Link]=rayfilter
end
local flingtable={}
local rootparts={}
for i,v in next,accessorylimbs do
v.p=getPart([Link])
end
local makePartCons=function(p,t)
if (t.p==p) and insGet(p,"Anchored") then
t.p=nil
end
local con0=Connect(GetPropertyChangedSignal(p,"Anchored"),function()
if insGet(p,"Anchored") then
if t.p==p then
t.c=nil
t.p=nil
end
elseif not t.p then
t.p=p
end
end)
local con1=nil
con1=Connect(insGet(p,"AncestryChanged"),function()
if not IsDescendantOf(p,ws) then
Disconnect(con0)
Disconnect(con1)
if t.p==p then
t.p=nil
end
end
end)
end
local ondes=nil
ondes=function(v)
if c and IsA(v,"Attachment") and IsDescendantOf(c,ws) then
local v1=attachments[insGet(v,"Name")]
if v1 then
local p=insGet(v,"Parent")
if insGet(p,"Parent")~=c then
local meshid=nil
local textureid=nil
if IsA(p,"MeshPart") then
meshid=insGet(p,"MeshId")
textureid=insGet(p,"TextureID")
elseif IsA(p,"BasePart") then
local sm=FindFirstChildOfClass(p,"SpecialMesh")
if sm then
meshid=insGet(sm,"MeshId")
textureid=insGet(sm,"TextureId")
else
return
end
else
return
end
local found=false
for i,_ in next,cframes do
if (meshid==i.m) and (textureid==i.t) then
local p1=i.p
if p1 and IsDescendantOf(p1,c) then
if p1==p then
found=true
break
end
else
found=true
i.p=p
makePartCons(p,i)
break
end
else
local j=i.j
if j and sfind(meshid,i.m) and
sfind(textureid,i.t) then
i.m=meshid
i.t=textureid
i.l=insGet(p,"Position")
i.p=p
makePartCons(p,i)
i.j=nil
[Link]=insGet(p,"Name")
j.C0=insGet(v,"CFrame")
j.C1=v1[2]
j.Part1=v1[1]
tinsert(joints,j)
found=true
break
end
end
end
if not found then
for i,l in next,accessorylimbs do
if l.p and sfind(meshid,[Link]) and
sfind(textureid,[Link]) then
local
t={Name=insGet(p,"Name"),l=insGet(p,"Position"),m=meshid,t=textureid,p=p}
makePartCons(p,t)
if placeholders then
t.v=makeplaceholder(p)
end
cframes[t]=insGet(p,"CFrame")
tinsert(joints,
{Part0=t,Part1=l.p,C0=l.C0,C1=cf_0})
l.p=nil
found=true
break
end
end
if not found then
local
t={Name=insGet(p,"Name"),l=insGet(p,"Position"),m=meshid,t=textureid,p=p}
makePartCons(p,t)
if placeholders then
t.v=makeplaceholder(p)
end
cframes[t]=insGet(p,"CFrame")
tinsert(joints,
{Part0=t,Part1=v1[1],C0=insGet(v,"CFrame"),C1=v1[2]})
end
end
end
end
end
end

local simradv=0
local charcons={}
local enumH=[Link]
local onplayer=function(v)
simradv=simradv+1000
local islp=v==lp
local lastc=nil
local oncharacter=function()
local newc=insGet(v,"Character")
if c and newc and (newc~=lastc) then
lastc=newc
characters[v]=newc
refreshrayfilter()
if islp then
if discharscripts then

Connect(insGet(newc,"DescendantAdded"),discharscripts)
for i,v in next,GetDescendants(newc) do
if IsA(v,"Script") then
insSet(v,"Disabled",true)
end
end
end
local
hrp=timegp(newc,"HumanoidRootPart","BasePart",10)
if not (hrp and c and IsDescendantOf(newc,ws)) then
return end
c=newc
local fi,fv=next(flingtable)
if fi then
if flingchangestate then
local
hum=FindFirstChildOfClass(c,"Humanoid")
if hum then
insGet(hum,"ChangeState")
(hum,[Link])
end
end
for i,v in next,tclone(flingtable) do
if not c then
return
end
local startpos=insGet(i,"Position")
local stoptime=sine+3
while true do
twait()
if sine>stoptime then
break
end
if insGet(i,"Anchored") or not
IsDescendantOf(i,ws) then
break
end
if v3Get((startpos-
insGet(i,"Position")),"Magnitude")>200 then
break
end
local
tcf=cfAdd(insGet(i,"CFrame"),insGet(i,"AssemblyLinearVelocity")*(sin(sine*15)+1))
if novoid and
(cfGet(tcf,"Y")<novoid) then
tcf=cfAdd(tcf,v3_010*(novoid-
cfGet(tcf,"Y")))
end
insSet(hrp,"CFrame",tcf)

insSet(hrp,"AssemblyLinearVelocity",insGet(i,"AssemblyLinearVelocity")*v3_101*75)

insSet(hrp,"AssemblyAngularVelocity",flingvel)
end
if v then
Destroy(v)
end
flingtable[i]=nil
end
insSet(hrp,"AssemblyLinearVelocity",v3_0)
insSet(hrp,"AssemblyAngularVelocity",v3_0)
insSet(hrp,"CFrame",cfr)
twait(0.16)
end
if respawntp==1 then
local startpos=pos+v3(mrandom(-
32,32),0,mrandom(-32,32))
local dir=nil
local poscheck=true
while poscheck do
poscheck=false
for i,v in next,rootparts do
local diff=(startpos-
insGet(v,"Position"))*v3_101
if v3Get(diff,"Magnitude")<10 then
poscheck=true
dir=dir or
(v3Get(diff,"Unit")*3)
startpos=startpos+dir
end
end
local diff=(startpos-pos)*v3_101
if v3Get(diff,"Magnitude")<10 then
poscheck=true
dir=dir or (v3Get(diff,"Unit")*3)
startpos=startpos+dir
end
end
startpos=cfAdd(cfGet(cfr,"Rotation"),startpos)
insSet(hrp,"CFrame",startpos)
insSet(hrp,"AssemblyLinearVelocity",v3_0)
insSet(hrp,"AssemblyAngularVelocity",v3_0)
twait(0.16)
elseif respawntp==2 then

insSet(hrp,"CFrame",cfAdd(cfr,cfGet(cfr,"RightVector")*3.5-
cfGet(cfr,"LookVector")*3.5))
insSet(hrp,"AssemblyLinearVelocity",v3_0)
insSet(hrp,"AssemblyAngularVelocity",v3_0)
twait(0.16)
elseif respawntp==3 then
local t=osclock()+0.16
local
startcf=cfAdd(cfMul(cfGet(cfr,"Rotation"),angles(1.5707963267948966,0,0)),pos*v3_10
1+v3_010*min(fpdh+30,v3Get(pos,"Y")-5))
while twait() do
insSet(hrp,"CFrame",startcf)
insSet(hrp,"AssemblyLinearVelocity",v3_0)

insSet(hrp,"AssemblyAngularVelocity",v3_0)
if osclock()>t then
break
end
end
end
if newc~=c then
return
end
primarypart=insGet(newc,"PrimaryPart") or hrp
if hidedeatheffect and GetCoreGuiEnabled(sg,enumH)
then
SetCoreGuiEnabled(sg,enumH,false)
end
if breakjointsmethod==1 then
insGet(newc,"BreakJoints")(newc)
local h=FindFirstChildOfClass(newc,"Humanoid")
if h then
insSet(h,"Health",0)
end
elseif breakjointsmethod==2 then
local h=FindFirstChildOfClass(newc,"Humanoid")
if h then
insSet(h,"Health",0)
else
insGet(newc,"BreakJoints")(newc)
end
else
insGet(newc,"BreakJoints")(newc)
end
Connect(insGet(newc,"DescendantAdded"),ondes)
for i,v in next,GetDescendants(newc) do
ondes(v)
end
else
local
hrp=timegp(newc,"HumanoidRootPart","BasePart",10)
if hrp and c and IsDescendantOf(newc,ws) then
rootparts[v]=hrp
end
end
end
end

charcons[v]=Connect(GetPropertyChangedSignal(v,"Character"),oncharacter)
oncharacter()
end
Connect(insGet(plrs,"PlayerRemoving"),function(v)
simradv=simradv-1000
local charcon=charcons[v]
if charcon then
Disconnect(charcon)
end
characters[v]=nil
rootparts[v]=nil
end)
for i,v in next,GetPlayers(plrs) do simradv=simradv+1000 if v~=lp then
tspawn(onplayer,v) end end
Connect(insGet(plrs,"PlayerAdded"),onplayer)
onplayer(lp)
local setsimrad=emptyfunction
if simrad then
setsimrad=function()
local canset,_=pcall(function()
insSet(lp,"SimulationRadius",simradv)
end)
if canset then
setsimrad=function()
insSet(lp,"SimulationRadius",simradv)
end
else
setsimrad=emptyfunction
end
end
end

local mradN05=rad(-0.5)
local KeyCode=[Link]
local enumMB2=[Link].MouseButton2
local enumMLCP=[Link]
local enumMLC=(insGet(uis,"TouchEnabled") and enumMLCP) or
[Link]
local enumMD=[Link]
local enumMW=[Link]
local enumMM=[Link]

local mouseBehavior=nil
local lastMouseBehavior=insGet(uis,"MouseBehavior")
Connect(GetPropertyChangedSignal(uis,"MouseBehavior"),function()
if mouseBehavior and (insGet(uis,"MouseBehavior")~=mouseBehavior) then
insSet(uis,"MouseBehavior",mouseBehavior)
end
end)

local mode="default"
local defaultmode={}
local modes={default=defaultmode}

local lerpsIdle=emptyfunction
local lerpsWalk=emptyfunction
local lerpsJump=emptyfunction
local lerpsFall=emptyfunction

local addmode=function(key,mode)
if (type(key)~="string") or (type(mode)~="table") then
return
end
for i,v in next,mode do
if type(v)~="function" then
mode[i]=nil
end
end
if key=="default" then
defaultmode=mode
[Link]=mode
lerpsIdle=[Link] or emptyfunction
lerpsWalk=[Link] or emptyfunction
lerpsJump=[Link] or emptyfunction
lerpsFall=[Link] or emptyfunction
if [Link] then
[Link]()
end
elseif #key==1 then
key=KeyCode[supper(ssub(key,1,1))]
modes[key]=mode
end
end

local keyW=KeyCode.W
local Wpressed=IsKeyDown(uis,keyW)
local keyA=KeyCode.A
local Apressed=IsKeyDown(uis,keyA)
local keyS=KeyCode.S
local Spressed=IsKeyDown(uis,keyS)
local keyD=KeyCode.D
local Dpressed=IsKeyDown(uis,keyD)
local keySpace=[Link]
local jumpingInput=IsKeyDown(uis,keySpace)

local FWmovement=0
local RTmovement=0
local isWalking=false
local refreshKeyboardMovement=function()
if Wpressed then if Spressed then if Dpressed then if Apressed then
isWalking=false else FWmovement=0 RTmovement=1 isWalking=true end else if Apressed
then FWmovement=0 RTmovement=-1 isWalking=true else isWalking=false end end else
FWmovement=1 if Dpressed then if Apressed then RTmovement=0 else RTmovement=1 end
else if Apressed then RTmovement=-1 else RTmovement=0 end end isWalking=true end
else if Spressed then FWmovement=-1 if Dpressed then if Apressed then RTmovement=0
else RTmovement=1 end else if Apressed then RTmovement=-1 else RTmovement=0 end end
isWalking=true else if Dpressed then if Apressed then isWalking=false else
FWmovement=0 RTmovement=1 isWalking=true end else if Apressed then FWmovement=0
RTmovement=-1 isWalking=true else isWalking=false end end end end
end
refreshKeyboardMovement()

local keyShift=[Link]
Connect(insGet(uis,"InputBegan"),function(a)
if insGet(gs,"MenuIsOpen") or GetFocusedTextBox(uis) then
return
end
a=insGet(a,"KeyCode")
if a==keyW then
Wpressed=true
refreshKeyboardMovement()
elseif a==keyA then
Apressed=true
refreshKeyboardMovement()
elseif a==keyS then
Spressed=true
refreshKeyboardMovement()
elseif a==keyD then
Dpressed=true
refreshKeyboardMovement()
elseif a==keySpace then
jumpingInput=true
elseif a==keyShift then
shiftlock=allowshiftlock and not shiftlock
elseif modes[a] then
if modes[mode].modeLeft then
modes[mode].modeLeft()
end
if mode==a then
mode="default"
else
mode=a
end
local modet=modes[mode]
lerpsIdle=[Link] or [Link] or emptyfunction
lerpsWalk=[Link] or [Link] or emptyfunction
lerpsJump=[Link] or [Link] or emptyfunction
lerpsFall=[Link] or [Link] or emptyfunction
if modes[mode].modeEntered then
modes[mode].modeEntered()
end
end
end)
Connect(insGet(uis,"InputEnded"),function(a)
a=insGet(a,"KeyCode")
if a==keyW then
Wpressed=false
refreshKeyboardMovement()
elseif a==keyA then
Apressed=false
refreshKeyboardMovement()
elseif a==keyS then
Spressed=false
refreshKeyboardMovement()
elseif a==keyD then
Dpressed=false
refreshKeyboardMovement()
elseif a==keySpace then
jumpingInput=false
end
end)

local thumbstickEndX=0
local thumbstickStartY=0

local thumbstickSizeMultiplier=0

local jumpStartX=0
local jumpStartY=0
local jumpEndX=0
local jumpEndY=0

local thumbstickInputObject=nil
local jumpInputObject=nil
local cameraRotateInputObject=nil
local cameraZoomInputObject=nil

local thumbstickTouchStart=v3_0
local cameraZoomInputMagnitude=0

Connect(insGet(uis,"TouchStarted"),function(inputObject)
if insGet(gs,"MenuIsOpen") or GetFocusedTextBox(uis) then
return
end

local touchPos=insGet(inputObject,"Position")
local touchX=v3Get(touchPos,"X")
local touchY=v3Get(touchPos,"Y")

if (not thumbstickInputObject) and touchX<thumbstickEndX and


touchY>thumbstickStartY then
thumbstickInputObject=inputObject
thumbstickTouchStart=insGet(inputObject,"Position")
isWalking=false
elseif (not jumpInputObject) and touchY>jumpStartY and
touchX>jumpStartX and touchX<jumpEndX and touchY<jumpEndY then
jumpInputObject=inputObject
jumpingInput=true
elseif not cameraRotateInputObject then
cameraRotateInputObject=inputObject
else
cameraZoomInputObject=inputObject

cameraZoomInputMagnitude=v3Get(insGet(cameraRotateInputObject,"Position")-
insGet(cameraZoomInputObject,"Position"),"Magnitude")
end
end)
Connect(insGet(uis,"TouchMoved"),function(inputObject)
local touchPos=insGet(inputObject,"Position")
local touchX=v3Get(touchPos,"X")
local touchY=v3Get(touchPos,"Y")
if inputObject==thumbstickInputObject then
local direction=insGet(inputObject,"Position")-
thumbstickTouchStart
local
directionMag=v3Get(direction,"Magnitude")/thumbstickSizeMultiplier
if directionMag>0.05 then
isWalking=true
direction=v3Get(direction,"Unit")*min(1,(directionMag-
0.05)/0.95)
FWmovement=-v3Get(direction,"Y")
RTmovement=v3Get(direction,"X")
else
isWalking=false
end
elseif inputObject==jumpInputObject then
jumpingInput=touchY>jumpStartY and touchX>jumpStartX and
touchX<jumpEndX and touchY<jumpEndY
else
if cameraZoomInputObject then
local
newMagnitude=v3Get(insGet(cameraRotateInputObject,"Position")-
insGet(cameraZoomInputObject,"Position"),"Magnitude")
cammag=cammag+(newMagnitude-
cameraZoomInputMagnitude)*0.04*(0.75-cammag/4)
cameraZoomInputMagnitude=newMagnitude
if cammag<0 then
firstperson=false
else
cammag=0
firstperson=true
end
elseif inputObject==cameraRotateInputObject then
local rotation=GetMouseDelta(uis)*mradN05

camcfLV=cfGet(cfMul(camrot,angles(rotation.Y,rotation.X,0)),"LookVector")
camrot=cfl(v3_0,camcfLV)
camcfRV=cfGet(camrot,"RightVector")
end
end
end)
Connect(insGet(uis,"TouchEnded"),function(inputObject)
if inputObject==thumbstickInputObject then
thumbstickInputObject=nil
isWalking=false
elseif inputObject==jumpInputObject then
jumpInputObject=nil
jumpingInput=false
elseif inputObject==cameraRotateInputObject then
cameraRotateInputObject=nil
cameraZoomInputObject=nil
elseif inputObject==cameraZoomInputObject then
cameraZoomInputObject=nil
end
end)

local refreshTouchRegions=function()
local sX=insGet(mouse,"ViewSizeX")
local sY=insGet(mouse,"ViewSizeY")
local isSmallScreen=min(sX,sY)<=500

sY=sY+insGet(gs,"TopbarInset").Height

thumbstickEndX=sX*0.4
thumbstickStartY=(sY+0)*0.333

if isSmallScreen then
thumbstickSizeMultiplier=35
jumpStartX=sX-95
jumpStartY=sY-90
jumpEndX=jumpStartX+70
jumpEndY=jumpStartY+70
else
thumbstickSizeMultiplier=60
jumpStartX=sX-170
jumpStartY=sY-210
jumpEndX=jumpStartX+120
jumpEndY=jumpStartY+120
end
end
Connect(GetPropertyChangedSignal(mouse,"ViewSizeX"),refreshTouchRegions)
Connect(GetPropertyChangedSignal(mouse,"ViewSizeY"),refreshTouchRegions)
Connect(GetPropertyChangedSignal(gs,"TopbarInset"),refreshTouchRegions)
refreshTouchRegions()

local mouseCameraMove=false
Connect(insGet(uis,"InputChanged"),function(a,b)
if b then return end
local inputType=insGet(a,"UserInputType")
if mouseCameraMove and inputType==enumMM then
local rotation=GetMouseDelta(uis)*mradN05

camcfLV=cfGet(cfMul(camrot,angles(rotation.Y,rotation.X,0)),"LookVector")
camrot=cfl(v3_0,camcfLV)
camcfRV=cfGet(camrot,"RightVector")
elseif inputType==enumMW then
cammag=cammag+v3Get(insGet(a,"Position"),"Z")*(0.75-cammag/4)
if cammag<0 then
firstperson=false
else
cammag=0
firstperson=true
end
end
end)

local predictionfling=function(target)
if not c then
return false
end
if typeof(target)~="Instance" then
target=insGet(mouse,"Target")
if not target then
return false
end
end
if not IsDescendantOf(target,ws) then
return false
end
if IsA(target,"Humanoid") or IsA(target,"BasePart") then
target=insGet(target,"Parent")
if IsA(target,"Accessory") then
target=insGet(target,"Parent")
end
end
if (target==c) or (not IsA(target,"Model")) then
return false
end
local targetpart=gp(target,"HumanoidRootPart","BasePart") or
gp(target,"Torso","BasePart") or gp(target,"UpperTorso","BasePart")
if (not targetpart) or (flingtable[targetpart]~=nil) then
return false
end
if highlightflingtargets then
local h=i("Highlight")
insSet(h,"Name",rs())
insSet(h,"Adornee",target)
insSet(h,"FillColor",c3(1,0,0))
insSet(h,"OutlineColor",c3(0,0,0))
insSet(h,"FillTransparency",0.5)
insSet(h,"OutlineTransparency",0)
insSet(h,"Parent",pg)
flingtable[targetpart]=h
else
flingtable[targetpart]=false
end
return true
end

local clickConnection=nil
if ctrlclicktp then
ctrlclicktp=[Link]
local tpoff=v3_010*3
if clickfling then
clickConnection=Connect(insGet(mouse,"Button1Down"),function()
if insGet(mouse,"Target") then
if IsKeyDown(uis,ctrlclicktp) then
pos=cfGet(insGet(mouse,"Hit"),"Position")+tpoff
cfr=cfl(pos,pos+camcfLV*v3_101)
xzvel=v3_0
Yvel=0
else
predictionfling()
end
end
end)
else
clickConnection=Connect(insGet(mouse,"Button1Down"),function()
if insGet(mouse,"Target") and IsKeyDown(uis,ctrlclicktp)
then
pos=cfGet(insGet(mouse,"Hit"),"Position")+tpoff
cfr=cfl(pos,pos+camcfLV*v3_101)
xzvel=v3_0
Yvel=0
end
end)
end
elseif clickfling then
clickConnection=Connect(insGet(mouse,"Button1Down"),predictionfling)
end

local hhOff=3
local hhOff1=3.01
local setHipHeight=function(n)
hhOff=n+3
hhOff1=n+3.01
end

local noYvelTime=1
local lastsine=sine
local con=nil
local mainFunction=function()
if not c then
for i,v in next,cframes do
local p=i.v
if p then
Destroy(p)
end
end
for i,v in next,flingtable do
if v then --it could be false
Destroy(v)
end
end
for i,v in next,charcons do
Disconnect(v)
end
if clickConnection then
Disconnect(clickConnection)
end
mouseBehavior=nil
insSet(uis,"MouseBehavior",enumMD)
onnewcamera()
local c=insGet(lp,"Character")
if c then

insSet(cam,"CameraSubject",FindFirstChildOfClass(c,"Humanoid"))
end
return con and Disconnect(con)
end

sine=osclock()
local delta=sine-lastsine
deltaTime=min(delta*10,1)
lastsine=sine

if shiftlock then
if allowshiftlock then
mouseBehavior=enumMLC
mouseCameraMove=true
else
shiftlock=false
end
elseif firstperson then
mouseBehavior=enumMLC
mouseCameraMove=true
elseif IsMouseButtonPressed(uis,enumMB2) then
mouseBehavior=enumMLCP
mouseCameraMove=true
else
mouseBehavior=enumMD
mouseCameraMove=false
end
if lastMouseBehavior~=mouseBehavior then
lastMouseBehavior=mouseBehavior
insSet(uis,"MouseBehavior",mouseBehavior)
end

local raycastresult=Raycast(ws,pos,v3_010*(fpdh-
v3Get(pos,"Y")),raycastparams)
local onground=nil
if raycastresult then
raycastresult=v3Get([Link],"Y")
onground=v3Get(pos,"Y")-raycastresult<hhOff1
if onground then
Yvel=0
pos=pos+v3_010*(raycastresult+hhOff-
v3Get(pos,"Y"))*min(delta*20,1)
if jumpingInput and (jumpPower>0) then
Yvel=jumpPower
onground=false
end
else
Yvel=Yvel-gravity*delta
if v3Get(pos,"Y")+Yvel*delta<raycastresult then
Yvel=0
pos=pos+v3_010*(raycastresult+hhOff-v3Get(pos,"Y"))
end
end
else
Yvel=0
onground=false
end

if firstperson then
if isWalking then
if walkSpeed==0 then
xzvel=v3_0
if onground then
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
else

xzvel=v3Get(v3Get(camcfLV*v3_101,"Unit")*FWmovement+v3Get(camcfRV*v3_101,"Unit")*RT
movement,"Unit")*walkSpeed
if onground then
pos=pos+xzvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsWalk()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+(xzvel+v3_010*Yvel)*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+(xzvel+v3_010*Yvel)*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
else
xzvel=v3_0
if onground then
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)
camcf=cfAdd(camrot,pos+v3_0150)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
elseif shiftlock then
if isWalking then
if walkSpeed==0 then
xzvel=v3_0
if onground then
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
else

xzvel=v3Get(v3Get(camcfLV*v3_101,"Unit")*FWmovement+v3Get(camcfRV*v3_101,"Unit")*RT
movement,"Unit")*walkSpeed
if onground then
pos=pos+xzvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsWalk()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+(xzvel+v3_010*Yvel)*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+(xzvel+v3_010*Yvel)*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
else
xzvel=v3_0
if onground then
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfl(pos,pos+camcfLV*v3_101)

camcf=cfAdd(camrot,pos+v3_0150+camcfRV*1.75+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
else
if isWalking then
if walkSpeed==0 then
xzvel=v3_0
if onground then
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
else

xzvel=v3Get(v3Get(camcfLV*v3_101,"Unit")*FWmovement+v3Get(camcfRV*v3_101,"Unit")*RT
movement,"Unit")*walkSpeed
if onground then
pos=pos+xzvel*delta

cfr=cfAdd(Lerp(cfGet(cfr,"Rotation"),cfl(v3_0,xzvel),deltaTime),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsWalk()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+(xzvel+(v3_010*Yvel))*delta

cfr=cfAdd(Lerp(cfGet(cfr,"Rotation"),cfl(v3_0,xzvel),deltaTime),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+(xzvel+(v3_010*Yvel))*delta

cfr=cfAdd(Lerp(cfGet(cfr,"Rotation"),cfl(v3_0,xzvel),deltaTime),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
else
xzvel=v3_0
if onground then
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsIdle()
noYvelTime=min(noYvelTime+delta*0.3,1)
xzvel=xzvel*(1-noYvelTime)
elseif Yvel>0 then
pos=pos+v3_010*Yvel*delta
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsJump()
noYvelTime=0
else
pos=pos+v3_010*Yvel*delta
cfr=cfAdd(cfGet(cfr,"Rotation"),pos)
camcf=cfAdd(camrot,pos+v3_0150+camcfLV*cammag)
cframes[rootpart]=cfr
insSet(cam,"CFrame",camcf)
lerpsFall()
noYvelTime=0
end
end
end
refreshjointsI(rootpart)
tclear(refreshedjoints)

local idlerv=v3(sin((sine-
0.0375)*16),sin(sine*16),sin((sine+0.075)*16))
local idleoff=idlerv*0.0015

local claimpos=insGet(primarypart,"Position")
local claimposY=v3Get(claimpos,"Y")
for i,v in next,cframes do
local part=i.p

if part then
if insGet(part,"ReceiveAge")==0 then
local placeholder=i.v
if novoid and (cfGet(v,"Y")<novoid) then
v=cfAdd(v,v3_010*(novoid-cfGet(v,"Y")))
end
local lastpos=i.l
local vel=(cfGet(v,"Position")-lastpos)/delta
local mag=v3Get(vel,"Magnitude")
if mag<0.15 then
if placeholder then
insSet(placeholder,"Parent",nil)
end
i.l=cfGet(v,"Position")
v=cfAdd(v,idleoff)
elseif mag>speedlimit then
if placeholder then
insSet(placeholder,"CFrame",v)
insSet(placeholder,"Parent",ws)
end
vel=v3Get(vel,"Unit")*speedlimit
local newpos=lastpos+vel*delta
v=cfAdd(cfGet(v,"Rotation"),newpos)
i.l=newpos
elseif placeholder then
insSet(placeholder,"Parent",nil)
i.l=cfGet(v,"Position")
end
local claimtime=i.c
if claimtime then
if sine-claimtime<retVelTime then
local Ydiff=cfGet(v,"Y")-claimposY
local velY=25.01
local fallingTime=0
while (Ydiff>0) or (velY>0) do
fallingTime=fallingTime+0.025
if fallingTime>0.6 then
break
end
velY=velY-velYdelta
Ydiff=Ydiff+(velY*0.025)
end
insSet(part,"AssemblyLinearVelocity",
(claimpos-cfGet(v,"Position"))*v3_101/fallingTime+v3_net)
else
local vel1=vel*noYvelTime+xzvel
if v3Get(vel1,"Magnitude")>25.01 then
insSet(part,"AssemblyLinearVelocity",v3Get(vel1,"Unit")*v3_xzL+v3_net)
else

insSet(part,"AssemblyLinearVelocity",vel1*v3_xz+v3_net)
end
end
else
i.c=sine
local vel1=vel*noYvelTime+xzvel
if v3Get(vel1,"Magnitude")>25.01 then

insSet(part,"AssemblyLinearVelocity",v3Get(vel1,"Unit")*v3_xzL+v3_net)
else

insSet(part,"AssemblyLinearVelocity",vel1*v3_xz+v3_net)
end
end
insSet(part,"CFrame",v)
insSet(part,"AssemblyAngularVelocity",idlerv)
else
i.c=nil
i.l=insGet(part,"Position")
local placeholder=i.v
if placeholder then
insSet(placeholder,"CFrame",v)
insSet(placeholder,"Parent",ws)
end
end
else
local placeholder=i.v
if placeholder then
insSet(placeholder,"CFrame",v)
insSet(placeholder,"Parent",ws)
end
end
end
setsimrad()
end

sine=osclock()
lastsine=sine
con=Connect(heartbeat,mainFunction)
mainFunction()

local refreshjoints=function(v) --use this on the main part if u have parts


that
refreshjointsI(v) --are connected with each other but arent connected
to rootpart
tclear(refreshedjoints)
end

local legcfR=cf(1,-1,0)
local legcfL=cf(-1,-1,0)
local raydir=v3_010*-2
local raycastlegs=function() --this returns 2 values: right leg raycast
offset, left leg raycast offset
local
rY=Raycast(ws,cfGet(cfMul(cfr,legcfR),"Position"),raydir,raycastparams)
local
lY=Raycast(ws,cfGet(cfMul(cfr,legcfL),"Position"),raydir,raycastparams)
return rY and (v3Get([Link],"Y")-(v3Get(pos,"Y")-3)) or 0,lY and
(v3Get([Link],"Y")-(v3Get(pos,"Y")-3)) or 0
end

local velbycfrvec=function() --this returns 2 values: forward/backwards


movement (from -1 to 1), right/left movement (from -1 to 1)
local fw=cfGet(cfr,"LookVector")*xzvel/walkSpeed
local rt=cfGet(cfr,"RightVector")*xzvel/walkSpeed
return v3Get(fw,"X")+v3Get(fw,"Z"),v3Get(rt,"X")+v3Get(rt,"Z")
end

local lastvel=v3_0
local velchg1=v3_0
local velchgbycfrvec=function() --this returns 2 values: forward/backwards
velocity change, right/left velocity change
velchg1=velchg1+(lastvel-xzvel) --i recommend setting velchg1 to v3_0
when u start using this function or it will look worse
lastvel=xzvel
velchg1=velchg1-velchg1*(deltaTime/2)
local fw=cfGet(cfr,"LookVector")*velchg1/32
local rt=cfGet(cfr,"RightVector")*velchg1/32
return v3Get(fw,"X")+v3Get(fw,"Z"),v3Get(rt,"X")+v3Get(rt,"Z")
end

local lastYvel=0
local velYchg1=0
local velYchg=function() --this returns Y axis velocity change
velYchg1=clamp(velYchg1+(lastYvel-Yvel),-50,50) --i recommend setting
velYchg1 to 0 when u start using this function or it will look worse
lastYvel=Yvel
velYchg1=velYchg1-velYchg1*(deltaTime/2)
return velYchg1
end

local rotToMouse=function(alpha) --this rotates ur character towards your


mouse hit position
local pos1=pos*v3_010+cfGet(insGet(mouse,"Hit"),"Position")*v3_101
if pos~=pos1 then --could make nan rotation
cfr=Lerp(cfr,cfl(pos,pos1),alpha or deltaTime)
end
end

local
glitchJoint=function(joint,targetGlitchTime,delayFrom,delayTo,radiansFrom,radiansTo
)
if sine>targetGlitchTime then --local glitchtime=0 addMode("x",
{idle=function() glitchtime=glitchJoint(joint,glitchtime,0.2,0.4,-0.1,0.1) end})
radiansFrom=radiansFrom*100
radiansTo=radiansTo*100

joint.C0=cfMul(joint.C0,angles(mrandom(radiansFrom,radiansTo)/100,mrandom(radiansFr
om,radiansTo)/100,mrandom(radiansFrom,radiansTo)/100))
return sine+mrandom(delayFrom*100,delayTo*100)/100
end
return targetGlitchTime
end
local setWalkSpeed=function(n)
if type(n)~="number" then
n=16
end
walkSpeed=n
end
local setJumpPower=function(n)
if type(n)~="number" then
n=50
end
jumpPower=n
end
local setGravity=function(n)
if type(n)~="number" then
n=196.2
end
gravity=n
end
local setCfr=function(v) --sets character cframe
if typeof(v)=="CFrame" then
local newpos=cfGet(v,"Position")
camcf=cfAdd(camcf,newpos-pos)
insSet(cam,"CFrame",camcf)
cfr=v
pos=newpos
elseif typeof(v)=="Vector3" then
camcf=cfAdd(camcf,v-pos)
insSet(cam,"CFrame",camcf)
cfr=cfAdd(cfGet(cfr,"Rotation"),v)
pos=v
end
end
local getVel=function() --returns character velocity
return xzvel+v3_010*Yvel --important: use only in lerps or it might not
work
end
local getCamCF=function() --returns camera cframe
return camcf
end
local isFirstPerson=function() --returns true if user is in first person
camera mode
return firstperson
end

return {
cframes=cframes,
joints=joints,
fling=predictionfling,
predictionfling=predictionfling,
refreshjoints=refreshjoints,
raycastlegs=raycastlegs,
velbycfrvec=velbycfrvec,
velchgbycfrvec=velchgbycfrvec,
velYchg=velYchg,
addmode=addmode,
getPart=getPart,
getPartFromMesh=getPartFromMesh,
getAccWeldFromMesh=getAccWeldFromMesh,
getJoint=getJoint,
getPartJoint=getPartJoint,
rotToMouse=rotToMouse,
glitchJoint=glitchJoint,
setWalkSpeed=setWalkSpeed,
setJumpPower=setJumpPower,
setGravity=setGravity,
setCfr=setCfr,
getVel=getVel,
getCamCF=getCamCF,
isFirstPerson=isFirstPerson,
characters=characters,
refreshrayfilter=refreshrayfilter
}
end

return {reanimate = reanimate, stopreanimate = stopreanimate, gp = gp, rs = rs,


insSet = insSet, insGet = insGet, cfMul = cfMul, mouse = mouse,
isReanimated=function() return c end}

You might also like