statistiche convertite in pannello panel_lib
parent
f00f33b3b0
commit
b78937dcf4
|
@ -1,8 +1,8 @@
|
|||
|
||||
function quake.scoreboard_create(panel_name, arena, p_name)
|
||||
function quake.scoreboard_create(arena, p_name)
|
||||
if arena.teams_enabled then
|
||||
local panel = Panel:new({
|
||||
name = panel_name,
|
||||
name = "scoreboard",
|
||||
player = p_name,
|
||||
bg_scale = { x = 45, y = 28 },
|
||||
position = { x = 0.5, y = 0.5 },
|
||||
|
@ -36,23 +36,23 @@ function quake.scoreboard_create(panel_name, arena, p_name)
|
|||
players_clmn = {
|
||||
alignment = { x = 0, y = 1 },
|
||||
offset = {x = -250, y = -130},
|
||||
text = "player",
|
||||
text = "player"
|
||||
},
|
||||
kls_clmn = {
|
||||
alignment = { x = 0, y = 1 },
|
||||
offset = {x = 0, y = -130},
|
||||
text = "0",
|
||||
text = "0"
|
||||
},
|
||||
dts_clmn = {
|
||||
alignment = { x = 0, y = 1 },
|
||||
offset = {x = 250, y = -130},
|
||||
text = "0",
|
||||
text = "0"
|
||||
},
|
||||
}
|
||||
})
|
||||
else
|
||||
local panel = Panel:new({
|
||||
name = panel_name,
|
||||
name = "scoreboard",
|
||||
player = p_name,
|
||||
bg_scale = { x = 45, y = 28 },
|
||||
position = { x = 0.5, y = 0.5 },
|
||||
|
|
|
@ -1,155 +1,99 @@
|
|||
local saved_huds = {} --p_name = {hud_name, index}
|
||||
function quake.HUD_stats_create(p_name)
|
||||
|
||||
function quake.HUD_stats_create(arena, p_name)
|
||||
local panel = Panel:new({
|
||||
name = "stats",
|
||||
player = p_name,
|
||||
bg = "",
|
||||
position = { x = 0, y = 1 },
|
||||
alignment = { x = -1, y = 0 },
|
||||
title = "",
|
||||
|
||||
local player = minetest.get_player_by_name(p_name)
|
||||
sub_img_elems = {
|
||||
killleader_bg = {
|
||||
scale = { x = 1.3, y = 1 },
|
||||
offset = { x = 10, y = -90 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_bg.png"
|
||||
},
|
||||
killleader_icon = {
|
||||
scale = { x = 2, y = 2 },
|
||||
offset = { x = 10, y = -90 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_killleader.png"
|
||||
},
|
||||
kills_bg = {
|
||||
scale = { x = 0.45, y = 1 },
|
||||
offset = { x = 10, y = -55 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_bg.png"
|
||||
},
|
||||
kills_icon = {
|
||||
scale = { x = 2, y = 2 },
|
||||
offset = { x = 10, y = -55 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_kills.png"
|
||||
},
|
||||
deaths_bg = {
|
||||
scale = { x = 0.45, y = 1 },
|
||||
offset = { x = 10, y = -20 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_bg.png"
|
||||
},
|
||||
deaths_icon = {
|
||||
scale = { x = 2, y = 2 },
|
||||
offset = { x = 10, y = -20 },
|
||||
alignment = { x = 1, y = 0 },
|
||||
text = "quake_hud_deaths.png"
|
||||
}
|
||||
},
|
||||
|
||||
local KLR_BG_ID, KLR_icon_ID, KLR_data_ID, KLS_BG_ID, KLS_icon_ID, KLS_data_ID, DTS_BG_ID, DTS_icon_ID, DTS_data_ID
|
||||
|
||||
--[[ --annnouncer
|
||||
player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x =0.1, y = 0.9},
|
||||
offset = {x = 0, y = -25},
|
||||
text = "quake_gui_bg.png",
|
||||
alignment = { x = 0},
|
||||
scale = { x = 1.3, y = 1},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
]]
|
||||
|
||||
-- kill leader
|
||||
KLR_BG_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 10, y = -90},
|
||||
text = "quake_hud_bg.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 1.3, y = 1},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
KLR_icon_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 10, y = -90},
|
||||
text = "quake_hud_killleader.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 2, y = 2},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
local kill_leader = arena.kill_leader
|
||||
local kl_kills = 0
|
||||
|
||||
if kill_leader ~= "" then
|
||||
kl_kills = arena.players[kill_leader].kills
|
||||
end
|
||||
|
||||
KLR_data_ID = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 50, y = -90},
|
||||
text = kl_kills .. " | " .. kill_leader,
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 100, y = 30},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
|
||||
-- kills
|
||||
KLS_BG_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x =0, y = 1},
|
||||
offset = {x = 10, y = -55},
|
||||
text = "quake_hud_bg.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 0.45, y = 1},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
KLS_icon_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 10, y = -55},
|
||||
text = "quake_hud_kills.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 2, y = 2},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
KLS_data_ID = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 50, y = -55},
|
||||
text = "0",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 100, y = 30},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
|
||||
-- deaths
|
||||
DTS_BG_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x =0, y = 1},
|
||||
offset = {x = 10, y = -20},
|
||||
text = "quake_hud_bg.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 0.45, y = 1},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
DTS_icon_ID = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 10, y = -20},
|
||||
text = "quake_hud_deaths.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 2, y = 2},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
DTS_data_ID = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 1},
|
||||
offset = {x = 50, y = -20},
|
||||
text = "0",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 100, y = 30},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
saved_huds[p_name] = {
|
||||
KLR_BG = KLR_BG_ID,
|
||||
KLR_icon = KLR_icon_ID,
|
||||
KLR_data = KLR_data_ID,
|
||||
KLS_BG = KLS_BG_ID,
|
||||
KLS_icon = KLS_icon_ID,
|
||||
KLS_data = KLS_data_ID,
|
||||
DTS_BG = DTS_BG_ID,
|
||||
DTS_icon = DTS_icon_ID,
|
||||
DTS_data = DTS_data_ID
|
||||
}
|
||||
sub_txt_elems = {
|
||||
killleader_txt = {
|
||||
alignment = { x = 1, y = 0 },
|
||||
offset = { x = 50, y = -90 },
|
||||
text = "0 |"
|
||||
},
|
||||
kills_txt = {
|
||||
alignment = { x = 1, y = 0 },
|
||||
offset = { x = 50, y = -55 },
|
||||
text = "0"
|
||||
},
|
||||
deaths_txt = {
|
||||
alignment = { x = 1, y = 0 },
|
||||
offset = { x = 50, y = -20 },
|
||||
text = "0"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
function quake.HUD_stats_update(arena, p_name, field, new_value)
|
||||
function quake.HUD_stats_update(arena, p_name, stat)
|
||||
|
||||
local player = minetest.get_player_by_name(p_name)
|
||||
player:hud_change(saved_huds[p_name][field], "text", new_value)
|
||||
local panel = panel_lib.get_panel(p_name, "stats")
|
||||
|
||||
end
|
||||
minetest.log("action", dump(panel))
|
||||
|
||||
if stat == "kill_leader" then
|
||||
local kill_leader = arena.kill_leader
|
||||
panel:update(nil,
|
||||
{killleader_txt = {
|
||||
text = arena.players[kill_leader].kills .. " | " .. kill_leader
|
||||
}})
|
||||
|
||||
elseif stat == "kills" then
|
||||
panel:update(nil,
|
||||
{kills_txt = {
|
||||
text = arena.players[p_name].kills
|
||||
}})
|
||||
|
||||
function quake.HUD_stats_remove(p_name)
|
||||
|
||||
local player = minetest.get_player_by_name(p_name)
|
||||
for name, id in pairs(saved_huds[p_name]) do
|
||||
player:hud_remove(id)
|
||||
elseif stat == "deaths" then
|
||||
panel:update(nil,
|
||||
{deaths_txt = {
|
||||
text = arena.players[p_name].deaths
|
||||
}})
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
arena_lib.on_load("quake", function(arena)
|
||||
|
||||
for pl_name, stats in pairs(arena.players) do
|
||||
quake.HUD_stats_create(arena, pl_name)
|
||||
|
||||
quake.scoreboard_create("scoreboard", arena, pl_name)
|
||||
quake.HUD_stats_create(pl_name)
|
||||
quake.scoreboard_create(arena, pl_name)
|
||||
|
||||
panel_lib.get_panel(pl_name, "stats"):show()
|
||||
|
||||
minetest.sound_play("quake_voice_countdown", {
|
||||
to_player = pl_name,
|
||||
|
@ -51,8 +53,8 @@ arena_lib.on_join("quake", function(p_name, arena)
|
|||
local weapon = ItemStack("quake:railgun")
|
||||
local weapon2 = ItemStack("quake:rocket_launcher")
|
||||
|
||||
quake.HUD_stats_create(arena, p_name)
|
||||
quake.scoreboard_create("scoreboard", arena, p_name)
|
||||
quake.HUD_stats_create(p_name)
|
||||
quake.scoreboard_create(arena, p_name)
|
||||
|
||||
player:get_meta():set_int("quake_weap_delay", 0)
|
||||
|
||||
|
@ -70,6 +72,9 @@ arena_lib.on_join("quake", function(p_name, arena)
|
|||
|
||||
minetest.after(0.01, function()
|
||||
quake.scoreboard_update(arena)
|
||||
if arena.kill_leader ~= "" then
|
||||
quake.HUD_stats_update(arena, p_name, "kill_leader")
|
||||
end
|
||||
end)
|
||||
|
||||
end)
|
||||
|
@ -98,10 +103,11 @@ arena_lib.on_end("quake", function(arena, players)
|
|||
|
||||
for pl_name, stats in pairs(players) do
|
||||
|
||||
local panel = panel_lib.get_panel(pl_name, "scoreboard")
|
||||
local stats = panel_lib.get_panel(pl_name, "stats")
|
||||
local scoreboard = panel_lib.get_panel(pl_name, "scoreboard")
|
||||
|
||||
quake.HUD_stats_remove(pl_name)
|
||||
panel:remove()
|
||||
stats:remove()
|
||||
scoreboard:remove()
|
||||
quake.update_storage(pl_name)
|
||||
|
||||
minetest.get_player_by_name(pl_name):set_physics_override({
|
||||
|
@ -115,7 +121,7 @@ end)
|
|||
|
||||
|
||||
arena_lib.on_death("quake", function(arena, p_name, reason)
|
||||
quake.HUD_stats_update(arena, p_name, "DTS_data", arena.players[p_name].deaths)
|
||||
quake.HUD_stats_update(arena, p_name, "deaths")
|
||||
arena.players[p_name].killstreak = 0
|
||||
|
||||
-- se muoio suicida, perdo una kill
|
||||
|
@ -129,7 +135,7 @@ arena_lib.on_death("quake", function(arena, p_name, reason)
|
|||
end
|
||||
|
||||
p_stats.kills = p_stats.kills - 1
|
||||
quake.HUD_stats_update(arena, p_name, "KLS_data", p_stats.kills)
|
||||
quake.HUD_stats_update(arena, p_name, "kills")
|
||||
quake.scoreboard_update(arena)
|
||||
quake.subtract_exp(p_name, 10)
|
||||
|
||||
|
@ -137,7 +143,7 @@ arena_lib.on_death("quake", function(arena, p_name, reason)
|
|||
if arena.kill_leader == p_name then
|
||||
quake.calc_kill_leader(arena, p_name)
|
||||
for pl_name, stats in pairs(arena.players) do
|
||||
quake.HUD_stats_update(arena, pl_name, "KLR_data", arena.players[p_name].kills .. " | " .. p_name)
|
||||
quake.HUD_stats_update(arena, pl_name, "kill_leader")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -148,10 +154,11 @@ end)
|
|||
|
||||
arena_lib.on_quit("quake", function(arena, p_name)
|
||||
|
||||
local panel = panel_lib.get_panel(p_name, "scoreboard")
|
||||
local stats = panel_lib.get_panel(p_name, "stats")
|
||||
local scoreboard = panel_lib.get_panel(p_name, "scoreboard")
|
||||
|
||||
quake.HUD_stats_remove(p_name)
|
||||
panel:remove()
|
||||
stats:remove()
|
||||
scoreboard:remove()
|
||||
|
||||
minetest.get_player_by_name(p_name):set_physics_override({
|
||||
speed = 1,
|
||||
|
|
|
@ -256,7 +256,7 @@ function kill(arena, p_name, target)
|
|||
-- visibilità kill leader
|
||||
local kill_leader = arena.kill_leader
|
||||
for pl_name, stats in pairs(arena.players) do
|
||||
quake.HUD_stats_update(arena, pl_name, "KLR_data", arena.players[kill_leader].kills .. " | " .. kill_leader)
|
||||
quake.HUD_stats_update(arena, pl_name, "kill_leader")
|
||||
end
|
||||
|
||||
-- eventuale killstreak
|
||||
|
@ -278,7 +278,7 @@ function kill(arena, p_name, target)
|
|||
end
|
||||
|
||||
-- aggiorno HUD
|
||||
quake.HUD_stats_update(arena, p_name, "KLS_data", p_stats.kills)
|
||||
quake.HUD_stats_update(arena, p_name, "kills")
|
||||
quake.scoreboard_update(arena)
|
||||
|
||||
-- aggiungo XP
|
||||
|
|
Loading…
Reference in New Issue