Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// BY MrY7zz
- if not game.IsLoaded then
- game.Loaded:Wait()
- end
- local UI = (gethui and gethui()) or (cloneref and cloneref(game:GetService("CoreGui"))) or (pcall(function() return game:GetService("CoreGui").Parent end) and game:GetService("CoreGui")) or game:GetService("Players").LocalPlayer:FindFirstChildOfClass("PlayerGui")
- local function LoadUi(seconds)
- -- Gui to Lua
- -- Version: 3.2
- -- Instances:
- local ScreenGui = Instance.new("ScreenGui")
- local Frame = Instance.new("Frame")
- local UICorner = Instance.new("UICorner")
- local UIGradient = Instance.new("UIGradient")
- local UIStroke = Instance.new("UIStroke")
- local UIStroke_2 = Instance.new("UIStroke")
- local UIStroke_3 = Instance.new("UIStroke")
- local TextLabel = Instance.new("TextLabel")
- local TextLabel_2 = Instance.new("TextLabel")
- ScreenGui.IgnoreGuiInset = true
- ScreenGui.Parent = UI
- ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
- Frame.Parent = ScreenGui
- Frame.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
- Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
- Frame.BorderSizePixel = 0
- Frame.Size = UDim2.new(0, 429, 0, 79)
- Frame.Position = UDim2.new(0.5, -Frame.Size.X.Offset/2, 0.01, 0)
- UIStroke.Parent = Frame
- UIStroke_2.Color = Color3.fromRGB(65, 65, 65)
- UIStroke_3.Color = Color3.fromRGB(65, 65, 65)
- UICorner.Parent = Frame
- UIGradient.Color = ColorSequence.new{ColorSequenceKeypoint.new(0.00, Color3.fromRGB(79, 173, 255)), ColorSequenceKeypoint.new(1.00, Color3.fromRGB(85, 127, 179))}
- UIGradient.Rotation = 40
- UIGradient.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0.00, 0.00), NumberSequenceKeypoint.new(0.07, 0.13), NumberSequenceKeypoint.new(1.00, 0.00)}
- UIGradient.Parent = Frame
- UIStroke_3.Thickness = 0.7
- TextLabel.Parent = Frame
- TextLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
- TextLabel.BackgroundTransparency = 1.000
- TextLabel.BorderColor3 = Color3.fromRGB(0, 0, 0)
- TextLabel.BorderSizePixel = 0
- TextLabel.Position = UDim2.new(0.265734255, 0, 0, 0)
- TextLabel.Size = UDim2.new(0, 200, 0, 50)
- TextLabel.Font = Enum.Font.BuilderSans
- TextLabel.Text = "MrY7zz's CurrentAngle V2 REANIMATE BY MrY7zz"
- TextLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
- TextLabel.TextSize = 20.000
- UIStroke_2.Parent = TextLabel
- TextLabel_2.Parent = Frame
- TextLabel_2.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
- TextLabel_2.BackgroundTransparency = 1.000
- TextLabel_2.BorderColor3 = Color3.fromRGB(0, 0, 0)
- TextLabel_2.BorderSizePixel = 0
- TextLabel_2.Position = UDim2.new(-0.08, 0, 0.367088616, 0)
- TextLabel_2.Size = UDim2.new(0, 500, 0, 50)
- TextLabel_2.Font = Enum.Font.BuilderSans
- TextLabel_2.Text = tostring(seconds) .. " Seconds left for reanimate to load"
- TextLabel_2.TextColor3 = Color3.fromRGB(255, 255, 255)
- TextLabel_2.TextSize = 28.000
- UIStroke_3.Parent = TextLabel_2
- task.delay(seconds + 1.5, function()
- ScreenGui:Destroy()
- end)
- end
- if not sethiddenproperty then
- error("Script is only compatible with environments that have sethiddenproperty")
- return
- end
- local game = game
- local debug = debug
- local debug_info = debug.info
- local gameIndex
- local gameNewIndex
- local CFrameIndex
- local emptyCFrame = CFrame.new()
- local getrawmetatableworks = false
- local isindexsupported = false
- if getrawmetatable then
- local s, r = pcall(getrawmetatable, game)
- local success, res = pcall(getrawmetatable, emptyCFrame)
- if s then
- if r.__index then
- gameIndex = r.__index
- gameNewIndex = r.__newindex
- getrawmetatableworks = true
- end
- end
- if success and s then
- if res.__index then
- CFrameIndex = res.__index
- end
- end
- end
- if not getrawmetatableworks then
- xpcall(function()
- return game[{}]
- end, function()
- gameIndex = debug_info(2, "f")
- end)
- xpcall(function()
- game[{}] = {}
- end, function()
- gameNewIndex = debug_info(2, "f")
- end)
- xpcall(function()
- return emptyCFrame[{}]
- end, function()
- CFrameIndex = debug_info(2, "f")
- end)
- end
- local successtest, err = pcall(function()
- return gameIndex(game:GetService("Workspace"), "Parent")
- end)
- if not successtest then
- if string.find(err:lower(), "instance expected") then
- isindexsupported = false
- else
- isindexsupported = true
- end
- else
- isindexsupported = true
- end
- if not gameIndex then
- gameIndex = function(self, key)
- return self[key]
- end
- end
- if not gameNewIndex then
- gameNewIndex = function(self, key, new)
- self[key] = new
- end
- end
- if not CFrameIndex then
- CFrameIndex = function(self, key, new)
- self[key] = new
- end
- end
- local zeropointone = 0.1
- local twait = task.wait
- local tspawn = task.spawn
- local currentfakechar = nil
- local vector3zero = Vector3.zero
- local getgenv = getgenv or function()
- return _G
- end
- local NaN = 0/0
- local dummypart = Instance.new("Part")
- local GetDescendants = dummypart.GetDescendants
- local IsA = dummypart.IsA
- local Destroy = dummypart.Destroy
- local math_random = math.random
- local Vector3_new = Vector3.new
- local usedefaultanims = _G["Use default animations"] or false
- local transparency_level = _G["Fake character transparency level"] or 1
- local disablescripts = _G["Disable character scripts"] or true
- local fakecollisions = _G["Fake character should collide"] or true
- local nametoexcludefromtransparency = _G["Names to exclude from transparency"] or {}
- local parentrealchartofakechar = _G["Parent real character to fake character"] or false
- local respawncharacter = (function() if _G["Respawn character"] == nil then return true else return _G["Respawn character"] end end)()
- local instantrespawn = (function() if _G["Instant respawn"] == nil then return false else return _G["Instant respawn"] end end)()
- local hiderootpart = (function() if _G["Hide HumanoidRootPart"] == nil then return false else return _G["Hide HumanoidRootPart"] end end)()
- local permadeathcharacter = (function() if _G["PermaDeath fake character"] == nil then return true else return _G["PermaDeath fake character"] end end)()
- local r15rig = (function() if _G["R15 Reanimate"] == nil then return false else return _G["R15 Reanimate"] end end)()
- local LocalPlayer = game:GetService("Players").LocalPlayer
- if not LocalPlayer.Character then
- LocalPlayer.CharacterAdded:Wait()
- twait(zeropointone)
- if LocalPlayer.Character:FindFirstChildOfClass("Humanoid").RigType ~= Enum.HumanoidRigType.R6 then
- error("Script is only compatible with R6 type rigs")
- return
- end
- end
- local function removeAnims(character)
- if character == currentfakechar then
- return
- end
- local humanoid = character:WaitForChild("Humanoid", 5)
- local animator = humanoid:FindFirstChildWhichIsA("Animator")
- if animator then
- Destroy(animator)
- end
- local animateScript = character:FindFirstChild("Animate")
- if animateScript then
- Destroy(animateScript)
- end
- local a = nil
- a = humanoid.DescendantAdded:Connect(function(child)
- if child:IsA("Animator") then
- Destroy(child)
- a:Disconnect()
- a = nil
- end
- end)
- end
- LocalPlayer.CharacterAdded:Once(removeAnims)
- LocalPlayer.Character.Archivable = true
- local originalChar = LocalPlayer.Character
- local fakeChar
- if not r15rig then
- fakeChar = originalChar:Clone()
- else
- fakeChar = game:GetService("Players"):CreateHumanoidModelFromDescription(originalChar.Humanoid.HumanoidDescription, Enum.HumanoidRigType.R15)
- fakeChar.HumanoidRootPart.CFrame = originalChar.HumanoidRootPart.CFrame
- end
- fakeChar.Name = LocalPlayer.Name .. "_Fake"
- local signaldiedbackend = LocalPlayer.ConnectDiedSignalBackend
- local signalkill = LocalPlayer.Kill
- if respawncharacter then
- LoadUi(game:GetService("Players").RespawnTime)
- if instantrespawn then
- if replicatesignal then
- replicatesignal(signaldiedbackend)
- twait(game:GetService("Players").RespawnTime - 0.05)
- replicatesignal(signalkill)
- LocalPlayer.CharacterAdded:Wait()
- fakeChar.Parent = workspace
- currentfakechar = fakeChar
- end
- else
- originalChar:BreakJoints()
- LocalPlayer.CharacterAdded:Wait()
- fakeChar.Parent = workspace
- currentfakechar = fakeChar
- end
- end
- twait(zeropointone)
- local newChar = LocalPlayer.Character
- newChar.Archivable = true
- if disablescripts then
- tspawn(function()
- for _, obj in ipairs(fakeChar:GetChildren()) do
- if obj:IsA("LocalScript") then
- obj.Enabled = false
- end
- end
- end)
- end
- for _, part in ipairs(fakeChar:GetDescendants()) do
- if part:IsA("BasePart") or part:IsA("Decal") then
- if not nametoexcludefromtransparency[tostring(part)] then
- part.Transparency = transparency_level
- end
- end
- end
- twait(0.4)
- LocalPlayer.Character = fakeChar
- if parentrealchartofakechar then
- newChar.Parent = fakeChar
- end
- local newcharTorso = newChar:WaitForChild("Torso")
- local fakecharTorso
- if r15rig then
- fakecharTorso = fakeChar:WaitForChild("UpperTorso")
- else
- fakecharTorso = fakeChar:WaitForChild("Torso")
- end
- local newcharRoot = newChar:WaitForChild("HumanoidRootPart")
- local fakecharRoot = fakeChar:WaitForChild("HumanoidRootPart")
- local limbmapping
- if not r15rig then
- limbmapping = {
- Neck = fakeChar:WaitForChild("Head"),
- RootJoint = fakeChar:WaitForChild("Torso"),
- ["Left Shoulder"] = fakeChar:WaitForChild("Left Arm"),
- ["Right Shoulder"] = fakeChar:WaitForChild("Right Arm"),
- ["Left Hip"] = fakeChar:WaitForChild("Left Leg"),
- ["Right Hip"] = fakeChar:WaitForChild("Right Leg")
- }
- else
- limbmapping = {
- Neck = fakeChar:WaitForChild("Head"),
- RootJoint = fakeChar:WaitForChild("UpperTorso"),
- ["Left Shoulder"] = fakeChar:WaitForChild("LeftLowerArm"),
- ["Right Shoulder"] = fakeChar:WaitForChild("RightLowerArm"),
- ["Left Hip"] = fakeChar:WaitForChild("LeftLowerLeg"),
- ["Right Hip"] = fakeChar:WaitForChild("RightLowerLeg")
- }
- end
- local jointmapping = {
- Neck = newcharTorso:WaitForChild("Neck"),
- RootJoint = newChar.HumanoidRootPart:WaitForChild("RootJoint"),
- ["Left Shoulder"] = newcharTorso:WaitForChild("Left Shoulder"),
- ["Right Shoulder"] = newcharTorso:WaitForChild("Right Shoulder"),
- ["Left Hip"] = newcharTorso:WaitForChild("Left Hip"),
- ["Right Hip"] = newcharTorso:WaitForChild("Right Hip")
- }
- local Inverse = emptyCFrame.Inverse
- local ToAxisAngle = emptyCFrame.ToAxisAngle
- local ToObjectSpace = emptyCFrame.ToObjectSpace
- local ToEulerAnglesXYZ = emptyCFrame.ToEulerAnglesXYZ
- local function RCA6dToCFrame(Motor6D, TargetPart, ReferencePart)
- local rel = Inverse(gameIndex(ReferencePart, "CFrame")) * gameIndex(TargetPart, "CFrame")
- local delta = Inverse(gameIndex(Motor6D, "C0")) * rel * gameIndex(Motor6D, "C1")
- local axis, angle = ToAxisAngle(delta)
- local newangle = axis * angle
- sethiddenproperty(Motor6D, 'ReplicateCurrentOffset6D', CFrameIndex(delta, "Position"))
- sethiddenproperty(Motor6D, 'ReplicateCurrentAngle6D', newangle)
- end
- local poscache = CFrame.new(255, 255, 0)
- local task_spawn = task.spawn
- local function stepReanimate()
- --[[task_spawn(function()]]
- if flinging then return end
- if hiderootpart then
- newcharRoot.CFrame = poscache
- + Vector3_new(0, math_random(1, 2) / 319.19, 0)
- else
- newcharRoot.CFrame = fakeChar.HumanoidRootPart.CFrame + Vector3_new(0, math_random(1, 2) / 319.19, 0)
- end
- --// YES it is unstable. im working on optimizing (later)
- newcharRoot.Velocity = vector3zero
- newcharRoot.Velocity = vector3zero
- local rootjoint = jointmapping["RootJoint"]
- RCA6dToCFrame(rootjoint, limbmapping["RootJoint"], newcharRoot)
- for joint, limb in pairs(limbmapping) do
- local relativecframe = ToObjectSpace(limb.CFrame, gameIndex(fakecharTorso, "CFrame"))
- local pitch, yaw, _ = ToEulerAnglesXYZ(relativecframe)
- local angle = 0
- if joint == "Neck" or joint == "RootJoint" then
- angle = -yaw
- elseif joint == "Left Shoulder" or joint == "Left Hip" then
- angle = pitch
- elseif joint == "Right Shoulder" or joint == "Right Hip" then
- angle = -pitch
- end
- if joint ~= "RootJoint" then
- gameNewIndex(jointmapping[joint], "DesiredAngle", angle)
- RCA6dToCFrame(jointmapping[joint], limb, newChar.Torso)
- end
- end
- --[[end)]]
- end
- local function setdestroyheight(height)
- local sucess, result = pcall(function()
- workspace.FallenPartsDestroyHeight = height
- end)
- end
- local currentheight = workspace.FallenPartsDestroyHeight
- local function flinginternal(character, time)
- if character == newChar then return end
- local time = time or 5
- flinging = true
- local start = tick()
- local connection
- connection = game:GetService("RunService").Heartbeat:Connect(function()
- if tick() - start >= time then
- setdestroyheight(currentheight)
- flinging = false
- connection:Disconnect()
- --break
- end
- if character then
- if character:FindFirstChild("HumanoidRootPart") then
- local velocity = character.HumanoidRootPart.Velocity
- local direction = velocity.Magnitude > 1 and velocity.Unit or Vector3_new(0, 0, 0)
- local predictedPosition = (character.PrimaryPart.CFrame or character.HumanoidRootPart.CFrame).Position + direction * math_random(5, 12)
- newcharRoot.CFrame = CFrame.new(predictedPosition)
- newcharRoot.Velocity = Vector3_new(9e7, 9e7 * 10, 9e7)
- newcharRoot.RotVelocity = Vector3_new(9e8, 9e8, 9e8)
- else
- flinging = false
- connection:Disconnect()
- --break
- end
- else
- flinging = false
- connection:Disconnect()
- --break
- end
- end)
- end
- getgenv().fling = function(character, time, yield)
- setdestroyheight(NaN)
- local yield = yield or false
- if yield then
- flinginternal(character, time)
- else
- tspawn(flinginternal, character, time)
- end
- end
- local function disableCollisions()
- pcall(function()
- for _, char in ipairs({ newChar }) do
- for _, obj in ipairs(GetDescendants(char)) do
- if IsA(obj, "BasePart") then
- obj.CanCollide = false
- obj.Massless = true
- end
- end
- end
- end)
- end
- local function disableCollisionsWithFakeChar()
- pcall(function()
- for _, char in ipairs({ newChar, fakeChar }) do
- for _, obj in ipairs(GetDescendants(char)) do
- if IsA(obj, "BasePart") then
- obj.CanCollide = false
- obj.Massless = true
- end
- end
- end
- end)
- end
- local RunService = game:GetService("RunService")
- local postSimConnection = RunService.PostSimulation:Connect(stepReanimate)
- local disableCollisionConnection;
- local humanoidnewchar = newChar:WaitForChild("Humanoid")
- humanoidnewchar.PlatformStand = true
- humanoidnewchar.AutoRotate = false
- if fakecollisions then
- disableCollisionConnection = RunService.PreSimulation:Connect(disableCollisions)
- else
- disableCollisionConnection = RunService.PreSimulation:Connect(disableCollisionsWithFakeChar)
- end
- if not permadeathcharacter then
- fakeChar.Humanoid.Died:Once(function()
- disableCollisionConnection:Disconnect()
- postSimConnection:Disconnect()
- fakeChar:Destroy()
- game:GetService("Players").LocalPlayer.Character = newChar
- newChar:BreakJoints()
- end)
- end
- workspace.CurrentCamera.CameraSubject = fakeChar:WaitForChild("Humanoid")
- finished = true
- return fakeChar
Advertisement
Add Comment
Please, Sign In to add comment