From bad78b82a0e8cd5400a0ab9fec9f6c1566f91117 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 12 Oct 2021 14:06:25 +0200 Subject: [PATCH] Integrate into playerlist mod --- mod.conf | 2 +- playerlist.lua | 58 +++++++++++++++++--------------------------------- ranks.lua | 4 ++-- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/mod.conf b/mod.conf index 8573c56..541eea4 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,4 @@ name = coronaserver author = Fleckenstein description = The plugins for the Coronaserver -depends = controls +depends = playerlist diff --git a/playerlist.lua b/playerlist.lua index 2ec145c..4cfa429 100644 --- a/playerlist.lua +++ b/playerlist.lua @@ -1,41 +1,23 @@ -coronaserver.playerlist = {} -controls.register_on_press(function(player, key) - if key == "sneak" then - local name = player:get_player_name() - local list = {} - local players = minetest.get_connected_players() - for i, p in pairs(players) do - local n = p:get_player_name() - local info = minetest.get_player_information(n) - if info and info.avg_rtt then - local ping = math.max(1, math.ceil(4 - info.avg_rtt * 4)) - list[#list + 1] = player:hud_add({ - hud_elem_type = "text", - position = {x = 1, y = 0}, - offset = {x = -50, y = 5 + (i - 1) * 18}, - text = n, - alignment = {x = -1, y = 1}, - scale = {x = 100, y = 100}, - number = tonumber(coronaserver.get_rank(n).color:gsub("#", ""), 16), - }) - list[#list + 1] = player:hud_add({ - hud_elem_type = "image", - position = {x = 1, y = 0}, - offset = {x = -5, y = (i - 1) * 18}, - text = "server_ping_" .. ping .. ".png", - alignment = {x = -1, y = 1}, - scale = {x = 1.5, y = 1.5}, - number = 0xFFFFFF, - }) - end - end - coronaserver.playerlist[name] = list +function playerlist.iterator() + local list = {} + for _, player in ipairs(minetest.get_connected_players()) do + local rank, i = coronaserver.get_rank(player:get_player_name()) + print(dump(rank), i) + table.insert(list, { + player = player, + value = i, + color = tonumber(rank.color:gsub("#", ""), 16) + }) end -end) -controls.register_on_release(function(player, key) - if key == "sneak" then - for _, id in pairs(coronaserver.playerlist[player:get_player_name()]) do - player:hud_remove(id) + table.sort(list, function(a, b) + return a.value > b.value + end) + local i = 0 + return function() + i = i + 1 + local elem = list[i] + if elem then + return i, elem.player, elem.color end end -end) +end diff --git a/ranks.lua b/ranks.lua index a2a2dfb..f9a8a5f 100755 --- a/ranks.lua +++ b/ranks.lua @@ -83,9 +83,9 @@ function coronaserver.get_rank(name) return coronaserver.get_rank_by_name(coronaserver.savedata.ranks[name] or "student") end function coronaserver.get_rank_by_name(rankname) - for _, rank in pairs(coronaserver.ranks) do + for i, rank in pairs(coronaserver.ranks) do if rank.name == rankname then - return rank + return rank, i end end end -- 2.44.0