sumo_duels/teams.lua

78 lines
2.2 KiB
Lua
Raw Normal View History

2021-03-15 15:05:02 -07:00
sumo_deuls.teams = {lobby = {}, waiting_arena_1 = {}, arena_1 = {}}
2021-03-15 15:00:48 -07:00
2021-03-17 09:38:54 -07:00
sumo_deuls.get_player_team = function(name)
for k, team in pairs(sumo_deuls.teams) do
for _, pname in ipairs(team) do
if name == pname then return k end
end
end
end
2021-03-17 09:45:36 -07:00
local other_player
sumo_deuls.get_other_team_player = function(name)
local current = sumo_deuls.get_player_team(name)
for k, player in pairs(sumo_deuls.teams[current]) do
local pname = player:get_player_name()
if not name == pname then other_player = pname end
end
end
2021-03-16 10:32:17 -07:00
sumo_duels.set_playing = function(pname, arena_number)
2021-03-17 09:39:34 -07:00
local current = sumo_deuls.get_player_team(pname)
table.remove(current, pname)
2021-03-16 11:17:59 -07:00
--set pos arena_1
2021-03-16 10:32:17 -07:00
table.insert(sumo_duels[arena_ .. arena_number], pname)
end
sumo_duels.set_waiting = function(pname, arena_number)
2021-03-17 09:39:34 -07:00
local current = sumo_deuls.get_player_team(pname)
table.remove(current, pname)
2021-03-16 11:17:59 -07:00
--set pos lobby
2021-03-16 10:32:17 -07:00
table.insert(sumo_duels[waiting_arena_ .. arena_number], pname)
end
2021-03-15 15:07:21 -07:00
2021-03-17 09:38:54 -07:00
sumo_duels.set_lobby = function(pname)
local current = sumo_deuls.get_player_team(pname)
table.remove(current, pname)
2021-03-16 11:17:59 -07:00
--set pos lobby
2021-03-17 09:38:54 -07:00
table.insert(sumo_duels[lobby], pname)
2021-03-15 15:06:36 -07:00
end
2021-03-15 15:05:02 -07:00
minetest.register_on_joinplayer(function(player)
2021-03-16 10:32:17 -07:00
local pname = player:get_player_name()
2021-03-15 15:05:02 -07:00
table.insert(sumo_deuls.teams[lobby], pname)
end)
2021-03-16 10:19:55 -07:00
2021-03-16 10:32:17 -07:00
minetest.register_chatcommand("join", {
params = "number",
description = "Join the waiting list for an arena",
privs = {play = true},
func = function(name, number)
if not
local number = number or "1"
local player = minetest.get_player_by_name(name)
if not player then return end
if not player:is_player() then return end
sumo_duels.set_waiting(name, number)
end,
})
2021-03-16 10:19:55 -07:00
minetest.register_globalstep(function(dtime)
if #sumo_deuls.teams[arena_1] == 0 then --noone in arena1
2021-03-16 11:14:07 -07:00
if #sumo_deuls.teams[waiting_arena_1] >= 2 then
for name, sumo_duels.teams[waiting_arena_1] = 1,2 do
sumo_duels.set_playing(name, "1")
2021-03-16 10:19:55 -07:00
end
2021-03-16 11:14:07 -07:00
end
2021-03-16 11:17:28 -07:00
elseif #sumo_deuls.teams[arena_1] == 1 then
for name, sumo_duels.teams[arena_1] = 1 do
sumo_duels.set_lobby(name, arena_1)
end
2021-03-16 10:19:55 -07:00
end
end)
2021-03-17 09:45:36 -07:00
minetest.register_on_dieplayer(function(player)
sumo_deuls.get_other_team_player(player:get_player_name())
minetest.chat_send_player(other_player, "Your opponent died! GG, you win")
end)