Waiting room instead of the obnoxious jittering effect when respawning
parent
fc47bd5262
commit
8f79312ade
33
commands.lua
33
commands.lua
|
@ -105,7 +105,7 @@ ChatCmdBuilder.new("bladmin", function(cmd)
|
|||
arena_lib.disable_arena(sender, mod, arena)
|
||||
end)
|
||||
|
||||
-- aggiunta/rimozione TD. option può essere "add" o "remove"
|
||||
-- aggiunta/rimozione TD. option può essere "set" o "remove"
|
||||
cmd:sub("goal :option :arena :team", function(sender, option, arena_name, team)
|
||||
-- TODO: muovere in una funzione a parte
|
||||
local id, arena = arena_lib.get_arena_by_name("block_league", arena_name)
|
||||
|
@ -114,7 +114,7 @@ ChatCmdBuilder.new("bladmin", function(cmd)
|
|||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return end
|
||||
|
||||
if arena.mod == 2 then
|
||||
if arena.mod ~= 1 then
|
||||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return end
|
||||
|
||||
|
@ -155,6 +155,35 @@ ChatCmdBuilder.new("bladmin", function(cmd)
|
|||
arena_lib.change_arena_property(sender, "block_league", arena_name, "ball_spawn" , new_param)
|
||||
end)
|
||||
|
||||
cmd:sub("wroom :option :arena :team", function(sender, option, arena_name, team)
|
||||
|
||||
local id, arena = arena_lib.get_arena_by_name("block_league", arena_name)
|
||||
|
||||
if not arena then
|
||||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return end
|
||||
|
||||
if arena.mod ~= 1 then
|
||||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return end
|
||||
|
||||
if team ~= "red" and team ~= "blue" then
|
||||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return end
|
||||
|
||||
local w_room = team == "red" and "waiting_room_red" or "waiting_room_blue"
|
||||
|
||||
if option == "set" then
|
||||
local pos = vector.round(minetest.get_player_by_name(sender):get_pos())
|
||||
arena_lib.change_arena_property(sender, "block_league", arena_name, w_room, pos)
|
||||
elseif option == "remove" then
|
||||
arena_lib.change_arena_property(sender, "block_league", arena_name, w_room , {})
|
||||
else
|
||||
minetest.chat_send_player(sender, "Invalid parameter")
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
cmd:sub("addminy :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("block_league", arena_name)
|
||||
local pos = vector.round(minetest.get_player_by_name(sender):get_pos())
|
||||
|
|
2
init.lua
2
init.lua
|
@ -43,6 +43,8 @@ arena_lib.register_minigame("block_league", {
|
|||
immunity_time = 6,
|
||||
goal_red = {},
|
||||
goal_blue = {},
|
||||
waiting_room_red = {},
|
||||
waiting_room_blue = {},
|
||||
ball_spawn = {},
|
||||
min_y = 0
|
||||
},
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
local S = minetest.get_translator("block_league")
|
||||
|
||||
local function wait_for_respawn() end
|
||||
local function death_delay() end
|
||||
local function remove_weapons() end
|
||||
|
||||
|
||||
|
@ -47,7 +46,13 @@ minetest.register_on_respawnplayer(function(player)
|
|||
local p_name = player:get_player_name()
|
||||
local arena = arena_lib.get_arena_by_player(p_name)
|
||||
|
||||
death_delay(arena, p_name, player:get_pos())
|
||||
if player:get_meta():get_int("bl_death_delay") == 1 then
|
||||
if arena.players[p_name].teamID == 1 then
|
||||
player:set_pos(arena.waiting_room_red)
|
||||
else
|
||||
player:set_pos(arena.waiting_room_blue)
|
||||
end
|
||||
end
|
||||
|
||||
arena.players[p_name].energy = 100
|
||||
block_league.energy_update(arena, p_name)
|
||||
|
@ -78,9 +83,16 @@ function wait_for_respawn(arena, p_name, time_left)
|
|||
arena_lib.HUD_send_msg("broadcast", p_name, S("Back in the game in @1", time_left))
|
||||
else
|
||||
local player = minetest.get_player_by_name(p_name)
|
||||
|
||||
player:get_meta():set_int("bl_death_delay", 0)
|
||||
player:get_meta():set_int("bl_reloading", 0)
|
||||
arena_lib.HUD_hide("broadcast", p_name)
|
||||
|
||||
-- se è nella sala d'attesa
|
||||
if player:get_hp() > 0 then
|
||||
player:set_pos(arena_lib.get_random_spawner(arena, arena.players[p_name].teamID))
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -93,20 +105,6 @@ end
|
|||
|
||||
|
||||
|
||||
function death_delay(arena, p_name, pos)
|
||||
|
||||
if not arena_lib.is_player_in_arena(p_name, "block_league") or arena.weapons_disabled then return end
|
||||
|
||||
local player = minetest.get_player_by_name(p_name)
|
||||
|
||||
if player:get_meta():get_int("bl_death_delay") == 0 then return end
|
||||
|
||||
player:set_pos(pos)
|
||||
minetest.after(0.2, function() death_delay(arena, p_name, pos) end)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function remove_weapons(inv)
|
||||
|
||||
inv:remove_item("main", ItemStack("block_league:smg"))
|
||||
|
|
Loading…
Reference in New Issue