local player = game.Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local tool (SyncAPI) 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 if not tool then warn("No se encontró la herramienta F3X (SyncAPI).") return end local remote = tool.SyncAPI.ServerEndpoint local function _(args) remote:InvokeServer(unpack(args)) end function SetCollision(part, boolean) _( { "SyncCollision", { { ["Part"] = part, ["CanCollide"] = boolean } } } ) end function SetAnchor(boolean, part) _( { "SyncAnchor", { { ["Part"] = part, ["Anchored"] = boolean } } } ) end function CreatePart(cf, parent) _( { "CreatePart", "Normal", cf, parent } ) end function DestroyPart(part) _( { "Remove", { part } } ) end function MovePart(part, cf) _( { "SyncMove", { { ["Part"] = part, ["CFrame"] = cf } } } ) end function Resize(part, size, cf) _( { "SyncResize", { { ["Part"] = part, ["CFrame"] = cf, ["Size"] = size } } } ) end function SetName(part, stringg) _( { "SetName", { part }, stringg } ) end function SetLocked(part, boolean) _( { "SetLocked", { part }, boolean } ) end function SetTrans(part, int) _( { "SyncMaterial", { { ["Part"] = part, ["Transparency"] = int } } } ) end function Color(part, color3) _( { "SyncColor", { { ["Part"] = part, ["Color"] = color3, ["UnionColoring"] = false } } } ) end function SetMaterial(part, materialEnum) _( { "SyncMaterial", { { ["Part"] = part, ["Material"] = materialEnum } } } ) end local coloresRainbow = { Color3.fromRGB(255, 255, 0), Color3.fromRGB(255, 0, 0), Color3.fromRGB(0, 0, 255), Color3.fromRGB(130, 0, 255), Color3.fromRGB(255, 105, 180), Color3.fromRGB(0, 0, 0), Color3.fromRGB(255, 255, 255), Color3.fromRGB(120, 120, 120) } function HacerBrillarSuelo() local partesSuelo = {} for _, v in ipairs(workspace:GetDescendants()) do if v:IsA("BasePart") then local nombreLower = v.Name:lower() if nombreLower:find("baseplate") or nombreLower:find("floor") or nombreLower:find("suelo") or (v.Size.X > 50 and v.Size.Z > 50 and v.Position.Y < 5) then table.insert(partesSuelo, v) end end end if #partesSuelo == 0 then print("No se detectó un suelo nativo, generando plataforma neón...") local spawnPos = CFrame.new(0, -2, 0) CreatePart(spawnPos, workspace) task.wait(0.3) for _, v in ipairs(workspace:GetDescendants()) do if v:IsA("BasePart") and v.Name == "Part" and (v.Position - spawnPos.Position).Magnitude < 3 then Resize(v, Vector3.new(2048, 2, 2048), spawnPos) SetAnchor(true, v) SetCollision(v, true) table.insert(partesSuelo, v) break end end end for _, suelo in ipairs(partesSuelo) do task.spawn(function() SetLocked(suelo, false) SetMaterial(suelo, Enum.Material.Neon) SetTrans(suelo, 0) end) end task.spawn(function() local colorIndex = 1 while task.wait(13) do local colorObjetivo = coloresRainbow[colorIndex] for _, suelo in ipairs(partesSuelo) do if suelo and suelo.Parent then Color(suelo, colorObjetivo) end end colorIndex = (colorIndex % #coloresRainbow) + 1 end end) end HacerBrillarSuelo()