SkyVR
Key RequiredUniversal

SkyVR

Universal Scriptmustafaeymenaydinnmustafaeymenaydinn 6.7K views 481 executesUpdated Oct 18, 2025
5.0/ 5(3 votes)
30100% Positive
Lua Script•346 lines (12550 chars)
local loader = Instance.new("ScreenGui")
local Frame = Instance.new("Frame")
local ImageLabel = Instance.new("ImageLabel")
local UIAspectRatioConstraint = Instance.new("UIAspectRatioConstraint")
local loader_2 = Instance.new("ImageLabel")
local UICorner = Instance.new("UICorner")
local t = Instance.new("ImageLabel")
local UICorner_2 = Instance.new("UICorner")
local TextLabel = Instance.new("TextLabel")
local UICorner_3 = Instance.new("UICorner")
local errorr = Instance.new("TextLabel")
do
	loader.Name = "loader"
	loader.Parent = game.CoreGui
	loader.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	Frame.Parent = loader
	Frame.AnchorPoint = Vector2.new(0.5, 0.5)
	Frame.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
	Frame.BackgroundTransparency = 1.000
	Frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
	Frame.BorderSizePixel = 0
	Frame.Position = UDim2.new(0.5, 0, 0.5, 0)
	Frame.Size = UDim2.new(0.0824402273, 0, 0.163132131, 0)
	ImageLabel.Parent = Frame
	ImageLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
	ImageLabel.BackgroundTransparency = 1.000
	ImageLabel.BorderColor3 = Color3.fromRGB(0, 0, 0)
	ImageLabel.BorderSizePixel = 0
	ImageLabel.Position = UDim2.new(-0.932431638, 0, -1.4126755, 0)
	ImageLabel.Size = UDim2.new(2.86000013, 0, 2.8599999, 0)
	ImageLabel.Image = "http://www.roblox.com/asset/?id=17137351841"
	UIAspectRatioConstraint.Parent = Frame
	UIAspectRatioConstraint.AspectRatio = 0.988
	loader_2.Name = "loader"
	loader_2.Parent = Frame
	loader_2.BackgroundColor3 = Color3.fromRGB(148, 148, 148)
	loader_2.BorderColor3 = Color3.fromRGB(0, 0, 0)
	loader_2.BorderSizePixel = 0
	loader_2.Position = UDim2.new(-0.25999999, 0, 0.899999976, 0)
	loader_2.Size = UDim2.new(1.5, 0, 0.230000004, 0)
	loader_2.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png"
	loader_2.ImageTransparency = 1.000
	UICorner.CornerRadius = UDim.new(1, 100000)
	UICorner.Parent = loader_2
	t.Name = "t"
	t.Parent = loader_2
	t.BackgroundColor3 = Color3.fromRGB(0, 255, 102)
	t.BorderColor3 = Color3.fromRGB(0, 0, 0)
	t.BorderSizePixel = 0
	t.Size = UDim2.new(1, 0, 1, 0)
	t.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png"
	t.ImageTransparency = 1.000
	UICorner_2.CornerRadius = UDim.new(1, 100000)
	UICorner_2.Parent = t
	TextLabel.Parent = loader_2
	TextLabel.BackgroundColor3 = Color3.fromRGB(126, 126, 126)
	TextLabel.BackgroundTransparency = 1.000
	TextLabel.BorderColor3 = Color3.fromRGB(0, 0, 0)
	TextLabel.BorderSizePixel = 0
	TextLabel.Size = UDim2.new(1, 0, 1, 0)
	TextLabel.Font = Enum.Font.TitilliumWeb
	TextLabel.Text = "Ready!"
	TextLabel.TextColor3 = Color3.fromRGB(0, 0, 0)
	TextLabel.TextScaled = true
	TextLabel.TextSize = 14.000
	TextLabel.TextWrapped = true
	UICorner_3.CornerRadius = UDim.new(1, 100000)
	UICorner_3.Parent = TextLabel
	errorr.Name = "error"
	errorr.Parent = Frame
	errorr.BackgroundColor3 = Color3.fromRGB(126, 126, 126)
	errorr.BackgroundTransparency = 1.000
	errorr.BorderColor3 = Color3.fromRGB(0, 0, 0)
	errorr.BorderSizePixel = 0
	errorr.Position = UDim2.new(-1.07771266, 0, 0.74733454, 0)
	errorr.Size = UDim2.new(3.15542507, 0, 0.524423599, 0)
	errorr.Visible = false
	errorr.Font = Enum.Font.Unknown
	errorr.Text = "VR is required for this script"
	errorr.TextColor3 = Color3.fromRGB(255, 20, 20)
	errorr.TextScaled = true
	errorr.TextSize = 14.000
	errorr.TextStrokeTransparency = 0.000
	errorr.TextWrapped = true
