local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local Player = Players.LocalPlayer local function getBuildingTools() local tool = (Player:FindFirstChild("Backpack") and Player.Backpack:FindFirstChild("Building Tools+")) or (Player.Character and Player.Character:FindFirstChild("Building Tools+")) or (Player:FindFirstChild("Backpack") and Player.Backpack:FindFirstChild("F3X")) or (Player.Character and Player.Character:FindFirstChild("F3X")) if not tool and Player.Backpack then for _, v in ipairs(Player.Backpack:GetChildren()) do if v:IsA("Tool") and (v.Name:lower():find("f3x") or v.Name:lower():find("fork") or v:FindFirstChild("SyncAPI")) then tool = v break end end end if not tool and Player.Character then for _, v in ipairs(Player.Character:GetChildren()) do if v:IsA("Tool") and (v.Name:lower():find("f3x") or v.Name:lower():find("fork") or v:FindFirstChild("SyncAPI")) then tool = v break end end end return tool end local function runHD(cmd) local hdClient = game:GetService("ReplicatedStorage"):FindFirstChild("HDAdminHDClient") if hdClient then local signals = hdClient:FindFirstChild("Signals") if signals then local req = signals:FindFirstChild("RequestCommandSilent") or signals:FindFirstChild("RequestCommand") if req then req:InvokeServer(cmd) end end end end local function spawnSelectionBoxMap() local BuildingTools = getBuildingTools() if not BuildingTools then runHD(";alert equip f3x first") return end local Event = BuildingTools:FindFirstChild("SyncAPI") and BuildingTools.SyncAPI:FindFirstChild("ServerEndpoint") if not Event then return end for _, part in ipairs(Workspace:GetDescendants()) do if part:IsA("BasePart") and part.Name ~= "HdSkyboxTrippy" then task.spawn(function() pcall(function() for _, child in ipairs(part:GetChildren()) do if child:IsA("SelectionBox") then Event:InvokeServer("RemoveDecorations", {{Part = part, DecorationType = "SelectionBox"}}) end end Event:InvokeServer("CreateDecorations", {{Part = part, DecorationType = "SelectionBox"}}) local pData = { Part = part, DecorationType = "SelectionBox", Color3 = Color3.fromRGB(255, 0, 0), LineColor3 = Color3.fromRGB(255, 0, 0), SurfaceColor3 = Color3.fromRGB(255, 0, 0), SurfaceTransparency = 0.6, Transparency = 0.1 } Event:InvokeServer("SyncDecorate", {pData}) end) end) end end end spawnSelectionBoxMap() local player = game.Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local tool for _, v in ipairs(player:GetDescendants()) do if v.Name == "SyncAPI" then tool = v.Parent break end end if not tool then for _, v in ipairs(game.ReplicatedStorage:GetDescendants()) do if v.Name == "SyncAPI" then tool = v.Parent break end end end if not tool then warn("❌ F3X SyncAPI no encontrado") return end local remote = tool.SyncAPI.ServerEndpoint local function _(args) remote:InvokeServer(unpack(args)) end local function SetLocked(part, boolean) local args = { [1] = "SetLocked", [2] = { [1] = part }, [3] = boolean } _(args) end local function AddFire(part) local args = { [1] = "CreateDecorations", [2] = { [1] = { ["Part"] = part, ["DecorationType"] = "Fire" } } } _(args) end local function SyncFire(part) local args = { [1] = "SyncDecorate", [2] = { [1] = { ["Part"] = part, ["DecorationType"] = "Fire", ["Color"] = Color3.fromRGB(236, 139, 70), ["SecondaryColor"] = Color3.fromRGB(139, 80, 55), ["Size"] = 11, ["Heat"] = 11 } } } _(args) end for _, v in ipairs(game.Workspace:GetDescendants()) do if v:IsA("BasePart") then task.spawn(function() SetLocked(v, false) AddFire(v) task.wait(0.05) SyncFire(v) end) end end