Ingoring some players (e.g. bots)

This commit is contained in:
Andrey Stepanov 2024-12-07 13:53:53 +05:00
parent d3a282b42f
commit 64fa36a0d8
Signed by: Koldun
GPG Key ID: 53DE683337F5D25F

View File

@ -110,8 +110,19 @@ end
function vote.check_vote(voteset)
local all_players_voted = true
local players = minetest.get_connected_players()
local ignored_players = core.get_mod_storage():get_string("ignored_players"):split(" ")
for _, player in pairs(players) do
local name = player:get_player_name()
local is_ignored = false
for _, ignored_name in ipairs(ignored_players) do
if name == ignored_name then
is_ignored = true
break
end
end
if is_ignored then
break
end
if not voteset.results.voted[name] then
all_players_voted = false
break
@ -289,3 +300,31 @@ minetest.register_chatcommand("abstain", {
vote.check_vote(voteset)
end
})
minetest.register_chatcommand("vote_ignored", {
privs = {
vote_admin = true,
},
description = "Get a list of players ignored during voting",
func = function(name, params)
minetest.chat_send_player(
name,
"Ignored players: " .. core.get_mod_storage():get_string("ignored_players")
)
end
})
minetest.register_chatcommand("vote_ignore", {
privs = {
vote_admin = true,
},
description = "Ignore player(s) during voting",
params = "<PlayerName>...",
func = function(name, params)
local meta = core.get_mod_storage()
meta:set_string(
"ignored_players",
meta:get_string("ignored_players") .. params
)
end
})