aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/game/chatcommands.lua27
1 files changed, 26 insertions, 1 deletions
diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua
index 31ce4359f..a8aaba9c6 100644
--- a/builtin/game/chatcommands.lua
+++ b/builtin/game/chatcommands.lua
@@ -41,7 +41,7 @@ end)
if core.settings:get_bool("profiler.load") then
-- Run after register_chatcommand and its register_on_chat_message
- -- Before any chattcommands that should be profiled
+ -- Before any chatcommands that should be profiled
profiler.init_chatcommand()
end
@@ -103,6 +103,31 @@ core.register_chatcommand("privs", {
end,
})
+core.register_chatcommand("hasprivs", {
+ params = "<privilege>",
+ description = "Return list of all online players with privilege.",
+ privs = {basic_privs = true},
+ func = function(caller, param)
+ param = param:trim()
+ if param == "" then
+ return false, "Invalid parameters (see /help hasprivs)"
+ end
+ if not core.registered_privileges[param] then
+ return false, "Unknown privilege!"
+ end
+ local privs = core.string_to_privs(param)
+ local players_with_privs = {}
+ for _, player in pairs(core.get_connected_players()) do
+ local player_name = player:get_player_name()
+ if core.check_player_privs(player_name, privs) then
+ table.insert(players_with_privs, player_name)
+ end
+ end
+ return true, "Players online with the \"" .. param .. "\" priv: " ..
+ table.concat(players_with_privs, ", ")
+ end
+})
+
local function handle_grant_command(caller, grantname, grantprivstr)
local caller_privs = core.get_player_privs(caller)
if not (caller_privs.privs or caller_privs.basic_privs) then