Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- game.Players.LocalPlayer.Character["Hat1"].Handle.Mesh:Destroy()
- game.Players.LocalPlayer.Character["Pal Hair"].Handle.Mesh:Destroy() --Pink Hair
- game.Players.LocalPlayer.Character["Pink Hair"].Handle.Mesh:Destroy()
- game.Players.LocalPlayer.Character["Kate Hair"].Handle.Mesh:Destroy() --LavanderHair
- game.Players.LocalPlayer.Character["LavanderHair"].Handle.Mesh:Destroy()
- game.Players.LocalPlayer.Character["Robloxclassicred"].Handle.Mesh:Destroy()
- --VarietyShades02
- --TennisBall
- local c = game.Players.LocalPlayer.Character
- for i, v in pairs({"Right Arm", "Left Arm"}) do
- local arm = c[v]
- arm.Parent = nil
- arm.Transparency = 1
- arm.Parent = c
- end
- local c = game.Players.LocalPlayer.Character
- for i, v in pairs({"Right Leg", "Left Leg"}) do
- local Leg = c[v]
- Leg.Parent = nil
- Leg.Transparency = 1
- Leg.Parent = c
- end
- local v3_net, v3_808 = Vector3.new(0, 25.1, 0), Vector3.new(8, 0, 8)
- local function getNetlessVelocity(realPartVelocity)
- local mag = realPartVelocity.Magnitude
- if mag > 1 then
- local unit = realPartVelocity.Unit
- if (unit.Y > 0.25) or (unit.Y < -0.75) then
- return unit * (25.1 / unit.Y)
- end
- end
- return v3_net + realPartVelocity * v3_808
- end
- local simradius = "shp" --simulation radius (net bypass) method
- --simulation radius (net bypass) method
- --"shp" - sethiddenproperty
- --"ssr" - setsimulationradius
- --false - disable
- local antiragdoll = true --removes hingeConstraints and ballSocketConstraints from your character
- local newanimate = false --disables the animate script and enables after reanimation
- local discharscripts = true --disables all localScripts parented to your character before reanimation
- local R15toR6 = true --tries to convert your character to r6 if its r15
- local hatcollide = true --makes hats cancollide (only method 0)
- local humState16 = true --enables collisions for limbs before the humanoid dies (using hum:ChangeState)
- local addtools = false --puts all tools from backpack to character and lets you hold them after reanimation
- local hedafterneck = false --disable aligns for head and enable after neck is removed
- local loadtime = game:GetService("Players").RespawnTime + 0.5 --anti respawn delay
- local method = 0 --reanimation method
- --methods:
- --0 - breakJoints (takes [loadtime] seconds to laod)
- --1 - limbs
- --2 - limbs + anti respawn
- --3 - limbs + breakJoints after [loadtime] seconds
- --4 - remove humanoid + breakJoints
- --5 - remove humanoid + limbs
- local alignmode = 3 --AlignPosition mode
- --modes:
- --1 - AlignPosition rigidity enabled true
- --2 - 2 AlignPositions rigidity enabled both true and false
- --3 - AlignPosition rigidity enabled false
- healthHide = healthHide and ((method == 0) or (method == 2) or (method == 000)) and gp(c, "Head", "BasePart")
- local lp = game:GetService("Players").LocalPlayer
- local rs = game:GetService("RunService")
- local stepped = rs.Stepped
- local heartbeat = rs.Heartbeat
- local renderstepped = rs.RenderStepped
- local sg = game:GetService("StarterGui")
- local ws = game:GetService("Workspace")
- local cf = CFrame.new
- local v3 = Vector3.new
- local v3_0 = v3(0, 0, 0)
- local inf = math.huge
- local c = lp.Character
- if not (c and c.Parent) then
- return
- end
- c.Destroying:Connect(function()
- c = nil
- end)
- local function gp(parent, name, className)
- if typeof(parent) == "Instance" then
- for i, v in pairs(parent:GetChildren()) do
- if (v.Name == name) and v:IsA(className) then
- return v
- end
- end
- end
- return nil
- end
- local function align(Part0, Part1)
- Part0.CustomPhysicalProperties = PhysicalProperties.new(0.0001, 0.0001, 0.0001, 0.0001, 0.0001)
- local att0 = Instance.new("Attachment", Part0)
- att0.Orientation = v3_0
- att0.Position = v3_0
- att0.Name = "att0_" .. Part0.Name
- local att1 = Instance.new("Attachment", Part1)
- att1.Orientation = v3_0
- att1.Position = v3_0
- att1.Name = "att1_" .. Part1.Name
- if (alignmode == 1) or (alignmode == 2) then
- local ape = Instance.new("AlignPosition", att0)
- ape.ApplyAtCenterOfMass = false
- ape.MaxForce = inf
- ape.MaxVelocity = inf
- ape.ReactionForceEnabled = false
- ape.Responsiveness = 200
- ape.Attachment1 = att1
- ape.Attachment0 = att0
- ape.Name = "AlignPositionRtrue"
- ape.RigidityEnabled = true
- end
- if (alignmode == 2) or (alignmode == 3) then
- local apd = Instance.new("AlignPosition", att0)
- apd.ApplyAtCenterOfMass = false
- apd.MaxForce = inf
- apd.MaxVelocity = inf
- apd.ReactionForceEnabled = false
- apd.Responsiveness = 200
- apd.Attachment1 = att1
- apd.Attachment0 = att0
- apd.Name = "AlignPositionRfalse"
- apd.RigidityEnabled = false
- end
- local ao = Instance.new("AlignOrientation", att0)
- ao.MaxAngularVelocity = inf
- ao.MaxTorque = inf
- ao.PrimaryAxisOnly = false
- ao.ReactionTorqueEnabled = false
- ao.Responsiveness = 200
- ao.Attachment1 = att1
- ao.Attachment0 = att0
- ao.RigidityEnabled = false
- if type(getNetlessVelocity) == "function" then
- local realVelocity = v3_0
- local steppedcon = stepped:Connect(function()
- Part0.Velocity = realVelocity
- end)
- local heartbeatcon = heartbeat:Connect(function()
- realVelocity = Part0.Velocity
- Part0.Velocity = getNetlessVelocity(realVelocity)
- end)
- Part0.Destroying:Connect(function()
- Part0 = nil
- steppedcon:Disconnect()
- heartbeatcon:Disconnect()
- end)
- end
- end
- local function respawnrequest()
- local ccfr = ws.CurrentCamera.CFrame
- local c = lp.Character
- lp.Character = nil
- lp.Character = c
- local con = nil
- con = ws.CurrentCamera.Changed:Connect(function(prop)
- if (prop ~= "Parent") and (prop ~= "CFrame") then
- return
- end
- ws.CurrentCamera.CFrame = ccfr
- con:Disconnect()
- end)
- end
- local destroyhum = (method == 4) or (method == 5)
- local breakjoints = (method == 0) or (method == 4)
- local antirespawn = (method == 0) or (method == 2) or (method == 3)
- hatcollide = hatcollide and (method == 0)
- addtools = addtools and gp(lp, "Backpack", "Backpack")
- local fenv = getfenv()
- local shp = fenv.sethiddenproperty or fenv.set_hidden_property or fenv.set_hidden_prop or fenv.sethiddenprop
- local ssr = fenv.setsimulationradius or fenv.set_simulation_radius or fenv.set_sim_radius or fenv.setsimradius or fenv.set_simulation_rad or fenv.setsimulationrad
- if shp and (simradius == "shp") then
- spawn(function()
- while c and heartbeat:Wait() do
- shp(lp, "SimulationRadius", inf)
- end
- end)
- elseif ssr and (simradius == "ssr") then
- spawn(function()
- while c and heartbeat:Wait() do
- ssr(inf)
- end
- end)
- end
- antiragdoll = antiragdoll and function(v)
- if v:IsA("HingeConstraint") or v:IsA("BallSocketConstraint") then
- v.Parent = nil
- end
- end
- if antiragdoll then
- for i, v in pairs(c:GetDescendants()) do
- antiragdoll(v)
- end
- c.DescendantAdded:Connect(antiragdoll)
- end
- if antirespawn then
- respawnrequest()
- end
- if method == 0 then
- wait(loadtime)
- if not c then
- return
- end
- end
- if discharscripts then
- for i, v in pairs(c:GetChildren()) do
- if v:IsA("LocalScript") then
- v.Disabled = true
- end
- end
- elseif newanimate then
- local animate = gp(c, "Animate", "LocalScript")
- if animate and (not animate.Disabled) then
- animate.Disabled = true
- else
- newanimate = false
- end
- end
- if addtools then
- for i, v in pairs(addtools:GetChildren()) do
- if v:IsA("Tool") then
- v.Parent = c
- end
- end
- end
- pcall(function()
- settings().Physics.AllowSleep = false
- settings().Physics.PhysicsEnvironmentalThrottle = Enum.EnviromentalPhysicsThrottle.Disabled
- end)
- local OLDscripts = {}
- for i, v in pairs(c:GetDescendants()) do
- if v.ClassName == "Script" then
- table.insert(OLDscripts, v)
- end
- end
- local scriptNames = {}
- for i, v in pairs(c:GetDescendants()) do
- if v:IsA("BasePart") then
- local newName = tostring(i)
- local exists = true
- while exists do
- exists = false
- for i, v in pairs(OLDscripts) do
- if v.Name == newName then
- exists = true
- end
- end
- if exists then
- newName = newName .. "_"
- end
- end
- table.insert(scriptNames, newName)
- Instance.new("Script", v).Name = newName
- end
- end
- c.Archivable = true
- local hum = c:FindFirstChildOfClass("Humanoid")
- if hum then
- for i, v in pairs(hum:GetPlayingAnimationTracks()) do
- v:Stop()
- end
- end
- local cl = c:Clone()
- if hum and humState16 then
- hum:ChangeState(Enum.HumanoidStateType.Physics)
- if destroyhum then
- wait(1.6)
- end
- end
- if hum and hum.Parent and destroyhum then
- hum:Destroy()
- end
- if not c then
- return
- end
- local head = gp(c, "Head", "BasePart")
- local torso = gp(c, "Torso", "BasePart") or gp(c, "UpperTorso", "BasePart")
- local root = gp(c, "HumanoidRootPart", "BasePart")
- if hatcollide and c:FindFirstChildOfClass("Accessory") then
- local anything = c:FindFirstChildOfClass("BodyColors") or gp(c, "Health", "Script")
- if not (torso and root and anything) then
- return
- end
- torso:Destroy()
- root:Destroy()
- if shp then
- for i,v in pairs(c:GetChildren()) do
- if v:IsA("Accessory") then
- shp(v, "BackendAccoutrementState", 0)
- end
- end
- end
- anything:Destroy()
- if head then
- head:Destroy()
- end
- end
- for i, v in pairs(cl:GetDescendants()) do
- if v:IsA("BasePart") then
- v.Transparency = 1
- v.Anchored = false
- end
- end
- local model = Instance.new("Model", c)
- model.Name = model.ClassName
- model.Destroying:Connect(function()
- model = nil
- end)
- for i, v in pairs(c:GetChildren()) do
- if v ~= model then
- if addtools and v:IsA("Tool") then
- for i1, v1 in pairs(v:GetDescendants()) do
- if v1 and v1.Parent and v1:IsA("BasePart") then
- local bv = Instance.new("BodyVelocity", v1)
- bv.Velocity = v3_0
- bv.MaxForce = v3(1000, 1000, 1000)
- bv.P = 1250
- bv.Name = "bv_" .. v.Name
- end
- end
- end
- v.Parent = model
- end
- end
- if breakjoints then
- model:BreakJoints()
- else
- if head and torso then
- for i, v in pairs(model:GetDescendants()) do
- if v:IsA("Weld") or v:IsA("Snap") or v:IsA("Glue") or v:IsA("Motor") or v:IsA("Motor6D") then
- local save = false
- if (v.Part0 == torso) and (v.Part1 == head) then
- save = true
- end
- if (v.Part0 == head) and (v.Part1 == torso) then
- save = true
- end
- if save then
- if hedafterneck then
- hedafterneck = v
- end
- else
- v:Destroy()
- end
- end
- end
- end
- if method == 3 then
- spawn(function()
- wait(loadtime)
- if model then
- model:BreakJoints()
- end
- end)
- end
- end
- cl.Parent = c
- for i, v in pairs(cl:GetChildren()) do
- v.Parent = c
- end
- cl:Destroy()
- local modelDes = {}
- for i, v in pairs(model:GetDescendants()) do
- if v:IsA("BasePart") then
- i = tostring(i)
- v.Destroying:Connect(function()
- modelDes[i] = nil
- end)
- modelDes[i] = v
- end
- end
- local modelcolcon = nil
- local function modelcolf()
- if model then
- for i, v in pairs(modelDes) do
- v.CanCollide = false
- end
- else
- modelcolcon:Disconnect()
- end
- end
- modelcolcon = stepped:Connect(modelcolf)
- modelcolf()
- for i, scr in pairs(model:GetDescendants()) do
- if (scr.ClassName == "Script") and table.find(scriptNames, scr.Name) then
- local Part0 = scr.Parent
- if Part0:IsA("BasePart") then
- for i1, scr1 in pairs(c:GetDescendants()) do
- if (scr1.ClassName == "Script") and (scr1.Name == scr.Name) and (not scr1:IsDescendantOf(model)) then
- local Part1 = scr1.Parent
- if (Part1.ClassName == Part0.ClassName) and (Part1.Name == Part0.Name) then
- align(Part0, Part1)
- break
- end
- end
- end
- end
- end
- end
- if (typeof(hedafterneck) == "Instance") and head then
- local aligns = {}
- local con = nil
- con = hedafterneck.Changed:Connect(function(prop)
- if (prop == "Parent") and not hedafterneck.Parent then
- con:Disconnect()
- for i, v in pairs(aligns) do
- v.Enabled = true
- end
- end
- end)
- for i, v in pairs(head:GetDescendants()) do
- if v:IsA("AlignPosition") or v:IsA("AlignOrientation") then
- i = tostring(i)
- aligns[i] = v
- v.Destroying:Connect(function()
- aligns[i] = nil
- end)
- v.Enabled = false
- end
- end
- end
- for i, v in pairs(c:GetDescendants()) do
- if v and v.Parent then
- if v.ClassName == "Script" then
- if table.find(scriptNames, v.Name) then
- v:Destroy()
- end
- elseif not v:IsDescendantOf(model) then
- if v:IsA("Decal") then
- v.Transparency = 1
- elseif v:IsA("ForceField") then
- v.Visible = false
- elseif v:IsA("Sound") then
- v.Playing = false
- elseif v:IsA("BillboardGui") or v:IsA("SurfaceGui") or v:IsA("ParticleEmitter") or v:IsA("Fire") or v:IsA("Smoke") or v:IsA("Sparkles") then
- v.Enabled = false
- end
- end
- end
- end
- if newanimate then
- local animate = gp(c, "Animate", "LocalScript")
- if animate then
- animate.Disabled = false
- end
- end
- if addtools then
- for i, v in pairs(c:GetChildren()) do
- if v:IsA("Tool") then
- v.Parent = addtools
- end
- end
- end
- local hum0 = model:FindFirstChildOfClass("Humanoid")
- if hum0 then
- hum0.Destroying:Connect(function()
- hum0 = nil
- end)
- end
- local hum1 = c:FindFirstChildOfClass("Humanoid")
- if hum1 then
- hum1.Destroying:Connect(function()
- hum1 = nil
- end)
- end
- if hum1 then
- ws.CurrentCamera.CameraSubject = hum1
- local camSubCon = nil
- local function camSubFunc()
- camSubCon:Disconnect()
- if c and hum1 then
- ws.CurrentCamera.CameraSubject = hum1
- end
- end
- camSubCon = renderstepped:Connect(camSubFunc)
- if hum0 then
- hum0.Changed:Connect(function(prop)
- if hum1 and (prop == "Jump") then
- hum1.Jump = hum0.Jump
- end
- end)
- else
- respawnrequest()
- end
- end
- local rb = Instance.new("BindableEvent", c)
- rb.Event:Connect(function()
- rb:Destroy()
- sg:SetCore("ResetButtonCallback", true)
- if destroyhum then
- c:BreakJoints()
- return
- end
- if hum0 and (hum0.Health > 0) then
- model:BreakJoints()
- hum0.Health = 0
- end
- if antirespawn then
- respawnrequest()
- end
- end)
- sg:SetCore("ResetButtonCallback", rb)
- spawn(function()
- while c do
- if hum0 and hum1 then
- hum1.Jump = hum0.Jump
- end
- wait()
- end
- sg:SetCore("ResetButtonCallback", true)
- end)
- R15toR6 = R15toR6 and hum1 and (hum1.RigType == Enum.HumanoidRigType.R15)
- if R15toR6 then
- local part = gp(c, "HumanoidRootPart", "BasePart") or gp(c, "UpperTorso", "BasePart") or gp(c, "LowerTorso", "BasePart") or gp(c, "Head", "BasePart") or c:FindFirstChildWhichIsA("BasePart")
- if part then
- local cfr = part.CFrame
- local R6parts = {
- head = {
- Name = "Head",
- Size = v3(2, 1, 1),
- R15 = {
- Head = 0
- }
- },
- torso = {
- Name = "Torso",
- Size = v3(2, 2, 1),
- R15 = {
- UpperTorso = 0.2,
- LowerTorso = -100
- }
- },
- root = {
- Name = "HumanoidRootPart",
- Size = v3(2, 2, 1),
- R15 = {
- HumanoidRootPart = 0
- }
- },
- leftArm = {
- Name = "Left Arm",
- Size = v3(1, 2, 1),
- R15 = {
- LeftHand = -0.73,
- LeftLowerArm = -0.2,
- LeftUpperArm = 0.4
- }
- },
- rightArm = {
- Name = "Right Arm",
- Size = v3(1, 2, 1),
- R15 = {
- RightHand = -0.73,
- RightLowerArm = -0.2,
- RightUpperArm = 0.4
- }
- },
- leftLeg = {
- Name = "Left Leg",
- Size = v3(1, 2, 1),
- R15 = {
- LeftFoot = -0.73,
- LeftLowerLeg = -0.15,
- LeftUpperLeg = 0.6
- }
- },
- rightLeg = {
- Name = "Right Leg",
- Size = v3(1, 2, 1),
- R15 = {
- RightFoot = -0.73,
- RightLowerLeg = -0.15,
- RightUpperLeg = 0.6
- }
- }
- }
- for i, v in pairs(c:GetChildren()) do
- if v:IsA("BasePart") then
- for i1, v1 in pairs(v:GetChildren()) do
- if v1:IsA("Motor6D") then
- v1.Part0 = nil
- end
- end
- end
- end
- part.Archivable = true
- for i, v in pairs(R6parts) do
- local part = part:Clone()
- part:ClearAllChildren()
- part.Name = v.Name
- part.Size = v.Size
- part.CFrame = cfr
- part.Anchored = false
- part.Transparency = 1
- part.CanCollide = false
- for i1, v1 in pairs(v.R15) do
- local R15part = gp(c, i1, "BasePart")
- local att = gp(R15part, "att1_" .. i1, "Attachment")
- if R15part then
- local weld = Instance.new("Weld", R15part)
- weld.Name = "Weld_" .. i1
- weld.Part0 = part
- weld.Part1 = R15part
- weld.C0 = cf(0, v1, 0)
- weld.C1 = cf(0, 0, 0)
- R15part.Massless = true
- R15part.Name = "R15_" .. i1
- R15part.Parent = part
- if att then
- att.Parent = part
- att.Position = v3(0, v1, 0)
- end
- end
- end
- part.Parent = c
- R6parts[i] = part
- end
- local R6joints = {
- neck = {
- Parent = R6parts.torso,
- 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)
- },
- rootJoint = {
- Parent = R6parts.root,
- 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)
- },
- rightShoulder = {
- Parent = R6parts.torso,
- 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)
- },
- leftShoulder = {
- Parent = R6parts.torso,
- 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)
- },
- rightHip = {
- Parent = R6parts.torso,
- 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)
- },
- leftHip = {
- Parent = R6parts.torso,
- 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)
- }
- }
- for i, v in pairs(R6joints) do
- local joint = Instance.new("Motor6D")
- for prop, val in pairs(v) do
- joint[prop] = val
- end
- R6joints[i] = joint
- end
- hum1.RigType = Enum.HumanoidRigType.R6
- hum1.HipHeight = 0
- end
- end
- --find rig joints
- local function fakemotor()
- return {C0=cf(), C1=cf()}
- end
- local torso = gp(c, "Torso", "BasePart")
- local root = gp(c, "HumanoidRootPart", "BasePart")
- local neck = gp(torso, "Neck", "Motor6D")
- neck = neck or fakemotor()
- local rootJoint = gp(root, "RootJoint", "Motor6D")
- rootJoint = rootJoint or fakemotor()
- local leftShoulder = gp(torso, "Left Shoulder", "Motor6D")
- leftShoulder = leftShoulder or fakemotor()
- local rightShoulder = gp(torso, "Right Shoulder", "Motor6D")
- rightShoulder = rightShoulder or fakemotor()
- local leftHip = gp(torso, "Left Hip", "Motor6D")
- leftHip = leftHip or fakemotor()
- local rightHip = gp(torso, "Right Hip", "Motor6D")
- rightHip = rightHip or fakemotor()
- --120 fps
- local fps = 0
- local event = Instance.new("BindableEvent", c)
- event.Name = "120 fps"
- local floor = math.floor
- fps = 1 / fps
- local tf = 0
- local con = nil
- con = game:GetService("RunService").RenderStepped:Connect(function(s)
- if not c then
- con:Disconnect()
- return
- end
- --tf += s
- if tf >= fps then
- for i=1, floor(tf / fps) do
- event:Fire(c)
- end
- tf = 0
- end
- end)
- local event = event.Event
- local hedrot = v3(0, 5, 0)
- local uis = game:GetService("UserInputService")
- local function isPressed(key)
- return (not uis:GetFocusedTextBox()) and uis:IsKeyDown(Enum.KeyCode[key])
- end
- local biggesthandle = nil
- for i, v in pairs(c:GetChildren()) do
- if v:IsA("Accessory") then
- local handle = gp(v, "Handle", "BasePart")
- if biggesthandle then
- if biggesthandle.Size.Magnitude < handle.Size.Magnitude then
- biggesthandle = handle
- end
- else
- biggesthandle = gp(v, "Handle", "BasePart")
- end
- end
- end
- if not biggesthandle then
- return
- end
- local handle1 = gp(gp(model, biggesthandle.Parent.Name, "Accessory"), "Handle", "BasePart")
- if not handle1 then
- return
- end
- handle1.Destroying:Connect(function()
- handle1 = nil
- end)
- biggesthandle.Destroying:Connect(function()
- biggesthandle = nil
- end)
- biggesthandle:BreakJoints()
- biggesthandle.Anchored = true
- for i, v in pairs(handle1:GetDescendants()) do
- if v:IsA("AlignOrientation") then
- v.Enabled = false
- end
- end
- local mouse = lp:GetMouse()
- local fling = false
- mouse.Button1Down:Connect(function()
- fling = true
- end)
- mouse.Button1Up:Connect(function()
- fling = false
- end)
- local function doForSignal(signal, vel)
- spawn(function()
- while signal:Wait() and c and handle1 and biggesthandle do
- if fling and mouse.Target then
- biggesthandle.Position = mouse.Hit.Position
- end
- handle1.RotVelocity = vel
- end
- end)
- end
- doForSignal(stepped, v3(100, 100, 100))
- doForSignal(renderstepped, v3(100, 100, 100))
- doForSignal(heartbeat, v3(20000, 20000, 20000)) --https://web.roblox.com/catalog/63690008/Pal-Hair
- local lp = game:GetService("Players").LocalPlayer
- local rs = game:GetService("RunService")
- local stepped = rs.Stepped
- local heartbeat = rs.Heartbeat
- local renderstepped = rs.RenderStepped
- local sg = game:GetService("StarterGui")
- local ws = game:GetService("Workspace")
- local cf = CFrame.new
- local v3 = Vector3.new
- local v3_0 = Vector3.zero
- local inf = math.huge
- local cplayer = lp.Character
- local v3 = Vector3.new
- local function gp(parent, name, className)
- if typeof(parent) == "Instance" then
- for i, v in pairs(parent:GetChildren()) do
- if (v.Name == name) and v:IsA(className) then
- return v
- end
- end
- end
- return nil
- end
- local hat2 = gp(cplayer, "Hat1", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Torso"]
- att2.Position = Vector3.new(0.5, -0, 0)
- att2.Rotation = Vector3.new(90, 0, 0)
- local hat2 = gp(cplayer, "Pal Hair", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Torso"]
- att2.Position = Vector3.new(-0.5, -0, 0)
- att2.Rotation = Vector3.new(90, 0, 0)
- local hat2 = gp(cplayer, "Pink Hair", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Left Arm"]
- att2.Position = Vector3.new(0, -0, 0)
- att2.Rotation = Vector3.new(90, 0, 0)
- local hat2 = gp(cplayer, "Kate Hair", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Right Arm"]
- att2.Position = Vector3.new(-0, -0, 0)
- att2.Rotation = Vector3.new(90, 0, 0) --LavanderHair
- local hat2 = gp(cplayer, "LavanderHair", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Right Leg"]
- att2.Position = Vector3.new(0, 0, 0) --Robloxclassicred
- att2.Rotation = Vector3.new(90, 0, 0)
- local hat2 = gp(cplayer, "Robloxclassicred", "Accessory")
- local handle2 = gp(hat2, "Handle", "BasePart")
- local att2 = gp(handle2, "att1_Handle", "Attachment")
- att2.Parent = cplayer["Left Leg"]
- att2.Position = Vector3.new(-0, 0, 0)
- att2.Rotation = Vector3.new(90, 0, 0)
- function oof()
- game:GetObjects("rbxassetid://1561389244")[1].Parent=game.Workspace.Terrain
- local c = game.Workspace.Terrain:FindFirstChildOfClass("Model"):Clone()
- c.Parent = game.Workspace
- c:MoveTo(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)
- game.Workspace.Terrain:FindFirstChildOfClass("Model"):remove()
- c.Name = game.Players.LocalPlayer.Name
- game.Players.LocalPlayer.Character = c
- game.Workspace.CurrentCamera.CameraSubject = c:FindFirstChildOfClass("Humanoid")
- local Figure = game.Players.LocalPlayer.Character
- local Torso = Figure:WaitForChild("Torso")
- local RightShoulder = Torso:WaitForChild("Right Shoulder")
- local LeftShoulder = Torso:WaitForChild("Left Shoulder")
- local RightHip = Torso:WaitForChild("Right Hip")
- local LeftHip = Torso:WaitForChild("Left Hip")
- local Neck = Torso:WaitForChild("Neck")
- local Humanoid = Figure:WaitForChild("Humanoid")
- local pose = "Standing"
- local currentAnim = ""
- local currentAnimInstance = nil
- local currentAnimTrack = nil
- local currentAnimKeyframeHandler = nil
- local currentAnimSpeed = 1.0
- local animTable = {}
- local animNames = {
- idle = {
- { id = "http://www.roblox.com/asset/?id=180435571", weight = 9 },
- { id = "http://www.roblox.com/asset/?id=180435792", weight = 1 }
- },
- walk = {
- { id = "http://www.roblox.com/asset/?id=180426354", weight = 10 }
- },
- run = {
- { id = "run.xml", weight = 10 }
- },
- jump = {
- { id = "http://www.roblox.com/asset/?id=125750702", weight = 10 }
- },
- fall = {
- { id = "http://www.roblox.com/asset/?id=180436148", weight = 10 }
- },
- climb = {
- { id = "http://www.roblox.com/asset/?id=180436334", weight = 10 }
- },
- sit = {
- { id = "http://www.roblox.com/asset/?id=178130996", weight = 10 }
- },
- toolnone = {
- { id = "http://www.roblox.com/asset/?id=182393478", weight = 10 }
- },
- toolslash = {
- { id = "http://www.roblox.com/asset/?id=129967390", weight = 10 }
- -- { id = "slash.xml", weight = 10 }
- },
- toollunge = {
- { id = "http://www.roblox.com/asset/?id=129967478", weight = 10 }
- },
- wave = {
- { id = "http://www.roblox.com/asset/?id=128777973", weight = 10 }
- },
- point = {
- { id = "http://www.roblox.com/asset/?id=128853357", weight = 10 }
- },
- dance1 = {
- { id = "http://www.roblox.com/asset/?id=182435998", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491037", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491065", weight = 10 }
- },
- dance2 = {
- { id = "http://www.roblox.com/asset/?id=182436842", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491248", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491277", weight = 10 }
- },
- dance3 = {
- { id = "http://www.roblox.com/asset/?id=182436935", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491368", weight = 10 },
- { id = "http://www.roblox.com/asset/?id=182491423", weight = 10 }
- },
- laugh = {
- { id = "http://www.roblox.com/asset/?id=129423131", weight = 10 }
- },
- cheer = {
- { id = "http://www.roblox.com/asset/?id=129423030", weight = 10 }
- },
- }
- local dances = {"dance1", "dance2", "dance3"}
- -- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
- local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
- function configureAnimationSet(name, fileList)
- if (animTable[name] ~= nil) then
- for _, connection in pairs(animTable[name].connections) do
- connection:disconnect()
- end
- end
- animTable[name] = {}
- animTable[name].count = 0
- animTable[name].totalWeight = 0
- animTable[name].connections = {}
- -- check for config values
- local config = game.Players.LocalPlayer.Character.Animate:FindFirstChild(name)
- if (config ~= nil) then
- -- print("Loading anims " .. name)
- table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
- table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
- local idx = 1
- for _, childPart in pairs(config:GetChildren()) do
- if (childPart:IsA("Animation")) then
- table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
- animTable[name][idx] = {}
- animTable[name][idx].anim = childPart
- local weightObject = childPart:FindFirstChild("Weight")
- if (weightObject == nil) then
- animTable[name][idx].weight = 1
- else
- animTable[name][idx].weight = weightObject.Value
- end
- animTable[name].count = animTable[name].count + 1
- animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
- -- print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
- idx = idx + 1
- end
- end
- end
- -- fallback to defaults
- if (animTable[name].count <= 0) then
- for idx, anim in pairs(fileList) do
- animTable[name][idx] = {}
- animTable[name][idx].anim = Instance.new("Animation")
- animTable[name][idx].anim.Name = name
- animTable[name][idx].anim.AnimationId = anim.id
- animTable[name][idx].weight = anim.weight
- animTable[name].count = animTable[name].count + 1
- animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
- -- print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
- end
- end
- end
- -- Setup animation objects
- function scriptChildModified(child)
- local fileList = animNames[child.Name]
- if (fileList ~= nil) then
- configureAnimationSet(child.Name, fileList)
- end
- end
- game.Players.LocalPlayer.Character.Animate.ChildAdded:connect(scriptChildModified)
- game.Players.LocalPlayer.Character.Animate.ChildRemoved:connect(scriptChildModified)
- for name, fileList in pairs(animNames) do
- configureAnimationSet(name, fileList)
- end
- -- ANIMATION
- -- declarations
- local toolAnim = "None"
- local toolAnimTime = 0
- local jumpAnimTime = 0
- local jumpAnimDuration = 0.3
- local toolTransitionTime = 0.1
- local fallTransitionTime = 0.3
- local jumpMaxLimbVelocity = 0.75
- -- functions
- function stopAllAnimations()
- local oldAnim = currentAnim
- -- return to idle if finishing an emote
- if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
- oldAnim = "idle"
- end
- currentAnim = ""
- currentAnimInstance = nil
- if (currentAnimKeyframeHandler ~= nil) then
- currentAnimKeyframeHandler:disconnect()
- end
- if (currentAnimTrack ~= nil) then
- currentAnimTrack:Stop()
- currentAnimTrack:Destroy()
- currentAnimTrack = nil
- end
- return oldAnim
- end
- function setAnimationSpeed(speed)
- if speed ~= currentAnimSpeed then
- currentAnimSpeed = speed
- currentAnimTrack:AdjustSpeed(currentAnimSpeed)
- end
- end
- function keyFrameReachedFunc(frameName)
- if (frameName == "End") then
- local repeatAnim = currentAnim
- -- return to idle if finishing an emote
- if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
- repeatAnim = "idle"
- end
- local animSpeed = currentAnimSpeed
- playAnimation(repeatAnim, 0.0, Humanoid)
- setAnimationSpeed(animSpeed)
- end
- end
- -- Preload animations
- function playAnimation(animName, transitionTime, humanoid)
- local roll = math.random(1, animTable[animName].totalWeight)
- local origRoll = roll
- local idx = 1
- while (roll > animTable[animName][idx].weight) do
- roll = roll - animTable[animName][idx].weight
- idx = idx + 1
- end
- -- print(animName .. " " .. idx .. " [" .. origRoll .. "]")
- local anim = animTable[animName][idx].anim
- -- switch animation
- if (anim ~= currentAnimInstance) then
- if (currentAnimTrack ~= nil) then
- currentAnimTrack:Stop(transitionTime)
- currentAnimTrack:Destroy()
- end
- currentAnimSpeed = 1.0
- -- load it to the humanoid; get AnimationTrack
- currentAnimTrack = humanoid:LoadAnimation(anim)
- currentAnimTrack.Priority = Enum.AnimationPriority.Core
- -- play the animation
- currentAnimTrack:Play(transitionTime)
- currentAnim = animName
- currentAnimInstance = anim
- -- set up keyframe name triggers
- if (currentAnimKeyframeHandler ~= nil) then
- currentAnimKeyframeHandler:disconnect()
- end
- currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
- end
- end
- -------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------
- local toolAnimName = ""
- local toolAnimTrack = nil
- local toolAnimInstance = nil
- local currentToolAnimKeyframeHandler = nil
- function toolKeyFrameReachedFunc(frameName)
- if (frameName == "End") then
- -- print("Keyframe : ".. frameName)
- playToolAnimation(toolAnimName, 0.0, Humanoid)
- end
- end
- function playToolAnimation(animName, transitionTime, humanoid, priority)
- local roll = math.random(1, animTable[animName].totalWeight)
- local origRoll = roll
- local idx = 1
- while (roll > animTable[animName][idx].weight) do
- roll = roll - animTable[animName][idx].weight
- idx = idx + 1
- end
- -- print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
- local anim = animTable[animName][idx].anim
- if (toolAnimInstance ~= anim) then
- if (toolAnimTrack ~= nil) then
- toolAnimTrack:Stop()
- toolAnimTrack:Destroy()
- transitionTime = 0
- end
- -- load it to the humanoid; get AnimationTrack
- toolAnimTrack = humanoid:LoadAnimation(anim)
- if priority then
- toolAnimTrack.Priority = priority
- end
- -- play the animation
- toolAnimTrack:Play(transitionTime)
- toolAnimName = animName
- toolAnimInstance = anim
- currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
- end
- end
- function stopToolAnimations()
- local oldAnim = toolAnimName
- if (currentToolAnimKeyframeHandler ~= nil) then
- currentToolAnimKeyframeHandler:disconnect()
- end
- toolAnimName = ""
- toolAnimInstance = nil
- if (toolAnimTrack ~= nil) then
- toolAnimTrack:Stop()
- toolAnimTrack:Destroy()
- toolAnimTrack = nil
- end
- return oldAnim
- end
- -------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------
- function onRunning(speed)
- if speed > 0.01 then
- playAnimation("walk", 0.1, Humanoid)
- if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
- setAnimationSpeed(speed / 14.5)
- end
- pose = "Running"
- else
- if emoteNames[currentAnim] == nil then
- playAnimation("idle", 0.1, Humanoid)
- pose = "Standing"
- end
- end
- end
- function onDied()
- pose = "Dead"
- end
- function onJumping()
- playAnimation("jump", 0.1, Humanoid)
- jumpAnimTime = jumpAnimDuration
- pose = "Jumping"
- end
- function onClimbing(speed)
- playAnimation("climb", 0.1, Humanoid)
- setAnimationSpeed(speed / 12.0)
- pose = "Climbing"
- end
- function onGettingUp()
- pose = "GettingUp"
- end
- function onFreeFall()
- if (jumpAnimTime <= 0) then
- playAnimation("fall", fallTransitionTime, Humanoid)
- end
- pose = "FreeFall"
- end
- function onFallingDown()
- pose = "FallingDown"
- end
- function onSeated()
- pose = "Seated"
- end
- function onPlatformStanding()
- pose = "PlatformStanding"
- end
- function onSwimming(speed)
- if speed > 0 then
- pose = "Running"
- else
- pose = "Standing"
- end
- end
- function getTool()
- for _, kid in ipairs(Figure:GetChildren()) do
- if kid.className == "Tool" then return kid end
- end
- return nil
- end
- function getToolAnim(tool)
- for _, c in ipairs(tool:GetChildren()) do
- if c.Name == "toolanim" and c.className == "StringValue" then
- return c
- end
- end
- return nil
- end
- function animateTool()
- if (toolAnim == "None") then
- playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
- return
- end
- if (toolAnim == "Slash") then
- playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
- return
- end
- if (toolAnim == "Lunge") then
- playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
- return
- end
- end
- function moveSit()
- RightShoulder.MaxVelocity = 0.15
- LeftShoulder.MaxVelocity = 0.15
- RightShoulder:SetDesiredAngle(3.14 /2)
- LeftShoulder:SetDesiredAngle(-3.14 /2)
- RightHip:SetDesiredAngle(3.14 /2)
- LeftHip:SetDesiredAngle(-3.14 /2)
- end
- local lastTick = 0
- function move(time)
- local amplitude = 1
- local frequency = 1
- local deltaTime = time - lastTick
- lastTick = time
- local climbFudge = 0
- local setAngles = false
- if (jumpAnimTime > 0) then
- jumpAnimTime = jumpAnimTime - deltaTime
- end
- if (pose == "FreeFall" and jumpAnimTime <= 0) then
- playAnimation("fall", fallTransitionTime, Humanoid)
- elseif (pose == "Seated") then
- playAnimation("sit", 0.5, Humanoid)
- return
- elseif (pose == "Running") then
- playAnimation("walk", 0.1, Humanoid)
- elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
- -- print("Wha " .. pose)
- stopAllAnimations()
- amplitude = 0.1
- frequency = 1
- setAngles = true
- end
- if (setAngles) then
- local desiredAngle = amplitude * math.sin(time * frequency)
- RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
- LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
- RightHip:SetDesiredAngle(-desiredAngle)
- LeftHip:SetDesiredAngle(-desiredAngle)
- end
- -- Tool Animation handling
- local tool = getTool()
- if tool and tool:FindFirstChild("Handle") then
- local animStringValueObject = getToolAnim(tool)
- if animStringValueObject then
- toolAnim = animStringValueObject.Value
- -- message recieved, delete StringValue
- animStringValueObject.Parent = nil
- toolAnimTime = time + .3
- end
- if time > toolAnimTime then
- toolAnimTime = 0
- toolAnim = "None"
- end
- animateTool()
- else
- stopToolAnimations()
- toolAnim = "None"
- toolAnimInstance = nil
- toolAnimTime = 0
- end
- end
- -- connect events
- Humanoid.Died:connect(onDied)
- Humanoid.Running:connect(onRunning)
- Humanoid.Jumping:connect(onJumping)
- Humanoid.Climbing:connect(onClimbing)
- Humanoid.GettingUp:connect(onGettingUp)
- Humanoid.FreeFalling:connect(onFreeFall)
- Humanoid.FallingDown:connect(onFallingDown)
- Humanoid.Seated:connect(onSeated)
- Humanoid.PlatformStanding:connect(onPlatformStanding)
- Humanoid.Swimming:connect(onSwimming)
- -- setup emote chat hook
- game:GetService("Players").LocalPlayer.Chatted:connect(function(msg)
- local emote = ""
- if msg == "/e dance" then
- emote = dances[math.random(1, #dances)]
- elseif (string.sub(msg, 1, 3) == "/e ") then
- emote = string.sub(msg, 4)
- elseif (string.sub(msg, 1, 7) == "/emote ") then
- emote = string.sub(msg, 8)
- end
- if (pose == "Standing" and emoteNames[emote] ~= nil) then
- playAnimation(emote, 0.1, Humanoid)
- end
- end)
- -- main program
- -- initialize to idle
- playAnimation("idle", 0.1, Humanoid)
- pose = "Standing"
- while Figure.Parent ~= nil do
- local _, time = wait(0.1)
- move(time)
- end
- if Humanoid.Health == 0
- then
- print("death occured, waiting for respawn")
- Figure:WaitForChild("Humanoid")
- print("making r6 again")
- oof()
- end
- end
- oof()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement