local player = game.Players.LocalPlayer local char = player.Character local tool for i,v in player:GetDescendants() do if v.Name == "SyncAPI" then tool = v.Parent end end for i,v in game.ReplicatedStorage:GetDescendants() do if v.Name == "SyncAPI" then tool = v.Parent end end remote = tool.SyncAPI.ServerEndpoint function _(args) remote:InvokeServer(unpack(args)) end function SetCollision(part,boolean) local args = { [1] = "SyncCollision", [2] = { [1] = { ["Part"] = part, ["CanCollide"] = boolean } } } _(args) end function SetAnchor(boolean,part) local args = { [1] = "SyncAnchor", [2] = { [1] = { ["Part"] = part, ["Anchored"] = boolean } } } _(args) end function CreatePart(cf,parent) local args = { [1] = "CreatePart", [2] = "Normal", [3] = cf, [4] = parent } _(args) end function DestroyPart(part) local args = { [1] = "Remove", [2] = { [1] = part } } _(args) end function MovePart(part,cf) local args = { [1] = "SyncMove", [2] = { [1] = { ["Part"] = part, ["CFrame"] = cf } } } _(args) end function Resize(part,size,cf) local args = { [1] = "SyncResize", [2] = { [1] = { ["Part"] = part, ["CFrame"] = cf, ["Size"] = size } } } _(args) end function AddMesh(part) local args = { [1] = "CreateMeshes", [2] = { [1] = { ["Part"] = part } } } _(args) end function SetMesh(part,meshid) local args = { [1] = "SyncMesh", [2] = { [1] = { ["Part"] = part, ["MeshId"] = "rbxassetid://"..meshid } } } _(args) end function SetTexture(part, texid) local args = { [1] = "SyncMesh", [2] = { [1] = { ["Part"] = part, ["TextureId"] = "rbxassetid://"..texid } } } _(args) end function SetName(part, stringg) local args = { [1] = "SetName", [2] = { [1] = part }, [3] = stringg } _(args) end function MeshResize(part,size) local args = { [1] = "SyncMesh", [2] = { [1] = { ["Part"] = part, ["Scale"] = size } } } _(args) end function Weld(part1, part2,lead) local args = { [1] = "CreateWelds", [2] = { [1] = part1, [2] = part2 }, [3] = lead } _(args) end function SetLocked(part,boolean) local args = { [1] = "SetLocked", [2] = { [1] = part }, [3] = boolean } _(args) end function SetTrans(part,int) local args = { [1] = "SyncMaterial", [2] = { [1] = { ["Part"] = part, ["Transparency"] = int } } } _(args) end function CreateSpotlight(part) local args = { [1] = "CreateLights", [2] = { [1] = { ["Part"] = part, ["LightType"] = "SpotLight" } } } _(args) end function SyncLighting(part,brightness) local args = { [1] = "SyncLighting", [2] = { [1] = { ["Part"] = part, ["LightType"] = "SpotLight", ["Brightness"] = brightness } } } _(args) end function Color(part,color) local args = { [1] = "SyncColor", [2] = { [1] = { ["Part"] = part, ["Color"] = color, ["UnionColoring"] = false } } } _(args) end function SpawnDecal(part,side) local args = { [1] = "CreateTextures", [2] = { [1] = { ["Part"] = part, ["Face"] = side, ["TextureType"] = "Decal" } } } _(args) end function AddDecal(part,asset,side) local args = { [1] = "SyncTexture", [2] = { [1] = { ["Part"] = part, ["Face"] = side, ["TextureType"] = "Decal", ["Texture"] = "rbxassetid://".. asset } } } _(args) end function Sky(id) local e = char.HumanoidRootPart.CFrame.x local f = char.HumanoidRootPart.CFrame.y local g = char.HumanoidRootPart.CFrame.z local spawnPos = CFrame.new(math.floor(e), math.floor(f), math.floor(g)) + Vector3.new(0, 6, 0) CreatePart(spawnPos, workspace) task.wait(0.2) local skyPart for i, v in workspace:GetDescendants() do if v:IsA("BasePart") and (v.Position - spawnPos.p).Magnitude < 1 then skyPart = v SetName(v, "RandomSpinSky") AddMesh(v) SetMesh(v, "111891702759441") SetTexture(v, id) MeshResize(v, Vector3.new(2500, 2500, 2500)) SetLocked(v, true) SetAnchor(true, v) SetCollision(v, false) break end end if skyPart then local t = 0 local baseSpeed = 19 local randomness = 19 game:GetService("RunService").Heartbeat:Connect(function(dt) t = t + dt local rotX = math.sin(t * 1.5) * randomness local rotY = t * baseSpeed local rotZ = math.cos(t * 2.1) * randomness local newCf = spawnPos * CFrame.Angles( math.rad(rotX), math.rad(rotY), math.rad(rotZ) ) MovePart(skyPart, newCf) end) end end Sky("85683443764974")