]> git.lizzy.rs Git - elidragon.git/commitdiff
Add playerlist dependency
authorElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 1 Mar 2021 08:34:35 +0000 (09:34 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 1 Mar 2021 08:34:35 +0000 (09:34 +0100)
mod.conf
playerlist.lua
ranks.lua

index 587fede6f857c2260de6a992e648ee5522f7bb71..727f0061dee6f313d077e1266f86d65d530c1dd5 100644 (file)
--- 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
index 75472fe0055fdd6038bc96eb77250fc327f2f191..6332db3348fa37a8ab3f5db95c813a6dff702c77 100644 (file)
@@ -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
index 16f2df90edfbecd8f58c5eb9ea246e4b13f69657..53f2df89370081426e4ad7ab50496fbd5a78da9f 100755 (executable)
--- 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