Compare commits

...

1 Commits

Author SHA1 Message Date
f9f32d2e1c Список игнорируемых игроков (#1)
Игрок с привилегией `vote_admin` сможет добавлять игроков в специальный список игнорирования. Процедура голосования не будет дожидаться, когда проголосуют эти игроки.

Сейчас, когда мы голосуем за день, приходится дожидаться тайм-аута, потому что NashiTut_Bot в голосованиях не участвует. Если же этого бота добавить в список игнорирования, то голосование завершится сразу, как проголосуют все реальные игроки.

Игроку с привилегией `vote_admin` доступны следующие команды:
`/vote_ignored`: вывести список игнорируемых игроков
`/vote_ignore <PlayerName>...`: добавить в список игроков

Co-authored-by: Aleksandr Avdeev <reload-gtn@mail.ru>
Reviewed-on: #1
Co-authored-by: Andrey Stepanov <standmit@yandex.ru>
Co-committed-by: Andrey Stepanov <standmit@yandex.ru>
2024-12-09 11:56:59 +03:00

View File

@ -3,6 +3,8 @@ vote = {
queue = {}
}
local storage = core.get_mod_storage()
function vote.new_vote(creator, voteset)
local max_votes = tonumber(minetest.setting_get("vote.maximum_active")) or 1
@ -110,8 +112,19 @@ end
function vote.check_vote(voteset)
local all_players_voted = true
local players = minetest.get_connected_players()
local ignored_players = 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 +302,44 @@ minetest.register_chatcommand("abstain", {
vote.check_vote(voteset)
end
})
minetest.register_chatcommand("vote_list_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: " .. 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)
storage:set_string(
"ignored_players",
storage:get_string("ignored_players") .. params.. " "
)
end
})
minetest.register_chatcommand("vote_clear_ignored", {
privs = {
vote_admin = true,
},
description = "Clear list of players ignored during voting",
func = function(name, params)
storage:set_string("ignored_players","")
minetest.chat_send_player(
name,
"The list of ignored players has been cleared"
)
end
})