aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2021-04-25 22:14:52 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2021-04-25 22:14:52 +0200
commitdc0083230b5f2fb2832c13b687d4d87815b95d5c (patch)
tree77e61cfa49e0020b9853c232ba5d5d4506709afe
parent5c494aa7fad956eba28cba4e62a81c3b65fdf126 (diff)
downloadxban2-dc0083230b5f2fb2832c13b687d4d87815b95d5c.tar.gz
xban2-dc0083230b5f2fb2832c13b687d4d87815b95d5c.tar.bz2
xban2-dc0083230b5f2fb2832c13b687d4d87815b95d5c.zip
add mechanism for moderators to announce they are afk.
-rw-r--r--init.lua42
1 files changed, 41 insertions, 1 deletions
diff --git a/init.lua b/init.lua
index a9bb182..b9a603a 100644
--- a/init.lua
+++ b/init.lua
@@ -228,6 +228,45 @@ function xban.get_record(player)
return record, last_pos
end
+xban.afk = {}
+
+minetest.register_chatcommand("mod_afk", {
+ description = "Set afk",
+ params = "<on|off>",
+ privs = { kick=true },
+ func = function(name, params)
+ local afk = not xban.afk[name]
+ if params == "on" then
+ afk = true
+ elseif params == "off" then
+ afk = nil
+ end
+ xban.afk[name] = afk
+ if afk then
+ minetest.chat_send_player(name, "you are now afk")
+ else
+ minetest.chat_send_player(name, "you are no longer afk")
+ end
+ return true
+ end,
+})
+
+minetest.register_chatcommand("is_afk", {
+ description = "Check if moderator is afk",
+ params = "<name>",
+ privs = { kick=true },
+ func = function(name, params)
+ local players = minetest:get_connected_players()
+ for i=1,#players do
+ if players[i]:get_player_name() == params then
+ minetest.chat_send_player(name, "Player "..params.." is"..(xban.afk[params] and "" or " not").." afk")
+ return true
+ end
+ end
+ minetest.chat_send_player(name, "Player "..params.." is not online")
+ end,
+})
+
minetest.register_on_prejoinplayer(function(name, ip)
local wl = db.whitelist or { }
if wl[name] or wl[ip] then return end
@@ -242,7 +281,8 @@ minetest.register_on_prejoinplayer(function(name, ip)
if minetest.settings:get("moderate_new_accounts") and not minetest.player_exists(name) then
local players = minetest.get_connected_players()
for i=1,#players do
- if minetest.check_player_privs(players[i]:get_player_name(), {ban = true}) then
+ local pname = players[i]:get_player_name()
+ if minetest.check_player_privs(pname, {ban = true}) and not xban.afk[pname] then
return
end
end