local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local tool for _, v in player:GetDescendants() do if v.Name == "SyncAPI" then tool = v.Parent end end for _, v in game.ReplicatedStorage:GetDescendants() do if v.Name == "SyncAPI" then tool = v.Parent end end local SyncAPI = tool.SyncAPI local function _(args) SyncAPI:Invoke(unpack(args)) end local function SyncRotate(part, cf) _( { "SyncRotate", { { Part = part, CFrame = cf } } } ) end local ids = { ["rbxassetid://111891702759441"] = true, ["rbxassetid://8006679977"] = true } local target for _, v in workspace:GetDescendants() do if v:IsA("BasePart") then local mesh = v:FindFirstChildOfClass("SpecialMesh") if mesh and ids[mesh.MeshId] then target = v break end end end if not target then return end local base = target.CFrame local angle = 0 local speed = math.rad(60) RunService.Heartbeat:Connect(function(dt) if not target or not target.Parent then return end angle += speed * dt local cf = base * CFrame.Angles(angle, angle, angle) SyncRotate(target, cf) target.CFrame = cf end) end