local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local function findPlateData() local Plates = workspace:WaitForChild("Plates") for _, pf in ipairs(Plates:GetChildren()) do if pf:FindFirstChild("Owner") and pf.Owner.Value == LocalPlayer then return pf:FindFirstChild("Plate"), pf:FindFirstChild("ActiveParts") end end return nil, nil end local function fireAll() local _, activeParts = findPlateData() if not activeParts then return end local count = 0 for _, desc in ipairs(activeParts:GetDescendants()) do if desc:IsA("ClickDetector") then pcall(fireclickdetector, desc) count += 1 end end print("Fired", count, "detectors") end LocalPlayer.Chatted:Connect(function(msg) if msg:lower() == ":activate" then task.spawn(fireAll) end end) local hookOk, hookErr = pcall(function() local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) local method = getnamecallmethod() if method == "FireServer" and typeof(self) == "Instance" and self.Name == "SayMessageRequest" then local args = {...} local msg = args[1] if type(msg) == "string" and msg:lower() == ":activate" then task.spawn(fireAll) end end return oldNamecall(self, ...) end) end) if not hookOk then print("Namecall hook unavailable, using Chatted only:", hookErr) end