]> git.lizzy.rs Git - coronaserver.git/commitdiff
Added Ranks
authorElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 7 May 2020 16:52:17 +0000 (18:52 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 7 May 2020 16:52:17 +0000 (18:52 +0200)
init.lua
ranks.lua [new file with mode: 0755]

index d6cd85e7e6d10ad6d6993003f411e57cbe2c8192..a4bd20b0a7be3e84e017a86a0351acda249b3d22 100755 (executable)
--- a/init.lua
+++ b/init.lua
@@ -1,6 +1,6 @@
 coronaserver = {}
 
-local modules = {"save", "advprivs"}
+local modules = {"save", "advprivs", "ranks"}
 
 for _, m in pairs(modules) do
     dofile(minetest.get_modpath("coronaserver") .. "/" .. m .. ".lua")
diff --git a/ranks.lua b/ranks.lua
new file mode 100755 (executable)
index 0000000..4eea58e
--- /dev/null
+++ b/ranks.lua
@@ -0,0 +1,79 @@
+coronaserver.ranks = {
+       {
+               name = "owner",
+               color = "#FF2D8D",
+               tag = "[OWNER]",
+       },
+       {
+               name = "admin",
+               color = "#FF362D",
+               tag = "[ADMIN]",
+       },
+       {
+               name = "moderator",
+               color = "#001FFF",
+               tag = "[MODERATOR]",
+       },
+       {
+               name = "supporter",
+               color = "#EE6E00",
+               tag = "[SUPPORTER]",
+       },
+       {
+        name = "player",
+        color = "#FFFFFF",
+        tag = "",
+    }
+}
+coronaserver.savedata.ranks = coronaserver.savedata.ranks or {}
+function coronaserver.get_rank(name)
+    return coronaserver.get_rank_by_name(coronaserver.savedata.ranks[name] or "player")
+end
+function coronaserver.get_rank_by_name(rankname)
+       for _, rank in pairs(coronaserver.ranks) do
+               if rank.name == rankname then
+                       return rank
+               end
+       end
+end
+function coronaserver.get_player_name(name, brackets)
+    local rank = coronaserver.get_rank(name)
+    local rank_tag = minetest.colorize(rank.color, rank.tag)
+       if not brackets then 
+               brackets = {"",""}
+       end
+       return rank_tag .. brackets[1] .. name .. brackets[2] .. " "
+end
+minetest.register_on_joinplayer(function(player)
+       local name = player:get_player_name()
+    minetest.chat_send_all(coronaserver.get_player_name(name) .. "has joined the Server.")
+    player:set_nametag_attributes({color = coronaserver.get_rank(name).color})
+end)
+minetest.register_on_leaveplayer(function(player)
+       local name = player:get_player_name()
+    minetest.chat_send_all(coronaserver.get_player_name(name) .. "has left the Server.")
+end)
+minetest.register_on_chat_message(function(name, message)
+    minetest.chat_send_all(coronaserver.get_player_name(name, {"<", ">"}) .. message)
+    return true
+end)
+minetest.register_chatcommand("rank", {
+       params = "<player> <rank>",
+       description = "Einem Spieler einen Rang geben (owner|admin|moderator|supporter)",
+       privs = {privs = true},
+       func = function(admin, param)
+               local name = param:split(' ')[1]
+               local player = minetest.get_player_by_name(name)
+        local rank = coronaserver.get_rank_by_name(param:split(' ')[2])
+               if not player then
+                       minetest.chat_send_player(admin, "Player doesnt exist.")
+               elseif not rank then 
+            minetest.chat_send_player(admin,"Invalid Rank.")
+        else
+                       coronaserver.savedata.ranks[name] = rank.name
+                       coronaserver.save()
+                       player:set_nametag_attributes({color = rank.color})
+                       minetest.chat_send_all(name .. " ist jetzt ein " .. minetest.colorize(rank.color, rank.name))
+               end
+       end,
+})