+ General bug fixes and code cleaning

master
Giov4 2020-12-08 13:35:14 +01:00
parent 2bc2bb4f0e
commit 311d9cd24f
3 changed files with 38 additions and 24 deletions

View File

@ -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)

View File

@ -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

View File

@ -14,7 +14,6 @@ arena_lib.register_minigame("skywars", {
celebration_time = skywars_settings.celebration_time,
load_time = skywars_settings.loading_time,
temp_properties = {
HUDs = {},
players_original_amount = 0,
},
properties = {