+ General bug fixes and code cleaning
parent
2bc2bb4f0e
commit
311d9cd24f
|
@ -59,10 +59,10 @@ end)
|
|||
|
||||
|
||||
arena_lib.on_end("skywars", function(arena, players)
|
||||
for pl_name in pairs(arena.players) do
|
||||
for pl_name in pairs(players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
remove_privs(pl_name)
|
||||
remove_privs(pl_name)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
skywars.remove_armor(player)
|
||||
end
|
||||
|
@ -78,8 +78,7 @@ arena_lib.on_death("skywars", function(arena, pl_name, reason)
|
|||
local killer = reason.object:get_player_name()
|
||||
|
||||
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("@1 was killed by @2", pl_name, killer))
|
||||
arena.HUDs[killer].players_killed.amount = arena.HUDs[killer].players_killed.amount + 1
|
||||
reason.object:hud_change(arena.HUDs[killer].players_killed.id, "text", tostring(arena.HUDs[killer].players_killed.amount))
|
||||
skywars.increment_players_killed(killer)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -91,6 +90,15 @@ end)
|
|||
|
||||
|
||||
|
||||
arena_lib.on_prequit("skywars", function(arena, pl_name)
|
||||
if arena.in_loading then
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
arena_lib.on_quit("skywars", function(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
|
@ -169,14 +177,7 @@ function add_privs(pl_name)
|
|||
player:get_meta():set_string("sw_can_noclip", "false")
|
||||
end
|
||||
|
||||
if skywars_settings.build_permission ~= "" then
|
||||
if privs[skywars_settings.build_permission] then
|
||||
player:get_meta():set_string("sw_can_build", "true")
|
||||
else
|
||||
player:get_meta():set_string("sw_can_build", "false")
|
||||
end
|
||||
privs[skywars_settings.build_permission] = true
|
||||
end
|
||||
privs[skywars_settings.build_permission] = true
|
||||
|
||||
minetest.set_player_privs(pl_name, privs)
|
||||
end
|
||||
|
@ -190,7 +191,7 @@ function remove_privs(pl_name)
|
|||
if player:get_meta():get_string("sw_can_noclip") == "true" then
|
||||
privs.noclip = true
|
||||
end
|
||||
if player:get_meta():get_string("sw_can_build") == "false" then
|
||||
if not privs.server and not privs["privs"] then
|
||||
privs[skywars_settings.build_permission] = nil
|
||||
end
|
||||
|
||||
|
@ -249,12 +250,13 @@ end
|
|||
|
||||
|
||||
function keep_teleporting(player, pos, seconds, current_second)
|
||||
local step = 3
|
||||
local step = 2
|
||||
current_second = current_second or 1
|
||||
|
||||
if current_second > seconds then return end
|
||||
|
||||
minetest.after(step, function()
|
||||
player:add_player_velocity(vector.multiply(player:get_player_velocity(), -1))
|
||||
player:set_pos(pos)
|
||||
keep_teleporting(player, pos, seconds, current_second + step)
|
||||
end)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
local saved_huds = {} -- id = hud
|
||||
|
||||
|
||||
function skywars.generate_HUD(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
local players_count_
|
||||
|
@ -72,7 +75,7 @@ function skywars.generate_HUD(arena, pl_name)
|
|||
number = 0xdff6f5,
|
||||
})
|
||||
|
||||
arena.HUDs[pl_name] = {
|
||||
saved_huds[pl_name] = {
|
||||
background_players_counter = background_players_counter_,
|
||||
players_count = players_count_,
|
||||
players_killed = {id = players_killed_, amount = 0},
|
||||
|
@ -88,12 +91,12 @@ end
|
|||
function skywars.remove_HUD(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
player:hud_remove(arena.HUDs[pl_name].background_players_counter)
|
||||
player:hud_remove(arena.HUDs[pl_name].background_kill_counter)
|
||||
player:hud_remove(arena.HUDs[pl_name].players_count)
|
||||
player:hud_remove(arena.HUDs[pl_name].players_killed.id)
|
||||
player:hud_remove(arena.HUDs[pl_name].timer)
|
||||
player:hud_remove(arena.HUDs[pl_name].background_timer)
|
||||
for name, id in pairs(saved_huds[pl_name]) do
|
||||
if type(id) == "table" then id = id.id end
|
||||
player:hud_remove(id)
|
||||
end
|
||||
|
||||
saved_huds[pl_name] = {}
|
||||
end
|
||||
|
||||
|
||||
|
@ -111,15 +114,25 @@ function skywars.update_players_counter(arena, players_amount_updated)
|
|||
if arena.players_original_amount == nil then return end
|
||||
|
||||
local players_counter = tostring(arena.players_amount) .. "/" .. tostring(arena.players_original_amount)
|
||||
player:hud_change(arena.HUDs[pl_name].players_count, "text", players_counter)
|
||||
player:hud_change(saved_huds[pl_name].players_count, "text", players_counter)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.increment_players_killed(pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
local players_killed = saved_huds[pl_name].players_killed.amount + 1
|
||||
saved_huds[pl_name].players_killed.amount = players_killed
|
||||
|
||||
player:hud_change(saved_huds[pl_name].players_killed.id, "text", players_killed)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.update_timer_hud(arena)
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
player:hud_change(arena.HUDs[pl_name].timer, "text", arena.current_time)
|
||||
player:hud_change(saved_huds[pl_name].timer, "text", arena.current_time)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue