Add automatic skip votes by ANAND (#675)
This commit is contained in:
parent
aad5c41b6a
commit
b4f3ea3294
2 changed files with 42 additions and 19 deletions
|
@ -1,16 +1,15 @@
|
||||||
ctf_match.registered_on_skip_match = {}
|
ctf_match.registered_on_skip_map = {}
|
||||||
function ctf_match.register_on_skip_match(func)
|
function ctf_match.register_on_skip_map(func)
|
||||||
if ctf._mt_loaded then
|
if ctf._mt_loaded then
|
||||||
error("You can't register callbacks at game time!")
|
error("You can't register callbacks at game time!")
|
||||||
end
|
end
|
||||||
table.insert(ctf_match.registered_on_skip_match, func)
|
table.insert(ctf_match.registered_on_skip_map, func)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ctf_match.vote_next(name, params)
|
function ctf_match.vote_next(name)
|
||||||
if minetest.global_exists("irc") then
|
local tcolor = ctf_colors.get_color(ctf.player(name)).css or "#FFFFFFFF"
|
||||||
local tname = ctf.player(name).team or "none"
|
minetest.chat_send_all(minetest.colorize("#FFAA11", "Vote started by ") ..
|
||||||
irc:say("Vote started by " .. name .. " (team " .. tname .. ")")
|
minetest.colorize(tcolor, name))
|
||||||
end
|
|
||||||
|
|
||||||
return vote.new_vote(name, {
|
return vote.new_vote(name, {
|
||||||
description = "Skip to next match",
|
description = "Skip to next match",
|
||||||
|
@ -23,8 +22,8 @@ function ctf_match.vote_next(name, params)
|
||||||
if result == "yes" then
|
if result == "yes" then
|
||||||
minetest.chat_send_all("Vote to skip match passed, " ..
|
minetest.chat_send_all("Vote to skip match passed, " ..
|
||||||
#results.yes .. " to " .. #results.no)
|
#results.yes .. " to " .. #results.no)
|
||||||
for i = 1, #ctf_match.registered_on_skip_match do
|
for i = 1, #ctf_match.registered_on_skip_map do
|
||||||
ctf_match.registered_on_skip_match[i]()
|
ctf_match.registered_on_skip_map[i]()
|
||||||
end
|
end
|
||||||
ctf_match.next()
|
ctf_match.next()
|
||||||
else
|
else
|
||||||
|
@ -50,13 +49,37 @@ minetest.register_chatcommand("vote", {
|
||||||
func = ctf_match.vote_next
|
func = ctf_match.vote_next
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_on_chat_message(function(name, msg)
|
-- Automatically start a skip vote after 90m, and subsequent votes every 15m
|
||||||
if msg == "/vote_next" and minetest.check_player_privs(name,
|
|
||||||
{interact=true, vote_starter=true}) then
|
local matchskip_time
|
||||||
local _, vmsg = ctf_match.vote_next(name)
|
local matchskip_timer = 0
|
||||||
if vmsg then
|
local can_skip = false
|
||||||
minetest.chat_send_player(name, vmsg)
|
minetest.register_globalstep(function(dtime)
|
||||||
end
|
if not can_skip then return end
|
||||||
return true
|
|
||||||
|
matchskip_timer = matchskip_timer + dtime
|
||||||
|
|
||||||
|
if matchskip_timer > matchskip_time then
|
||||||
|
matchskip_timer = 0
|
||||||
|
|
||||||
|
-- Start vote and decrease time until next vote skip
|
||||||
|
ctf_match.vote_next("[CTF automatic skip-vote]"..matchskip_time)
|
||||||
|
matchskip_time = tonumber(minetest.settings:get("ctf_match.auto_skip_interval")) or 5-- * 60
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local function prevent_autoskip()
|
||||||
|
can_skip = false
|
||||||
|
end
|
||||||
|
|
||||||
|
ctf.register_on_new_game(prevent_autoskip)
|
||||||
|
ctf_flag.register_on_pick_up(prevent_autoskip)
|
||||||
|
ctf_flag.register_on_drop(function()
|
||||||
|
can_skip = true
|
||||||
|
end)
|
||||||
|
|
||||||
|
ctf_match.register_on_build_time_end(function()
|
||||||
|
can_skip = true
|
||||||
|
matchskip_timer = 0
|
||||||
|
matchskip_time = tonumber(minetest.settings:get("ctf_match.auto_skip_delay")) or 15-- * 60
|
||||||
|
end)
|
||||||
|
|
|
@ -263,7 +263,7 @@ ctf_match.register_on_winner(function(winner)
|
||||||
ctf_stats.save()
|
ctf_stats.save()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
ctf_match.register_on_skip_match(function()
|
ctf_match.register_on_skip_map(function()
|
||||||
ctf_stats.matches.skipped = ctf_stats.matches.skipped + 1
|
ctf_stats.matches.skipped = ctf_stats.matches.skipped + 1
|
||||||
|
|
||||||
-- Show match summary
|
-- Show match summary
|
||||||
|
|
Loading…
Reference in a new issue