end

local global = getgenv()

TextLabel.Text = "Loading..."
t:TweenSize(UDim2.new(0,0,1,0),nil,Enum.EasingStyle.Linear,0)
wait(0.01)
t:TweenSize(UDim2.new(0.3,0,1,0),nil,Enum.EasingStyle.Linear,0.8)
wait(0.81)
if not game:GetService("UserInputService").VREnabled and not getgenv().fullbody then
	errorr.Visible = true
	t.Parent.Visible = false
	wait(5)
	loader:Destroy()
	return
end
if getgenv().skyVRversion ~= '3.0.0' then
	errorr.Text = "Please update your script loader!"
	errorr.Visible = true
	t.Parent.Visible = false
	wait(5)
	loader:Destroy()
	return
end
t:TweenSize(UDim2.new(1,0,1,0),nil,Enum.EasingStyle.Linear,0.1)
wait(0.06)
if getgenv().HATDROP and not getgenv().fullbody then
	loadstring(game:HttpGet("https://raw.githubusercontent.com/presidentanvil/skyvr/main/SkyVRHatdrop.lua"))()
	TextLabel.Text = "Ready!"
	task.delay(5,function()
		loader:Destroy()
	end)
	return
end
if getgenv().fullbody then
	loadstring(game:HttpGet("https://raw.githubusercontent.com/presidentanvil/skyvr/main/SkyVRFullbody.lua"))()
	TextLabel.Text = "Ready!"
	task.delay(5,function()
		loader:Destroy()
	end)
	return
end
local plr = game.Players.LocalPlayer
local input = game:GetService("UserInputService")

local function createpart(size, name,h)
	local Part = Instance.new("Part")
	if h and global.options.outlinesEnabled then 
		local SelectionBox = Instance.new("SelectionBox")
		SelectionBox.Adornee = Part
		SelectionBox.LineThickness = 0.05
		SelectionBox.Parent = Part
	end
	Part.Parent = workspace
	Part.CFrame = plr.Character.HumanoidRootPart.CFrame
	Part.Size = size
	Part.Transparency = 1
	Part.CanCollide = false
	Part.Anchored = true
	Part.Name = name
	return Part
end

local lefthandpart = createpart(Vector3.new(2,1,1), "moveRH",true)
local righthandpart = createpart(Vector3.new(2,1,1), "moveRH",true)
local headpart = createpart(Vector3.new(1,1,1), "moveH",false)
local lefttoypart = createpart(Vector3.new(1,1,1), "LToy",true)
local righttoypart =  createpart(Vector3.new(1,1,1), "RToy",true)
local thirdpersonpart = createpart(Vector3.new(1,1,1), "thirdpersonpart",false)
local thirdperson = false
local lefttoyenable = false
local righttoyenable = false
local lfirst = true
local rfirst = true
local ltoypos = CFrame.new(1.15,0,0) * CFrame.Angles(0,math.rad(180),0)
local rtoypos = CFrame.new(1.15,0,0) * CFrame.Angles(0,math.rad(0),0)

function Align(Part1,Part0,CFrameOffset) 
    local con;con=game:GetService("RunService").PostSimulation:Connect(function()
        if not Part1:IsDescendantOf(workspace) then con:Disconnect() return end
        if not isnetworkowner(Part1) then return end
        Part1.CanCollide=false;
        Part1.CFrame=Part0.CFrame*CFrameOffset;
        Part1.Velocity = Vector3.new(20,20,20) or getgenv().options.NetVelocity;
    end)

    return {}
end


