--[[ ████ ████ ████████████████████ ████████████████████████ ████████████████████████████ ████████████████████████████ ████████████████████████████████ ██▒▒▒▒▒▒▒▒██████████████▒▒▒▒████ ██▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒██ ▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒ ▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████ ██████████▒▒▒▒▒▒▒▒▒▒░░░░░░▒▒████████ ████████▒▒▒▒░░░░░░░░░░▒▒▒▒████████ ██████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████ ██████████▒▒▒▒▒▒██████████ ████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████ ████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████ ██████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████ ██████████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ████████ ████████ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████████ ██████████ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████████ ██████████ ███▒▒▒▒▒▒▒▒▒▒▒▒███ ██████████ ▒▒▒▒████▒▒ ████████████████ ▒▒██████▒▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ]]-- options.Hands = false -- If you want hands in R6 (You need hats) options.RightHand = "Racing Helmet Flames" options.LeftHand = "Racing Helmet USA" --=========[Variables]==========-- local Players = game:GetService("Players"); local Lighting = game:GetService("Lighting"); local ReplicatedStorage = game:GetService("ReplicatedStorage"); local ScriptContext = game:GetService("ScriptContext"); local VRService = game:GetService("VRService"); local VirtualUser = game:GetService("VirtualUser"); local RunService = game:GetService("RunService"); local HttpService = game:GetService("HttpService"); local HapticService = game:GetService("HapticService"); local UserInputService = game:GetService("UserInputService"); local CurrentCamera = workspace.CurrentCamera local sethiddenprop = (sethiddenproperty or set_hidden_property or sethiddenprop or set_hidden_prop); local setsimulationrad = setsimulationradius or set_simulation_radius or function(Radius) sethiddenprop(PlayerInstance, "SimulationRadius", Radius) end local LocalPlayer = Players.LocalPlayer; local Mouse = LocalPlayer:GetMouse() local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait(); local hum = Character:FindFirstChildOfClass("Humanoid"); local root = hum.RootPart; local startCF = root.CFrame local VRReady = UserInputService.VREnabled; local R15 = hum.RigType == Enum.HumanoidRigType.R15 and true or false local oldCF = Character.HumanoidRootPart.CFrame for i,v in pairs(Character:GetChildren()) do for _, connection in pairs(getconnections(v.ChildAdded)) do connection:Disable() end end --[Tools Fix] for i,tool in pairs(LocalPlayer.Backpack:GetChildren()) do if tool:IsA("Tool") then tool.Parent = Character end end --[Anti Kick] local OldNamecall OldNamecall = hookmetamethod(game, "__namecall", function(Self, ...) local args = {...} if getnamecallmethod() == 'Kick' then return false end return OldNamecall(Self, unpack(args)) end) --[Net] settings().Physics.AllowSleep = false settings().Physics.PhysicsEnvironmentalThrottle = Enum.EnviromentalPhysicsThrottle.Disabled --[Execute when rejoin] LocalPlayer.OnTeleport:Connect(function(State) if State == Enum.TeleportState.InProgress and syn then syn.queue_on_teleport([[ repeat wait() until game:IsLoaded() and game.Players.LocalPlayer.Character Wait(1) options = {} options.HeadScale = 2 -- Headscale of camera (Does not change actual head size) options.FakeHandsTransparency = 1 -- Transparency of Arm Hitboxes options.Bubblechat = true -- Force Bubblechat options.PointerRange = 10 -- Range you can click buttons with your arm options.TurnDelay = 0.05 -- Delay in sec. for how fast you can turn left and right options.TurnAngle = 15 -- Change in angle left/right (degrees) options.ChatEnabled = true -- See chat on your left hand in-game options.ChatLocalRange = 70 -- Local chat range options.Hands = false -- If you want hands in R6 (You need hats) options.RightHand = "Racing Helmet Flames" options.LeftHand = "Racing Helmet USA" loadstring(game:HttpGet("https://raw.githubusercontent.com/saucekid/sauceVR/main/extra/ROrilla.lua"))() ]]) end end) --=========[Functions]==========-- function getModule(module) assert(type(module) == "string", "string only") local path = "https://raw.githubusercontent.com/saucekid/sauceVR/main/modules/" local module = loadstring(game:HttpGetAsync(path.. module.. ".lua"))() return module end local Utils = getModule("Utils") local function Motor6D(part0, part1, c0, c1, name) part1.Transparency = 1; part1.Massless = true local motor = Instance.new("Motor6D", part1); motor.Name = name; motor.Part0 = part0; motor.Part1 = part1; motor.C0 = c0; motor.C1 = c1; return motor, motor.C0 end local function Lerp(a, b, t) return a + (b - a) * t end local function solveIK(originCF, targetPos, l1, l2) local localized = originCF:pointToObjectSpace(targetPos) local localizedUnit = localized.unit local l3 = localized.magnitude local axis = Vector3.new(0, 0, -1):Cross(localizedUnit) local angle = math.acos(-localizedUnit.Z) local planeCF = originCF * CFrame.fromAxisAngle(axis, angle) if l3 < math.max(l2, l1) - math.min(l2, l1) then return planeCF * CFrame.new(0, 0, math.max(l2, l1) - math.min(l2, l1) - l3), -math.pi/2, math.pi elseif l3 > l1 + l2 then return planeCF, math.pi/2, 0 else local a1 = -math.acos((-(l2 * l2) + (l1 * l1) + (l3 * l3)) / (2 * l1 * l3)) local a2 = math.acos(((l2 * l2) - (l1 * l1) + (l3 * l3)) / (2 * l2 * l3)) return planeCF, a1 + math.pi/2, a2 - a1 end 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 cframeAlign(a, b, pos) local Motor = GetMotorForLimb(a); if Motor then Motor:Destroy() end RunService.Stepped:Connect(function() a.CFrame = pos and b.CFrame * pos or b.CFrame end) end local function align(a, b, pos, rot, options) if typeof(options) ~= 'table' then options = {type = "None", resp = 200, length = 5, reactiontorque = false, reactionforce = false} end local a1 local att0, att1 do att0 = a:IsA("Accessory") and Instance.new("Attachment", a.Handle) or Instance.new("Attachment", a) att1 = Instance.new("Attachment", b); att1.Position = pos or Vector3.new(0,0,0); att1.Orientation = rot or Vector3.new(0,0,0); end local Handle = a:IsA("Accessory") and a.Handle or a; Handle.Massless = true; Handle.CanCollide = false; if a:IsA("Accessory") then Handle.AccessoryWeld:Destroy() Handle:FindFirstChildOfClass("SpecialMesh"):Destroy()end local Motor = GetMotorForLimb(a); if Motor then Motor:Destroy() end if options.type == "rope" then att0.Position = rot al = Instance.new("RopeConstraint", Handle); al.Attachment0 = att0; al.Attachment1 = att1; al.Length = options.length or 0.5 elseif options.type == "ball" then att0.Position = rot al = Instance.new("BallSocketConstraint", Handle) al.Attachment0 = att0 al.Attachment1 = att1 al.Restitution = 1 al.LimitsEnabled = true al.MaxFrictionTorque = 10 al.TwistLimitsEnabled = true al.UpperAngle = 50 al.TwistLowerAngle = 10 al.TwistUpperAngle = -100 elseif type == "hinge" then att0.Position = rot al = Instance.new("HingeConstraint", Handle) al.Attachment0 = att0 al.Attachment1 = att1 else al = Instance.new("AlignPosition", Handle); al.Attachment0 = att0; al.Attachment1 = att1; al.RigidityEnabled = true; al.ReactionForceEnabled = options.reactionforce or false; al.ApplyAtCenterOfMass = true; al.MaxForce = 10000000; al.MaxVelocity = math.huge/9e110; al.Responsiveness = options.resp or 200; local ao = Instance.new("AlignOrientation", Handle); ao.Attachment0 = att0; ao.Attachment1 = att1; ao.RigidityEnabled = true; ao.ReactionTorqueEnabled = options.reactiontorque or true; ao.PrimaryAxisOnly = false; ao.MaxTorque = 10000000; ao.MaxAngularVelocity = math.huge/9e110; ao.Responsiveness = 200; end return att1, a1 end function alignHand(hand, pospart, rotpart, pos, rot) local Motor = GetMotorForLimb(hand); if Motor then Motor:Destroy() end local handatt = Instance.new("Attachment", hand) local posatt = Instance.new("Attachment", pospart) posatt.Position = pos or Vector3.new(0,0,0) local rotatt = Instance.new("Attachment", rotpart) rotatt.Orientation = rot or Vector3.new(0,0,0) local al = Instance.new("AlignPosition", hand); al.RigidityEnabled = true; al.ReactionForceEnabled = false; al.ApplyAtCenterOfMass = true; al.MaxForce = 10000000; al.MaxVelocity = math.huge/9e110; al.Responsiveness = resp or 200; local ao = Instance.new("AlignOrientation", hand); ao.RigidityEnabled = true; ao.ReactionTorqueEnabled = false; ao.PrimaryAxisOnly = false; ao.MaxTorque = 10000000; ao.MaxAngularVelocity = math.huge/9e110; ao.Responsiveness = 200; al.Attachment0 = handatt al.Attachment1 = posatt ao.Attachment0 = handatt ao.Attachment1 = rotatt end local function holdPart(v, grabAtt, drop) if v:IsA("BasePart") and v.Anchored == false then for _, x in next, v:GetChildren() do if x:IsA("BodyAngularVelocity") or x:IsA("BodyForce") or x:IsA("BodyGyro") or x:IsA("BodyPosition") or x:IsA("BodyThrust") or x:IsA("BodyVelocity") or x:IsA("RocketPropulsion") or x:IsA("Attachment") or x:IsA("AlignPosition") or x:IsA("NoCollisionConstraint") then x:Destroy() end end if drop then return end Utils:NoCollide(grabAtt.Parent, v, v) grabAtt.WorldPosition = v.Position local att0 = Instance.new("Attachment", v) local AlignPosition = Instance.new("AlignPosition", v) AlignPosition.ReactionForceEnabled = true AlignPosition.MaxForce = 9999999999999999 AlignPosition.MaxVelocity = math.huge AlignPosition.Responsiveness = 200 AlignPosition.RigidityEnabled = true AlignPosition.Attachment0 = att0 AlignPosition.Attachment1 = grabAtt end end --=========[VR stuff]==========-- local vrparts, rhand, lhand, header, ToolTrack, HeadTrack, ratt, latt do vrparts = Instance.new("Folder", workspace); vrparts.Name = "VRParts" rhand = Instance.new("Part", vrparts); rhand.Anchored = true; rhand.CanCollide = false; rhand.Transparency = 1; ratt = Instance.new("Attachment", rhand); lhand = Instance.new("Part", vrparts); lhand.Anchored = true; lhand.CanCollide = false; lhand.Transparency = 1; latt = Instance.new("Attachment", lhand); header = Instance.new("Part", vrparts); header.Anchored = true; header.CanCollide = false; header.Transparency = 1; ToolTrack = Instance.new("Part", vrparts); ToolTrack.Anchored = true; ToolTrack.CanCollide = false; ToolTrack.Transparency = 1; HeadTrack = Instance.new("Part", vrparts); HeadTrack.Anchored = true; HeadTrack.CanCollide = false; HeadTrack.Transparency = 1; if VRReady then VRService.UserCFrameChanged:Connect(function() local LeftHandCFrame = VRService:GetUserCFrame(Enum.UserCFrame.LeftHand) local RightHandCFrame = VRService:GetUserCFrame(Enum.UserCFrame.RightHand) local HeadCFrame = VRService:GetUserCFrame(Enum.UserCFrame.Head) rhand.CFrame = (CurrentCamera.CFrame*CFrame.new(RightHandCFrame.p*options.HeadScale))*CFrame.fromEulerAnglesXYZ(RightHandCFrame:ToEulerAnglesXYZ())*CFrame.Angles(math.rad(90), math.rad(90), math.rad(0)) lhand.CFrame = (CurrentCamera.CFrame*CFrame.new(LeftHandCFrame.p*options.HeadScale))*CFrame.fromEulerAnglesXYZ(LeftHandCFrame:ToEulerAnglesXYZ())*CFrame.Angles(math.rad(90), math.rad(90), math.rad(0)) header.CFrame = (CurrentCamera.CFrame*CFrame.new(HeadCFrame.p*options.HeadScale)) *CFrame.fromEulerAnglesXYZ(HeadCFrame:ToEulerAnglesXYZ()) ToolTrack.CFrame = (CurrentCamera.CFrame*CFrame.new(RightHandCFrame.p*options.HeadScale))*CFrame.fromEulerAnglesXYZ(RightHandCFrame:ToEulerAnglesXYZ())*CFrame.Angles(math.rad(0), math.rad(0), math.rad(0)) * CFrame.new(0,1,0) end) else RunService.RenderStepped:Connect(function() header.CFrame = CurrentCamera.CFrame end) end end --=========[Setting-Up]==========-- if options.BubbleChat then Players.PlayerAdded:connect(function(User) User.Chatted:connect(function(Chat) game:GetService("Chat"):Chat(User.Character.Head,Chat,Enum.ChatColor.White) end) end) for i,v in pairs(Players:GetPlayers()) do v.Chatted:connect(function(Chat) game:GetService("Chat"):Chat(v.Character.Head,Chat,Enum.ChatColor.White) end) end end --[Camera] if VRReady then VRService:RecenterUserHeadCFrame(); CurrentCamera.CameraType = "Scriptable"; CurrentCamera.HeadScale = options.HeadScale; CurrentCamera.HeadLocked = true game:GetService("StarterGui"):SetCore("VRLaserPointerMode", 0); game:GetService("StarterGui"):SetCore("VREnableControllerModels", false); end hum.PlatformStand =true wait() --[Replicating] local torso = R15 and Character["UpperTorso"] or Character["Torso"] local rightarm = R15 and Character["RightHand"] or Character["Right Arm"] local leftarm = R15 and Character["LeftHand"] or Character["Left Arm"] local rightleg = R15 and Character["RightUpperLeg"] or Character:FindFirstChild("Right Leg") local leftleg = R15 and Character["LeftUpperLeg"] or Character:FindFirstChild("Left Leg") local motor = Character:FindFirstChild("LowerTorso") and Character.UpperTorso:FindFirstChild("LowerTorso") or GetMotorForLimb(root) if motor then motor:Destroy() end local RUA, RLA, LUA, LLA, RH, LH = Instance.new("Part", Character), Instance.new("Part", Character), Instance.new("Part", Character), Instance.new("Part", Character), Instance.new("Part", Character), Instance.new("Part", Character) do RUA.Name = "RUA [Fake]"; RUA.Size = Vector3.new(1, 2, 1); RUA.CanCollide = false; RLA.Name = "RLA [Fake]"; RLA.Size = Vector3.new(1, 2, 1); RLA.CanCollide = false; LUA.Name = "LUA [Fake]"; LUA.Size = Vector3.new(1, 2, 1); LUA.CanCollide = false; LLA.Name = "LLA [Fake]"; LLA.Size = Vector3.new(1, 2, 1); RUA.CanCollide = false; RH.Name = "RH [Fake]"; RH.Size = Vector3.new(.7,.7,.7); RH.CanCollide = false; LH.Name = "LH [Fake]"; LH.Size = Vector3.new(.7,.7,.7); LH.CanCollide = false; end local rightShoulder, RSHOULDER_C0_CACHE = Motor6D(torso, RUA, CFrame.new(1.5,1,0), CFrame.new(0,1,0), "RS"); local rightElbow, RELBOW_C0_CACHE = Motor6D(RUA, RLA, CFrame.new(0,-1,0), CFrame.new(0,1,0), "RE"); local rightWrist = Motor6D(RLA, RH, CFrame.new(0,-0.5,0), CFrame.new(0,0.5,0), "RW"); local leftShoulder, LSHOULDER_C0_CACHE = Motor6D(torso, LUA, CFrame.new(-1.5,1,0), CFrame.new(0,1,0), "LS"); local leftElbow, LELBOW_C0_CACHE = Motor6D(LUA, LLA, CFrame.new(0,-1,0), CFrame.new(0,1,0), "LE"); local leftWrist = Motor6D(LLA, LH, CFrame.new(0,-0.5,0), CFrame.new(0,0.5,0), "LW"); local RUPPER_LENGTH = math.abs(rightShoulder.C1.Y) + math.abs(rightElbow.C0.Y) local RLOWER_LENGTH = math.abs(rightElbow.C1.Y) + math.abs(rightWrist.C0.Y) + math.abs(rightWrist.C1.Y) local LUPPER_LENGTH = math.abs(leftShoulder.C1.Y) + math.abs(leftElbow.C0.Y) local LLOWER_LENGTH = math.abs(leftElbow.C1.Y) + math.abs(leftWrist.C0.Y) + math.abs(leftWrist.C1.Y) local fakerightarm, fakeleftarm, RHA, LHA, RgrabWeld, LgrabWeld, RgrabAtt, LgrabAtt do fakeleftarm, fakerightarm = Instance.new("Part", Character), Instance.new("Part", Character) fakeleftarm.CFrame = lhand.CFrame fakeleftarm.Name = "Fake Left" fakeleftarm.Size = Vector3.new(1,1,.5) fakeleftarm.Transparency = options.FakeHandsTransparency fakerightarm.CFrame = rhand.CFrame fakerightarm.Name = "Fake Right" fakerightarm.Size = Vector3.new(1,1,.5) fakerightarm.Transparency = options.FakeHandsTransparency local nocol = Utils:NoCollide(fakeleftarm, fakerightarm) local Rap = Instance.new("AlignPosition", fakerightarm); Rap.RigidityEnabled = false; Rap.ReactionForceEnabled = true; Rap.ApplyAtCenterOfMass = false; Rap.MaxForce = 10000000; Rap.MaxVelocity = math.huge/9e110; Rap.Responsiveness = 75; local Rao = Instance.new("AlignOrientation", fakerightarm); Rao.RigidityEnabled = false; Rao.ReactionTorqueEnabled = false; Rao.PrimaryAxisOnly = false; Rao.MaxTorque = 10000000; Rao.MaxAngularVelocity = math.huge/9e110; Rao.Responsiveness = 75; local Lap = Instance.new("AlignPosition", fakeleftarm); Lap.RigidityEnabled = false; Lap.ReactionForceEnabled = true; Lap.ApplyAtCenterOfMass = false; Lap.MaxForce = 10000000; Lap.MaxVelocity = math.huge/9e110; Lap.Responsiveness = 75; local Lao = Instance.new("AlignOrientation", fakeleftarm); Lao.RigidityEnabled = false; Lao.ReactionTorqueEnabled = false; Lao.PrimaryAxisOnly = false; Lao.MaxTorque = 10000000; Lao.MaxAngularVelocity = math.huge/9e110; Lao.Responsiveness = 75; local Ratt = Instance.new("Attachment", fakerightarm) RHA = Instance.new("Attachment", root) local Latt = Instance.new("Attachment", fakeleftarm) LHA = Instance.new("Attachment", root) Rap.Attachment0 = Ratt; Rap.Attachment1 = RHA Rao.Attachment0 = Ratt; Rao.Attachment1 = RHA Lap.Attachment0 = Latt; Lap.Attachment1 = LHA Lao.Attachment0 = Latt; Lao.Attachment1 = LHA RgrabWeld = Instance.new("WeldConstraint", fakerightarm); RgrabWeld.Part0 = fakerightarm LgrabWeld = Instance.new("WeldConstraint", fakeleftarm); LgrabWeld.Part0 = fakeleftarm RgrabAtt = Instance.new("Attachment", fakerightarm) LgrabAtt = Instance.new("Attachment", fakeleftarm) fakerightarm.Touched:Connect(function(part) if part.CanCollide == true and not part:IsDescendantOf(Character) and part.Parent ~= vrparts then HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.RightHand, (fakerightarm.Velocity - part.Velocity).Magnitude / 10) wait() HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.RightHand, 0) end end) fakeleftarm.Touched:Connect(function(part) if part.CanCollide == true and not part:IsDescendantOf(Character) and part.Parent ~= vrparts then HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.LeftHand, (fakeleftarm.Velocity - part.Velocity).Magnitude / 10) wait() HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.LeftHand, 0) end end) end for _,part in pairs(Character:GetDescendants()) do if part:IsA("BasePart") then if part ~= root and part ~= fakeleftarm and part ~= fakerightarm then local bv = Instance.new("BodyVelocity") bv.Velocity = Vector3.new(0,0,0) bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge) bv.P = 9000 bv.Parent = part RunService.Heartbeat:connect(function() part.AssemblyLinearVelocity = Vector3.new(70,0,0) end) for i,v in pairs(Character:GetChildren()) do if v:IsA("BasePart") then Utils:NoCollide(part, v) end end if part.Name:find("Arm") or part.Name:find("Leg") or part.Name:find("tHand") or part.Name:find("Foot") then part.Transparency = 0 RunService.Stepped:connect(function() part.CanCollide = false end) elseif part == RH or part == LH or part == RLA or part == LLA or part == RUA or part == LUA then part.Transparency = 1 elseif part.Parent:IsA("Accessory") then if part.Parent.Name == options.RightHand or part.Parent.Name == options.LeftHand then --or table.find(armParts, part.Parent) ~= nil then part.Transparency = 0 else part.Transparency = 1 end elseif part.Parent:IsA("Tool") then part.Parent.Parent = LocalPlayer.Backpack else part.Transparency = 0.6 end elseif part == fakeleftarm or part == fakerightarm then part.Transparency = options.FakeHandsTransparency part.CustomPhysicalProperties = PhysicalProperties.new(10, 1000, -100, 100,100) part.Massless = false else part.CustomPhysicalProperties = PhysicalProperties.new(20, 100, 0, 100,100) game:GetService("RunService").Stepped:connect(function() part.CanCollide = true end) end if part == torso or part.Name == "Head" then game:GetService("RunService").Stepped:connect(function() part.CanCollide = false end) end if part.Name == "LowerTorso" or part.Name:find("Foot") then part:Destroy() end end end CurrentCamera.CFrame = CFrame.new((root.Position - VRService:GetUserCFrame(Enum.UserCFrame.Head).Position * options.HeadScale)) wait(.1) align(torso, header, Vector3.new(0,-.8,0)) if R15 then align(Character["RightUpperLeg"],RUA, Vector3.new(0,.5,0), Vector3.new(0,0,0)) align(Character["RightLowerLeg"],RUA, Vector3.new(0,-.5,0), Vector3.new(0,0,0)) align(Character["RightUpperArm"],RLA, Vector3.new(0,.5,0), Vector3.new(0,0,0)) align(Character["RightLowerArm"],RLA, Vector3.new(0,-.5,0), Vector3.new(0,0,0)) align(Character["LeftUpperLeg"],LUA, Vector3.new(0,.5,0), Vector3.new(0,0,0)) align(Character["LeftLowerLeg"],LUA, Vector3.new(0,-.5,0), Vector3.new(0,0,0)) align(Character["LeftUpperArm"],LLA, Vector3.new(0,.5,0), Vector3.new(0,0,0)) align(Character["LeftLowerArm"],LLA, Vector3.new(0,-.5,0), Vector3.new(0,0,0)) alignHand(Character["RightHand"], RH, fakerightarm, Vector3.new(0,-.2,0), Vector3.new(0,-90,0)) alignHand(Character["LeftHand"], LH, fakeleftarm, Vector3.new(0,-.2,0), Vector3.new(0,-90,0)) else align(rightleg,RUA, Vector3.new(0,0,0), Vector3.new(0,0,0)) align(rightarm,RLA, Vector3.new(0,0,0), Vector3.new(0,-90,0)) align(leftleg,LUA, Vector3.new(0,0,0), Vector3.new(0,0,0)) align(leftarm,LLA, Vector3.new(0,0,0), Vector3.new(0,-90,0)) end if options.Hands then align(Character[options.RightHand], RH) align(Character[options.LeftHand], LH) end fakeleftarm.CFrame = root.CFrame fakerightarm.CFrame = root.CFrame local bg = Instance.new("BodyGyro", root); bg.MaxTorque = Vector3.new(17000,17000,17000); bg.P = 17000 local Twist = 0 local Height = .5 local SelectionBox = Instance.new("SelectionBox", workspace) local SelectedPart local LgrabPart local RgrabPart local Lholding local Rholding RunService.Heartbeat:Connect(function() local RshoulderCFrame = torso.CFrame * RSHOULDER_C0_CACHE local RplaneCF, RshoulderAngle, RelbowAngle = solveIK(RshoulderCFrame, fakerightarm.Position, RUPPER_LENGTH, RLOWER_LENGTH) local LshoulderCFrame = torso.CFrame * LSHOULDER_C0_CACHE local LplaneCF, LshoulderAngle, LelbowAngle = solveIK(LshoulderCFrame, fakeleftarm.Position, LUPPER_LENGTH, LLOWER_LENGTH) rightShoulder.C0 = torso.CFrame:toObjectSpace(RplaneCF) * CFrame.Angles(RshoulderAngle, 0, 0) rightElbow.C0 = RELBOW_C0_CACHE * CFrame.Angles(RelbowAngle, 0, 0) leftShoulder.C0 = torso.CFrame:toObjectSpace(LplaneCF) * CFrame.Angles(LshoulderAngle, 0, 0) leftElbow.C0 = LELBOW_C0_CACHE * CFrame.Angles(LelbowAngle, 0, 0) end) RunService.Stepped:Connect(function() rightShoulder.Transform = CFrame.new() rightElbow.Transform = CFrame.new() rightWrist.Transform = CFrame.new() leftShoulder.Transform = CFrame.new() leftElbow.Transform = CFrame.new() leftWrist.Transform = CFrame.new() end) RunService.RenderStepped:Connect(function() RHA.WorldCFrame = rhand.CFrame LHA.WorldCFrame = lhand.CFrame hum.PlatformStand = true workspace.Gravity = 75 if root.Position.Y <= -100 then root.CFrame = oldCF end if VRReady then local HeadCF = VRService:GetUserCFrame(Enum.UserCFrame.Head); u1 = CFrame.new((root.Position - HeadCF.Position * options.HeadScale) + Vector3.new(0,1.5,0)) * CFrame.Angles(0, math.rad(Twist), 0); CurrentCamera.CFrame = (u1 * CFrame.new(0, 0, 0) * CFrame.fromEulerAnglesXYZ(CFrame.new(HeadCF.p * options.HeadScale):ToEulerAnglesXYZ())) --+ Vector3.new(0,Height,0) for _,hat in pairs(Character:GetChildren()) do if hat:IsA("Accessory") and hat:FindFirstChild("Handle") then hat.Handle.Transparency = 1 end end local selectRay = Ray.new(rhand.Position, -rhand.CFrame.upVector.Unit * options.PointerRange) local hit, position, normal = Workspace:FindPartOnRayWithIgnoreList(selectRay, {vrparts, Character}) if hit and (hit:FindFirstChild("TouchInterest") or hit:FindFirstChildOfClass("ClickDetector")) then SelectionBox.Adornee = hit SelectedPart = hit else SelectionBox.Adornee = nil end local RgrabRay = Ray.new(rhand.Position, -rhand.CFrame.upVector.Unit * 1.3) local Rpart, Rposition, Rnormal = Workspace:FindPartOnRayWithIgnoreList(RgrabRay, {vrparts, Character}) local LgrabRay = Ray.new(lhand.Position, -lhand.CFrame.upVector.Unit * 1.3) local Lpart, Rposition, Rnormal = Workspace:FindPartOnRayWithIgnoreList(LgrabRay, {vrparts, Character}) if Rpart then RgrabPart = Rpart else RgrabPart = nil end if Lpart then LgrabPart = Lpart else LgrabPart = nil end else CurrentCamera.CameraType = "Scriptable" end end) --[Teleporting] root:GetPropertyChangedSignal("Position"):Connect(function(pos) root.Velocity = Vector3.new(0,0,0) fakeleftarm.Velocity = Vector3.new(0,0,0) fakerightarm.Velocity = Vector3.new(0,0,0) root.Anchored = true RgrabWeld.Part1 = nil LgrabWeld.Part1 = nil torso.CFrame = root.CFrame fakeleftarm.CFrame = root.CFrame fakerightarm.CFrame = root.CFrame wait(2) root.Anchored = false for i = 1,4 do root.Velocity = Vector3.new(0,0,0) fakeleftarm.Velocity = Vector3.new(0,0,0) fakerightarm.Velocity = Vector3.new(0,0,0) end end) --[Dying] hum.Died:Connect(function() if #Players:GetPlayers() <= 1 then Players.LocalPlayer:Kick("\nRejoining...") wait() game:GetService('TeleportService'):Teleport(game.PlaceId, LocalPlayer) else game:GetService('TeleportService'):TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer) end end) --[Tools] local toolrot = Vector3.new(0,0,0) function doTool(tool) if tool:IsA("Tool") and tool:FindFirstChild("Handle") and not tool:FindFirstChild("Done") then local realhandle = tool:FindFirstChild("Handle") realhandle.Massless = true RunService.Heartbeat:Connect(function() realhandle.Velocity = Vector3.new(45,0,0) end) local tag = Instance.new("StringValue", tool); tag.Name = "Done" if R15 then realhandle.Name = "RealHandle" local bv = Instance.new("BodyVelocity", realhandle) bv.Velocity = Vector3.new(0,0,0); bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge); bv.P = 9000; bv.Name = "Jitterless" local fakehandle = realhandle:Clone(); fakehandle.Parent = tool; fakehandle.Name = "Handle" fakehandle.Transparency = 1 RunService.Stepped:Connect(function() realhandle.CanCollide = false realhandle.CFrame = fakehandle.CFrame end) else local fakehandle = realhandle:Clone(); fakehandle.Parent = tool; fakehandle.Name = "FakeHandle"; fakehandle.Transparency = 1; fakehandle.CanCollide = false local fakegrip = Instance.new("Weld", rhand); fakegrip.C0 = CFrame.new(0, -1, 0, 1, 0, -0, 0, 0, 1, 0, -1, -0); fakegrip.C1 = tool.Grip; fakegrip.Part1 = fakehandle; fakegrip.Part0 = ToolTrack local toolAtt = align(realhandle, ToolTrack, Vector3.new(), Vector3.new(), {reactiontorque = false, resp = 70}) toolAtt.WorldCFrame = fakehandle.CFrame RunService.Stepped:Connect(function() realhandle.CanCollide = false end) end wait() tool.Parent = LocalPlayer.Backpack end end if not R15 and rightarm:FindFirstChild("RightGrip") then rightarm.RightGrip:Destroy() end for i,tool in pairs(Character:GetChildren()) do task.spawn(doTool, tool) end Character.ChildAdded:Connect(doTool) --=========[Keyboard]==========-- local Keyboard = game:GetObjects("rbxassetid://7333397685")[1]; Keyboard.Parent = workspace local Preview = Keyboard.Preview.Display.Input local KeyboardActive = false local Caps = false for _,key in pairs(Keyboard:GetChildren()) do if key.Name == "Board" then continue end local display = key:FindFirstChild("Display"); if display and display:FindFirstChild("Key") then display.Key.TextScaled = true end key.Touched:Connect(function(part) if KeyboardActive then if part == leftarm or part == rightarm then if key.Name:find("Key") then if Caps then if display:FindFirstChild("Cap") then Preview.Text = Preview.Text.. display.Cap.Text else Preview.Text = Preview.Text.. display.Key.Text:upper() end else Preview.Text = Preview.Text.. display.Key.Text:lower() end elseif key.Name == "Space" then Preview.Text = Preview.Text.. " " elseif key.Name == "Enter" then if Preview.Text ~= "" then Players:Chat(Preview.Text) ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest"):FireServer(Preview.Text,"All") Preview.Text = "" end elseif key.Name == "Backspace" then Preview.Text = Preview.Text:sub(1, #Preview.Text-1) elseif key.Name == "Clear" then Preview.Text = "" elseif key.Name == "Caps" then Caps = not Caps key.Material = Caps and "Neon" or "SmoothPlastic" for i,v in pairs(Keyboard:GetChildren()) do if v.Name:find("Key") then v.Display.Key.Text = Caps and v.Display.Key.Text:upper() or v.Display.Key.Text:lower() end end elseif key.Name == "Exit" then KeyboardActive = false end end end end) end function handleKeyboard() if (root.Position - Keyboard.PrimaryPart.Position).Magnitude > 20 then KeyboardActive = false end if KeyboardActive then Keyboard.Parent = workspace --Keyboard:SetPrimaryPartCFrame(Keyboard.PrimaryPart.CFrame:lerp(Keyboard.PrimaryPart.CFrame * (header.CFrame - header.Position), .01)) Keyboard:SetPrimaryPartCFrame(Keyboard.PrimaryPart.CFrame:lerp(CFrame.lookAt(Keyboard.PrimaryPart.Position, header.Position) * CFrame.Angles(0,math.rad(180),0), .01)) else Keyboard.Parent = ReplicatedStorage end end RunService.RenderStepped:Connect(handleKeyboard) --=========[Controls]==========-- local turnDB = false local keyboardDB = false UserInputService.InputChanged:connect(function(key) if key.KeyCode == Enum.KeyCode.Thumbstick2 then if key.Position.Y > 0.8 then Height = Height + .1 elseif key.Position.Y < -0.8 then Height = Height - .1 end if key.Position.X > 0.8 and not turnDB then turnDB = true Twist = Twist - options.TurnAngle wait(options.TurnDelay) turnDB = false elseif key.Position.X < -0.8 and not turnDB then turnDB = true Twist = Twist + options.TurnAngle wait(options.TurnDelay) turnDB = false end end end) UserInputService.InputChanged:connect(function(key) if key.KeyCode == Enum.KeyCode.Thumbstick1 then end end) UserInputService.InputChanged:connect(function(key) if key.KeyCode == Enum.KeyCode.ButtonL2 then if key.Position.Z > 0.8 and not keyboardDB then keyboardDB = true Keyboard:SetPrimaryPartCFrame((header.CFrame + Vector3.new(0,1,0)) * CFrame.new(0,0,-8)) KeyboardActive = not KeyboardActive wait(.5) keyboardDB = false end end end) UserInputService.InputChanged:connect(function(key) if key.KeyCode == Enum.KeyCode.ButtonR2 then if not R15 then for i,tool in pairs(Character:GetChildren()) do if tool:IsA("Tool") then tool:Activate() end end end if SelectedPart then if key.Position.Z > 0.8 then if SelectedPart:FindFirstChild("TouchInterest") then firetouchinterest(rightarm, SelectedPart, 0) elseif SelectedPart:FindFirstChildOfClass("ClickDetector") then fireclickdetector(SelectedPart:FindFirstChildOfClass("ClickDetector")) end else if SelectedPart:FindFirstChild("TouchInterest") then firetouchinterest(rightarm, SelectedPart, 1) end end end end end) UserInputService.InputBegan:connect(function(key) if key.KeyCode == Enum.KeyCode.ButtonR1 then if RgrabPart then if not RgrabPart.Parent:IsA("Accessory") and not RgrabPart.Parent:FindFirstChildOfClass("Humanoid") and (RgrabPart:IsGrounded() or RgrabPart.Anchored) then RgrabWeld.Part1 = RgrabPart root.Velocity = Vector3.new(0,0,0) fakerightarm.Velocity = Vector3.new(0,0,0) fakeleftarm.Velocity = Vector3.new(0,0,0) root.Massless = true fakerightarm.Massless = true fakerightarm.CanCollide = false else Rholding = RgrabPart holdPart(RgrabPart, RgrabAtt) end end elseif key.KeyCode == Enum.KeyCode.ButtonL1 then if LgrabPart then if not LgrabPart.Parent:IsA("Accessory") and not LgrabPart.Parent:FindFirstChildOfClass("Humanoid") and (LgrabPart:IsGrounded() or LgrabPart.Anchored) then LgrabWeld.Part1 = LgrabPart root.Velocity = Vector3.new(0,0,0) fakerightarm.Velocity = Vector3.new(0,0,0) fakeleftarm.Velocity = Vector3.new(0,0,0) root.Massless = false fakeleftarm.Massless = true fakeleftarm.CanCollide = false else Lholding = LgrabPart holdPart(LgrabPart, LgrabAtt) end end end end) UserInputService.InputEnded:connect(function(key) if key.KeyCode == Enum.KeyCode.ButtonR1 then RgrabWeld.Part1 = nil fakerightarm.Massless = false fakerightarm.CanCollide = true if Rholding then holdPart(Rholding, nil, true) end elseif key.KeyCode == Enum.KeyCode.ButtonL1 then LgrabWeld.Part1 = nil fakeleftarm.Massless = false fakeleftarm.CanCollide = true if Lholding then holdPart(Lholding, nil, true) end end end) --=========[Cool Things]==========-- ViewHUDFunc = function() local ViewportRange = ViewportRange or 32 local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local VRService = game:GetService("VRService") local Players = game:GetService("Players") local Client = Players.LocalPlayer local Mouse = Client:GetMouse() local Camera = workspace.CurrentCamera local CameraPort = Camera.CFrame local ViewHUD = script:FindFirstChild("ViewHUD") or game:GetObjects("rbxassetid://4480405425")[1] local Viewport = ViewHUD.Viewport local Viewcam = Instance.new("Camera") local ViewPart = ViewHUD.Part ViewHUD.Parent = game:GetService("CoreGui") Viewcam.Parent = Viewport Viewcam.CameraType = Enum.CameraType.Scriptable Viewport.CurrentCamera = Viewcam Viewport.BackgroundTransparency = 1 --[[Code]]-- local function Clone(Character) local Arc = Character.Archivable local Clone; Character.Archivable = true Clone = Character:Clone() Character.Archivable = Arc return Clone end local function GetPart(Name, Parent, Descendants) for i = 1, #Descendants do local Part = Descendants[i] if Part.Name == Name and Part.Parent.Name == Parent then return Part end end end local function OnPlayerAdded(Player) if not ViewHUD or not ViewHUD.Parent then return end local function CharacterAdded(Character) if not ViewHUD or not ViewHUD.Parent then return end Character:WaitForChild("Head") Character:WaitForChild("Humanoid") wait(3) local FakeChar = Clone(Character) local TrueRoot = Character:FindFirstChild("HumanoidRootPart") or Character:FindFirstChild("Head") local Root = FakeChar:FindFirstChild("HumanoidRootPart") or FakeChar:FindFirstChild("Head") local RenderConnection; local Descendants = FakeChar:GetDescendants() local RealDescendants = Character:GetDescendants() local Correspondents = {}; FakeChar.Humanoid.DisplayDistanceType = "None" for i = 1, #Descendants do local Part = Descendants[i] local Real = Part:IsA("BasePart") and GetPart(Part.Name, Part.Parent.Name, RealDescendants) if Part:IsA("BasePart") and Real then Part.Anchored = true Part:BreakJoints() if not string.find(Part.Name, "Fake") and Part.Name ~= "HumanoidRootPart" then Part.Transparency = 0 else Part.Transparency = 1 end table.insert(Correspondents, {Part, Real}) end end RenderConnection = RunService.RenderStepped:Connect(function() if not Character or not Character.Parent then RenderConnection:Disconnect() FakeChar:Destroy() return end if (TrueRoot and (TrueRoot.Position - Camera.CFrame.p).Magnitude <= ViewportRange) or Player == Client or not TrueRoot then for i = 1, #Correspondents do local Part, Real = unpack(Correspondents[i]) if Part and Real and Part.Parent and Real.Parent then Part.CFrame = Real.CFrame - Vector3.new(0,1,0) elseif Part.Parent and not Real.Parent then Part:Destroy() end end end end) FakeChar.Parent = Viewcam end Player.CharacterAdded:Connect(CharacterAdded) if Player.Character then spawn(function() CharacterAdded(Player.Character) end) end end local PlayerAdded = Players.PlayerAdded:Connect(OnPlayerAdded) for _, Player in pairs(Players:GetPlayers()) do OnPlayerAdded(Player) end ViewPart.Size = Vector3.new() if VRReady then Viewport.Position = UDim2.new(.62, 0, .89, 0) Viewport.Size = UDim2.new(.3, 0, .3, 0) Viewport.AnchorPoint = Vector2.new(.5, 1) else Viewport.Size = UDim2.new(0.3, 0, 0.3, 0) end local RenderStepped = RunService.RenderStepped:Connect(function() local Render = Camera.CFrame local Scale = Camera.ViewportSize if VRReady then Render = Render * VRService:GetUserCFrame(Enum.UserCFrame.Head) end CameraPort = CFrame.new(Render.p + Vector3.new(5, 2, 0), Render.p) Viewport.Camera.CFrame = CameraPort ViewPart.CFrame = Render * CFrame.new(0, 0, -16) ViewHUD.Size = UDim2.new(0, Scale.X - 6, 0, Scale.Y - 6) end) -- local CharacterAdded CharacterAdded = Client.CharacterAdded:Connect(function() RenderStepped:Disconnect() CharacterAdded:Disconnect() PlayerAdded:Disconnect() ViewHUD:Destroy() ViewHUD = nil end) wait(9e9) end; ChatHUDFunc = function() --[[ Variables --]] local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local VRService = game:GetService("VRService") 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 <= options.ChatLocalRange then NewLocal(Message, Sender, Color, Distance) end end local function OnPlayerAdded(Player) if not ChatHUD or not ChatHUD.Parent then return end local Color = BrickColor.Random().Color Player.Chatted:Connect(function(Message) OnNewChat(Message, Player, Color) end) end Players.PlayerAdded:Connect(OnPlayerAdded) for _, Player in pairs(Players:GetPlayers()) do OnPlayerAdded(Player) end -- local ChatPart = ChatHUD.Part ChatHUD.Adornee = ChatPart if VRReady then ChatHUD.Parent = game:GetService("CoreGui") ChatHUD.Enabled = true ChatHUD.AlwaysOnTop = true local OnInput = UserInputService.InputBegan:Connect(function(Input, Processed) if not Processed then if Input.KeyCode == Enum.KeyCode.ButtonB then ChatHUD.Enabled = not ChatHUD.Enabled end end end) local RenderStepped = RunService.RenderStepped:Connect(function() ChatPart.CFrame = lhand.CFrame * CFrame.Angles(math.rad(-90),math.rad(0), math.rad(0)) end) local CharacterAdded CharacterAdded = Client.CharacterAdded:Connect(function() OnInput:Disconnect() RenderStepped:Disconnect() CharacterAdded:Disconnect() ChatHUD:Destroy() ChatHUD = nil end) end wait(9e9) end; task.spawn(ChatHUDFunc) task.spawn(ViewHUDFunc)