-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] if game.PlaceId ~= 5683833663 then return end if not game:IsLoaded() then game.Loaded:Wait() end local Players = game:GetService("Players") local StarterGui = game:GetService("StarterGui") local GROUP_ID = 9642354 local MIN_STAFF_RANK = 6 local EXCLUDED_RANKS = {[7] = true} local adminWhitelist = {[1885942045] = "Hardcoded Admin"} for _, mod in ipairs(getloadedmodules()) do if mod.Name:lower():find("cmdr") then local s, res = pcall(require, mod) if s and type(res) == "table" and res.Registry then local hooks = res.Registry.Hooks and res.Registry.Hooks.BeforeRun if hooks and hooks[1] then local fn = hooks[1].callback or hooks[1].Callback or hooks[1][1] local uvs = (getupvalues and getupvalues(fn)) or {} local list = uvs[1] and uvs[1].Admins if type(list) == "table" then for _, uid in pairs(list) do adminWhitelist[tonumber(uid)] = "Cmdr Admin" end end end break end end end local cache = {} local function notify(title, text, dur) pcall(StarterGui.SetCore, StarterGui, "SendNotification", { Title = title, Text = text, Duration = dur or 6 }) end local execName = (identifyexecutor and identifyexecutor()) or (getexecutorname and getexecutorname()) or "Unknown" if not (task and task.spawn and pcall and Players.LocalPlayer) then warn(string.format("[StaffWatcher] Unsupported Executor: %s", tostring(execName))) notify("Staff Watcher Error", "Your executor is not supported!", 8) return end local function check(p, isJoin, onComplete) if not p or not p.Parent then if onComplete then onComplete(false) end return end if cache[p.UserId] ~= nil then if onComplete then onComplete(cache[p.UserId]) end return end if adminWhitelist[p.UserId] then cache[p.UserId] = true local role = adminWhitelist[p.UserId] local status = isJoin and "JOINED SERVER" or "FOUND ON SERVER" print(string.format( "\n[STAFF %s]\n ├─ Name: %s (@%s)\n ├─ UserID: %d\n └─ Role: %s (Whitelist)", status, p.DisplayName, p.Name, p.UserId, role )) notify( isJoin and "⚠️ Staff Joined!" or "⚠️ Staff Alert!", string.format("%s (@%s)\nRole: %s", p.DisplayName, p.Name, role), 8 ) if onComplete then onComplete(true) end return end task.spawn(function() local okRank, rank = pcall(p.GetRankInGroup, p, GROUP_ID) if not okRank then local err = tostring(rank) if err:find("429") or err:find("Too Many Requests") or err:find("Timeout") then task.delay(4, function() cache[p.UserId] = nil check(p, isJoin, onComplete) end) else if onComplete then onComplete(false) end end return end rank = rank or 0 local isStaff = (rank >= MIN_STAFF_RANK) and not EXCLUDED_RANKS[rank] cache[p.UserId] = isStaff if isStaff and p.Parent then local okRole, role = pcall(p.GetRoleInGroup, p, GROUP_ID) role = (okRole and role) or "Moderator" local status = isJoin and "JOINED SERVER" or "FOUND ON SERVER" print(string.format( "\n[STAFF %s]\n ├─ Name: %s (@%s)\n ├─ UserID: %d\n └─ Role: %s (Rank: %d)", status, p.DisplayName, p.Name, p.UserId, role, rank )) notify( isJoin and "⚠️ Staff Joined!" or "⚠️ Staff Alert!", string.format("%s (@%s)\nRole: %s", p.DisplayName, p.Name, role), 8 ) end if onComplete then onComplete(isStaff) end end) end print(string.format("[StaffWatcher] Initialized (%s) | PlaceId: %d | Group: %d", tostring(execName), game.PlaceId, GROUP_ID)) notify("Staff Watcher", "Scanning server...", 3) local initialPlayers = Players:GetPlayers() local total = #initialPlayers local scanned = 0 local found = 0 for _, p in ipairs(initialPlayers) do check(p, false, function(isStaff) scanned += 1 if isStaff then found += 1 end end) task.wait(0.08) end task.spawn(function() local t = os.clock() while scanned < total and (os.clock() - t) < 15 do task.wait(0.2) end if found == 0 then print("[StaffWatcher] Scan complete. No staff members found on this server.") notify("Staff Watcher", "Scan complete: No staff found.", 5) else print(string.format("[StaffWatcher] Scan complete. Staff found: %d", found)) end end) Players.PlayerAdded:Connect(function(p) task.wait(1) check(p, true) end) Players.PlayerRemoving:Connect(function(p) if cache[p.UserId] then print(string.format("[STAFF LEFT] %s (@%s)", p.DisplayName, p.Name)) notify("Staff Left", string.format("%s (@%s) left the server", p.DisplayName, p.Name), 5) end cache[p.UserId] = nil end)