From 064edd4e9e45cffeef7b3ce5bbe45d2b146f5483 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 7 May 2020 18:52:17 +0200 Subject: [PATCH] Added Ranks --- init.lua | 2 +- ranks.lua | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100755 ranks.lua diff --git a/init.lua b/init.lua index d6cd85e..a4bd20b 100755 --- 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 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 = " ", + 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, +}) -- 2.44.0