The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
FE Vr Script [NO VR HEADSET NEEDED] script pastebin roblox
By FE Vr Script [NO VR HEADSET NEEDED] on 2024-11-12 08:00 am | Syntax: LUA | Views: 11



New Script | Raw | Show/Hide line no. | Copy text to clipboard
  1. --[[
  2. re-released by discord.gg/dogpower & modified by https://discord.gg/Hbq3TgAJbB
  3.  
  4.        ____________         __             ____________             ___  ___     ____________
  5.       / __________/        / /            / __________ \           /  / /  /    /  _______  /
  6.      / /                  / /            / /          \ \         /  / /  /    /  /      / /
  7.     / /                  / /            / /            \ \       /  / /  /    /  /______/ /
  8.    / /                  / /            / /              \ \     /  / /  /    /      _____/
  9.   / /                  / /             \ \              / /    /  / /  /    /       \
  10.  / /                  / /               \ \            / /    /  / /  /    /    /\   \
  11. / /____________      / /___________      \ \__________/ /    /   \/  /    /    /  \   \
  12. \_____________/     /_____________/       \____________/     \______/    /____/    \___\
  13. ----------------------------------------------------------------------------------------
  14.  
  15. ]]
  16.  
  17. --[[---------Settings---------]]--
  18. local bodyTransparency = 0 --Change the transparency of your character (0 - 1)
  19. 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.
  20. 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.
  21. --Velocity is not recommended to be (-17.7, 0, -17.7) in R15 since body parts often fall in R15.
  22. --[[--------------------------]]--
  23.  
  24. local player1 = game.Players.LocalPlayer
  25. local character1 = player1.Character
  26.  
  27. --Fake Character--
  28. --Create Attachment Function
  29. local function CreateAttachment(parent, position, orientation, axis, secondaryAxis, name)
  30.     local newAttchment = Instance.new("Attachment", parent)
  31.     newAttchment.Position = position
  32.     newAttchment.Orientation = orientation
  33.     newAttchment.Axis = axis
  34.     newAttchment.SecondaryAxis = secondaryAxis
  35.     newAttchment.Name = name
  36. end
  37.  
  38. --Variables
  39. local player1 = game:GetService("Players").LocalPlayer
  40. local character1 = player1.Character
  41. local hrp = character1.HumanoidRootPart
  42.  
  43. for i,v in pairs(character1:GetChildren()) do
  44.     if v:IsA("LocalScript") then
  45.         v:Destroy()
  46.     end
  47. end
  48.  
  49. local camera = workspace.CurrentCamera
  50.  
  51. local reanimFolder = Instance.new("Folder", character1)
  52. reanimFolder.Name = "FakeCharacter"
  53.  
  54. local model = Instance.new("Model", reanimFolder)
  55. model.Name = "Reanimation"
  56.  
  57. local userInputService = game:GetService("UserInputService")
  58. local movingW, movingA, movingS, movingD, jumping = false
  59.  
  60. --Body Parts--
  61. --Head
  62. local cHead = Instance.new("Part", model)
  63. cHead.Size = Vector3.new(2, 1, 1)
  64. cHead.Name = "Head"
  65.  
  66. --Torso
  67. local cTorso = Instance.new("Part", model)
  68. cTorso.Size = Vector3.new(2, 2, 1)
  69. cTorso.Name = "Torso"
  70.  
  71. --Left Arm
  72. local cLArm = Instance.new("Part", model)
  73. cLArm.Size = Vector3.new(1, 2, 1)
  74. cLArm.Name = "Left Arm"
  75.  
  76. --Right Arm
  77. local cRArm = Instance.new("Part", model)
  78. cRArm.Size = Vector3.new(1, 2, 1)
  79. cRArm.Name = "Right Arm"
  80.  
  81. --Left Leg
  82. local cLLeg = Instance.new("Part", model)
  83. cLLeg.Size = Vector3.new(1, 2, 1)
  84. cLLeg.Name = "Left Leg"
  85.  
  86. --Right Leg
  87. local cRLeg = Instance.new("Part", model)
  88. cRLeg.Size = Vector3.new(1, 2, 1)
  89. cRLeg.Name = "Right Leg"
  90.  
  91. --HumanoidRootPart
  92. local cHRP = Instance.new("Part", model)
  93. cHRP.Size = Vector3.new(2, 2, 1)
  94. cHRP.Name = "HumanoidRootPart"
  95. cHRP.Transparency = 1
  96. cHRP.CanCollide = false
  97.  
  98. --Transparency
  99. for i,v in pairs(model:GetChildren()) do
  100.     if v:IsA("Part") and v.Name ~= "HumanoidRootPart" then
  101.         v.Transparency = 1--0.5
  102.     end
  103. end
  104.  
  105. --Joints--
  106. --Right Shoulder
  107. local rShoulder = Instance.new("Motor6D", cTorso)
  108. rShoulder.Part0 = cTorso
  109. rShoulder.Part1 = cRArm
  110. rShoulder.Name = "Right Shoulder"
  111. rShoulder.C0 = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
  112. rShoulder.C1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
  113.  
  114. --Left Shoulder
  115. local lShoulder = Instance.new("Motor6D", cTorso)
  116. lShoulder.Part0 = cTorso
  117. lShoulder.Part1 = cLArm
  118. lShoulder.Name = "Left Shoulder"
  119. lShoulder.C0 = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
  120. lShoulder.C1 = CFrame.new(0.5, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
  121.  
  122. --Right Hip
  123. local rHip = Instance.new("Motor6D", cTorso)
  124. rHip.Part0 = cTorso
  125. rHip.Part1 = cRLeg
  126. rHip.Name = "Right Hip"
  127. rHip.C0 = CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
  128. rHip.C1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
  129.  
  130. --Left Hip
  131. local lHip = Instance.new("Motor6D", cTorso)
  132. lHip.Part0 = cTorso
  133. lHip.Part1 = cLLeg
  134. lHip.Name = "Left Hip"
  135. lHip.C0 = CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
  136. lHip.C1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
  137.  
  138. --Neck
  139. local neck = Instance.new("Motor6D", cTorso)
  140. neck.Part0 = cTorso
  141. neck.Part1 = cHead
  142. neck.Name = "Neck"
  143. neck.C0 = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
  144. neck.C1 = CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
  145.  
  146. --RootJoint
  147. local rootJoint = Instance.new("Motor6D", cHRP)
  148. rootJoint.Part0 = cHRP
  149. rootJoint.Part1 = cTorso
  150. rootJoint.Name = "RootJoint"
  151. rootJoint.C0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
  152. rootJoint.C1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
  153.  
  154. --Humanoid--
  155. local cHumanoid = Instance.new("Humanoid", model)
  156. cHumanoid.DisplayDistanceType = "None"
  157.  
  158. --Head Mesh--
  159. local headMesh = Instance.new("SpecialMesh", cHead)
  160. headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
  161.  
  162. local reanimation = model
  163.  
  164. --Creating Attachments
  165. CreateAttachment(cHead, Vector3.new(0,0.60000002384186,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "HairAttachment")
  166. CreateAttachment(cHead, Vector3.new(0,0.60000002384186,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "HatAttachment")
  167. CreateAttachment(cHead, Vector3.new(0,0,-0.60000002384186), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "FaceFrontAttachment")
  168. CreateAttachment(cHead, Vector3.new(0,0,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "FaceCenterAttachment")
  169. CreateAttachment(cTorso, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "NeckAttachment")
  170. CreateAttachment(cTorso, Vector3.new(0,0,-0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "BodyFrontAttachment")
  171. CreateAttachment(cTorso, Vector3.new(0,0,0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "BodyBackAttachment")
  172. CreateAttachment(cTorso, Vector3.new(-1,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftCollarAttachment")
  173. CreateAttachment(cTorso, Vector3.new(1,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightCollarAttachment")
  174. CreateAttachment(cTorso, Vector3.new(0,-1,-0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistFrontAttachment")
  175. CreateAttachment(cTorso, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistCenterAttachment")
  176. CreateAttachment(cTorso, Vector3.new(0,-1,0.5), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "WaistBackAttachment")
  177. CreateAttachment(cLArm, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftShoulderAttachment")
  178. CreateAttachment(cLArm, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftGripAttachment")
  179. CreateAttachment(cRArm, Vector3.new(0,1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightShoulderAttachment")
  180. CreateAttachment(cRArm, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightGripAttachment")
  181. CreateAttachment(cLLeg, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "LeftFootAttachment")
  182. CreateAttachment(cRLeg, Vector3.new(0,-1,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RightFootAttachment")
  183. CreateAttachment(cHRP, Vector3.new(0,0,0), Vector3.new(-0,0,0), Vector3.new(1,0,0), Vector3.new(0,1,0), "RootAttachment")
  184.  
  185. --Cloning Hats (For Netless)
  186. for i,v in pairs(character1:GetChildren()) do
  187.     if v:IsA("Accessory") then
  188.         local clone = v:Clone()
  189.         local weld = v.Handle:FindFirstChildWhichIsA("Weld")
  190.         local weldPart1 = weld.Part1
  191.         local newWeld = Instance.new("Weld", clone.Handle)
  192.         local CFrame0 = v.Handle.AccessoryWeld.C0
  193.         local CFrame1 = v.Handle.AccessoryWeld.C1
  194.        
  195.         clone.Handle:FindFirstChild("AccessoryWeld"):Destroy()
  196.         clone.Parent = reanimation
  197.         newWeld.Name = "AccessoryWeld"
  198.         newWeld.C0 = CFrame0
  199.         newWeld.C1 = CFrame1
  200.         newWeld.Part0 = clone.Handle
  201.         newWeld.Part1 = character1:FindFirstChild(weldPart1.Name)
  202.         clone.Handle.Transparency = 1
  203.     end
  204. end
  205.  
  206. cHRP.CFrame = hrp.CFrame
  207.  
  208. -- CLOVR - FE FULL-BODY VR SCRIPT
  209.  
  210. -- April 21st Update - TOOL HOLDING ADDED
  211.  
  212. -- | made by 0866 and Abacaxl
  213. -- | tysm unverified
  214.  
  215. --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
  216.  
  217. --|| Settings:
  218. local StudsOffset = 0 -- Character height (negative if you're too high)
  219. local Smoothness = .5 -- Character interpolation (0.1 - 1 = smooth - rigid)
  220. local AnchorCharacter = false -- Prevent physics from causing inconsistencies
  221. local HideCharacter = false -- Hide character on a platform
  222. local NoCollision = false-- Disable player collision
  223. local ChatEnabled = true -- See chat on your left hand in-game
  224. local ChatLocalRange = 75 -- Local chat range
  225. local ViewportEnabled = true -- View nearby players in a frame
  226. local ViewportRange = 30 -- Maximum distance players are updated
  227. local RagdollEnabled = true -- Use your character instead of hats (NetworkOwner vulnerability)
  228. local RagdollHeadMovement = true -- Move your head separately from your body (+9 second wait)
  229. local AutoRun = false -- Run script on respawn
  230. local AutoRespawn = true -- Kill your real body when your virtual body dies
  231. local WearAllAccessories = true -- Use all leftover hats for the head
  232. local AccurateHandPosition = true -- Move your Roblox hands according to your real hands
  233. local AccessorySettings = {
  234.     LeftArm = "",
  235.     RightArm = "",
  236.     LeftLeg = "",
  237.     RightLeg = "",
  238.     Torso = "",
  239.     Head = true,
  240.     BlockArms = true,
  241.     BlockLegs = true,
  242.     BlockTorso = true,
  243.     LimbOffset = CFrame.Angles(math.rad(90), 0, 0)
  244. }
  245. local FootPlacementSettings = {
  246.     RightOffset = Vector3.new(.5, 0, 0),
  247.     LeftOffset = Vector3.new(-.5, 0, 0)
  248. }
  249. --|| Script:
  250. local Script = nil
  251. Script = function()
  252.     --[[
  253.  Variables
  254. --]]
  255.     local Players = game:GetService("Players")
  256.     local Client = Players.LocalPlayer
  257.     local Character = Client.Character or Client.CharacterAdded:Wait()
  258.     local WeldBase = Character:WaitForChild("HumanoidRootPart")
  259.     local ArmBase = Character:FindFirstChild("RightHand") or Character:FindFirstChild("Right Arm") or WeldBase
  260.     local Backpack = Client:WaitForChild("Backpack")
  261.     local Mouse = Client:GetMouse()
  262.     local Camera = workspace.CurrentCamera
  263.     local VRService = game:GetService("VRService")
  264.     local VRReady = VRService.VREnabled
  265.     local UserInputService = game:GetService("UserInputService")
  266.     local RunService = game:GetService("RunService")
  267.     local HttpService = game:GetService("HttpService")
  268.     local StarterGui = game:GetService("StarterGui")
  269.     local HeadAccessories = {}
  270.     local UsedAccessories = {}
  271.     local Pointer = false
  272.     local Point1 = false
  273.     local Point2 = false
  274.     local VirtualRig = game:GetObjects("rbxassetid://4468539481")[1]
  275.     local VirtualBody = game:GetObjects("rbxassetid://4464983829")[1]
  276.     local Anchor = Instance.new("Part")
  277.     Anchor.Anchored = true
  278.     Anchor.Transparency = 1
  279.     Anchor.CanCollide = false
  280.     Anchor.Parent = workspace
  281.     --[[
  282.     if RagdollEnabled then
  283.         print("RagdollEnabled, thank you for using CLOVR!")
  284.         local NetworkAccess =
  285.             coroutine.create(
  286.             function()
  287.                 settings().Physics.AllowSleep = false
  288.                 while true do
  289.                     game:GetService("RunService").RenderStepped:Wait()
  290.                     for _, Players in next, game:GetService("Players"):GetChildren() do
  291.                         if Players ~= game:GetService("Players").LocalPlayer then
  292.                             Players.MaximumSimulationRadius = 0.1
  293.                             Players.SimulationRadius = 0
  294.                         end
  295.                     end
  296.                     game:GetService("Players").LocalPlayer.MaximumSimulationRadius = math.pow(math.huge, math.huge)
  297.                     game:GetService("Players").LocalPlayer.SimulationRadius = math.huge * math.huge
  298.                 end
  299.             end
  300.         )
  301.         coroutine.resume(NetworkAccess)
  302.     end
  303.     ]]
  304.     StarterGui:SetCore("VRLaserPointerMode", 3)
  305.     --[[
  306.  Character Protection
  307. --]]
  308.     local CharacterCFrame = WeldBase.CFrame
  309.     if not RagdollEnabled then
  310.         Character.Humanoid.AnimationPlayed:Connect(
  311.             function(Animation)
  312.                 Animation:Stop()
  313.             end
  314.         )
  315.         for _, Track in next, Character.Humanoid:GetPlayingAnimationTracks() do
  316.             Track:Stop()
  317.         end
  318.         if HideCharacter then
  319.             local Platform = Instance.new("Part")
  320.             Platform.Anchored = true
  321.             Platform.Size = Vector3.new(100, 5, 100)
  322.             Platform.CFrame = CFrame.new(0, 10000, 0)
  323.             Platform.Transparency = 1
  324.             Platform.Parent = workspace
  325.             Character:MoveTo(Platform.Position + Vector3.new(0, 5, 0))
  326.             wait(.5)
  327.         end
  328.         if AnchorCharacter then
  329.             for _, Part in pairs(Character:GetChildren()) do
  330.                 if Part:IsA("BasePart") then
  331.                     Part.Anchored = true
  332.                 end
  333.             end
  334.         end
  335.     end
  336.     --[[
  337.  Functions
  338. --]]
  339.     function Tween(Object, Style, Direction, Time, Goal)
  340.         local tweenInfo = TweenInfo.new(Time, Enum.EasingStyle[Style], Enum.EasingDirection[Direction])
  341.         local tween = game:GetService("TweenService"):Create(Object, tweenInfo, Goal)
  342.         tween.Completed:Connect(
  343.             function()
  344.                 tween:Destroy()
  345.             end
  346.         )
  347.         tween:Play()
  348.         return tween
  349.     end
  350.     local function GetMotorForLimb(Limb)
  351.         for _, Motor in next, Character:GetDescendants() do
  352.             if Motor:IsA("Motor6D") and Motor.Part1 == Limb then
  353.                 return Motor
  354.             end
  355.         end
  356.     end
  357.     local function CreateAlignment(Limb, Part0)
  358.         local Attachment0 = Instance.new("Attachment", Part0 or Anchor)
  359.         local Attachment1 = Instance.new("Attachment", Limb)
  360.         local Orientation = Instance.new("AlignOrientation")
  361.         local Position = Instance.new("AlignPosition")
  362.         Orientation.Attachment0 = Attachment1
  363.         Orientation.Attachment1 = Attachment0
  364.         Orientation.RigidityEnabled = false
  365.         Orientation.MaxTorque = 20000
  366.         Orientation.Responsiveness = 40
  367.         Orientation.Parent = reanimation["HumanoidRootPart"]
  368.        
  369.         Orientation.Name = Limb.Name.."'s AlignRot"
  370.         Orientation.MaxAngularVelocity = 100
  371.        
  372.         Position.Attachment0 = Attachment1
  373.         Position.Attachment1 = Attachment0
  374.         Position.RigidityEnabled = false
  375.         Position.MaxForce = 40000
  376.         Position.Responsiveness = 40
  377.         Position.Parent = reanimation["HumanoidRootPart"]
  378.        
  379.         Position.Name = Limb.Name.."'s AlignPos"
  380.         Position.MaxVelocity = 100
  381.        
  382.         Limb.Massless = false
  383.         local Motor = GetMotorForLimb(Limb)
  384.         if Motor then
  385.             Motor:Destroy()
  386.         end
  387.         return function(CF, Local)
  388.             if Local then
  389.                 Attachment0.CFrame = CF
  390.             else
  391.                 Attachment0.WorldCFrame = CF
  392.             end
  393.         end
  394.     end
  395.     local function GetExtraTool()
  396.         for _, Tool in next, Character:GetChildren() do
  397.             if Tool:IsA("Tool") and not Tool.Name:match("LIMB_TOOL") then
  398.                 return Tool
  399.             end
  400.         end
  401.     end
  402.     local function GetGripForHandle(Handle)
  403.         for _, Weld in next, Character:GetDescendants() do
  404.             if Weld:IsA("Weld") and (Weld.Part0 == Handle or Weld.Part1 == Handle) then
  405.                 return Weld
  406.             end
  407.         end
  408.         wait(.2)
  409.         for _, Weld in next, Character:GetDescendants() do
  410.             if Weld:IsA("Weld") and (Weld.Part0 == Handle or Weld.Part1 == Handle) then
  411.                 return Weld
  412.             end
  413.         end
  414.     end
  415.     local function CreateRightGrip(Handle)
  416.         local RightGrip = Instance.new("Weld")
  417.         RightGrip.Name = "RightGrip"
  418.         RightGrip.Part1 = Handle
  419.         RightGrip.Part0 = WeldBase
  420.         RightGrip.Parent = WeldBase
  421.         return RightGrip
  422.     end
  423.     local function CreateAccessory(Accessory, DeleteMeshes)
  424.         if not Accessory then
  425.             return
  426.         end
  427.         local HatAttachment = Accessory.Handle:FindFirstChildWhichIsA("Attachment")
  428.         local HeadAttachment = VirtualRig:FindFirstChild(HatAttachment.Name, true)
  429.         local BasePart = HeadAttachment.Parent
  430.         local HatAtt = HatAttachment.CFrame
  431.         local HeadAtt = HeadAttachment.CFrame
  432.         if DeleteMeshes then
  433.             if Accessory.Handle:FindFirstChild("Mesh") then
  434.                 Accessory.Handle.Mesh:Destroy()
  435.             end
  436.         end
  437.         wait()
  438.         local Handle = Accessory:WaitForChild("Handle")
  439.         if Handle:FindFirstChildWhichIsA("Weld", true) then
  440.             Handle:FindFirstChildWhichIsA("Weld", true):Destroy()
  441.             Handle:BreakJoints()
  442.         else
  443.             Handle:BreakJoints()
  444.         end
  445.         Handle.Massless = true
  446.         Handle.Transparency = 0.5
  447.         UsedAccessories[Accessory] = true
  448.         local RightGrip = CreateRightGrip(Handle)
  449.         wait()
  450.         for _, Object in pairs(Handle:GetDescendants()) do
  451.             if not Object:IsA("BasePart") then
  452.                 pcall(
  453.                     function()
  454.                         Object.Transparency = 1
  455.                     end
  456.                 )
  457.                 pcall(
  458.                     function()
  459.                         Object.Enabled = false
  460.                     end
  461.                 )
  462.             end
  463.         end
  464.         return Handle, RightGrip, HatAtt, HeadAtt, BasePart
  465.     end
  466.     local function GetHeadAccessories()
  467.         for _, Accessory in next, Character:GetChildren() do
  468.             if Accessory:IsA("Accessory") and not UsedAccessories[Accessory] then
  469.                 local Handle, RightGrip, HatAtt, HeadAtt, BasePart = CreateAccessory(Accessory)
  470.                 table.insert(HeadAccessories, {Handle, RightGrip, HatAtt, HeadAtt, BasePart})
  471.                 do
  472.                     Handle.Transparency = 1
  473.                 end
  474.                 if not WearAllAccessories then
  475.                     break
  476.                 end
  477.             end
  478.         end
  479.     end
  480.     --[[
  481.  VR Replication Setup
  482. --]]
  483.     if not RagdollEnabled then
  484.         LeftHandle, LeftHandGrip =
  485.             CreateAccessory(Character:FindFirstChild(AccessorySettings.LeftArm), AccessorySettings.BlockArms)
  486.         RightHandle, RightHandGrip =
  487.             CreateAccessory(Character:FindFirstChild(AccessorySettings.RightArm), AccessorySettings.BlockArms)
  488.         LeftHipHandle, LeftLegGrip =
  489.             CreateAccessory(Character:FindFirstChild(AccessorySettings.LeftLeg), AccessorySettings.BlockLegs)
  490.         RightHipHandle, RightLegGrip =
  491.             CreateAccessory(Character:FindFirstChild(AccessorySettings.RightLeg), AccessorySettings.BlockLegs)
  492.         TorsoHandle, TorsoGrip =
  493.             CreateAccessory(Character:FindFirstChild(AccessorySettings.Torso), AccessorySettings.BlockTorso)
  494.         GetHeadAccessories()
  495.     elseif RagdollEnabled then
  496.         if RagdollHeadMovement then
  497.             Permadeath()
  498.             MoveHead = CreateAlignment(reanimation["Head"])
  499.         end
  500.         MoveRightArm = CreateAlignment(reanimation["Right Arm"])
  501.         MoveLeftArm = CreateAlignment(reanimation["Left Arm"])
  502.         MoveRightLeg = CreateAlignment(reanimation["Right Leg"])
  503.         MoveLeftLeg = CreateAlignment(reanimation["Left Leg"])
  504.         MoveTorso = CreateAlignment(reanimation["Torso"])
  505.         MoveRoot = CreateAlignment(reanimation["HumanoidRootPart"])
  506.         --
  507.         if RagdollHeadMovement then
  508.             for _, Accessory in next, reanimation:GetChildren() do
  509.                 if Accessory:IsA("Accessory") and Accessory:FindFirstChild("Handle") then
  510.                     local Attachment1 = Accessory.Handle:FindFirstChildWhichIsA("Attachment")
  511.                     local Attachment0 = reanimation:FindFirstChild(tostring(Attachment1), true)
  512.                     local Orientation = Instance.new("AlignOrientation")
  513.                     local Position = Instance.new("AlignPosition")
  514.                     print(Attachment1, Attachment0, Accessory)
  515.                    
  516.                     Orientation.Attachment0 = Attachment1
  517.                     Orientation.Attachment1 = Attachment0
  518.                     Orientation.RigidityEnabled = false
  519.                     Orientation.ReactionTorqueEnabled = true
  520.                     Orientation.MaxTorque = 20000
  521.                     Orientation.Responsiveness = 40
  522.                     Orientation.Parent = reanimation["Head"]
  523.                    
  524.                     Position.Attachment0 = Attachment1
  525.                     Position.Attachment1 = Attachment0
  526.                     Position.RigidityEnabled = false
  527.                     Position.ReactionForceEnabled = true
  528.                     Position.MaxForce = 40000
  529.                     Position.Responsiveness = 40
  530.                     Position.Parent = reanimation["Head"]
  531.                 end
  532.             end
  533.         end
  534.        
  535.     end
  536.     --[[
  537.  Movement
  538. --]]
  539.     VirtualRig.Name = "VirtualRig"
  540.     VirtualRig.RightFoot.BodyPosition.Position = CharacterCFrame.p
  541.     VirtualRig.LeftFoot.BodyPosition.Position = CharacterCFrame.p
  542.     VirtualRig.Parent = workspace
  543.     VirtualRig:SetPrimaryPartCFrame(CharacterCFrame)
  544.     VirtualRig.Humanoid.Health = 0
  545.     --VirtualRig:FindFirstChild("HumanoidRootPart").CFrame = character1.HumanoidRootPart.CFrame
  546.     VirtualRig:BreakJoints()
  547.     for i,v in pairs(VirtualRig:GetChildren()) do
  548.         if v:IsA("BasePart") then
  549.             v.CFrame = character1.HumanoidRootPart.CFrame
  550.         end
  551.     end
  552.     --
  553.     VirtualBody.Parent = workspace
  554.     VirtualBody.Name = "VirtualBody"
  555.     VirtualBody.Humanoid.WalkSpeed = 8
  556.     VirtualBody.Humanoid.CameraOffset = Vector3.new(0, StudsOffset, 0)
  557.     VirtualBody:SetPrimaryPartCFrame(CharacterCFrame)
  558.     VirtualBody.Humanoid.Died:Connect(
  559.         function()
  560.             print("Virtual death")
  561.             if AutoRespawn then
  562.                 Character:BreakJoints()
  563.                 if RagdollHeadMovement and RagdollEnabled then
  564.                     --Network:Unclaim()
  565.                     Respawn()
  566.                 end
  567.             end
  568.         end
  569.     )
  570.     --
  571.     Camera.CameraSubject = VirtualBody.Humanoid
  572.     Character.Humanoid.WalkSpeed = 0
  573.     Character.Humanoid.JumpPower = 1
  574.     for _, Part in next, VirtualBody:GetChildren() do
  575.         if Part:IsA("BasePart") then
  576.             Part.Transparency = 1
  577.         end
  578.     end
  579.     for _, Part in next, VirtualRig:GetChildren() do
  580.         if Part:IsA("BasePart") then
  581.             Part.Transparency = 1
  582.         end
  583.     end
  584.     if not VRReady then
  585.         VirtualRig.RightUpperArm.ShoulderConstraint.RigidityEnabled = true
  586.         VirtualRig.LeftUpperArm.ShoulderConstraint.RigidityEnabled = true
  587.     end
  588.     local OnMoving =
  589.         RunService.Stepped:Connect(
  590.         function()
  591.             local Direction = Character.Humanoid.MoveDirection
  592.             local Start = VirtualBody.HumanoidRootPart.Position
  593.             local Point = Start + Direction * 6
  594.             VirtualBody.Humanoid:MoveTo(Point)
  595.         end
  596.     )
  597.     Character.Humanoid.Jumping:Connect(
  598.         function()
  599.             VirtualBody.Humanoid.Jump = true
  600.         end
  601.     )
  602.     UserInputService.JumpRequest:Connect(
  603.         function()
  604.             VirtualBody.Humanoid.Jump = true
  605.         end
  606.     )
  607.     --[[
  608.  VR Replication
  609. --]]
  610.     if RagdollEnabled then
  611.         for _, Part in pairs(Character:GetDescendants()) do
  612.             if Part:IsA("BasePart") and Part.Name == "Handle" and Part.Parent:IsA("Accessory") then
  613.                 Part.LocalTransparencyModifier = 1
  614.             elseif Part:IsA("BasePart") and Part.Transparency < 0.5 and Part.Name ~= "Head" then
  615.                 Part.LocalTransparencyModifier = bodyTransparency
  616.             elseif Part:IsA("BasePart") and Part.Name == "Head" then
  617.                 Part.LocalTransparencyModifier = 1
  618.             end
  619.             if not Part:IsA("BasePart") and not Part:IsA("AlignPosition") and not Part:IsA("AlignOrientation") then
  620.                 pcall(
  621.                     function()
  622.                         Part.Transparency = 1
  623.                     end
  624.                 )
  625.                 pcall(
  626.                     function()
  627.                         Part.Enabled = false
  628.                     end
  629.                 )
  630.             end
  631.         end
  632.     end
  633.     local FootUpdateDebounce = tick()
  634.     local function FloorRay(Part, Distance)
  635.         local Position = Part.CFrame.p
  636.         local Target = Position - Vector3.new(0, Distance, 0)
  637.         local Line = Ray.new(Position, (Target - Position).Unit * Distance)
  638.         local FloorPart, FloorPosition, FloorNormal =
  639.             workspace:FindPartOnRayWithIgnoreList(Line, {VirtualRig, VirtualBody, Character})
  640.         if FloorPart then
  641.             return FloorPart, FloorPosition, FloorNormal, (FloorPosition - Position).Magnitude
  642.         else
  643.             return nil, Target, Vector3.new(), Distance
  644.         end
  645.     end
  646.     local function Flatten(CF)
  647.         local X, Y, Z = CF.X, CF.Y, CF.Z
  648.         local LX, LZ = CF.lookVector.X, CF.lookVector.Z
  649.         return CFrame.new(X, Y, Z) * CFrame.Angles(0, math.atan2(LX, LZ), 0)
  650.     end
  651.     local FootTurn = 1
  652.     local function FootReady(Foot, Target)
  653.         local MaxDist
  654.         if Character.Humanoid.MoveDirection.Magnitude > 0 then
  655.             MaxDist = .5
  656.         else
  657.             MaxDist = 1
  658.         end
  659.         local PastThreshold = (Foot.Position - Target.Position).Magnitude > MaxDist
  660.         local PastTick = tick() - FootUpdateDebounce >= 2
  661.         if PastThreshold or PastTick then
  662.             FootUpdateDebounce = tick()
  663.         end
  664.         return PastThreshold or PastTick
  665.     end
  666.     local function FootYield()
  667.         local RightFooting = VirtualRig.RightFoot.BodyPosition
  668.         local LeftFooting = VirtualRig.LeftFoot.BodyPosition
  669.         local LowerTorso = VirtualRig.LowerTorso
  670.         local Yield = tick()
  671.         repeat
  672.             RunService.Stepped:Wait()
  673.             if
  674.                 (LowerTorso.Position - RightFooting.Position).Y > 4 or
  675.                     (LowerTorso.Position - LeftFooting.Position).Y > 4 or
  676.                     ((LowerTorso.Position - RightFooting.Position) * Vector3.new(1, 0, 1)).Magnitude > 4 or
  677.                     ((LowerTorso.Position - LeftFooting.Position) * Vector3.new(1, 0, 1)).Magnitude > 4
  678.              then
  679.                 break
  680.             end
  681.         until tick() - Yield >= .17
  682.     end
  683.     local function UpdateFooting()
  684.         if not VirtualRig:FindFirstChild("LowerTorso") then
  685.             wait()
  686.             return
  687.         end
  688.         local Floor, FloorPosition, FloorNormal, Dist = FloorRay(VirtualRig.LowerTorso, 3)
  689.         Dist = math.clamp(Dist, 0, 5)
  690.         local FootTarget =
  691.             VirtualRig.LowerTorso.CFrame * CFrame.new(FootPlacementSettings.RightOffset) - Vector3.new(0, Dist, 0) +
  692.             Character.Humanoid.MoveDirection * (VirtualBody.Humanoid.WalkSpeed / 8) * 2
  693.         if FootReady(VirtualRig.RightFoot, FootTarget) then
  694.             VirtualRig.RightFoot.BodyPosition.Position = FootTarget.p
  695.             VirtualRig.RightFoot.BodyGyro.CFrame = Flatten(VirtualRig.LowerTorso.CFrame)
  696.         end
  697.         FootYield()
  698.         local FootTarget =
  699.             VirtualRig.LowerTorso.CFrame * CFrame.new(FootPlacementSettings.LeftOffset) - Vector3.new(0, Dist, 0) +
  700.             Character.Humanoid.MoveDirection * (VirtualBody.Humanoid.WalkSpeed / 8) * 2
  701.         if FootReady(VirtualRig.LeftFoot, FootTarget) then
  702.             VirtualRig.LeftFoot.BodyPosition.Position = FootTarget.p
  703.             VirtualRig.LeftFoot.BodyGyro.CFrame = Flatten(VirtualRig.LowerTorso.CFrame)
  704.         end
  705.     end
  706.     local function UpdateTorsoPosition()
  707.         if not RagdollEnabled then
  708.             if TorsoHandle then
  709.                 local Positioning = VirtualRig.UpperTorso.CFrame
  710.                 if not TorsoGrip or not TorsoGrip.Parent then
  711.                     TorsoGrip = CreateRightGrip(TorsoHandle)
  712.                 end
  713.                 local Parent = TorsoGrip.Parent
  714.                 TorsoGrip.C1 = CFrame.new()
  715.                 TorsoGrip.C0 =
  716.                     TorsoGrip.C0:Lerp(
  717.                     WeldBase.CFrame:ToObjectSpace(Positioning * CFrame.new(0, -0.25, 0) * AccessorySettings.LimbOffset),
  718.                     Smoothness
  719.                 )
  720.                 TorsoGrip.Parent = nil
  721.                 TorsoGrip.Parent = Parent
  722.             end
  723.         else
  724.             local Positioning = VirtualRig.UpperTorso.CFrame
  725.             MoveTorso(Positioning * CFrame.new(0, -0.25, 0))
  726.             MoveRoot(Positioning * CFrame.new(0, -0.25, 0))
  727.         end
  728.     end
  729.     local function UpdateLegPosition()
  730.         if not RagdollEnabled then
  731.             if RightHipHandle then
  732.                 local Positioning =
  733.                     VirtualRig.RightLowerLeg.CFrame:Lerp(VirtualRig.RightFoot.CFrame, 0.5) + Vector3.new(0, 0.5, 0)
  734.                 if not RightHipHandle or not RightHipHandle.Parent then
  735.                     RightLegGrip = CreateRightGrip(RightHipHandle)
  736.                 end
  737.                 local Parent = RightLegGrip.Parent
  738.                 RightLegGrip.C1 = CFrame.new()
  739.                 RightLegGrip.C0 =
  740.                     RightLegGrip.C0:Lerp(
  741.                     WeldBase.CFrame:ToObjectSpace(Positioning * AccessorySettings.LimbOffset),
  742.                     Smoothness
  743.                 )
  744.                 RightLegGrip.Parent = nil
  745.                 RightLegGrip.Parent = Parent
  746.             end
  747.             if LeftHipHandle then
  748.                 local Positioning =
  749.                     VirtualRig.LeftLowerLeg.CFrame:Lerp(VirtualRig.LeftFoot.CFrame, 0.5) + Vector3.new(0, 0.5, 0)
  750.                 if not LeftLegGrip or not LeftLegGrip.Parent then
  751.                     LeftLegGrip = CreateRightGrip(LeftHipHandle)
  752.                 end
  753.                 local Parent = LeftLegGrip.Parent
  754.                 LeftLegGrip.C1 = CFrame.new()
  755.                 LeftLegGrip.C0 =
  756.                     LeftLegGrip.C0:Lerp(
  757.                     WeldBase.CFrame:ToObjectSpace(Positioning * AccessorySettings.LimbOffset),
  758.                     Smoothness
  759.                 )
  760.                 LeftLegGrip.Parent = nil
  761.                 LeftLegGrip.Parent = Parent
  762.             end
  763.         else
  764.             do
  765.                 local Positioning =
  766.                     VirtualRig.RightLowerLeg.CFrame:Lerp(VirtualRig.RightFoot.CFrame, 0.5) *
  767.                     CFrame.Angles(0, math.rad(180), 0) +
  768.                     Vector3.new(0, 0.5, 0)
  769.                 MoveRightLeg(Positioning)
  770.             end
  771.             do
  772.                 local Positioning =
  773.                     VirtualRig.LeftLowerLeg.CFrame:Lerp(VirtualRig.LeftFoot.CFrame, 0.5) *
  774.                     CFrame.Angles(0, math.rad(180), 0) +
  775.                     Vector3.new(0, 0.5, 0)
  776.                 MoveLeftLeg(Positioning)
  777.             end
  778.         end
  779.     end
  780.     warn("VRReady is", VRReady)
  781.     local function OnUserCFrameChanged(UserCFrame, Positioning, IgnoreTorso)
  782.         local Positioning = Camera.CFrame * Positioning
  783.         if not IgnoreTorso then
  784.             UpdateTorsoPosition()
  785.             UpdateLegPosition()
  786.         end
  787.         if not RagdollEnabled then
  788.             if UserCFrame == Enum.UserCFrame.Head and AccessorySettings.Head then
  789.                 for _, Table in next, HeadAccessories do
  790.                     local Handle, RightGrip, HatAtt, HeadAtt, BasePart = unpack(Table)
  791.                     local LocalPositioning = Positioning
  792.                     if not RightGrip or not RightGrip.Parent then
  793.                         RightGrip = CreateRightGrip(Handle)
  794.                         Table[2] = RightGrip
  795.                     end
  796.                     local Parent = RightGrip.Parent
  797.                     if BasePart then
  798.                         LocalPositioning = BasePart.CFrame * HeadAtt
  799.                     end
  800.                     RightGrip.C1 = HatAtt
  801.                     RightGrip.C0 = RightGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(LocalPositioning), Smoothness)
  802.                     RightGrip.Parent = nil
  803.                     RightGrip.Parent = Parent
  804.                 end
  805.             elseif RightHandle and UserCFrame == Enum.UserCFrame.RightHand and AccessorySettings.RightArm then
  806.                 local HandPosition = Positioning
  807.                 local LocalPositioning = Positioning
  808.                 if not RightHandGrip or not RightHandGrip.Parent then
  809.                     RightHandGrip = CreateRightGrip(RightHandle)
  810.                 end
  811.                 if AccurateHandPosition then
  812.                     HandPosition = HandPosition * CFrame.new(0, 0, 1)
  813.                 end
  814.                 if not VRReady then
  815.                     local HeadRotation = Camera.CFrame - Camera.CFrame.p
  816.                     HandPosition =
  817.                         VirtualRig.RightUpperArm.CFrame:Lerp(VirtualRig.RightLowerArm.CFrame, 0.5) *
  818.                         AccessorySettings.LimbOffset
  819.                     --LocalPositioning = (HeadRotation + (HandPosition * CFrame.new(0, 0, 1)).p) * CFrame.Angles(math.rad(-45), 0, 0)
  820.                     LocalPositioning = HandPosition * CFrame.new(0, 0, 1) * CFrame.Angles(math.rad(-180), 0, 0)
  821.                     if Point2 then
  822.                         VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
  823.                         VirtualRig.RightUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
  824.                     elseif VirtualRig.RightUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
  825.                         VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
  826.                     end
  827.                 elseif AccurateHandPosition then
  828.                     LocalPositioning = HandPosition
  829.                 end
  830.                 local Parent = RightHandGrip.Parent
  831.                 RightHandGrip.C1 = CFrame.new()
  832.                 RightHandGrip.C0 = RightHandGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(HandPosition), Smoothness)
  833.                 RightHandGrip.Parent = nil
  834.                 RightHandGrip.Parent = Parent
  835.                 --
  836.                 local EquippedTool = GetExtraTool()
  837.                 if EquippedTool and EquippedTool:FindFirstChild("Handle") then
  838.                     local EquippedGrip = GetGripForHandle(EquippedTool.Handle)
  839.                     local Parent = EquippedGrip.Parent
  840.                     local ArmBaseCFrame = ArmBase.CFrame
  841.                     if ArmBase.Name == "Right Arm" then
  842.                         ArmBaseCFrame = ArmBaseCFrame
  843.                     end
  844.                     EquippedGrip.C1 = EquippedTool.Grip
  845.                     EquippedGrip.C0 = EquippedGrip.C0:Lerp(ArmBaseCFrame:ToObjectSpace(LocalPositioning), Smoothness)
  846.                     EquippedGrip.Parent = nil
  847.                     EquippedGrip.Parent = Parent
  848.                 end
  849.             elseif LeftHandle and UserCFrame == Enum.UserCFrame.LeftHand and AccessorySettings.LeftArm then
  850.                 local HandPosition = Positioning
  851.                 if not LeftHandGrip or not LeftHandGrip.Parent then
  852.                     LeftHandGrip = CreateRightGrip(LeftHandle)
  853.                 end
  854.                 if AccurateHandPosition then
  855.                     HandPosition = HandPosition * CFrame.new(0, 0, 1)
  856.                 end
  857.                 if not VRReady then
  858.                     HandPosition =
  859.                         VirtualRig.LeftUpperArm.CFrame:Lerp(VirtualRig.LeftLowerArm.CFrame, 0.5) *
  860.                         AccessorySettings.LimbOffset
  861.                     --warn("Setting HandPosition to hands")
  862.                     if Point1 then
  863.                         VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
  864.                         VirtualRig.LeftUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
  865.                     elseif VirtualRig.LeftUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
  866.                         VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
  867.                     end
  868.                 end
  869.                 local Parent = LeftHandGrip.Parent
  870.                 LeftHandGrip.C1 = CFrame.new()
  871.                 LeftHandGrip.C0 = LeftHandGrip.C0:Lerp(WeldBase.CFrame:ToObjectSpace(HandPosition), Smoothness)
  872.                 LeftHandGrip.Parent = nil
  873.                 LeftHandGrip.Parent = Parent
  874.             end
  875.         end
  876.         if RagdollEnabled then
  877.             if UserCFrame == Enum.UserCFrame.Head and RagdollHeadMovement then
  878.                 MoveHead(Positioning)
  879.             elseif UserCFrame == Enum.UserCFrame.RightHand then
  880.                 local Positioning = Positioning
  881.                 if not VRReady then
  882.                     Positioning = VirtualRig.RightUpperArm.CFrame:Lerp(VirtualRig.RightLowerArm.CFrame, 0.5)
  883.                 elseif AccurateHandPosition then
  884.                     Positioning = Positioning * CFrame.new(0, 0, 1)
  885.                 end
  886.                 if VRReady then
  887.                     Positioning = Positioning * AccessorySettings.LimbOffset
  888.                 end
  889.                 MoveRightArm(Positioning)
  890.                 if Point2 then
  891.                     VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
  892.                     VirtualRig.RightUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
  893.                 elseif VirtualRig.RightUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
  894.                     VirtualRig.RightUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
  895.                 end
  896.             elseif UserCFrame == Enum.UserCFrame.LeftHand then
  897.                 local Positioning = Positioning
  898.                 if not VRReady then
  899.                     Positioning = VirtualRig.LeftUpperArm.CFrame:Lerp(VirtualRig.LeftLowerArm.CFrame, 0.5)
  900.                 elseif AccurateHandPosition then
  901.                     Positioning = Positioning * CFrame.new(0, 0, 1)
  902.                 end
  903.                 if VRReady then
  904.                     Positioning = Positioning * AccessorySettings.LimbOffset
  905.                 end
  906.                 MoveLeftArm(Positioning)
  907.                 if Point1 then
  908.                     VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
  909.                     VirtualRig.LeftUpperArm.Aim.CFrame = Camera.CFrame * AccessorySettings.LimbOffset
  910.                 elseif VirtualRig.LeftUpperArm.Aim.MaxTorque ~= Vector3.new(0, 0, 0) then
  911.                     VirtualRig.LeftUpperArm.Aim.MaxTorque = Vector3.new(0, 0, 0)
  912.                 end
  913.             end
  914.         end
  915.         if UserCFrame == Enum.UserCFrame.Head then
  916.             VirtualRig.Head.CFrame = Positioning
  917.         elseif UserCFrame == Enum.UserCFrame.RightHand and VRReady then
  918.             VirtualRig.RightHand.CFrame = Positioning
  919.         elseif UserCFrame == Enum.UserCFrame.LeftHand and VRReady then
  920.             VirtualRig.LeftHand.CFrame = Positioning
  921.         end
  922.         if not VRReady and VirtualRig.LeftHand.Anchored then
  923.             VirtualRig.RightHand.Anchored = false
  924.             VirtualRig.LeftHand.Anchored = false
  925.         elseif VRReady and not VirtualRig.LeftHand.Anchored then
  926.             VirtualRig.RightHand.Anchored = true
  927.             VirtualRig.LeftHand.Anchored = true
  928.         end
  929.     end
  930.     local CFrameChanged = VRService.UserCFrameChanged:Connect(OnUserCFrameChanged)
  931.     local OnStepped =
  932.         RunService.Stepped:Connect(
  933.         function()
  934.             for _, Part in pairs(VirtualRig:GetChildren()) do
  935.                 if Part:IsA("BasePart") then
  936.                     Part.CanCollide = false
  937.                 end
  938.             end
  939.             if RagdollEnabled then
  940.                 for _, Part in pairs(Character:GetChildren()) do
  941.                     if Part:IsA("BasePart") then
  942.                         Part.CanCollide = false
  943.                     end
  944.                 end
  945.             end
  946.             if NoCollision then
  947.                 for _, Player in pairs(Players:GetPlayers()) do
  948.                     if Player ~= Client and Player.Character then
  949.                         local Descendants = Player.Character:GetDescendants()
  950.                         for i = 1, #Descendants do
  951.                             local Part = Descendants[i]
  952.                             if Part:IsA("BasePart") then
  953.                                 Part.CanCollide = false
  954.                                 Part.Velocity = Vector3.new()
  955.                                 Part.RotVelocity = Vector3.new()
  956.                             end
  957.                         end
  958.                     end
  959.                 end
  960.             end
  961.         end
  962.     )
  963.     local OnRenderStepped =
  964.         RunService.Stepped:Connect(
  965.         function()
  966.             Camera.CameraSubject = VirtualBody.Humanoid
  967.             if RagdollEnabled then
  968.                 Character.HumanoidRootPart.CFrame = VirtualRig.UpperTorso.CFrame
  969.                 --Character.HumanoidRootPart.Velocity = Vector3.new(0, 0, 0)
  970.             end
  971.             if not VRReady then
  972.                 OnUserCFrameChanged(Enum.UserCFrame.Head, CFrame.new(0, 0, 0))
  973.                 OnUserCFrameChanged(Enum.UserCFrame.RightHand, CFrame.new(0, 0, 0), true)
  974.                 OnUserCFrameChanged(Enum.UserCFrame.LeftHand, CFrame.new(0, 0, 0), true)
  975.             end
  976.         end
  977.     )
  978.     spawn(
  979.         function()
  980.             while Character and Character.Parent do
  981.                 FootYield()
  982.                 UpdateFooting()
  983.             end
  984.         end
  985.     )
  986.     --[[
  987.  Non-VR Support + VR Mechanics
  988. --]]
  989.     local OnInput =
  990.         UserInputService.InputBegan:Connect(
  991.         function(Input, Processed)
  992.             if not Processed then
  993.                 if Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.ButtonL2 then
  994.                     Tween(
  995.                         VirtualBody.Humanoid,
  996.                         "Elastic",
  997.                         "Out",
  998.                         1,
  999.                         {
  1000.                             CameraOffset = Vector3.new(0, StudsOffset - 1.5, 0)
  1001.                         }
  1002.                     )
  1003.                 end
  1004.                 if Input.KeyCode == Enum.KeyCode.X then
  1005.                     if RagdollEnabled and RagdollHeadMovement then
  1006.                         --Network:Unclaim()
  1007.                         Respawn()
  1008.                     end
  1009.                 end
  1010.                 if Input.KeyCode == Enum.KeyCode.C then
  1011.                     VirtualBody:MoveTo(Mouse.Hit.p)
  1012.                     VirtualRig:MoveTo(Mouse.Hit.p)
  1013.                 end
  1014.             end
  1015.             if Input.KeyCode == Enum.KeyCode.LeftShift or Input.KeyCode == Enum.KeyCode.ButtonR2 then
  1016.                 Tween(
  1017.                     VirtualBody.Humanoid,
  1018.                     "Sine",
  1019.                     "Out",
  1020.                     1,
  1021.                     {
  1022.                         WalkSpeed = 16
  1023.                     }
  1024.                 )
  1025.             end
  1026.             if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton1 then
  1027.                 Point1 = true
  1028.             end
  1029.             if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton2 then
  1030.                 Point2 = true
  1031.             end
  1032.             if VRReady and Input.KeyCode == Enum.KeyCode.ButtonY then
  1033.                 Character:BreakJoints()
  1034.                 if RagdollEnabled and RagdollHeadMovement then
  1035.                     --Network:Unclaim()
  1036.                     Respawn()
  1037.                 end
  1038.             end
  1039.         end
  1040.     )
  1041.     local OnInputEnded =
  1042.         UserInputService.InputEnded:Connect(
  1043.         function(Input, Processed)
  1044.             if not Processed then
  1045.                 if Input.KeyCode == Enum.KeyCode.LeftControl or Input.KeyCode == Enum.KeyCode.ButtonL2 then
  1046.                     Tween(
  1047.                         VirtualBody.Humanoid,
  1048.                         "Elastic",
  1049.                         "Out",
  1050.                         1,
  1051.                         {
  1052.                             CameraOffset = Vector3.new(0, StudsOffset, 0)
  1053.                         }
  1054.                     )
  1055.                 end
  1056.             end
  1057.             if Input.KeyCode == Enum.KeyCode.LeftShift or Input.KeyCode == Enum.KeyCode.ButtonR2 then
  1058.                 Tween(
  1059.                     VirtualBody.Humanoid,
  1060.                     "Sine",
  1061.                     "Out",
  1062.                     1,
  1063.                     {
  1064.                         WalkSpeed = 8
  1065.                     }
  1066.                 )
  1067.             end
  1068.             if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton1 then
  1069.                 Point1 = false
  1070.             end
  1071.             if not VRReady and Input.UserInputType == Enum.UserInputType.MouseButton2 then
  1072.                 Point2 = false
  1073.             end
  1074.         end
  1075.     )
  1076.     --[[
  1077.  Proper Cleanup
  1078. --]]
  1079.     local OnReset
  1080.     OnReset =
  1081.         Client.CharacterAdded:Connect(
  1082.         function()
  1083.             OnReset:Disconnect()
  1084.             CFrameChanged:Disconnect()
  1085.             OnStepped:Disconnect()
  1086.             OnRenderStepped:Disconnect()
  1087.             OnMoving:Disconnect()
  1088.             OnInput:Disconnect()
  1089.             OnInputEnded:Disconnect()
  1090.             VirtualRig:Destroy()
  1091.             VirtualBody:Destroy()
  1092.             if RagdollEnabled then
  1093.                 --Network:Unclaim()
  1094.             end
  1095.             if AutoRun then
  1096.                 delay(
  1097.                     2,
  1098.                     function()
  1099.                         Script()
  1100.                     end
  1101.                 )
  1102.             end
  1103.         end
  1104.     )
  1105.     if ChatEnabled then
  1106.         spawn(ChatHUDFunc)
  1107.     end
  1108.     if ViewportEnabled then
  1109.         spawn(ViewHUDFunc)
  1110.     end
  1111.     do
  1112.         --[[
  1113.  Functions
  1114.  --]]
  1115.         local Players = game:GetService("Players")
  1116.         local Client = Players.LocalPlayer
  1117.         local VRService = game:GetService("VRService")
  1118.         local VRReady = VRService.VREnabled
  1119.         local UserInputService = game:GetService("UserInputService")
  1120.         local RunService = game:GetService("RunService")
  1121.         local Camera = workspace.CurrentCamera
  1122.         --[[
  1123.  Code
  1124.  --]]
  1125.         if VRReady then
  1126.             local Pointer = game:GetObjects("rbxassetid://4476173280")[1]
  1127.             Pointer.Parent = workspace
  1128.             Pointer.Beam.Enabled = false
  1129.             Pointer.Target.ParticleEmitter.Enabled = false
  1130.             local RenderStepped =
  1131.                 RunService.RenderStepped:Connect(
  1132.                 function()
  1133.                     if Pointer.Beam.Enabled then
  1134.                         local RightHand = Camera.CFrame * VRService:GetUserCFrame(Enum.UserCFrame.RightHand)
  1135.                         local Target = RightHand * CFrame.new(0, 0, -10)
  1136.                         local Line = Ray.new(RightHand.p, (Target.p - RightHand.p).Unit * 128)
  1137.                         local Part, Position =
  1138.                             workspace:FindPartOnRayWithIgnoreList(Line, {VirtualRig, VirtualBody, Character, Pointer})
  1139.                         local Distance = (Position - RightHand.p).Magnitude
  1140.                         Pointer.Target.Position = Vector3.new(0, 0, -Distance)
  1141.                         Pointer.CFrame = RightHand
  1142.                     end
  1143.                 end
  1144.             )
  1145.             local Input =
  1146.                 UserInputService.InputBegan:Connect(
  1147.                 function(Input)
  1148.                     if Input.KeyCode == Enum.KeyCode.ButtonB then
  1149.                         Pointer.Beam.Enabled = not Pointer.Beam.Enabled
  1150.                         Pointer.Target.ParticleEmitter.Enabled = not Pointer.Target.ParticleEmitter.Enabled
  1151.                     end
  1152.                 end
  1153.             )
  1154.             --
  1155.             local CharacterAdded
  1156.             CharacterAdded =
  1157.                 Client.CharacterAdded:Connect(
  1158.                 function()
  1159.                     RenderStepped:Disconnect()
  1160.                     Input:Disconnect()
  1161.                     CharacterAdded:Disconnect()
  1162.                     Pointer:Destroy()
  1163.                     Pointer = nil
  1164.                 end
  1165.             )
  1166.         else
  1167.             return
  1168.         end
  1169.     end
  1170. end
  1171. Permadeath = function()
  1172.     local ch = game.Players.LocalPlayer.Character
  1173.     local prt = Instance.new("Model", workspace)
  1174.     local z1 = Instance.new("Part", prt)
  1175.     z1.Name = "Torso"
  1176.     z1.CanCollide = false
  1177.     z1.Anchored = true
  1178.     local z2 = Instance.new("Part", prt)
  1179.     z2.Name = "Head"
  1180.     z2.Anchored = true
  1181.     z2.CanCollide = false
  1182.     local z3 = Instance.new("Humanoid", prt)
  1183.     z3.Name = "Humanoid"
  1184.     z1.Position = Vector3.new(0, 9999, 0)
  1185.     z2.Position = Vector3.new(0, 9991, 0)
  1186.     game.Players.LocalPlayer.Character = prt
  1187.     wait(game.Players.RespawnTime/2)
  1188.     warn("50%")
  1189.     game.Players.LocalPlayer.Character = ch
  1190.     wait(game.Players.RespawnTime/2 + 0.5)
  1191.     warn("100%")
  1192. end
  1193. Respawn = function()
  1194.     local ch = game.Players.LocalPlayer.Character
  1195.     local prt = Instance.new("Model", workspace)
  1196.     local z1 = Instance.new("Part", prt)
  1197.     z1.Name = "Torso"
  1198.     z1.CanCollide = false
  1199.     z1.Anchored = true
  1200.     local z2 = Instance.new("Part", prt)
  1201.     z2.Name = "Head"
  1202.     z2.Anchored = true
  1203.     z2.CanCollide = false
  1204.     local z3 = Instance.new("Humanoid", prt)
  1205.     z3.Name = "Humanoid"
  1206.     z1.Position = Vector3.new(0, 9999, 0)
  1207.     z2.Position = Vector3.new(0, 9991, 0)
  1208.     game.Players.LocalPlayer.Character = prt
  1209.     wait(game.Players.RespawnTime)
  1210.     game.Players.LocalPlayer.Character = ch
  1211. end
  1212. ChatHUDFunc = function()
  1213.     --[[
  1214.  Variables
  1215.  --]]
  1216.     local UserInputService = game:GetService("UserInputService")
  1217.     local RunService = game:GetService("RunService")
  1218.     local VRService = game:GetService("VRService")
  1219.     local VRReady = VRService.VREnabled
  1220.     local Players = game:GetService("Players")
  1221.     local Client = Players.LocalPlayer
  1222.     local ChatHUD = game:GetObjects("rbxassetid://4476067885")[1]
  1223.     local GlobalFrame = ChatHUD.GlobalFrame
  1224.     local Template = GlobalFrame.Template
  1225.     local LocalFrame = ChatHUD.LocalFrame
  1226.     local Global = ChatHUD.Global
  1227.     local Local = ChatHUD.Local
  1228.     local Camera = workspace.CurrentCamera
  1229.     Template.Parent = nil
  1230.     ChatHUD.Parent = game:GetService("CoreGui")
  1231.     --[[
  1232.  Code
  1233.  --]]
  1234.     local Highlight = Global.Frame.BackgroundColor3
  1235.     local Deselected = Local.Frame.BackgroundColor3
  1236.     local OpenGlobalTab = function()
  1237.         Global.Frame.BackgroundColor3 = Highlight
  1238.         Local.Frame.BackgroundColor3 = Deselected
  1239.         Global.Font = Enum.Font.SourceSansBold
  1240.         Local.Font = Enum.Font.SourceSans
  1241.         GlobalFrame.Visible = true
  1242.         LocalFrame.Visible = false
  1243.     end
  1244.     local OpenLocalTab = function()
  1245.         Global.Frame.BackgroundColor3 = Deselected
  1246.         Local.Frame.BackgroundColor3 = Highlight
  1247.         Global.Font = Enum.Font.SourceSans
  1248.         Local.Font = Enum.Font.SourceSansBold
  1249.         GlobalFrame.Visible = false
  1250.         LocalFrame.Visible = true
  1251.     end
  1252.     Global.MouseButton1Down:Connect(OpenGlobalTab)
  1253.     Local.MouseButton1Down:Connect(OpenLocalTab)
  1254.     Global.MouseButton1Click:Connect(OpenGlobalTab)
  1255.     Local.MouseButton1Click:Connect(OpenLocalTab)
  1256.     OpenLocalTab()
  1257.     --
  1258.     local function GetPlayerDistance(Sender)
  1259.         if Sender.Character and Sender.Character:FindFirstChild("Head") then
  1260.             return math.floor((Sender.Character.Head.Position - Camera:GetRenderCFrame().p).Magnitude + 0.5)
  1261.         end
  1262.     end
  1263.     local function NewGlobal(Message, Sender, Color)
  1264.         local Frame = Template:Clone()
  1265.         Frame.Text = ("[%s]: %s"):format(Sender.Name, Message)
  1266.         Frame.User.Text = ("[%s]:"):format(Sender.Name)
  1267.         Frame.User.TextColor3 = Color
  1268.         Frame.BackgroundColor3 = Color
  1269.         Frame.Parent = GlobalFrame
  1270.         delay(
  1271.             60,
  1272.             function()
  1273.                 Frame:Destroy()
  1274.             end
  1275.         )
  1276.     end
  1277.     local function NewLocal(Message, Sender, Color, Dist)
  1278.         local Frame = Template:Clone()
  1279.         Frame.Text = ("(%s) [%s]: %s"):format(tostring(Dist), Sender.Name, Message)
  1280.         Frame.User.Text = ("(%s) [%s]:"):format(tostring(Dist), Sender.Name)
  1281.         Frame.User.TextColor3 = Color
  1282.         Frame.BackgroundColor3 = Color
  1283.         Frame.Parent = LocalFrame
  1284.         delay(
  1285.             60,
  1286.             function()
  1287.                 Frame:Destroy()
  1288.             end
  1289.         )
  1290.     end
  1291.     local function OnNewChat(Message, Sender, Color)
  1292.         if not ChatHUD or not ChatHUD.Parent then
  1293.             return
  1294.         end
  1295.         NewGlobal(Message, Sender, Color)
  1296.         local Distance = GetPlayerDistance(Sender)
  1297.         if Distance and Distance