Commands now support properties change
parent
3fc4d0d65c
commit
e641778837
239
commands.lua
239
commands.lua
|
@ -1,120 +1,153 @@
|
|||
S = minetest.get_translator("quake")
|
||||
|
||||
local mod = "quake"
|
||||
|
||||
ChatCmdBuilder.new("quakeadmin", function(cmd)
|
||||
|
||||
-- creazione arene
|
||||
cmd:sub("create :arena", function(sender, arena_name)
|
||||
arena_lib.create_arena(sender, mod, arena_name)
|
||||
end)
|
||||
|
||||
cmd:sub("create :arena :minplayers:int :maxplayers:int", function(sender, arena_name, min_players, max_players)
|
||||
arena_lib.create_arena(sender, mod, arena_name, min_players, max_players)
|
||||
end)
|
||||
|
||||
cmd:sub("create :arena :minplayers:int :maxplayers:int :killcap:int", function(sender, arena_name, min_players, max_players, kill_cap)
|
||||
arena_lib.create_arena(sender, mod, arena_name, min_players, max_players)
|
||||
local id, arena = arena_lib.get_arena_by_name("quake", arena_name)
|
||||
arena.kill_cap = kill_cap
|
||||
end)
|
||||
|
||||
-- rimozione arene
|
||||
cmd:sub("remove :arena", function(sender, arena_name)
|
||||
arena_lib.remove_arena(sender, mod, arena_name)
|
||||
end)
|
||||
|
||||
-- rinominazione arene
|
||||
cmd:sub("rename :arena :newname", function(sender, arena_name, new_name)
|
||||
arena_lib.rename_arena(sender, mod, arena_name, new_name)
|
||||
end)
|
||||
|
||||
--
|
||||
cmd:sub("properties :arena :property :newvalue:text", function(sender, arena_name, property, new_value)
|
||||
arena_lib.change_arena_properties(sender, mod, arena_name, property, new_value)
|
||||
end)
|
||||
|
||||
-- cambio giocatori minimi/massimi
|
||||
cmd:sub("setplayers :arena :minplayers:int :maxplayers:int", function(sender, arena_name, min_players, max_players)
|
||||
arena_lib.change_players_amount(sender, mod, arena_name, min_players, max_players)
|
||||
end)
|
||||
|
||||
-- abilitazione/disabilitazione team per arena (enable 0 o 1)
|
||||
cmd:sub("toggleteams :arena :enable:int", function(sender, arena_name, enable)
|
||||
arena_lib.toggle_teams_per_arena(sender, mod, arena_name, enable)
|
||||
end)
|
||||
|
||||
-- lista arene
|
||||
cmd:sub("list", function(sender)
|
||||
arena_lib.print_arenas(sender, mod)
|
||||
end)
|
||||
|
||||
-- info su un'arena specifica
|
||||
cmd:sub("info :arena", function(sender, arena_name)
|
||||
arena_lib.print_arena_info(sender, mod, arena_name)
|
||||
end)
|
||||
|
||||
-- info su stats partita
|
||||
cmd:sub("score :arena", function(sender, arena_name)
|
||||
arena_lib.print_arena_stats(sender, mod, arena_name)
|
||||
end)
|
||||
local S = minetest.get_translator("arena_lib")
|
||||
|
||||
|
||||
-- modifiche arena
|
||||
--editor
|
||||
cmd:sub("edit :arena", function(sender, arena)
|
||||
arena_lib.enter_editor(sender, mod, arena)
|
||||
end)
|
||||
|
||||
--inline
|
||||
-- cartello arena
|
||||
cmd:sub("setsign :arena", function(sender, arena)
|
||||
arena_lib.set_sign(sender, nil, nil, mod, arena)
|
||||
end)
|
||||
----------------------------------------------
|
||||
-----------------ADMINS ONLY------------------
|
||||
----------------------------------------------
|
||||
|
||||
-- spawner (ie. deleteall)
|
||||
cmd:sub("setspawn :arena :param:word :ID:int", function(sender, arena, param, ID)
|
||||
arena_lib.set_spawner(sender, mod, arena, nil, param, ID)
|
||||
end)
|
||||
minetest.register_chatcommand("kick", {
|
||||
|
||||
-- spawner (ie. deleteall)
|
||||
cmd:sub("setspawn :arena :team:word :param:word :ID:int", function(sender, arena, team_name, param, ID)
|
||||
arena_lib.set_spawner(sender, mod, arena, team_name, param, ID)
|
||||
end)
|
||||
params = "<" .. S("player") .. ">",
|
||||
description = S("Kick a player from an ongoing game"),
|
||||
privs = {
|
||||
arenalib_admin = true,
|
||||
},
|
||||
|
||||
cmd:sub("setspawn :arena", function(sender, arena)
|
||||
arena_lib.set_spawner(sender, mod, arena)
|
||||
end)
|
||||
func = function(sender, param)
|
||||
local p_name = string.match(param, "^([%a%d_-]+)$")
|
||||
|
||||
-- teletrasporto
|
||||
cmd:sub("tp :arena", function(sender, arena)
|
||||
arena_lib.teleport_in_arena(sender, mod, arena)
|
||||
end)
|
||||
-- se non è specificato niente, annullo
|
||||
if not p_name then
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Unknown parameter!")))
|
||||
return false end
|
||||
|
||||
-- abilitazione e disabilitazione arene
|
||||
cmd:sub("enable :arena", function(sender, arena)
|
||||
arena_lib.enable_arena(sender, mod, arena)
|
||||
end)
|
||||
-- se il giocatore non è online, annullo
|
||||
if not minetest.get_player_by_name(p_name) then
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] This player is not online!")))
|
||||
return false end
|
||||
|
||||
cmd:sub("disable :arena", function(sender, arena)
|
||||
arena_lib.disable_arena(sender, mod, arena)
|
||||
end)
|
||||
-- se il giocatore non è in partita, annullo
|
||||
if not arena_lib.is_player_in_arena(p_name) then
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e" ,S("[!] The player must be in a game to perform this action!")))
|
||||
return false end
|
||||
|
||||
end, {
|
||||
description = S("mod management"),
|
||||
privs = { quake_admin = true }
|
||||
minetest.chat_send_player(sender, S("Player successfully kicked"))
|
||||
arena_lib.remove_player_from_arena(p_name, 2, sender)
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
||||
ChatCmdBuilder.new("quake", function(cmd)
|
||||
minetest.register_chatcommand("forceend", {
|
||||
|
||||
cmd:sub("achievements", function(sender)
|
||||
quake.list_achievements(sender)
|
||||
end)
|
||||
params = "<" .. S("minigame") .. "> <" .. S("arena name") .. ">",
|
||||
description = S("Forcibly ends an ongoing game"),
|
||||
privs = {
|
||||
arenalib_admin = true,
|
||||
},
|
||||
|
||||
cmd:sub("achievements :playername", function(sender, p_name)
|
||||
quake.list_achievements(sender, p_name)
|
||||
end)
|
||||
func = function(sender, param)
|
||||
|
||||
end,{})
|
||||
local mod, arena_name = string.match(param, "^([%a%d_-]+) ([%a%d_-]+)$")
|
||||
|
||||
-- se i parametri sono errati, annullo
|
||||
if not mod or not arena_name then
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Parameters don't seem right!")))
|
||||
return end
|
||||
|
||||
local id, arena = arena_lib.get_arena_by_name(mod, arena_name)
|
||||
|
||||
arena_lib.force_arena_ending(mod, arena, sender)
|
||||
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
----------------FOR EVERYONE------------------
|
||||
----------------------------------------------
|
||||
|
||||
minetest.register_chatcommand("quit", {
|
||||
|
||||
description = S("Quit an ongoing game"),
|
||||
|
||||
func = function(name, param)
|
||||
|
||||
if not arena_lib.is_player_in_arena(name) then
|
||||
minetest.chat_send_player(name, minetest.colorize("#e6482e" , S("[!] You must be in a game to perform this action!")))
|
||||
return false end
|
||||
|
||||
local arena = arena_lib.get_arena_by_player(name)
|
||||
|
||||
-- se è l'ultimo giocatore rimasto, annullo
|
||||
if arena.players_amount == 1 then
|
||||
minetest.chat_send_player(name, minetest.colorize("#e6482e" ,S("[!] You can't perform this action if you're the only one left!")))
|
||||
return end
|
||||
|
||||
local mod_ref = arena_lib.mods[arena_lib.get_mod_by_player(name)]
|
||||
|
||||
-- se uso /quit e on_prequit ritorna false, annullo
|
||||
if mod_ref.on_prequit then
|
||||
if mod_ref.on_prequit(arena, name) == false then
|
||||
return false end
|
||||
end
|
||||
|
||||
arena_lib.remove_player_from_arena(name, 3)
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.register_chatcommand("all", {
|
||||
|
||||
params = "<" .. S("message") .. ">",
|
||||
description = S("Write a message in the arena global chat while in a game"),
|
||||
|
||||
func = function(name, param)
|
||||
|
||||
if not arena_lib.is_player_in_arena(name) then
|
||||
minetest.chat_send_player(name, minetest.colorize("#e6482e" , S("[!] You must be in a game to perform this action!")))
|
||||
return false end
|
||||
|
||||
local msg = string.match(param, ".*")
|
||||
local mod_ref = arena_lib.mods[arena_lib.get_mod_by_player(name)]
|
||||
local arena = arena_lib.get_arena_by_player(name)
|
||||
|
||||
arena_lib.send_message_players_in_arena(arena, minetest.colorize(mod_ref.chat_all_color, mod_ref.chat_all_prefix .. minetest.format_chat_message(name, msg)))
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.register_chatcommand("t", {
|
||||
|
||||
params = "<" .. S("message") .. ">",
|
||||
description = S("Write a message in the arena team chat while in a game (if teams are enabled)"),
|
||||
|
||||
func = function(name, param)
|
||||
|
||||
if not arena_lib.is_player_in_arena(name) then
|
||||
minetest.chat_send_player(name, minetest.colorize("#e6482e" , S("[!] You must be in a game to perform this action!")))
|
||||
return false end
|
||||
|
||||
local msg = string.match(param, ".*")
|
||||
local mod_ref = arena_lib.mods[arena_lib.get_mod_by_player(name)]
|
||||
local arena = arena_lib.get_arena_by_player(name)
|
||||
local teamID = arena.players[name].teamID
|
||||
|
||||
if not teamID then
|
||||
minetest.chat_send_player(name, minetest.colorize("#e6482e" , S("[!] Teams are not enabled!")))
|
||||
return false end
|
||||
|
||||
arena_lib.send_message_players_in_arena(arena, minetest.colorize(mod_ref.chat_team_color, mod_ref.chat_team_prefix .. minetest.format_chat_message(name, msg)), teamID)
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue