
Key RequiredUniversal

-- Fixed Finite Skybox loader
-- Tries multiple methods because InsertService often fails on random/public models
local modelId = 15322543130
local targetSize = 2048
local function tryLoad()
-- Method 1: GetObjects (most reliable in executors)
local success, result = pcall(function()
return game:GetObjects("rbxassetid://" .. modelId)[1]
end)
if success and result then
return result
end
-- Method 2: InsertService
success, result = pcall(function()
return game:GetService("InsertService"):LoadAsset(modelId)
end)
if success and result then
return result:GetChildren()[1] or result
end
return nil
end
local model = tryLoad()
if not model then
warn("Failed to load model ID " .. modelId)
warn("Possible reasons:")
warn("1. ID is wrong / model deleted / private")
warn("2. Asset is not a free Model")
warn("3. Executor blocked the request")
return
end
model.Parent = workspace
model.Name = "FiniteSkybox"
-- Scale to 2048
local extents = model:GetExtentsSize()
local scaleFactor = targetSize / math.max(extents.X, extents.Y, extents.Z)
if model.ScaleTo then
model:ScaleTo(scaleFactor)
else
local pivot = model:GetPivot()
for _, part in ipairs(model:GetDescendants()) do
if part:IsA("BasePart") then
part.Size = part.Size * scaleFactor
local offset = pivot:PointToObjectSpace(part.Position)
part.CFrame = pivot * CFrame.new(offset * scaleFactor) * part.CFrame.Rotation
end
end
end
-- Make it a skybox shell
for _, part in ipairs(model:GetDescendants()) do
if part:IsA("BasePart") then
part.Anchored = true
part.CanCollide = false
end
end
-- Half body on spawn
local spawnPos = Vector3.new(0, 0, 0)
local spawn = workspace:FindFirstChildOfClass("SpawnLocation")
if spawn then
spawnPos = spawn.Position
end
model:PivotTo(CFrame.new(spawnPos.X, spawnPos.Y, spawnPos.Z))
print("Finite Skybox loaded successfully")No comments yet for this script.



