Add bulk join command

master
rubenwardy 2017-10-10 22:32:03 +01:00
parent e05950d087
commit 5769d446ab
1 changed files with 33 additions and 0 deletions

View File

@ -7,6 +7,10 @@ ctf.register_on_init(function()
ctf._set("chat.default", "global")
end)
function minetest.is_player_name_valid(name)
return name:match("^[%a%d_-]+$")
end
local function team_console_help(name)
minetest.chat_send_player(name, "Try:")
minetest.chat_send_player(name, "/team - show team panel")
@ -33,6 +37,7 @@ minetest.register_chatcommand("team", {
local create = string.match(param, "^add ([%a%d_-]+)")
local remove = string.match(param, "^remove ([%a%d_-]+)")
local j_name, j_tname = string.match(param, "^join ([%a%d_-]+) ([%a%d_]+)")
local b_tname, b_pattern = string.match(param, "^bjoin ([%a%d_-]+) ([%a%d_-%*%! ]+)")
local l_name = string.match(param, "^removeplr ([%a%d_-]+)")
if create then
local privs = minetest.get_player_privs(name)
@ -101,6 +106,34 @@ minetest.register_chatcommand("team", {
else
return true, "You are not a ctf_team_mgr!"
end
elseif b_pattern and b_tname then
local privs = minetest.get_player_privs(name)
if privs and privs.ctf_team_mgr then
local tokens = string.split(b_pattern, " ")
local players = {}
for _, token in pairs(tokens) do
print(token)
if token == "*" then
for _, player in pairs(minetest.get_connected_players()) do
players[player:get_player_name()] = true
end
elseif token:sub(1, 1) == "!" then
players[token:sub(2, #token)] = nil
elseif minetest.is_player_name_valid(token) then
players[token] = true
else
return false, "Invalid token: " .. token .. "\nExpecting *, playername, or !playername."
end
end
for pname, _ in pairs(players) do
ctf.join(pname, b_tname, true, name)
end
return true, "Success!"
else
return false, "You are not a ctf_team_mgr!"
end
elseif l_name then
local privs = minetest.get_player_privs(name)
if privs and privs.ctf_team_mgr then