function filterMeshID(id)
    return (string.find(id,'assetdelivery')~=nil and string.match(string.sub(id,37,#id),"%d+")) or string.match(id,"%d+")
end

function findMeshID(id)
    for i,v in pairs(getgenv().headhats) do
        if i=="meshid:"..id then return true,headpart,v end
    end
    if getgenv().right=="meshid:"..id then return  true,righthandpart,CFrame.new() end
    if getgenv().left=="meshid:"..id then return   true,lefthandpart,CFrame.new() end
    if options.leftToy=="meshid:"..id then return  true,lefttoypart,CFrame.new() end
    if options.rightToy=="meshid:"..id then return true,righttoypart,CFrame.new() end
    return false
end

function findHatName(id)
    for i,v in pairs(getgenv().headhats) do
        if i==id then return true,headpart,v end
    end
    if getgenv().right==id then return  true,righthandpart,CFrame.new() end
    if getgenv().left==id then return   true,lefthandpart,CFrame.new() end
    if options.leftToy==id then return  true,lefttoypart,CFrame.new() end
    if options.rightToy==id then return true,righttoypart,CFrame.new() end
    return false
end

local function FEScript(char)

	local foundmeshids = {}
	for i,v in ipairs(char:GetDescendants()) do
		if not v:IsA"Accessory" then continue end
		if not v:FindFirstChild"Handle" then continue end
		local mesh = v.Handle:FindFirstChildOfClass("SpecialMesh")
        if not v.Handle:FindFirstChildOfClass("SpecialMesh") then mesh = v.Handle end
        
        local is,d,cf = findMeshID(filterMeshID(mesh.MeshId))
	    if foundmeshids["meshid:"..filterMeshID(mesh.MeshId)] then is = false else foundmeshids["meshid:"..filterMeshID(mesh.MeshId)] = true end
	
        if is then
            Align(v.Handle,d,cf)
            v.Handle.Transparency = (d.Name=="moveH" and global.options.HeadHatTransparency) or 0
        else
            local is,d,cf = findHatName(v.Name)
	    	if not is then continue end
            Align(v.Handle,d,cf)
            v.Handle.Transparency = (d.Name=="moveH" and global.options.HeadHatTransparency) or 0
        end
	end
end


do
	for i,v in ipairs(plr.Character.HumanoidRootPart:GetChildren()) do
		if v:IsA("Sound") then
			v.Volume = 0
		end
	end
	if plr.Character:FindFirstChild("Head") then
		plr.Character.Head:Destroy()
	end
	plr.Character.Humanoid.Health = 0
	game:GetService("RunService").PostSimulation:connect(function()
		for i,v in ipairs(game:GetService("Players").LocalPlayer.Character:GetDescendants()) do
			if v:IsA("BasePart") and v.Name ~="HumanoidRootPart" then 
					v.Velocity = global.options.NetVelocity
			end
		end
	end)
	FEScript(plr.Character)
	plr.CharacterAdded:Connect(function(char)

		local hrp = char:WaitForChild("HumanoidRootPart")
		local head = char:WaitForChild("Head")
		local hum = char:FindFirstChildOfClass("Humanoid")
		local continueTping = global.options.vccompatibility
		coroutine.wrap(function()
			while continueTping do
				task.wait()
				hrp.CFrame = headpart.CFrame
			end
		end)()

		
		task.wait(0.25)	
		continueTping = false
		for i,v in ipairs(hrp:GetChildren()) do
			if v:IsA("Sound") then
				v.Volume = 0
			end
		end
		char.Humanoid.Health = 0

		FEScript(char)
	end)
end

TextLabel.Text = "Ready!"
task.delay(5,function()
	loader:Destroy()
end)

-- vr handler starts here
coroutine.wrap(function()
	local cam = workspace.CurrentCamera
	cam:GetPropertyChangedSignal("CFrame"):Connect(function()
		cam.CameraType = "Scriptable"
		cam.HeadScale = global.options.headscale
	end)
end)()
local cam = workspace.CurrentCamera

cam.CameraType = "Scriptable"
cam.HeadScale = global.options.headscale

game:GetService("StarterGui"):SetCore("VREnableControllerModels", false)

input.UserCFrameChanged:connect(function(part,move)
	cam.CameraType = "Scriptable"
	cam.HeadScale = global.options.headscale
    pcall(function()
    	if part == Enum.UserCFrame.Head then
    		headpart.CFrame = cam.CFrame*(CFrame.new(move.p*(cam.HeadScale-1))*move)
			thirdpersonpart.CFrame = cam.CFrame * (CFrame.new(move.p*(cam.HeadScale-1))*move) * CFrame.new(0,0,-10) * CFrame.Angles(math.rad(180),0,math.rad(180))
    	elseif part == Enum.UserCFrame.LeftHand then
    		lefthandpart.CFrame = cam.CFrame*(CFrame.new(move.p*(cam.HeadScale-1))*move*CFrame.Angles(math.rad(global.options.lefthandrotoffset.X),math.rad(global.options.lefthandrotoffset.Y),math.rad(global.options.lefthandrotoffset.Z)))
    	    if lefttoyenable then
                lefttoypart.CFrame = lefthandpart.CFrame * ltoypos
            end
        elseif part == Enum.UserCFrame.RightHand then
    		righthandpart.CFrame = cam.CFrame*(CFrame.new(move.p*(cam.HeadScale-1))*move*CFrame.Angles(math.rad(global.options.righthandrotoffset.X),math.rad(global.options.righthandrotoffset.Y),math.rad(global.options.righthandrotoffset.Z)))
    	    if righttoyenable then
                righttoypart.CFrame = righthandpart.CFrame * rtoypos
            end
		end
    end)	
end)

input.InputBegan:connect(function(key)
	if key.KeyCode == global.options.thirdPersonButtonToggle then
		thirdperson = not thirdperson -- disabled?
	end
	if key.KeyCode == Enum.KeyCode.ButtonR1 then
		R1down = true
	end
    if key.KeyCode == global.options.leftToyBind then
		if not lfirst then
			ltoypos = lefttoypart.CFrame:ToObjectSpace(lefthandpart.CFrame):Inverse()
		end
		lfirst = false
        lefttoyenable = not lefttoyenable
    end
	if key.KeyCode == global.options.rightToyBind then
		if not rfirst then
			rtoypos = righttoypart.CFrame:ToObjectSpace(righthandpart.CFrame):Inverse()
		end
		rfirst = false
        righttoyenable = not righttoyenable
    end
end)

input.InputEnded:connect(function(key)
	if key.KeyCode == Enum.KeyCode.ButtonR1 then
		R1down = false
	end
end)

game:GetService("RunService").RenderStepped:connect(function()
	-- righthandpart.CFrame*CFrame.Angles(-math.rad(global.options.righthandrotoffset.X),-math.rad(global.options.righthandrotoffset.Y),math.rad(180-global.options.righthandrotoffset.X))
	if R1down then
		cam.CFrame = cam.CFrame:Lerp(cam.CoordinateFrame + (righthandpart.CFrame * CFrame.Angles(math.rad(global.options.controllerRotationOffset.X-global.options.righthandrotoffset.X),math.rad(global.options.controllerRotationOffset.Y-global.options.righthandrotoffset.Y),math.rad(global.options.controllerRotationOffset.Z-global.options.righthandrotoffset.Z))).LookVector * cam.HeadScale/2, 0.5)
	end
end)

Features & Information

Warn!: This is Only Works VR [if u Owned VR]
#exploit#SkyVR#skyvr#SKYVR

Community Comments (9)

Luauisbluu27Luauisbluu27Oct 18, 2025

Bro MasterMZ video miniature XD

Replying to @Luauisbluu27
mustafaeymenaydinnmustafaeymenaydinnOct 18, 2025

@Luauisbluu27 This is not added on scriptblox, So I Added in..

Replying to @mustafaeymenaydinn
Luauisbluu27Luauisbluu27Oct 18, 2025

@mustafaeymenaydinn No, its ok i mean that is a funny miniature just that...

Replying to @Luauisbluu27
mustafaeymenaydinnmustafaeymenaydinnOct 21, 2025

@Luauisbluu27 I know

mustafaeymenaydinnmustafaeymenaydinnOct 18, 2025(edited)

.

Average1945Average1945Nov 7, 2025

do you have to buy accesories like 2 gray rectangle meshes to be used as arms? im so confused right now

Replying to @Average1945

@Average1945 No, you don't have to buy it, I know that it gives itself by entering item ids such as head and arm by entering rbx*etid in that section..

RandomScripts30RandomScripts30Jan 26, 2026

not updated :(

509clint_dev509clint_devMay 18, 2026

rip sky vr

More Scripts for Universal Scripts