capturetheflag/mods/ctf/ctf_classes/init.lua
ANAND cafd16878e
ctf_classes: Implement cooldown after class change (#637)
Defaults to a 30s cooldown. Players with ctf_admin priv are exempt from this restriction.
2020-06-04 22:15:13 +05:30

63 lines
1.7 KiB
Lua

ctf_classes = {
__classes = {},
__classes_ordered = {},
}
dofile(minetest.get_modpath("ctf_classes") .. "/api.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/gui.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/medic.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/ranged.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/items.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/flags.lua")
dofile(minetest.get_modpath("ctf_classes") .. "/classes.lua")
minetest.register_on_joinplayer(function(player)
ctf_classes.update(player)
if ctf_classes.can_change(player) and
minetest.check_player_privs(player, { interact = true }) then
ctf_classes.show_gui(player:get_player_name(), player)
end
end)
minetest.register_chatcommand("class", {
func = function(name, params)
local player = minetest.get_player_by_name(name)
if not player then
return false, "You must be online to do this!"
end
local can_change, reason = ctf_classes.can_change(player)
if not can_change then
return false, reason
end
local cname = params:trim()
if params == "" then
ctf_classes.show_gui(name)
else
if ctf_classes.__classes[cname] then
ctf_classes.set(player, cname)
return true, "Set class to " .. cname
else
return false, "Class '" .. cname .. "' does not exist"
end
end
end
})
ctf_colors.set_skin = function(player, color)
ctf_classes.set_skin(player, color, ctf_classes.get(player))
end
ctf_classes.register_on_changed(function(player, old, new)
if not old then
return
end
local pname = player:get_player_name()
ctf.chat_send_team(ctf.player(pname).team,
minetest.colorize("#ABCDEF", pname .. " is now a " .. new.description))
end)