-- 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")