- --[[
- re-released by discord.gg/dogpower & modified by https://discord.gg/Hbq3TgAJbB
- ____________ __ ____________ ___ ___ ____________
- / __________/ / / / __________ \ / / / / / _______ /
- / / / / / / \ \ / / / / / / / /
- / / / / / / \ \ / / / / / /______/ /
- / / / / / / \ \ / / / / / _____/
- / / / / \ \ / / / / / / / \
- / / / / \ \ / / / / / / / /\ \
- / /____________ / /___________ \ \__________/ / / \/ / / / \ \
- \_____________/ /_____________/ \____________/ \______/ /____/ \___\
- ----------------------------------------------------------------------------------------
- ]]
- --[[---------Settings---------]]--
- local bodyTransparency = 0 --Change the transparency of your character (0 - 1)
- local bodyVelocity = {-17.7, 0, -17.7} --Change your body parts velocity. First number value is the X value. Second number value is the Y value. Third number value is the Z value.
- local hatVelocity = {-17.7, 0, -17.7} --Change your accessory's velocity. First number value is the X value. Second number value is the Y value. Third number value is the Z value.
- --Velocity is not recommended to be (-17.7, 0, -17.7) in R15 since body parts often fall in R15.
- --[[--------------------------]]--
- local player1 = game.Players.LocalPlayer
- local character1 = player1.Character
- --Fake Character--
- --Create Attachment Function
- local function CreateAttachment(parent, position, orientation, axis, secondaryAxis, name)
- local newAttchment = Instance.new("Attachment", parent)
- newAttchment.Position = position
- newAttchment.Orientation = orientation
- newAttchment.Axis = axis
- newAttchment.SecondaryAxis = secondaryAxis
- newAttchment.Name = name
- end
- --Variables
- local player1 = game:GetService("Players").LocalPlayer
- local character1 = player1.Character
- local hrp = character1.HumanoidRootPart
- for i,v in pairs(character1:GetChildren()) do
- if v:IsA("LocalScript") then
- v:Destroy()
- end
- end
- local camera = workspace.CurrentCamera
- local reanimFolder = Instance.new("Folder", character1)
- reanimFolder.Name = "FakeCharacter"
- local model = Instance.new("Model", reanimFolder)
- model.Name = "Reanimation"
- local userInputService = game:GetService("UserInputService")
- local movingW, movingA, movingS, movingD, jumping = false
- --Body Parts--
- --Head
- local cHead = Instance.new("Part", model)
- cHead.Size = Vector3.new(2, 1, 1)
- cHead.Name = "Head"
- --Torso
- local cTorso = Instance.new("Part", model)
- cTorso.Size = Vector3.new(2, 2, 1)
- cTorso.Name = "Torso"
- --Left Arm
- local cLArm = Instance.new("Part", model)
- cLArm.Size = Vector3.new(1, 2, 1)
- cLArm.Name = "Left Arm"
- --Right Arm
- local cRArm = Instance.new("Part", model)
- cRArm.Size = Vector3.new(1, 2, 1)
- cRArm.Name = "Right Arm"
- --Left Leg
- local cLLeg = Instance.new("Part", model)
- cLLeg.Size = Vector3.new(1, 2, 1)
- cLLeg.Name = "Left Leg"
- --Right Leg
- local cRLeg = Instance.new("Part", model)
- cRLeg.Size = Vector3.new(1, 2, 1)
- cRLeg.Name = "Right Leg"
- --HumanoidRootPart
- local cHRP = Instance.new("Part", model)
- cHRP.Size = Vector3.new(2, 2, 1)
- cHRP.Name = "HumanoidRootPart"
- cHRP.Transparency = 1
- cHRP.CanCollide = false
- --Transparency
- for i,v in pairs(model:GetChildren()) do
- if v:IsA("Part") and v.Name ~= "HumanoidRootPart" then
- v.Transparency = 1--0.5
- end
- end
- --Joints--
- --Right Shoulder
- local rShoulder = Instance.new("Motor6D", cTorso)
- rShoulder.Part0 = cTorso
- rShoulder.Part1 = cRArm
- rShoulder.Name = "Right Shoulder"
- rShoulder.C0 = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
- rShoulder.C1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
- --Left Shoulder
- local lShoulder = Instance.new("Motor6D", cTorso)
- lShoulder.Part0 = cTorso
- lShoulder.Part1 = cLArm
- lShoulder.Name = "Left Shoulder"
- lShoulder.C0 = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- lShoulder.C1 = CFrame.new(0.5, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- --Right Hip
- local rHip = Instance.new("Motor6D", cTorso)
- rHip.Part0 = cTorso
- rHip.Part1 = cRLeg
- rHip.Name = "Right Hip"
- rHip.C0 = CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
- rHip.C1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
- --Left Hip
- local lHip = Instance.new("Motor6D", cTorso)
- lHip.Part0 = cTorso
- lHip.Part1 = cLLeg
- lHip.Name = "Left Hip"
- lHip.C0 = CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- lHip.C1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- --Neck
- local neck = Instance.new("Motor6D", cTorso)
- neck.Part0 = cTorso
- neck.Part1 = cHead
- neck.Name = "Neck"
- neck.C0 = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
- neck.C1 = CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
- --RootJoint
- local rootJoint = Instance.new("Motor6D", cHRP)
- rootJoint.Part0 = cHRP
- rootJoint.Part1 = cTorso
- rootJoint.Name = "RootJoint"
- rootJoint.C0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
- rootJoint.C1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
- --Humanoid--
- local cHumanoid = Instance.new("Humanoid", model)
- cHumanoid.DisplayDistanceType = "None"
- --Head Mesh--
- local headMesh = Instance.new("SpecialMesh", cHead)
- headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
- local reanimation = model
- --Creating Attachments
- CreateAttachment(cHead, Vector3.new(0,0.60000002384186,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "HairAttachment")
- CreateAttachment(cHead, Vector3.new(0,0.60000002384186,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "HatAttachment")
- CreateAttachment(cHead, Vector3.new(0,0,-0.60000002384186), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "FaceFrontAttachment")
- CreateAttachment(cHead, Vector3.new(0,0,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "FaceCenterAttachment")
- CreateAttachment(cTorso, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "NeckAttachment")
- CreateAttachment(cTorso, Vector3.new(0,0,-0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "BodyFrontAttachment")
- CreateAttachment(cTorso, Vector3.new(0,0,0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "BodyBackAttachment")
- CreateAttachment(cTorso, Vector3.new(-1,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftCollarAttachment")
- CreateAttachment(cTorso, Vector3.new(1,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightCollarAttachment")
- CreateAttachment(cTorso, Vector3.new(0,-1,-0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistFrontAttachment")
- CreateAttachment(cTorso, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistCenterAttachment")
- CreateAttachment(cTorso, Vector3.new(0,-1,0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistBackAttachment")
- CreateAttachment(cLArm, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftShoulderAttachment")
- CreateAttachment(cLArm, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftGripAttachment")
- CreateAttachment(cRArm, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightShoulderAttachment")
- CreateAttachment(cRArm, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightGripAttachment")
- CreateAttachment(cLLeg, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftFootAttachment")
- CreateAttachment(cRLeg, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightFootAttachment")
- CreateAttachment(cHRP, Vector3.new(0,0,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RootAttachment")
- --Cloning Hats (For Netless)
- for i,v in pairs(character1:GetChildren()) do
- if v:IsA("Accessory") then
- local clone = v:Clone()
- local weld = v.Handle:FindFirstChildWhichIsA("Weld")
- local weldPart1 = weld.Part1
- local newWeld = Instance.new("Weld", clone.Handle)
- local CFrame0 = v.Handle.AccessoryWeld.C0
- local CFrame1 = v.Handle.AccessoryWeld.C1
- clone.Handle:FindFirstChild("AccessoryWeld"):Destroy()
- clone.Parent = reanimation
- newWeld.Name = "AccessoryWeld"
- newWeld.C0 = CFrame0
- newWeld.C1 = CFrame1
- newWeld.Part0 = clone.Handle
- newWeld.Part1 = character1:FindFirstChild(weldPart1.Name)
- clone.Handle.Transparency = 1
- end
- end
- cHRP.CFrame = hrp.CFrame
- -- CLOVR - FE FULL-BODY VR SCRIPT
- -- April 21st Update - TOOL HOLDING ADDED
- -- | made by 0866 and Abacaxl
- -- | tysm unverified
- --RagDollEnabled is set to true, DON'T set it to false or CLOVR won't work. Feel free to change the other settings though. -Abacaxl
- --|| Settings:
- local StudsOffset = 0 -- Character height (negative if you're too high)
- local Smoothness = .5 -- Character interpolation (0.1 - 1 = smooth - rigid)
- local AnchorCharacter = false -- Prevent physics from causing inconsistencies
- local HideCharacter = false -- Hide character on a platform
- local NoCollision = false-- Disable player collision
- local ChatEnabled = true -- See chat on your left hand in-game
- local ChatLocalRange = 75 -- Local chat range
- local ViewportEnabled = true -- View nearby players in a frame
- local ViewportRange = 30 -- Maximum distance players are updated
- local RagdollEnabled = true -- Use your character instead of hats (NetworkOwner vulnerability)
- local RagdollHeadMovement = true -- Move your head separately from your body (+9 second wait)
- local AutoRun = false -- Run script on respawn
- local AutoRespawn = true -- Kill your real body when your virtual body dies
- local WearAllAccessories = true -- Use all leftover hats for the head
- local AccurateHandPosition = true -- Move your Roblox hands according to your real hands
- local AccessorySettings = {
- LeftArm = "",
- RightArm = "",
- LeftLeg = "",
- RightLeg = "",
- Torso = "",
- Head = true,
- BlockArms = true,
- BlockLegs = true,
- BlockTorso = true,
- LimbOffset = CFrame.Angles(math.rad(90), 0, 0)
- }
- local FootPlacementSettings = {
- RightOffset = Vector3.new(.5, 0, 0),
- LeftOffset = Vector3.new(-.5, 0, 0)
- }
- --|| Script:
- local Script = nil
- Script = function()
- --[[
- Variables
- --]]
- local Players = game:GetService("Players")
- local Client = Players.LocalPlayer
- local Character = Client.Character or Client.CharacterAdded:Wait()
- local WeldBase = Character:WaitForChild("HumanoidRootPart")
- local ArmBase = Character:FindFirstChild("RightHand") or Character:FindFirstChild("Right Arm") or WeldBase
- local Backpack = Client:WaitForChild("Backpack")
- local Mouse = Client:GetMouse()
- local Camera = workspace.CurrentCamera
- local VRService = game:GetService("VRService")
- local VRReady = VRService.VREnabled
- local UserInputService = game:GetService("UserInputService")
- local RunService = game:GetService("RunService")
- local HttpService = game:GetService("HttpService")
- local StarterGui = game:GetService("StarterGui")
- local HeadAccessories = {}
- local UsedAccessories = {}
- local Pointer = false
- local Point1 = false
- local Point2 = false
- local VirtualRig = game:GetObjects("rbxassetid://4468539481")[1]
- local VirtualBody = game:GetObjects("rbxassetid://4464983829")[1]
- local Anchor = Instance.new("Part")
- Anchor.Anchored = true
- Anchor.Transparency = 1
- Anchor.CanCollide = false
- Anchor.Parent = workspace
- --[[
- if RagdollEnabled then
- print("RagdollEnabled, thank you for using CLOVR!")
- local NetworkAccess =
- coroutine.create(
- function()
- settings().Physics.AllowSleep = false
- while true do
- game:GetService("RunService").RenderStepped:Wait()
- for _, Players in next, game:GetService("Players"):GetChildren() do
- if Players ~= game:GetService("Players").LocalPlayer then
- Players.MaximumSimulationRadius = 0.1
- Players.SimulationRadius = 0
- end
- end
- game:GetService("Players").LocalPlayer.MaximumSimulationRadius = math.pow(math.huge, math.huge)
- game:GetService("Players").LocalPlayer.SimulationRadius = math.huge * math.huge
- end
- end
- )
- coroutine.resume(NetworkAccess)
- end
- ]]
- StarterGui:SetCore("VRLaserPointerMode", 3)
- --[[
- Character Protection
- --]]
- local CharacterCFrame = WeldBase.CFrame
- if not RagdollEnabled then
- Character.Humanoid.AnimationPlayed:Connect(
- function(Animation)
- Animation:Stop()
- end
- )
- for _, Track in next, Character.Humanoid:GetPlayingAnimationTracks() do
- Track:Stop()
- end
- if HideCharacter then
- local Platform = Instance.new("Part")
- Platform.Anchored = true
- Platform.Size = Vector3.new(100, 5, 100)
- Platform.CFrame = CFrame.new(0, 10000, 0)
- Platform.Transparency = 1
- Platform.Parent = workspace
- Character:MoveTo(Platform.Position + Vector3.new(0, 5, 0))
- wait(.5)
- end
- if AnchorCharacter then
- for _, Part in pairs(Character:GetChildren()) do
- if Part:IsA("BasePart") then
- Part.Anchored = true
- end
- end
- end
- end
- --[[
- Functions
- --]]
- function Tween(Object, Style, Direction, Time, Goal)
- local tweenInfo = TweenInfo.new(Time, Enum.EasingStyle[Style], Enum.EasingDirection[Direction])
- local tween = game:GetService("TweenService"):Create(Object, tweenInfo, Goal)
- tween.Completed:Connect(
- function()
- tween:Destroy()
- end
- )
- tween:Play()
- return tween
- end
- local function GetMotorForLimb(Limb)
- for _, Motor in next, Character:GetDescendants() do
- if Motor:IsA("Motor6D") and Motor.Part1 == Limb then
- return Motor
- end
- end
- end
- local function CreateAlignment(Limb, Part0)
- local Attachment0 = Instance.new("Attachment", Part0 or Anchor)
- local Attachment1 = Instance.new("Attachment", Limb)
- local Orientation = Instance.new("AlignOrientation")
- local Position = Instance.new("AlignPosition")
- Orientation.Attachment0 = Attachment1
- Orientation.Attachment1 = Attachment0
- Orientation.RigidityEnabled = false
- Orientation.MaxTorque = 20000
- Orientation.Responsiveness = 40
- Orientation.Parent = reanimation["HumanoidRootPart"]
- Orientation.Name = Limb.Name.."'s AlignRot"
- Orientation.MaxAngularVelocity = 100
- Position.Attachment0 = Attachment1
- Position.Attachment1 = Attachment0
- Position.RigidityEnabled = false
- Position.MaxForce = 40000
- Position.Responsiveness = 40
- Position.Parent = reanimation["HumanoidRootPart"]
- Position.Name = Limb.Name.."'s AlignPos"
- Position.MaxVelocity = 100
- Limb.Massless = false
- local Motor = GetMotorForLimb(Limb)
- if Motor then
- Motor:Destroy()
- end
- return function(CF, Local)
- if Local then
- Attachment0.CFrame = CF
- else
- Attachment0.WorldCFrame = CF
- end
- end
- end
- local function GetExtraTool()
- for _, Tool in next, Character:GetChildren() do
- if Tool:IsA("Tool") and not Tool.Name:match("LIMB_TOOL") then
- return Tool
- end
- end
- end
- local function GetGripForHandle(Handle)
- for _, Weld in next, Character:GetDescendants() do
- if Weld:IsA("Weld") and (Weld.Part0 == Handle or Weld.Part1 == Handle) then
- return Weld
- end
- end
- wait(.2)
- for _, Weld in next, Character:GetDescendants() do
- if Weld:IsA("Weld") and (Weld.Part0 == Handle or Weld.Part1 == Handle) then
- return Weld
- end
- end
- end
- local function CreateRightGrip(Handle)
- local RightGrip = Instance.new("Weld")
- RightGrip.Name = "RightGrip"
- RightGrip.Part1 = Handle
- RightGrip.Part0 = WeldBase
- RightGrip.Parent = WeldBase
- return RightGrip
- end
- local function CreateAccessory(Accessory, DeleteMeshes)
- if not Accessory then
- return
- end
- local HatAttachment = Accessory.Handle:FindFirstChildWhichIsA("Attachment")
- local HeadAttachment = VirtualRig:FindFirstChild(HatAttachment.Name, true)
- local BasePart = HeadAttachment.Parent
- local HatAtt = HatAttachment.CFrame
- local HeadAtt = HeadAttachment.CFrame
- if DeleteMeshes then
- if Accessory.Handle:FindFirstChild("Mesh") then
- Accessory.Handle.Mesh:Destroy()
- end
- end
- wait()
- local Handle = Accessory:WaitForChild("Handle")
- if Handle:FindFirstChildWhichIsA("Weld", true) then
- Handle:FindFirstChildWhichIsA("Weld", true):Destroy()
- Handle:BreakJoints()
- else
- Handle:BreakJoints()
- end
- Handle.Massless = true
- Handle.Transparency = 0.5
- UsedAccessories[Accessory] = true
- local RightGrip = CreateRightGrip(Handle)
- wait()
- for _, Object in pairs(Handle:GetDescendants()) do
- if not Object:IsA("BasePart") then
- pcall(
- function()
- Object.Transparency = 1
- end
- )
- pcall(
- function()
- Object.Enabled = false
- end
- )
- end
- end
- return Handle, RightGrip, HatAtt, HeadAtt, BasePart
- end
- local function GetHeadAccessories()
- for _, Accessory in next, Character:GetChildren() do
- if Accessory:IsA("Accessory") and not UsedAccessories[Accessory] then
- local Handle, RightGrip, HatAtt, HeadAtt, BasePart = CreateAccessory(Accessory)
- table.insert(HeadAccessories, {Handle, RightGrip, HatAtt, HeadAtt, BasePart})
- do
- Handle.Transparency = 1
- end
- if not WearAllAccessories then
- break
- end
- end
- end
- end
- --[[
- VR Replication Setup
- --]]
- if not RagdollEnabled then
- LeftHandle, LeftHandGrip =
- CreateAccessory(Character:FindFirstChild(AccessorySettings.LeftArm), AccessorySettings.BlockArms)
- RightHandle, RightHandGrip =
- CreateAccessory(Character:FindFirstChild(AccessorySettings.RightArm), AccessorySettings.BlockArms)
- LeftHipHandle, LeftLegGrip =
- CreateAccessory(Character:FindFirstChild(AccessorySettings.LeftLeg), AccessorySettings.BlockLegs)
- RightHipHandle, RightLegGrip =
- CreateAccessory(Character:FindFirstChild(AccessorySettings.RightLeg), AccessorySettings.BlockLegs)
- TorsoHandle, TorsoGrip =
- CreateAccessory(Character:FindFirstChild(AccessorySettings.Torso), AccessorySettings.BlockTorso)
- GetHeadAccessories()
- elseif RagdollEnabled then
- if RagdollHeadMovement then
- Permadeath()
- MoveHead = CreateAlignment(reanimation["Head"])
- end
- MoveRightArm = CreateAlignment(reanimation["Right Arm"])
- MoveLeftArm = CreateAlignment(reanimation["Left Arm"])
- MoveRightLeg = CreateAlignment(reanimation["Right Leg"])
- MoveLeftLeg = CreateAlignment(reanimation["Left Leg"])
- MoveTorso = CreateAlignment(reanimation["Torso"])
- MoveRoot = CreateAlignment(reanimation["HumanoidRootPart"])
- --
- if RagdollHeadMovement then
- for _, Accessory in next, reanimation:GetChildren() do
- if Accessory:IsA("Accessory") and Accessory:FindFirstChild("Handle") then
- local Attachment1 = Accessory.Handle:FindFirstChildWhichIsA("Attachment")
- local Attachment0 = reanimation:FindFirstChild(tostring(Attachment1), true)
- local Orientation = Instance.new("AlignOrientation")
- local Position = Instance.new("AlignPosition")
- print(Attachment1, Attachment0, Accessory)
- Orientation.Attachment0 = Attachment1
- Orientation.Attachment1 = Attachment0
- Orientation.RigidityEnabled = false
- Orientation.ReactionTorqueEnabled = true
- Orientation.MaxTorque = 20000
- Orientation.Responsiveness = 40
- Orientation.Parent = reanimation["Head"]
- Position.Attachment0 = Attachment1
- Position.Attachment1 = Attachment0
- Position.RigidityEnabled = false
- Position.ReactionForceEnabled = true
- Position.MaxForce = 40000
- Position.Responsiveness = 40
- Position.Parent = reanimation["Head"]
- end
- end
- end
- end
- --[[
- Movement
- --]]
- VirtualRig.Name = "VirtualRig"
- VirtualRig.RightFoot.BodyPosition.Position = CharacterCFrame.p
- VirtualRig.LeftFoot.BodyPosition.Position = CharacterCFrame.p
- VirtualRig.Parent = workspace
- VirtualRig:SetPrimaryPartCFrame(CharacterCFrame)
- VirtualRig.Humanoid.Health = 0
- --VirtualRig:FindFirstChild("HumanoidRootPart").CFrame = character1.HumanoidRootPart.CFrame
- VirtualRig:BreakJoints()
- for i,v in pairs(VirtualRig:GetChildren()) do
- if v:IsA("BasePart") then
- v.CFrame = character1.HumanoidRootPart.CFrame
- end
- end
- --
- VirtualBody.Parent = workspace
- VirtualBody.Name = "VirtualBody"
- VirtualBody.Humanoid.WalkSpeed = 8
- VirtualBody.Humanoid.CameraOffset = Vector3.new(0, StudsOffset, 0)
- VirtualBody:SetPrimaryPartCFrame(CharacterCFrame)
- VirtualBody.Humanoid.Died:Connect(
- function()
- print("Virtual death")
- if AutoRespawn then
- Character:BreakJoints()
- if RagdollHeadMovement and RagdollEnabled then
- --Network:Unclaim()
- Respawn()
- end
- end
- end
- )
- --
- Camera.CameraSubject = VirtualBody.Humanoid
- Character.Humanoid.WalkSpeed = 0
- Character.Humanoid.JumpPower = 1
- for _, Part in next, VirtualBody:GetChildren() do
- if Part:IsA("BasePart") then
- Part.Transparency = 1
- end
- end
- for _, Part in next, VirtualRig:GetChildren() do
- if Part:IsA("BasePart") then
- Part.Transparency = 1
- end
- end
- if not VRReady then
- VirtualRig.RightUpperArm.ShoulderConstraint.RigidityEnabled = true
- VirtualRig.LeftUpperArm.ShoulderConstraint.RigidityEnabled = true
- end
- local OnMoving =
- RunService.Stepped:Connect(
- function()
- local Direction = Character.Humanoid.MoveDirection
- local Start = VirtualBody.HumanoidRootPart.Position
- local Point = Start + Direction * 6
- VirtualBody.Humanoid:MoveTo(Point)
- end
- )
- Character.Humanoid.Jumping:Connect(
- function()
- VirtualBody.Humanoid.Jump = true
- end
- )
- UserInputService.JumpRequest:Connect(
- function()
- VirtualBody.Humanoid.Jump = true
- end
- )
- --[[
- VR Replication
- --]]
- if RagdollEnabled then
- for _, Part in pairs(Character:GetDescendants()) do
- if Part:IsA("BasePart") and Part.Name == "Handle" and Part.Parent:IsA("Accessory") then
- Part.LocalTransparencyModifier = 1
- elseif Part:IsA("BasePart") and Part.Transparency < 0.5 and Part.Name ~= "Head" then
- Part.LocalTransparencyModifier = bodyTransparency
- elseif Part:IsA("BasePart") and Part.Name == "Head" then
- Part.LocalTransparencyModifier = 1
- end
- if not Part:IsA("BasePart") and not Part:IsA("AlignPosition") and not Part:IsA("AlignOrientation") then
- pcall(
- function()
- Part.Transparency = 1
- end
- )
- pcall(
- function()
- Part.Enabled = false
- end
- )
- end
- end
- end
- local FootUpdateDebounce = tick()
- local function FloorRay(Part, Distance)
- local Position = Part.CFrame.p
- local Target = Position - Vector3.new(0, Distance, 0)
- local Line = Ray.new(Position, (Target - Position).Unit * Distance)
- local FloorPart, FloorPosition, FloorNormal =
- workspace:FindPartOnRayWithIgnoreList(Line, {VirtualRig, VirtualBody, Character})
- if FloorPart then
- return FloorPart, FloorPosition, FloorNormal, (FloorPosition - Position).Magnitude
- else
- return nil, Target, Vector3.new(), Distance
- end
- end
- local function Flatten(CF)
- local X, Y, Z = CF.X, CF.Y, CF.Z
- local LX, LZ = CF.lookVector.X, CF.lookVector.Z
- return CFrame.new(X, Y, Z) * CFrame.Angles(0, math.atan2(LX, LZ), 0)
- end
- local FootTurn = 1
- local function FootReady(Foot, Target)
- local MaxDist
- if Character.Humanoid.MoveDirection.Magnitude > 0 then
- MaxDist = .5
- else
- MaxDist = 1
- end
- local PastThreshold = (Foot.Position - Target.Position).Magnitude > MaxDist
- local PastTick = tick() - FootUpdateDebounce >= 2
- if PastThreshold or PastTick then
- FootUpdateDebounce = tick()
- end
- return PastThreshold or PastTick
- end
- local function FootYield()
- local RightFooting = VirtualRig.RightFoot.BodyPosition
- local LeftFooting = VirtualRig.LeftFoot.BodyPosition
- local LowerTorso = VirtualRig.LowerTorso
- local Yield = tick()
- repeat
- RunService.Stepped:Wait()
- if
- (LowerTorso.Position - RightFooting.Position).Y > 4 or
- (LowerTorso.Position - LeftFooting.Position).Y > 4 or
- ((LowerTorso.Position - RightFooting.Position) * Vector3.new(1, 0, 1)).Magnitude > 4 or
- ((LowerTorso.Position - LeftFooting.Position) * Vector3.new(1, 0, 1)).Magnitude > 4
- then
- break
- end
- until tick() - Yield >= .17
- end
- local function UpdateFooting()
- if not VirtualRig:FindFirstChild("LowerTorso") then
- wait()
- return
- end
- local Floor, FloorPosition, FloorNormal, Dist = FloorRay(VirtualRig.LowerTorso, 3)
- Dist = math.clamp(Dist, 0, 5)
- local FootTarget =
- VirtualRig.LowerTorso.CFrame * CFrame.new(FootPlacementSettings.RightOffset) - Vector3.new(0, Dist, 0) +
- Character.Humanoid.MoveDirection * (VirtualBody.Humanoid.WalkSpeed / 8) * 2
- if FootReady(VirtualRig.RightFoot, FootTarget) then
- VirtualRig.RightFoot.BodyPosition.Position = FootTarget.p
- VirtualRig.RightFoot.BodyGyro.CFrame = Flatten(VirtualRig.LowerTorso.CFrame)
- end
- FootYield()
- local FootTarget =
- VirtualRig.LowerTorso.CFrame * CFrame.new(FootPlacementSettings.LeftOffset) - Vector3.new(0, Dist, 0) +
- Character.Humanoid.MoveDirection * (VirtualBody.Humanoid.WalkSpeed / 8) * 2
- if FootReady(VirtualRig.LeftFoot, FootTarget) then
- VirtualRig.LeftFoot.BodyPosition.Position = FootTarget.p
- VirtualRig.LeftFoot.BodyGyro.CFrame = Flatten(VirtualRig.LowerTorso.CFrame)
- end
- end
- local function UpdateTorsoPosition()
- if not RagdollEnabled then
- if TorsoHandle then
- local Positioning = VirtualRig.UpperTorso.CFrame
- if not TorsoGrip or not TorsoGrip.Parent then
- TorsoGrip = CreateRightGrip(TorsoHandle)
- end
- local Parent = TorsoGrip.Parent
- TorsoGrip.C1 = CFrame.new()
- TorsoGrip.C0 =
- TorsoGrip.C0:Lerp(
- WeldBase.CFrame:ToObjectSpace(Positioning * CFrame.new(0, -0.25, 0) * AccessorySettings.LimbOffset),
- Smoothness
- )
- TorsoGrip.Parent = nil
- TorsoGrip.Parent = Parent
- end
- else
- local Positioning = VirtualRig.UpperTorso.CFrame
- MoveTorso(Positioning * CFrame.new(0, -0.25, 0))
- MoveRoot(Positioning * CFrame.new(0, -0.25, 0))
- end
- end
- local function UpdateLegPosition()
- if not RagdollEnabled then
- if RightHipHandle then
- local Positioning =
- VirtualRig.RightLowerLeg.CFrame:Lerp(VirtualRig.RightFoot.CFrame, 0.5) + Vector3.new(0, 0.5, 0)
- if not RightHipHandle or not RightHipHandle.Parent then
- RightLegGrip = CreateRightGrip(RightHipHandle)
- end
- local Parent = RightLegGrip.Parent
- RightLegGrip.C1 = CFrame.new()
- RightLegGrip.C0 =
- RightLegGrip.C0:Lerp(
- WeldBase.CFrame:ToObjectSpace(Positioning * AccessorySettings.LimbOffset),
- Smoothness
- )
- RightLegGrip.Parent = nil
- RightLegGrip.Parent = Parent
- end
- if LeftHipHandle then
- local Positioning =
- VirtualRig.LeftLowerLeg.CFrame:Lerp(VirtualRig.LeftFoot.CFrame, 0.5) + Vector3.new(0, 0.5, 0)
- if not LeftLegGrip or not LeftLegGrip.Parent then
- LeftLegGrip = CreateRightGrip(LeftHipHandle)
- end
- local Parent = LeftLegGrip.Parent
- LeftLegGrip.C1 = CFrame.new()
- LeftLegGrip.C0 =
- LeftLegGrip.C0:Lerp(
- WeldBase.CFrame:ToObjectSpace(Positioning * AccessorySettings.LimbOffset),
- Smoothness
- )
- LeftLegGrip.Parent = nil
- LeftLegGrip.Parent = Parent
- end
- else
- do
- local Positioning =
- VirtualRig.RightLowerLeg.CFrame:Lerp(VirtualRig.RightFoot.CFrame, 0.5) *
- CFrame.Angles(0, math.rad(180), 0) +
- Vector3.new(0, 0.5, 0)
- MoveRightLeg(Positioning)
- end
- do
- local Positioning =
- VirtualRig.LeftLowerLeg.CFrame:Lerp(VirtualRig.LeftFoot.CFrame, 0.5) *
- CFrame.Angles(0, math.rad(180), 0) +
- Vector3.new(0, 0.5, 0)
- MoveLeftLeg(Positioning)
- end
- end
- end
- warn("VRReady is", VRReady)
- local function OnUserCFrameChanged(UserCFrame, Positioning, IgnoreTorso)
- local Positioning = Camera.CFrame * Positioning
- if not IgnoreTorso then
- UpdateTorsoPosition()
- UpdateLegPosition()
- end
- if not RagdollEnabled then
- if UserCFrame == Enum.UserCFrame.Head and AccessorySettings.Head then
- for _, Table in next, HeadAccessories do
- local Handle, RightGrip, HatAtt, HeadAtt, BasePart = unpack(Table)
- local LocalPositioning = Positioning
- if not RightGrip or not RightGrip.Parent then
- RightGrip = CreateRightGrip(Handle)
- Table[2] = RightGrip
- end
- local Parent = RightGrip.Parent
- if BasePart then
- LocalPositioning = BasePart.CFrame * HeadAtt
- end
- RightGrip.C1 = HatAtt
- RightGrip.C0 = RightGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(LocalPositioning), Smoothness)
- RightGrip.Parent = nil
- RightGrip.Parent = Parent
- end
- elseif RightHandle and UserCFrame == Enum.UserCFrame.RightHand and AccessorySettings.RightArm then
- local HandPosition = Positioning
- local LocalPositioning = Positioning
- if not RightHandGrip or not RightHandGrip.Parent then
- RightHandGrip = CreateRightGrip(RightHandle)
- end
- if AccurateHandPosition then
- HandPosition = HandPosition * CFrame.new(0, 0, 1)
- end
- if not VRReady then
- local HeadRotation = Camera.CFrame - Camera.CFrame.p
- HandPosition =
- VirtualRig.RightUpperArm.CFrame:Lerp(VirtualRig.RightLowerArm.CFrame, 0.5) *
- AccessorySettings.LimbOffset
- --LocalPositioning = (HeadRotation + (HandPosition * CFrame.new(0, 0, 1)).p) * CFrame.Angles(math.rad(-45), 0, 0)
- LocalPositioning = HandPosition * CFrame.new(0, 0, 1) * CFrame.Angles(math.rad(-180), 0, 0)
- if Point2 then
- VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
- VirtualRig.RightUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
- elseif VirtualRig.RightUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
- VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
- end
- elseif AccurateHandPosition then
- LocalPositioning = HandPosition
- end
- local Parent = RightHandGrip.Parent
- RightHandGrip.C1 = CFrame.new()
- RightHandGrip.C0 = RightHandGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(HandPosition), Smoothness)
- RightHandGrip.Parent = nil
- RightHandGrip.Parent = Parent
- --
- local EquippedTool = GetExtraTool()
- if EquippedTool and EquippedTool:FindFirstChild("Handle") then
- local EquippedGrip = GetGripForHandle(EquippedTool.Handle)
- local Parent = EquippedGrip.Parent
- local ArmBaseCFrame = ArmBase.CFrame
- if ArmBase.Name == "Right Arm" then
- ArmBaseCFrame = ArmBaseCFrame
- end
- EquippedGrip.C1 = EquippedTool.Grip
- EquippedGrip.C0 = EquippedGrip.C0:Lerp(ArmBaseCFrame:ToObjectSpace(LocalPositioning), Smoothness)
- EquippedGrip.Parent = nil
- EquippedGrip.Parent = Parent
- end
- elseif LeftHandle and UserCFrame == Enum.UserCFrame.LeftHand and AccessorySettings.LeftArm then
- local HandPosition = Positioning
- if not LeftHandGrip or not LeftHandGrip.Parent then
- LeftHandGrip = CreateRightGrip(LeftHandle)
- end
- if AccurateHandPosition then
- HandPosition = HandPosition * CFrame.new(0, 0, 1)
- end
- if not VRReady then
- HandPosition =
- VirtualRig.LeftUpperArm.CFrame:Lerp(VirtualRig.LeftLowerArm.CFrame, 0.5) *
- AccessorySettings.LimbOffset
- --warn("Setting HandPosition to hands")
- if Point1 then
- VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
- VirtualRig.LeftUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
- elseif VirtualRig.LeftUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
- VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
- end
- end
- local Parent = LeftHandGrip.Parent
- LeftHandGrip.C1 = CFrame.new()
- LeftHandGrip.C0 = LeftHandGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(HandPosition), Smoothness)
- LeftHandGrip.Parent = nil
- LeftHandGrip.Parent = Parent
- end
- end
- if RagdollEnabled then
- if UserCFrame == Enum.UserCFrame.Head and RagdollHeadMovement then
- MoveHead(Positioning)
- elseif UserCFrame == Enum.UserCFrame.RightHand then
- local Positioning = Positioning
- if not VRReady then
- Positioning = VirtualRig.RightUpperArm.CFrame:Lerp(VirtualRig.RightLowerArm.CFrame, 0.5)
- elseif AccurateHandPosition then
- Positioning = Positioning * CFrame.new(0, 0, 1)
- end
- if VRReady then
- Positioning = Positioning * AccessorySettings.LimbOffset
- end
- MoveRightArm(Positioning)
- if Point2 then
- VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
- VirtualRig.RightUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
- elseif VirtualRig.RightUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
- VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
- end
- elseif UserCFrame == Enum.UserCFrame.LeftHand then
- local Positioning = Positioning
- if not VRReady then
- Positioning = VirtualRig.LeftUpperArm.CFrame:Lerp(VirtualRig.LeftLowerArm.CFrame, 0.5)
- elseif AccurateHandPosition then
- Positioning = Positioning * CFrame.new(0, 0, 1)
- end
- if VRReady then
- Positioning = Positioning * AccessorySettings.LimbOffset
- end
- MoveLeftArm(Positioning)
- if Point1 then
- VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
- VirtualRig.LeftUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
- elseif VirtualRig.LeftUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
- VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
- end
- end
- end
- if UserCFrame == Enum.UserCFrame.Head then
- VirtualRig.Head.CFrame = Positioning
- elseif UserCFrame == Enum.UserCFrame.RightHand and VRReady then
- VirtualRig.RightHand.CFrame = Positioning
- elseif UserCFrame == Enum.UserCFrame.LeftHand and VRReady then
- VirtualRig.LeftHand.CFrame = Positioning
- end
- if not VRReady and VirtualRig.LeftHand.Anchored then
- VirtualRig.RightHand.Anchored = false
- VirtualRig.LeftHand.Anchored = false
- elseif VRReady and not VirtualRig.LeftHand.Anchored then
- VirtualRig.RightHand.Anchored = true
- VirtualRig.LeftHand.Anchored = true
- end
- end
- local CFrameChanged = VRService.UserCFrameChanged:Connect(OnUserCFrameChanged)
- local OnStepped =
- RunService.Stepped:Connect(
- function()
- for _, Part in pairs(VirtualRig:GetChildren()) do
- if Part:IsA("BasePart") then
- Part.CanCollide = false
- end
- end
- if RagdollEnabled then
- for _, Part in pairs(Character:GetChildren()) do
- if Part:IsA("BasePart") then
- Part.CanCollide = false
- end
- end
- end
- if NoCollision then
- for _, Player in pairs(Players:GetPlayers()) do
- if Player ~= Client and Player.Character then
- local Descendants = Player.Character:GetDescendants()
- for i = 1, #Descendants do
- local Part = Descendants[i]
- if Part:IsA("BasePart") then
- Part.CanCollide = false
- Part.Velocity = Vector3.new()
- Part.RotVelocity = Vector3.new()
- end
- end
- end
- end
- end
- end
- )
- local OnRenderStepped =
- RunService.Stepped:Connect(
- function()
- Camera.CameraSubject = VirtualBody.Humanoid
- if RagdollEnabled then
- Character.HumanoidRootPart.CFrame = VirtualRig.UpperTorso.CFrame
- --Character.HumanoidRootPart.Velocity = Vector3.new(0, 0, 0)
- end
- if not VRReady then
- OnUserCFrameChanged(Enum.UserCFrame.Head, CFrame.new(0, 0, 0))
- OnUserCFrameChanged(Enum.UserCFrame.RightHand, CFrame.new(0, 0, 0), true)
- OnUserCFrameChanged(Enum.UserCFrame.LeftHand, CFrame.new(0, 0, 0), true)
- end
- end
- )
- spawn(
- function()
- while Character and Character.Parent do
- FootYield()
- UpdateFooting()
- end
- end
- )
- --[[
- Non-VR Support + VR Mechanics
- --]]
- local OnInput =
- UserInputService.InputBegan:Connect(
- function(Input, Processed)
- if not Processed then
- if Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.ButtonL2 then
- Tween(
- VirtualBody.Humanoid,
- "Elastic",
- "Out",
- 1,
- {
- CameraOffset = Vector3.new(0, StudsOffset - 1.5, 0)
- }
- )
- end
- if Input.KeyCode == Enum.KeyCode.X then
- if RagdollEnabled and RagdollHeadMovement then
- --Network:Unclaim()
- Respawn()
- end
- end
- if Input.KeyCode == Enum.KeyCode.C then
- VirtualBody:MoveTo(Mouse.Hit.p)
- VirtualRig:MoveTo(Mouse.Hit.p)
- end
- end
- if Input.KeyCode == Enum.KeyCode.LeftShift or Input.KeyCode == Enum.KeyCode.ButtonR2 then
- Tween(
- VirtualBody.Humanoid,
- "Sine",
- "Out",
- 1,
- {
- WalkSpeed = 16
- }
- )
- end
- if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton1 then
- Point1 = true
- end
- if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton2 then
- Point2 = true
- end
- if VRReady and Input.KeyCode == Enum.KeyCode.ButtonY then
- Character:BreakJoints()
- if RagdollEnabled and RagdollHeadMovement then
- --Network:Unclaim()
- Respawn()
- end
- end
- end
- )
- local OnInputEnded =
- UserInputService.InputEnded:Connect(
- function(Input, Processed)
- if not Processed then
- if Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.ButtonL2 then
- Tween(
- VirtualBody.Humanoid,
- "Elastic",
- "Out",
- 1,
- {
- CameraOffset = Vector3.new(0, StudsOffset, 0)
- }
- )
- end
- end
- if Input.KeyCode == Enum.KeyCode.LeftShift or Input.KeyCode == Enum.KeyCode.ButtonR2 then
- Tween(
- VirtualBody.Humanoid,
- "Sine",
- "Out",
- 1,
- {
- WalkSpeed = 8
- }
- )
- end
- if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton1 then
- Point1 = false
- end
- if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton2 then
- Point2 = false
- end
- end
- )
- --[[
- Proper Cleanup
- --]]
- local OnReset
- OnReset =
- Client.CharacterAdded:Connect(
- function()
- OnReset:Disconnect()
- CFrameChanged:Disconnect()
- OnStepped:Disconnect()
- OnRenderStepped:Disconnect()
- OnMoving:Disconnect()
- OnInput:Disconnect()
- OnInputEnded:Disconnect()
- VirtualRig:Destroy()
- VirtualBody:Destroy()
- if RagdollEnabled then
- --Network:Unclaim()
- end
- if AutoRun then
- delay(
- 2,
- function()
- Script()
- end
- )
- end
- end
- )
- if ChatEnabled then
- spawn(ChatHUDFunc)
- end
- if ViewportEnabled then
- spawn(ViewHUDFunc)
- end
- do
- --[[
- Functions
- --]]
- local Players = game:GetService("Players")
- local Client = Players.LocalPlayer
- local VRService = game:GetService("VRService")
- local VRReady = VRService.VREnabled
- local UserInputService = game:GetService("UserInputService")
- local RunService = game:GetService("RunService")
- local Camera = workspace.CurrentCamera
- --[[
- Code
- --]]
- if VRReady then
- local Pointer = game:GetObjects("rbxassetid://4476173280")[1]
- Pointer.Parent = workspace
- Pointer.Beam.Enabled = false
- Pointer.Target.ParticleEmitter.Enabled = false
- local RenderStepped =
- RunService.RenderStepped:Connect(
- function()
- if Pointer.Beam.Enabled then
- local RightHand = Camera.CFrame * VRService:GetUserCFrame(Enum.UserCFrame.RightHand)
- local Target = RightHand * CFrame.new(0, 0, -10)
- local Line = Ray.new(RightHand.p, (Target.p - RightHand.p).Unit * 128)
- local Part, Position =
- workspace:FindPartOnRayWithIgnoreList(Line, {VirtualRig, VirtualBody, Character, Pointer})
- local Distance = (Position - RightHand.p).Magnitude
- Pointer.Target.Position = Vector3.new(0, 0, -Distance)
- Pointer.CFrame = RightHand
- end
- end
- )
- local Input =
- UserInputService.InputBegan:Connect(
- function(Input)
- if Input.KeyCode == Enum.KeyCode.ButtonB then
- Pointer.Beam.Enabled = not Pointer.Beam.Enabled
- Pointer.Target.ParticleEmitter.Enabled = not Pointer.Target.ParticleEmitter.Enabled
- end
- end
- )
- --
- local CharacterAdded
- CharacterAdded =
- Client.CharacterAdded:Connect(
- function()
- RenderStepped:Disconnect()
- Input:Disconnect()
- CharacterAdded:Disconnect()
- Pointer:Destroy()
- Pointer = nil
- end
- )
- else
- return
- end
- end
- end
- Permadeath = function()
- local ch = game.Players.LocalPlayer.Character
- local prt = Instance.new("Model", workspace)
- local z1 = Instance.new("Part", prt)
- z1.Name = "Torso"
- z1.CanCollide = false
- z1.Anchored = true
- local z2 = Instance.new("Part", prt)
- z2.Name = "Head"
- z2.Anchored = true
- z2.CanCollide = false
- local z3 = Instance.new("Humanoid", prt)
- z3.Name = "Humanoid"
- z1.Position = Vector3.new(0, 9999, 0)
- z2.Position = Vector3.new(0, 9991, 0)
- game.Players.LocalPlayer.Character = prt
- wait(game.Players.RespawnTime/2)
- warn("50%")
- game.Players.LocalPlayer.Character = ch
- wait(game.Players.RespawnTime/2 + 0.5)
- warn("100%")
- end
- Respawn = function()
- local ch = game.Players.LocalPlayer.Character
- local prt = Instance.new("Model", workspace)
- local z1 = Instance.new("Part", prt)
- z1.Name = "Torso"
- z1.CanCollide = false
- z1.Anchored = true
- local z2 = Instance.new("Part", prt)
- z2.Name = "Head"
- z2.Anchored = true
- z2.CanCollide = false
- local z3 = Instance.new("Humanoid", prt)
- z3.Name = "Humanoid"
- z1.Position = Vector3.new(0, 9999, 0)
- z2.Position = Vector3.new(0, 9991, 0)
- game.Players.LocalPlayer.Character = prt
- wait(game.Players.RespawnTime)
- game.Players.LocalPlayer.Character = ch
- end
- ChatHUDFunc = function()
- --[[
- Variables
- --]]
- local UserInputService = game:GetService("UserInputService")
- local RunService = game:GetService("RunService")
- local VRService = game:GetService("VRService")
- local VRReady = VRService.VREnabled
- local Players = game:GetService("Players")
- local Client = Players.LocalPlayer
- local ChatHUD = game:GetObjects("rbxassetid://4476067885")[1]
- local GlobalFrame = ChatHUD.GlobalFrame
- local Template = GlobalFrame.Template
- local LocalFrame = ChatHUD.LocalFrame
- local Global = ChatHUD.Global
- local Local = ChatHUD.Local
- local Camera = workspace.CurrentCamera
- Template.Parent = nil
- ChatHUD.Parent = game:GetService("CoreGui")
- --[[
- Code
- --]]
- local Highlight = Global.Frame.BackgroundColor3
- local Deselected = Local.Frame.BackgroundColor3
- local OpenGlobalTab = function()
- Global.Frame.BackgroundColor3 = Highlight
- Local.Frame.BackgroundColor3 = Deselected
- Global.Font = Enum.Font.SourceSansBold
- Local.Font = Enum.Font.SourceSans
- GlobalFrame.Visible = true
- LocalFrame.Visible = false
- end
- local OpenLocalTab = function()
- Global.Frame.BackgroundColor3 = Deselected
- Local.Frame.BackgroundColor3 = Highlight
- Global.Font = Enum.Font.SourceSans
- Local.Font = Enum.Font.SourceSansBold
- GlobalFrame.Visible = false
- LocalFrame.Visible = true
- end
- Global.MouseButton1Down:Connect(OpenGlobalTab)
- Local.MouseButton1Down:Connect(OpenLocalTab)
- Global.MouseButton1Click:Connect(OpenGlobalTab)
- Local.MouseButton1Click:Connect(OpenLocalTab)
- OpenLocalTab()
- --
- local function GetPlayerDistance(Sender)
- if Sender.Character and Sender.Character:FindFirstChild("Head") then
- return math.floor((Sender.Character.Head.Position - Camera:GetRenderCFrame().p).Magnitude + 0.5)
- end
- end
- local function NewGlobal(Message, Sender, Color)
- local Frame = Template:Clone()
- Frame.Text = ("[%s]: %s"):format(Sender.Name, Message)
- Frame.User.Text = ("[%s]:"):format(Sender.Name)
- Frame.User.TextColor3 = Color
- Frame.BackgroundColor3 = Color
- Frame.Parent = GlobalFrame
- delay(
- 60,
- function()
- Frame:Destroy()
- end
- )
- end
- local function NewLocal(Message, Sender, Color, Dist)
- local Frame = Template:Clone()
- Frame.Text = ("(%s) [%s]: %s"):format(tostring(Dist), Sender.Name, Message)
- Frame.User.Text = ("(%s) [%s]:"):format(tostring(Dist), Sender.Name)
- Frame.User.TextColor3 = Color
- Frame.BackgroundColor3 = Color
- Frame.Parent = LocalFrame
- delay(
- 60,
- function()
- Frame:Destroy()
- end
- )
- end
- local function OnNewChat(Message, Sender, Color)
- if not ChatHUD or not ChatHUD.Parent then
- return
- end
- NewGlobal(Message, Sender, Color)
- local Distance = GetPlayerDistance(Sender)
- if Distance and Distance