]> git.lizzy.rs Git - coronaserver.git/commitdiff
Integrate into playerlist mod
authorElias Fleckenstein <eliasfleckenstein@web.de>
Tue, 12 Oct 2021 12:06:25 +0000 (14:06 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Tue, 12 Oct 2021 12:06:25 +0000 (14:06 +0200)
mod.conf
playerlist.lua
ranks.lua

index 8573c56ec4ac5c07fe495cbce2ec82f46106d1c0..541eea490600ebfde98ec1c4d3de1211d32c07e1 100644 (file)
--- a/mod.conf
+++ b/mod.conf
@@ -1,4 +1,4 @@
 name = coronaserver
 author = Fleckenstein
 description = The plugins for the Coronaserver
-depends = controls
+depends = playerlist
index 2ec145cf9f2af8526f56dc84a4e743886752f41c..4cfa429975da06757375d5e886ee3496f00394c0 100644 (file)
@@ -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
index a2a2dfb3503ab66122194fcecfd5a4ef6d160cad..f9a8a5fc365e8a4dd24e99a44370d20e2a8146d7 100755 (executable)
--- 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