local LocalPlayer = Players.LocalPlayer local Mouse = LocalPlayer:GetMouse() local UIS = game:GetService("UserInputService") local tool for _,v in LocalPlayer: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 if not tool then return end local r = tool.SyncAPI.ServerEndpoint local function _(a) r:InvokeServer(unpack(a)) end local deleteTool = Instance.new("Tool") deleteTool.Name = "" deleteTool.RequiresHandle = false deleteTool.TextureId = "rbxassetid://5432160999" deleteTool.Parent = LocalPlayer.Backpack local s1 = Instance.new("SelectionBox") s1.Color3 = Color3.new(1, 0, 0) s1.LineThickness = 0.05 s1.Visible = false s1.Parent = game.CoreGui local c1 deleteTool.Equipped:Connect(function() if c1 then c1:Disconnect() end c1 = Mouse.Button1Down:Connect(function() local t = Mouse.Target if t and t:IsA("BasePart") then s1.Adornee = t s1.Visible = true task.wait(0.1) _({"Remove",{t}}) s1.Visible = false s1.Adornee = nil end end) end) deleteTool.Unequipped:Connect(function() if c1 then c1:Disconnect() c1 = nil end s1.Visible = false s1.Adornee = nil end) local cloneTool = Instance.new("Tool") cloneTool.Name = "" cloneTool.RequiresHandle = false cloneTool.TextureId = "rbxassetid://138745565107313" cloneTool.Parent = LocalPlayer.Backpack local s2 = Instance.new("SelectionBox") s2.Color3 = Color3.new(0, 1, 0) s2.LineThickness = 0.05 s2.Visible = false s2.Parent = game.CoreGui local c2 cloneTool.Equipped:Connect(function() if c2 then c2:Disconnect() end c2 = Mouse.Button1Down:Connect(function() local t = Mouse.Target if t and t:IsA("BasePart") then s2.Adornee = t s2.Visible = true _({"Clone",{t},workspace}) task.wait(0.15) local cf = t.CFrame * CFrame.new(0,4,0) _({"SyncMove",{{Part=t,CFrame=cf}}}) task.wait(0.15) s2.Visible = false s2.Adornee = nil end end) end) cloneTool.Unequipped:Connect(function() if c2 then c2:Disconnect() c2 = nil end s2.Visible = false s2.Adornee = nil end) local moveTool = Instance.new("Tool") moveTool.Name = "" moveTool.RequiresHandle = false moveTool.TextureId = "rbxassetid://84615697070708" moveTool.Parent = LocalPlayer.Backpack local s3 = Instance.new("SelectionBox") s3.Color3 = Color3.new(0, 0.7, 1) s3.LineThickness = 0.05 s3.Visible = false s3.Parent = game.CoreGui local selectedPart local moving = false local moveConnDown, moveConnUp, moveConnMove moveTool.Equipped:Connect(function() if moveConnDown then moveConnDown:Disconnect() end moveConnDown = Mouse.Button1Down:Connect(function() if not selectedPart then local t = Mouse.Target if t and t:IsA("BasePart") then selectedPart = t s3.Adornee = t s3.Visible = true end else moving = true end end) if moveConnUp then moveConnUp:Disconnect() end moveConnUp = UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if moving then moving = false end end end) if moveConnMove then moveConnMove:Disconnect() end moveConnMove = UIS.InputChanged:Connect(function(input) if moving and selectedPart and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local ray = workspace.CurrentCamera:ScreenPointToRay(Mouse.X, Mouse.Y) local hitPos = ray.Origin + ray.Direction * 20 local cf = CFrame.new(hitPos) _({"SyncMove",{{Part=selectedPart,CFrame=cf}}}) end end) end) moveTool.Unequipped:Connect(function() if moveConnDown then moveConnDown:Disconnect() moveConnDown = nil end if moveConnUp then moveConnUp:Disconnect() moveConnUp = nil end if moveConnMove then moveConnMove:Disconnect() moveConnMove = nil end s3.Visible = false s3.Adornee = nil selectedPart = nil moving = false end) -- idfk nah