From 7cae5d384b15edb0d7697d9b59a22f254abd56cf Mon Sep 17 00:00:00 2001 From: Zughy <4279489-marco_a@users.noreply.gitlab.com> Date: Wed, 11 Nov 2020 16:58:06 +0100 Subject: [PATCH] HUD warning players when they're gonna respawn --- locale/block_league.it.tr | 3 +++ locale/template.txt | 3 +++ player_manager.lua | 45 ++++++++++++++++++++++++++++----------- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/locale/block_league.it.tr b/locale/block_league.it.tr index 72051d7..70b2711 100644 --- a/locale/block_league.it.tr +++ b/locale/block_league.it.tr @@ -19,6 +19,9 @@ three in one=tre in uno # commands.lua mod management=gestione della mod +# player_manager.lua +Back in the game in @1=Di nuovo in partita tra @1 + # privs.lua It allows to use the /bladmin command=Permette di usare il comando /bladmin diff --git a/locale/template.txt b/locale/template.txt index c7d18eb..2ddccb3 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -19,6 +19,9 @@ three in one= # commands.lua mod management= +# player_manager.lua +Back in the game in @1= + # privs.lua It allows to use the /bladmin command= diff --git a/player_manager.lua b/player_manager.lua index 3dda6c3..b4a4336 100644 --- a/player_manager.lua +++ b/player_manager.lua @@ -1,3 +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 @@ -32,14 +35,7 @@ minetest.register_on_dieplayer(function(player) player:get_meta():set_int("bl_death_delay", 1) block_league.immunity(player) - minetest.after(6, function() - local arena = arena_lib.get_arena_by_player(p_name) - if not arena_lib.is_player_in_arena(p_name, "block_league") or arena.weapons_disabled then return end - - player:get_meta():set_int("bl_death_delay", 0) - player:get_meta():set_int("bl_reloading", 0) - end) - + wait_for_respawn(arena_lib.get_arena_by_player(p_name), p_name, 6) end) @@ -51,7 +47,7 @@ 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(p_name, player:get_pos(), arena.weapons_disabled) + death_delay(arena, p_name, player:get_pos()) arena.players[p_name].energy = 100 block_league.energy_update(arena, p_name) @@ -72,16 +68,41 @@ end) ---------------FUNZIONI LOCALI---------------- ---------------------------------------------- -function death_delay(p_name, pos, weapons_disabled) +function wait_for_respawn(arena, p_name, time_left) - if not arena_lib.is_player_in_arena(p_name, "block_league") or weapons_disabled then return end + if not arena_lib.is_player_in_arena(p_name, "block_league") or arena.weapons_disabled then + arena_lib.HUD_hide("broadcast", p_name) + return end + + if time_left > 0 then + 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) + return + end + + time_left = time_left -1 + + minetest.after(1, function() + wait_for_respawn(arena, p_name, time_left) + end) +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(p_name, pos, weapons_disabled) end) + minetest.after(0.2, function() death_delay(arena, p_name, pos) end) end