--[[
I comit oof
IDs of accessories:
-for arms 11159410305,11263254795 or 14255556501,14255554762
-for legs 14768693948,14768701869 or 11159483910,12652786974
-for torso 14255528083 or 13421786478 or 14768678294
or anything else that covers ur torso. examples:
13423624885,11502853991,14053485259,13779879140,14443132226
can be same stuff but different colors
there are 32 ways to make a rig with the ids above
]]
--findfirstchildofclass faster than getservice
local plrs=game:FindFirstChildOfClass("Players")
local rs=game:FindFirstChildOfClass("RunService")
local ws=game:FindFirstChildOfClass("Workspace")
local uis=game:FindFirstChildOfClass("UserInputService")
local gs=game:FindFirstChildOfClass("GuiService")
local cg=game:FindFirstChildOfClass("CoreGui")
local lp=plrs.LocalPlayer
local pg=lp:FindFirstChildOfClass("PlayerGui")
local mouse=lp:GetMouse()
local stepped=rs.Stepped
local heartbeat=rs.Heartbeat
local renderstepped=rs.RenderStepped
local osclock=os.clock
local tspawn=task.spawn
local twait=task.wait
local schar=string.char
local sbyte=string.byte
local ssub=string.sub
local sfind=string.find
local supper=string.upper
local mrandom=math.random
local clamp=math.clamp
local sin=math.sin
local cos=math.cos
local abs=math.abs
local rad=math.rad
local tinsert=table.insert
local tclear=table.clear
local tclone=table.clone
local tfind=table.find
local tunpack=table.unpack
--the loops dont have to read globals to get the "pairs" or "next" variable every time
local pairs=pairs
local next=next
local i=Instance.new
local v2=Vector2.new
local v3=Vector3.new
local c3=Color3.new
local cf=CFrame.new
local angles=CFrame.Angles
local u2=UDim2.new
local e=Enum
local cs=ColorSequence.new
local csk=ColorSequenceKeypoint.new
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_net=v3_010*25.01
local function makepcall(f)
if type(f)=="function" then
return function(...)
local a={...}
local r=nil
pcall(function()
r={f(tunpack(a))}
end)
return tunpack(r or {})
end
end
return function() end
end
local function rs(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
local function dfind(t,v)
for i,v1 in pairs(t) do
if v1==v then
return i
end
end
return nil
end
local function gp(p,n,cl)
if typeof(p)=="Instance" then
local c=p:GetChildren()
for i=1,#c do
local v=c[i]
if (v.Name==n) and v:IsA(cl) then
return v
end
end
end
return nil
end
local function loopgp(...)
while true do
local r=gp(...)
if r then
return r
end
stepped:Wait()
end
end
local function timegp(p,n,c,t)
t=osclock()+t
while t>osclock() do
local r=gp(p,n,c)
if r then
return r
end
stepped:Wait()
end
return nil
end
local function getNetlessVelocity(realVel)
--if true then return v3_0 end
--if true then return realPartVelocity end
--if true then return v3_net end
if realVel.Magnitude>25.01 then
realVel=realVel.Unit*25.01
end
return realVel*v3_xz+v3_net
end
local sft=1/60
local function getFallingTime(startY,destY,gravity)
local velY=25.01
local currY=startY
local fallingTime=0
while (currY>destY) or (velY>0) do
fallingTime=fallingTime+sft
velY=velY-sft*gravity
currY=currY+velY*sft
end
return fallingTime
end
local isClientInstance=makepcall(function(i)
return ssub(i:GetDebugId(),1,1)=="0"
end)
local isServerInstance=function(i)
return not isClientInstance(i)
end
local shp=(((type(getfenv)=="function") and getfenv()) or {}).sethiddenproperty
local guiTheme={
guiTitle="Hiso hub",
windowTopColor=c3(0,0,0),
windowBottomColor=c3(0,0,0),
windowMinimizedSize=u2(0,290,0,22),
windowRegularSize=u2(0,290,0,520),
buttonsTextColor=c3(1,1,1),
labelsTextColor=c3(0.5,0.5,0.5),
listTopColor=c3(0,0,0),
listBottomColor=c3(0.5,0,0)
}
local i1=i("Frame")
local i2=i("Frame")
local i3=i("ScrollingFrame")
local i4=i("UIListLayout")
local i5=i("UIGradient")
local i6=i("TextLabel")
local i7=i("TextButton")
local i8=i("UIGradient")
local i9=i("ScreenGui")
local i10=i("TextButton")
i1.AnchorPoint=v2(0.5,0)
i1.BackgroundColor3=c3(1,0,0)
i1.BorderSizePixel=0
i1.Position=u2(0.5,0,0.5,-150)
i1.Size=guiTheme.windowRegularSize
i1.Name=rs()
i1.Parent=i9
i2.BackgroundColor3=c3(1,0,0)
i2.BorderSizePixel=0
i2.Position=u2(0,5,0,20)
i2.Size=u2(1,-10,1,-25)
i2.Name=rs()
i2.Parent=i1
i3.Active=true
i3.BackgroundTransparency=1
i3.BorderSizePixel=0
i3.Size=u2(1,-3,1,0)
i3.AutomaticCanvasSize=e.AutomaticSize.Y
i3.CanvasSize=u2(0,0,0,0)
i3.ScrollBarThickness=7
i3.Name=rs()
i3.Parent=i2
i4.Name=rs()
i4.Parent=i3
i4.SortOrder=e.SortOrder.LayoutOrder
i5.Name=rs()
i5.Parent=i2
i5.Color=cs({[1]=csk(0,guiTheme.listTopColor),[2]=csk(1,guiTheme.listBottomColor)})
i5.Rotation=90
i6.Font=e.Font.SourceSansBold
i6.FontSize=e.FontSize.Size18
i6.Text=guiTheme.guiTitle
i6.TextColor3=c3(1,1,1)
i6.TextSize=16
i6.BackgroundTransparency=1
i6.BorderSizePixel=0
i6.Position=u2(0,1,0,1)
i6.Size=u2(1,-2,0,20)
i6.Name=rs()
i6.Parent=i1
i7.AnchorPoint=v2(1,0)
i7.BackgroundTransparency=1
i7.Position=u2(1,0,0,0)
i7.Size=u2(0,40,1,0)
i7.Name=rs()
i7.Parent=i6
i7.Font=e.Font.SourceSansBold
i7.FontSize=e.FontSize.Size18
i7.Text="="
i7.TextColor3=c3(1,1,1)
i7.TextSize=16
i8.Name=rs()
i8.Parent=i1
i8.Color=cs({[1]=csk(0,guiTheme.windowTopColor),[2]=csk(1,guiTheme.windowBottomColor)})
i8.Rotation=90
i9.ZIndexBehavior=e.ZIndexBehavior.Sibling
i9.IgnoreGuiInset=true
i9.ResetOnSpawn=false
i9.Name=rs()
i10.AnchorPoint=v2(1,0)
i10.BackgroundTransparency=1
i10.Position=u2(0.13,0,0,0)
i10.Size=u2(0,40,1,0)
i10.Name=rs()
i10.Parent=i6
i10.Font=e.Font.SourceSansBold
i10.FontSize=e.FontSize.Size18
i10.RichText = true
i10.Text="X"
i10.TextColor3=c3(1,1,1)
i10.TextSize=16
local stopreanimate=function() return nil end
local min=false
i7.MouseButton1Click:Connect(function()
min = not min
if min then
i2.Visible=false
i8.Color=cs({[1]=csk(0,c3(0,0,0)),[2]=csk(1,c3(0,0,0))})
i1.Size=guiTheme.windowMinimizedSize
else
i1.Size=guiTheme.windowRegularSize
i8.Color=cs({[1]=csk(0,c3(0,0,0)),[2]=csk(1,c3(0,0,0))})
i2.Visible=true
end
end)
i10.MouseButton1Click:Connect(function()
i1:Destroy()
i2:Destroy()
i3:Destroy()
i4:Destroy()
i5:Destroy()
i6:Destroy()
i7:Destroy()
i8:Destroy()
i9:Destroy()
stopreanimate()
end)
local function Draggable(window,obj)
local MB1enum = e.UserInputType.MouseButton1
local TOUCHenum = e.UserInputType.Touch
obj = obj or window
local activeEntered = 0
local mouseStart = nil
local dragStart = nil
local inputbegancon = nil
local rendersteppedcon = nil
local inputendedcon = nil
local function inputendedf(a)
a=a.UserInputType
if (a==MB1enum) or (a==TOUCHenum) then
rendersteppedcon:Disconnect()
inputendedcon:Disconnect()
end
end
local function rendersteppedf()
local off = uis:GetMouseLocation()-mouseStart
window.Position=dragStart+u2(0,off.X,0,off.Y)
end
local function inputbeganf(a)
a=a.UserInputType
if ((a==MB1enum) or (a==TOUCHenum)) and (activeEntered==0) and not uis:GetFocusedTextBox() then
mouseStart=uis:GetMouseLocation()
dragStart=window.Position
if rendersteppedcon then rendersteppedcon:Disconnect() end
rendersteppedcon = renderstepped:Connect(rendersteppedf)
if inputendedcon then inputendedcon:Disconnect() end
inputendedcon = uis.InputEnded:Connect(inputendedf)
end
end
obj.MouseEnter:Connect(function()
if inputbegancon then inputbegancon:Disconnect() end
inputbegancon = uis.InputBegan:Connect(inputbeganf)
end)
obj.MouseLeave:Connect(function()
inputbegancon:Disconnect()
end)
local function ondes(d)
if d:IsA("GuiObject") then
local thisEntered = false
local thisAdded = false
local con0 = d.MouseEnter:Connect(function()
thisEntered = true
if (not thisAdded) and d.Active then
activeEntered = activeEntered + 1
thisAdded = true
end
end)
local con1 = d.MouseLeave:Connect(function()
thisEntered = false
if thisAdded then
activeEntered = activeEntered - 1
thisAdded = false
end
end)
local con2 = d:GetPropertyChangedSignal("Active"):Connect(function()
if thisEntered then
if thisAdded and not d.Active then
activeEntered = activeEntered - 1
thisAdded = false
elseif d.Active and not thisAdded then
activeEntered = activeEntered + 1
thisAdded = true
end
end
end)
local con3 = nil
con3 = d.AncestryChanged:Connect(function()
if not d:IsDescendantOf(window) then
if thisEntered then
activeEntered = activeEntered - 1
end
con0:Disconnect()
con1:Disconnect()
con2:Disconnect()
con3:Disconnect()
end
end)
end
end
window.DescendantAdded:Connect(ondes)
local des=window:GetDescendants()
for i=1,#des do
ondes(des[i])
end
end
local function btn(txt, f)
local i1=i("TextButton")
i1.AutomaticSize=e.AutomaticSize.Y
i1.BackgroundTransparency=1
i1.Size=u2(1,0,0,0)
i1.Name=rs()
i1.Font=e.Font.SourceSans
i1.FontSize=e.FontSize.Size14
i1.Text=txt
i1.TextColor3=guiTheme.buttonsTextColor
if f then
i1.MouseButton1Click:Connect(f)
end
i1.Parent=i3
return i1
end
local function lbl(txt)
local i1=i("TextLabel")
i1.Font=e.Font.SourceSansBold
i1.FontSize=e.FontSize.Size14
i1.Text=txt
i1.TextColor3=guiTheme.labelsTextColor
i1.AutomaticSize=e.AutomaticSize.Y
i1.BackgroundTransparency=1
i1.Size=u2(1,0,0,0)
i1.Name=rs()
i1.Parent=i3
return i1
end
Draggable(i1)
lbl("By: hiso")
lbl("powered by patchma")
local allowshiftlock=nil
local ctrltp=nil
local simrad=nil
local placeholders=nil
local clickfling=nil
local highlightflingtargets=nil
local claimwait=nil
local stopreanimate=function() return nil end
local function reanimate()
--[[
FDless reanimate by MyWorld
aka no client sided instances
"what else do i optimize here"
]]
local novoid = true --prevents parts from going under workspace.FallenPartsDestroyHeight if you control them
local placeholders = placeholders --makes client sided accessories replacing the real ones when unavailable
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 R15toR6 = true --adds fake r6 parts and joints for animations if your character is r15
local walkSpeed = 16 --your walkspeed (can be changed at runtime)
local jumpPower = 50 --your jump power (can be changed at runtime)
local allowshiftlock = allowshiftlock --allows the user to use shiftlock (can be changed at runtime)
local gravity = 196.2 --how fast the characters velocity decreases while falling (can be changed at runtime)
local simrad = simrad --sets simulation radius to this with sethiddenproperty if its set to a number
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
local highlightflingtargets = highlightflingtargets --highlights characters that are going to get flung
local c=lp.Character
if stopreanimate() or not (c and c:IsDescendantOf(ws)) then return end
local hum=c:FindFirstChildOfClass("Humanoid")
local rootpart=gp(c,"HumanoidRootPart","BasePart") or gp(c,"Torso","BasePart") or gp(c,"UpperTorso","BasePart") or (hum and hum.RootPart) or timegp(c,"HumanoidRootPart","BasePart",0.5) or c:FindFirstChildWhichIsA("BasePart")
if not rootpart then return end
R15toR6=R15toR6 and hum and (hum.RigType==e.HumanoidRigType.R15)
simrad = (type(simrad)=="number") and (type(shp)=="function") and simrad
local cam=nil
--theres a way to have ws.currentcamera nil on heartbeat and still have the game run normally
local function refcam()
cam=ws.CurrentCamera
while not cam do
ws:GetPropertyChangedSignal("CurrentCamera"):Wait()
cam=ws.CurrentCamera
end
end
refcam()
local camcf=cam.CFrame
local enumCamS=e.CameraType.Scriptable
local camt=cam.CameraType
local camcon0=nil
local camcon1=nil
local function onnewcamera()
refcam()
if camcon0 then
camcon0:Disconnect()
camcon0=nil
end
if not c then
if cam.CameraType==enumCamS then
cam.CameraType=camt
end
return camcon1:Disconnect()
end
camcon0=cam.Changed:Connect(function(p)
if not c then
camcon0:Disconnect()
return camcon1:Disconnect()
end
if (p=="CFrame") and (cam.CFrame~=camcf) then
cam.CFrame=camcf
elseif (p=="CameraSubject") or (p=="CameraType") then
local subj=cam.CameraSubject
if subj and subj:IsA("Humanoid") and (subj.Parent==c) and (cam.CameraType~=enumCamS) then
cam.CameraType = enumCamS
end
end
end)
local subj=cam.CameraSubject
if subj and subj:IsA("Humanoid") and (subj.Parent==c) and (cam.CameraType~=enumCamS) then
cam.CameraType=enumCamS
end
cam.CFrame=camcf
end
camcon1=ws:GetPropertyChangedSignal("CurrentCamera"):Connect(onnewcamera)
onnewcamera()
local rGravity=ws.Gravity
ws:GetPropertyChangedSignal("Gravity"):Connect(function()
rGravity=ws.Gravity
end)
local fpdh=ws.FallenPartsDestroyHeight
novoid=novoid and (fpdh+1)
local function getMeshOfPart(v)
if typeof(v)=="Instance" then
if v:IsA("MeshPart") then
return v.MeshId, v.TextureID
else
v=v:FindFirstChildOfClass("SpecialMesh")
if v then
return v.MeshId, v.TextureId
end
end
end
return nil, nil
end
local joints={}
local cframes={}
local des=c:GetDescendants()
for i=1,#des do
local v=des[i]
if v:IsA("JointInstance") then
tinsert(joints,{
Name=v.Name,
C0=v.C0,
C1=v.C1,
Part0=v.Part0,
Part1=v.Part1
})
elseif v:IsA("BasePart") then
cframes[v]=v.CFrame
end
end
local function makeplaceholder(v)
if typeof(v)~="Instance" then
return nil
end
if not v.Archivable then
v.Archivable=true
end
v=v:Clone()
local c=v:GetChildren()
for i=1,#c do
local v=c[i]
if v:IsA("SpecialMesh") then
v.Name=rs()
v:ClearAllChildren()
else
v:Destroy()
end
end
v.Name=rs()
v.Anchored=true
v.CanCollide=false
v.Transparency=0.25
v.Parent=ws
return v
end
local function filterInstance(v)
local ins=v
if isClientInstance(v) then
v={CFrame=v.CFrame,Name=v.Name,Anchored=true}
else
local meshid,textureid=getMeshOfPart(v)
if meshid and (meshid~="") and textureid and (textureid~="") and (v.Parent~=c) then
if placeholders then
v={CFrame=v.CFrame,Name=v.Name,Anchored=true,meshid=meshid,textureid=textureid,placeholder=makeplaceholder(v)}
else
v={CFrame=v.CFrame,Name=v.Name,Anchored=true,meshid=meshid,textureid=textureid}
end
else
v={CFrame=v.CFrame,Name=v.Name,Anchored=true}
end
end
for i,v1 in pairs(tclone(cframes)) do
if i==ins then
cframes[ins]=nil
cframes[v]=v1
end
end
for i,v1 in pairs(joints) do
if v1.Part0==ins then
v1.Part0=v
elseif v1.Part1==ins then
v1.Part1=v
end
end
if rootpart==ins then
rootpart=v
end
return v
end
for i,v in pairs(joints) do
v.Part0=filterInstance(v.Part0)
v.Part1=filterInstance(v.Part1)
end
local Yvel=0
local cfr=rootpart.CFrame
local pos=cfr.Position
local primarypart=nil
local shiftlock=false
local firstperson=false
local xzvel=v3_0
local v3_0150=v3_010*1.5
local camoff=cf(v3_0,camcf.LookVector)
camoff=camoff-v3_001*(camcf.Position-(pos+v3_0150)).Magnitude
local refreshjointsinternal=nil
refreshjointsinternal=function(part,refreshed)
if not part then return end
tinsert(refreshed,part)
for i,v in pairs(joints) do
local part0=v.Part0
local part1=v.Part1
if part1 and (part0==part) then
cframes[part1]=cframes[part]*v.C0*v.C1:Inverse()
if not tfind(refreshed,part1) then
refreshjointsinternal(part1,refreshed)
end
elseif part0 and (part1==part) then
cframes[part0]=cframes[part]*v.C1*v.C0:Inverse()
if not tfind(refreshed,part0) then
refreshjointsinternal(part0,refreshed)
end
end
end
end
local function refreshjoints(v)
refreshjointsinternal(v,{})
end
if R15toR6 then
local R6parts={
head={Name="Head",Anchored=true},
torso={Name="Torso",Anchored=true},
root={Name="HumanoidRootPart",Anchored=true},
leftArm={Name="Left Arm",Anchored=true},
rightArm={Name="Right Arm",Anchored=true},
leftLeg={Name="Left Leg",Anchored=true},
rightLeg={Name="Right Leg",Anchored=true}
}
for i,v in pairs(R6parts) do
cframes[v]=cfr
end
tinsert(joints,{
Name="Neck",
Part0=R6parts.torso,Part1=R6parts.head,
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)
})
tinsert(joints,{
Name="RootJoint",
Part0=R6parts.root,Part1=R6parts.torso,
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)
})
tinsert(joints,{
Name="Right Shoulder",
Part0=R6parts.torso,Part1=R6parts.rightArm,
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)
})
tinsert(joints,{
Name="Left Shoulder",
Part0=R6parts.torso,Part1=R6parts.leftArm,
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)
})
tinsert(joints,{
Name="Right Hip",
Part0=R6parts.torso,Part1=R6parts.rightLeg,
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)
})
tinsert(joints,{
Name="Left Hip" ,
Part0=R6parts.torso,Part1=R6parts.leftLeg,
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)
})
tinsert(joints,{
Part0=R6parts.root,Part1=rootpart,
C0=cf_0,C1=cf_0
})
refreshjoints(rootpart)
local function getpart(n)
for i,_ in pairs(cframes) do
if (i.Name==n) and not dfind(R6parts,i) then
return i
end
end
return nil
end
local function makejoint(p0, p1, p2)
p1=getpart(p1)
p2=getpart(p2)
if not (p1 and p2) then return end
for i,v in pairs(joints) do
if (v.Part0==p1) and (v.Part1==p2) then
joints[i]=nil
elseif (v.Part0==p2) and (v.Part1==p1) then
joints[i]=nil
end
end
tinsert(joints,{
Part0=p0,Part1=p1,
C0=cf_0,
C1=cframes[p1]:Inverse()*cframes[p0]
})
end
makejoint(R6parts.head,"Head","UpperTorso")
makejoint(R6parts.leftArm,"LeftUpperArm","UpperTorso")
makejoint(R6parts.rightArm,"RightUpperArm","UpperTorso")
makejoint(R6parts.leftLeg,"LeftUpperLeg","LowerTorso")
makejoint(R6parts.rightLeg,"RightUpperLeg","LowerTorso")
makejoint(R6parts.torso,"LowerTorso","HumanoidRootPart")
end
local function getPart(name,blacklist)
for i,v in pairs(cframes) do
if (i.Name==name) and not (blacklist and tfind(blacklist,i)) then
return i
end
end
return nil
end
local function getPartFromMesh(meshid,textureid,blacklist)
for v,_ in pairs(cframes) do
if (type(v)=="table") and not (blacklist and tfind(blacklist,v)) then
if v.meshid and sfind(v.meshid,meshid) and sfind(v.textureid,textureid) then
return v
end
end
end
return nil
end
local function getJoint(name)
for i,v in pairs(joints) do
if v.Name==name then
return v
end
end
return {C0=cf_0,C1=cf_0}
end
local function getPartJoint(handle)
for i,v in pairs(joints) do
if v.Part0==handle then
return v
end
end
for i,v in pairs(joints) do
if v.Part1==handle then
return v
end
end
return nil
end
local function getAccWeldFromMesh(...)
return getPartJoint(getPartFromMesh(...) or {}) or {C0=cf_0,C1=cf_0}
end
local accessorylimbs={
{meshid="4819720316",textureid="4819722776",C0=angles(0,0,rad(15)),Name="Torso"},
{meshid="14768684979",textureid="",C0=angles(rad(0),rad(0),rad(-90)),Name="Left Arm"},
{meshid="14768684979",textureid="",C0=angles(rad(0),rad(0),rad(90)),Name="Right Arm"},
{meshid="11263221350",textureid="11263219250",C0=angles(rad(0),rad(0),rad(-90)),Name="Left Leg"},
{meshid="11159370334",textureid="11159284657",C0=angles(rad(0),rad(0),rad(90)),Name="Right Leg"},
{meshid="14255522247",textureid="14255543546",C0=angles(rad(0),rad(0),rad(-90)),Name="Left Leg"},
{meshid="14255522247",textureid="14255543546",C0=angles(rad(0),rad(0),rad(90)),Name="Right Leg"},
{meshid="4819720316",textureid="4819722776",C0=angles(0,0,rad(15)),Name="Torso"},
{meshid="14768666349",textureid="",C0=cf_0,Name="Torso"},
{meshid="14241018198",textureid="",C0=cf_0,Name="Torso"},
{meshid="13421774668",textureid="",C0=cf_0,Name="Torso"}
}
local alignblacklist={}
for i=1,#accessorylimbs do
local v=accessorylimbs[i]
local p=getPart(v.Name)
local h=getPartFromMesh(v.meshid,v.textureid,alignblacklist)
local w=getPartJoint(h)
if p and w then
w.C0=v.C0
w.Part0=h
w.C1=cf_0
w.Part1=p
tinsert(alignblacklist,h)
end
end
local raycastparams=RaycastParams.new()
raycastparams.FilterType=e.RaycastFilterType.Blacklist
raycastparams.RespectCanCollide=true
local rayfilter={}
local characters={}
local function refreshrayfilter()
tclear(rayfilter)
for i,v in pairs(characters) do
tinsert(rayfilter,v)
end
raycastparams.FilterDescendantsInstances=rayfilter
end
local flingtable={}
local cframes1={}
local lastpositions={}
local claimtimes={}
local rootparts={}
local ondes=nil
ondes=function(v)
local meshid1,textureid1=getMeshOfPart(v)
if meshid1 then
for i,v1 in pairs(cframes) do
if type(i)=="table" and not dfind(cframes1,i) then
local meshid=i.meshid
if meshid and (meshid1==meshid) and (textureid1==i.textureid) then
cframes1[v]=i
lastpositions[v]=v.Position
break
end
end
end
elseif v:IsA("SpecialMesh") then
ondes(v.Parent)
end
end
local function onplayer(v)
local lastc=nil
local function oncharacter()
local newc=v.Character
if newc and (newc ~= lastc) then
lastc=newc
characters[v]=newc
refreshrayfilter()
local hrp=timegp(newc,"HumanoidRootPart","BasePart",10)
if not (hrp and c and newc:IsDescendantOf(ws)) then return end
if v==lp then
c=newc
local fi,fv=next(flingtable)
if fi then
for i,v in pairs(tclone(flingtable)) do
if not c then
return
end
local startpos=i.Position
local stoptime=sine+3
while true do
twait()
if sine>stoptime then
break
end
if (startpos-i.Position).Magnitude>200 then
break
end
local tcf=i.CFrame+i.Velocity*(sin(sine*15)+1)
if novoid and (tcf.Y0 then
camoff=camoff-camoff.Position
end
firstperson=camoff.Z==0
end
end)
local function predictionfling(target)
if not c then
return twait() and false
end
if typeof(target)~="Instance" then
target=mouse.Target
if not target then
return twait() and false
end
end
if target:IsA("Humanoid") or target:IsA("BasePart") then
target=target.Parent
if target:IsA("Accessory") then
target=target.Parent
end
end
if (not target:IsA("Model")) or (target==c) then
return twait() and false
end
local targetpart=gp(target,"HumanoidRootPart","BasePart") or gp(target,"Torso","BasePart") or gp(target,"UpperTorso","BasePart")
if not (targetpart and targetpart:IsDescendantOf(ws)) then
return twait() and false
end
if highlightflingtargets then
local h=i("Highlight")
h.Name=rs()
h.Adornee=target
h.FillColor=c3(1,0,0)
h.OutlineColor=c3(1,0,0)
h.FillTransparency=0.5
h.OutlineTransparency=0
h.Parent=i9
flingtable[targetpart]=h
else
flingtable[targetpart]=false
end
twait()
return true
end
if ctrlclicktp then
ctrlclicktp=KeyCode.LeftControl
local tpoff=v3_010*3
if clickfling then
mouse.Button1Down:Connect(function()
if mouse.Target then
if uis:IsKeyDown(ctrlclicktp) then
pos=mouse.Hit.Position+tpoff
cfr=cf(pos,pos+camoff.LookVector*v3_101)
xzvel=v3_0
Yvel=0
else
predictionfling()
end
end
end)
else
mouse.Button1Down:Connect(function()
if mouse.Target and uis:IsKeyDown(ctrlclicktp) then
pos=mouse.Hit.Position+tpoff
cfr=cf(pos,pos+camoff.LookVector*v3_101)
xzvel=v3_0
Yvel=0
end
end)
end
elseif clickfling then
mouse.Button1Down:Connect(predictionfling)
end
local noYvelTime=1
local lastsine=sine
local con=nil
local function mainFunction()
if not c then
for i,v in pairs(cframes) do
local p=i.placeholder
if p then
p:Destroy()
end
end
for i,v in pairs(flingtable) do
if v then
v:Destroy()
end
end
uis.MouseBehavior=enumMD
onnewcamera()
local c=lp.Character
if c then
cam.CameraSubject=c:FindFirstChildOfClass("Humanoid")
end
return con and con:Disconnect()
end
sine=osclock()
local delta=sine-lastsine
deltaTime=clamp(delta*10,0,1)
lastsine=sine
if shiftlock then
if allowshiftlock then
uis.MouseBehavior=enumMLC
local rotation=uis:GetMouseDelta()*mradN05
local camoffpos=camoff.Position
camoff=cf(camoffpos,camoffpos+camoff.LookVector)*angles(rotation.Y,rotation.X,0)
else
shiftlock=false
end
elseif firstperson then
uis.MouseBehavior=enumMLC
local rotation=uis:GetMouseDelta()*mradN05
local camoffpos=camoff.Position
camoff=cf(camoffpos,camoffpos+camoff.LookVector)*angles(rotation.Y,rotation.X,0)
elseif uis:IsMouseButtonPressed(enumMB2) then
uis.MouseBehavior=enumMLCP
local rotation=uis:GetMouseDelta()*mradN05
local camoffpos=camoff.Position
camoff=cf(camoffpos,camoffpos+camoff.LookVector)*angles(rotation.Y,rotation.X,0)
else
uis.MouseBehavior=enumMD
end
local raycastresult=ws:Raycast(pos,v3_010*(fpdh-pos.Y),raycastparams)
local onground=nil
if raycastresult then
raycastresult=raycastresult.Position
onground=(pos.Y-raycastresult.Y)<3.01
if onground then
Yvel=0
cfr=cfr+v3_010*(raycastresult.Y+3-pos.Y)*clamp(delta*20,0,1)
if spacePressed then
Yvel=jumpPower
end
else
Yvel=Yvel-gravity*delta
if pos.Y+Yvel*delta0 then
xzvel=xzvel.Unit*walkSpeed
end
cfr=cf(pos,pos+camoff.LookVector*v3_101)
elseif xzvel.Magnitude>0 then
xzvel=xzvel.Unit*walkSpeed
cfr=cfr:Lerp(cf(pos,pos+xzvel),deltaTime)
end
cfr=cfr+(xzvel+(v3_010*Yvel))*delta
pos=cfr.Position
camcf=cf(pos,pos+camoff.LookVector)+camoff.LookVector*camoff.Z+v3_0150
if shiftlock and not firstperson then
camcf=camcf+camcf.RightVector*1.75
end
if cam then
cam.CFrame=camcf
end
if onground then
if xzvel==v3_0 then
lerpsIdle()
else
lerpsWalk()
end
elseif Yvel>0 then
lerpsJump()
else
lerpsFall()
end
cframes[rootpart]=cfr
refreshjoints(rootpart)
if abs(Yvel)>1 then
noYvelTime=0
else
noYvelTime=clamp(noYvelTime+delta*0.3,0,1)
xzvel=xzvel*(1-noYvelTime)
end
local idlerv=v3(sin((sine-0.0375)*16),sin(sine*16),sin((sine+0.075)*16))
local idleoff=idlerv*0.001
for i,v in pairs(cframes) do
local p=i.placeholder
if p then
if p.Parent~=ws then
p.Parent=ws
end
p.CFrame=v
end
end
local claimpos=primarypart.Position
for i,v in pairs(cframes1) do
if (not i.Anchored) and i:IsDescendantOf(ws) then
if i.ReceiveAge==0 then
local p=v.placeholder
if p and p.Parent then
p.Parent=nil
end
v=cframes[v]
local lastpos=lastpositions[i]
local vel=(v.Position-lastpos)/delta
if vel.Magnitude>speedlimit then
vel=vel.Unit*speedlimit
v=v+(lastpos+vel*delta)-v.Position
end
lastpositions[i]=v.Position
if vel.Magnitude<0.15 then
v=v+idleoff
end
if novoid and (v.Y>> wings or not you are doomed ]]",
[2] = "All"
}
game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest"):FireServer(unpack(args))
local t=reanimate()
if type(t)~="table" then return end
local raycastlegs=t.raycastlegs
local velbycfrvec=t.velbycfrvec
local velchgbycfrvec=t.velchgbycfrvec
local addmode=t.addmode
local getJoint=t.getJoint
local getPartFromMesh=t.getPartFromMesh
local getPartJoint=t.getPartJoint
local RootJoint=getJoint("RootJoint")
local RightShoulder=getJoint("Right Shoulder")
local LeftShoulder=getJoint("Left Shoulder")
local RightHip=getJoint("Right Hip")
local LeftHip=getJoint("Left Hip")
local Neck=getJoint("Neck")
local swordhandle = getPartFromMesh(4315410540,4315250791)
local swordweld = getPartJoint(swordhandle)
local wing1handle = getPartFromMesh(5486588848,13332369316)
local wing1weld = getPartJoint(wing1handle)
local gniwhandle = getPartFromMesh(5593756557,13332369316)
local gniwweld = getPartJoint(gniwhandle)
t.setWalkSpeed(90)
local attackAnimation=nil
mouse.Button1Down:Connect(function() --not sure about the event name tho
if attackAnimation then return end
attackAnimation=function()
RightShoulder.C0=RightShoulder.C0:Lerp(cf(0.8,0.9,0)*angles(1.3962634015954636,2.443460952792061,1.0471975511965976),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,6,0)*angles(-1.3962634015954636,0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-0.8,0.9,0)*angles(-1.5707963267948966,-0.6981317007977318,20.943951023931955),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0,1.2217304763960306,0),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-2.0943951023931953,0,3.141592653589793),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.2,0)*angles(-0.5235987755982988,-1.3962634015954636,0),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(0.4,3.7,0)*angles(3.141592653589793,-1.5707963267948966,0),deltaTime)
-- add your attack animation here
end
task.wait(0.29) --u choose how long the first keyframe plays for
attackAnimation=function()
RightShoulder.C0=RightShoulder.C0:Lerp(cf(0.8,0.9,0)*angles(1.3962634015954636,2.443460952792061,1.0471975511965976),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,1,0)*angles(-2.2689280275926285,0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-0.8,0.9,0)*angles(-1.5707963267948966,-0.6981317007977318,20.943951023931955),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0,1.2217304763960306,0),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-2.0943951023931953,0,3.141592653589793),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.2,0)*angles(-0.5235987755982988,-1.3962634015954636,0),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(3.2,-0.2,0)*angles(0,1.5707963267948966,0),deltaTime)
--add your attack animation here
end
task.wait(0.49) --u choose how long the second keyframe plays for
--u can add more attack anims here
attackAnimation=nil --this ends the attack anim
end)
addmode("default", {
idle = function()
local rY, lY = raycastlegs()
if attackAnimation then return attackAnimation() end
local Cfw, Crt = velchgbycfrvec()
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-1.5707963267948966+0.3490658503988659*sin(sine*5),0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-1,0.5,0)*angles(3.3161255787892263+0.2617993877991494*sin(sine*5),-0.5235987755982988,0.8726646259971648),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,6+2*sin(sine*-5),0)*angles(-1.9198621771937625+0.3490658503988659*sin((sine+0.3)*5),0,3.141592653589793),deltaTime)
RightShoulder.C0=RightShoulder.C0:Lerp(cf(1,0.3,0)*angles(-1.2217304763960306,1.0471975511965976+0.17453292519943295*sin(sine*5),1.0471975511965976),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(2,3.7,1)*angles(-0.6981317007977318+0.17453292519943295*sin(sine*5),1.5707963267948966,0),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.2,0)*angles(-0.5235987755982988+0.5235987755982988*sin((sine+0.2)*5),-1.3962634015954636,0),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0.6981317007977318*sin((sine+0.3)*5),1.2217304763960306,0),deltaTime)
end,
walk = function()
local Vfw, Vrt = velbycfrvec()
local rY, lY = raycastlegs()
local Cfw, Crt = velchgbycfrvec()
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-0.8726646259971648+0.17453292519943295*sin(sine*5),0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-1,0.3,0)*angles(1.7453292519943295-0.2617993877991494*sin((sine+0.3)*5),-2.0943951023931953,2.0943951023931953),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,6+1*sin(sine*-5),0)*angles(-2.443460952792061+0.08726646259971647*sin((sine+0.3)*5),0,3.141592653589793),deltaTime)
RightShoulder.C0=RightShoulder.C0:Lerp(cf(1,0.3,0)*angles(-1.3962634015954636-0.2617993877991494*sin((sine+0.3)*5),1.0471975511965976,1.0471975511965976),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(2,3.7,1.2)*angles(-0.6981317007977318,1.5707963267948966+0.17453292519943295*sin((sine+0.3)*5),0),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.5,0)*angles(-0.5235987755982988+0.17453292519943295*sin((sine+0.2)*5),-1.3962634015954636,0),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0.3490658503988659*sin((sine+0.3)*5),1.2217304763960306,0),deltaTime)
end,
jump = function()
local Vfw, Vrt = velbycfrvec()
local Cfw, Crt = velchgbycfrvec()
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-1.5707963267948966+0.3490658503988659*sin(sine*5),0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-1,0.5,0)*angles(3.3161255787892263+0.2617993877991494*sin(sine*5),-0.5235987755982988,0.8726646259971648),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,6+2*sin(sine*-5),0)*angles(-1.9198621771937625+0.3490658503988659*sin((sine+0.3)*5),0,3.141592653589793),deltaTime)
RightShoulder.C0=RightShoulder.C0:Lerp(cf(1,0.3,0)*angles(-1.2217304763960306,1.0471975511965976+0.17453292519943295*sin(sine*5),1.0471975511965976),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(2,3.7,1)*angles(-0.6981317007977318+0.17453292519943295*sin(sine*5),1.5707963267948966,0),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.2,0)*angles(-0.5235987755982988+0.5235987755982988*sin((sine+0.2)*5),-1.3962634015954636,0),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0.6981317007977318*sin((sine+0.3)*5),1.2217304763960306,0),deltaTime)
end,
fall = function()
local Vfw, Vrt = velbycfrvec()
local Cfw, Crt = velchgbycfrvec()
Neck.C0=Neck.C0:Lerp(cf(0,1,0)*angles(-0.8726646259971648+0.17453292519943295*sin(sine*5),0,3.141592653589793),deltaTime)
LeftShoulder.C0=LeftShoulder.C0:Lerp(cf(-1,0.3,0)*angles(1.7453292519943295-0.2617993877991494*sin((sine+0.3)*5),-2.0943951023931953,2.0943951023931953),deltaTime)
wing1weld.C0=wing1weld.C0:Lerp(cf(-2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),0.3490658503988659+0.4363323129985824*sin(sine*5),-3.141592653589793+0.17453292519943295*sin(sine*5)),deltaTime)
RootJoint.C0=RootJoint.C0:Lerp(cf(0,6+1*sin(sine*-5),0)*angles(-2.443460952792061+0.08726646259971647*sin((sine+0.3)*5),0,3.141592653589793),deltaTime)
RightShoulder.C0=RightShoulder.C0:Lerp(cf(1,0.3,0)*angles(-1.3962634015954636-0.2617993877991494*sin((sine+0.3)*5),1.0471975511965976,1.0471975511965976),deltaTime)
gniwweld.C0=gniwweld.C0:Lerp(cf(2,-1.3,0)*angles(-3.141592653589793+0.4363323129985824*sin(sine*5),-0.3490658503988659-0.4363323129985824*sin(sine*5),-3.141592653589793-0.17453292519943295*sin(sine*5)),deltaTime)
swordweld.C0=swordweld.C0:Lerp(cf(2,3.7,1.2)*angles(-0.6981317007977318,1.5707963267948966+0.17453292519943295*sin((sine+0.3)*5),0),deltaTime)
LeftHip.C0=LeftHip.C0:Lerp(cf(-1,-1.5,0)*angles(-0.5235987755982988+0.17453292519943295*sin((sine+0.2)*5),-1.3962634015954636,0),deltaTime)
RightHip.C0=RightHip.C0:Lerp(cf(1,-0.5,-0.4)*angles(0.3490658503988659*sin((sine+0.3)*5),1.2217304763960306,0),deltaTime)
end
})
end)
lbl("----========================----")
btn("Destroy UI",function()
i1:Destroy()
i2:Destroy()
i3:Destroy()
i4:Destroy()
i5:Destroy()
i6:Destroy()
i7:Destroy()
i8:Destroy()
i9:Destroy()
stopreanimate()
end).TextColor3=c3(1,0,0)
btn("Stop reanimate",function()
stopreanimate()
end).TextColor3=c3(1,0,0)
btn("Rejoin",function()
local ts = game:GetService("TeleportService")
local p = game:GetService("Players").LocalPlayer
ts:Teleport(game.PlaceId, p)
end).TextColor3=c3(1,0,0)
btn("Reset",function()
stopreanimate()
end).TextColor3=c3(1,0,0)
lbl("----========================----")
lbl("SETTINGS")
local function swtc(txt,options,onchanged)
local current=0
local swtcbtn=nil
local function btnpressed()
current=current+1
if current>#options then
current=1
end
local option=options[current]
swtcbtn.Text=txt..": "..option.text
onchanged(option.value)
end
swtcbtn=btn("change",btnpressed)
btnpressed()
return swtcbtn
end
swtc("client sided placeholders",{
{value=true,text="yes"},
{value=false,text="no"}
},function(v)
placeholders=v
end)
swtc("highlight fling targets",{
{value=true,text="yes"},
{value=false,text="no"}
},function(v)
highlightflingtargets=v
end)
swtc("allow shiftlock",{
{value=true,text="yes"},
{value=false,text="no"}
},function(v)
allowshiftlock=v
end)
swtc("ctrl click tp",{
{value=true,text="yes"},
{value=false,text="no"}
},function(v)
ctrltp=v
end)
swtc("click fling",{
{value=true,text="yes"},
{value=false,text="no"}
},function(v)
clickfling=v
end)
swtc("claim mode",{
{value=false,text="nowait"},
{value=true,text="safer"}
},function(v)
claimwait=v
end)
if type(shp)=="function" then
swtc("simulation radius",{
{value=1000,text="on"},
{value=false,text="off"}
},function(v)
simrad=v
end)
else
lbl("simulation radius: unavailable")
end
local iscg,_=pcall(function()
i9.Parent=cg
end)
if not iscg then
i6.Text="PLAYERGUI MODE"
i9.Parent=pg
twait(3)
i6.Text=guiTheme.guiTitle
end