From 6b4b806aeb6fc48f11e6120d94f6ee6b5873b758 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 1 Mar 2021 09:34:35 +0100 Subject: [PATCH] Add playerlist dependency --- mod.conf | 2 +- playerlist.lua | 55 +++++++++++++++++--------------------------------- ranks.lua | 4 ++-- 3 files changed, 22 insertions(+), 39 deletions(-) diff --git a/mod.conf b/mod.conf index 587fede..727f006 100644 --- a/mod.conf +++ b/mod.conf @@ -1,5 +1,5 @@ name = elidragon description = The plugins for the Elidragon Server author = Fleckenstein -depends = worldedit, moreores, default, flowers, areas, technic, moretrees, controls, bucket, quests +depends = worldedit, moreores, default, flowers, areas, technic, moretrees, controls, bucket, quests, playerlist optional_depends = irc diff --git a/playerlist.lua b/playerlist.lua index 75472fe..6332db3 100644 --- a/playerlist.lua +++ b/playerlist.lua @@ -1,39 +1,22 @@ -elidragon.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 ping = math.max(1, math.ceil(4 - minetest.get_player_information(n).avg_rtt * 4)) - list[#list + 1] = player:hud_add({ - hud_elem_type = "text", - position = {x = 0.5, y = 0}, - offset = {x = 20, y = 53 + (i - 1) * 18}, - text = n, - alignment = {x = 1, y = 1}, - scale = {x = 100, y = 100}, - number = tonumber(elidragon.get_rank(p).color:gsub("#", ""), 16), - }) - list[#list + 1] = player:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0}, - offset = {x = 0, y = 50 + (i - 1) * 18}, - text = "server_ping_" .. ping .. ".png", - alignment = {x = -1, y = 1}, - scale = {x = 1.5, y = 1.5}, - number = 0xFFFFFF, - }) - end - elidragon.playerlist[name] = list +function playerlist.iterator() + local list = {} + for _, player in ipairs(minetest.get_connected_players()) do + local rank, i = elidragon.get_rank(player) + 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" and player then - for _, id in pairs(elidragon.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 16f2df9..53f2df8 100755 --- a/ranks.lua +++ b/ranks.lua @@ -51,9 +51,9 @@ function elidragon.get_rank(player) end function elidragon.get_rank_by_name(rankname) - for _, rank in pairs(elidragon.ranks) do + for i, rank in pairs(elidragon.ranks) do if rank.name == rankname then - return rank + return rank, i end end end -- 2.44.0