Added Ranks

master
Elias Fleckenstein 2020-05-07 18:52:17 +02:00
parent 636e654410
commit 064edd4e9e
2 changed files with 80 additions and 1 deletions

View File

@ -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")

79
ranks.lua Executable file
View File

@ -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,
})