]> git.lizzy.rs Git - coronaserver.git/blob - ranks.lua
Fixed crash when doing /rank
[coronaserver.git] / ranks.lua
1 coronaserver.ranks = {
2         {
3                 name = "owner",
4                 color = "#FF2D8D",
5                 tag = "[OWNER]",
6         },
7         {
8                 name = "admin",
9                 color = "#FF362D",
10                 tag = "[ADMIN]",
11         },
12         {
13                 name = "moderator",
14                 color = "#001FFF",
15                 tag = "[MODERATOR]",
16         },
17         {
18                 name = "developer",
19                 color = "#EBEE00",
20                 tag = "[DEVELOPER]",
21         },
22         {
23                 name = "supporter",
24                 color = "#EE6E00",
25                 tag = "[SUPPORTER]",
26         },
27         {
28         name = "teacher",
29         color = "#16AE00",
30         tag = "[TEACHER]",
31     },
32         {
33         name = "student",
34         color = "#BBBBBB",
35         tag = "[STUDENT]",
36     }
37 }
38 coronaserver.savedata.ranks = coronaserver.savedata.ranks or {}
39 function coronaserver.get_rank(name)
40     return coronaserver.get_rank_by_name(coronaserver.savedata.ranks[name] or "student")
41 end
42 function coronaserver.get_rank_by_name(rankname)
43         for _, rank in pairs(coronaserver.ranks) do
44                 if rank.name == rankname then
45                         return rank
46                 end
47         end
48 end
49 function coronaserver.get_player_name(name, brackets)
50     local rank = coronaserver.get_rank(name)
51     local rank_tag = minetest.colorize(rank.color, rank.tag)
52         if not brackets then 
53                 brackets = {"",""}
54         end
55         return rank_tag .. brackets[1] .. name .. brackets[2] .. " "
56 end
57 minetest.register_on_joinplayer(function(player)
58         local name = player:get_player_name()
59         if coronaserver.get_rank(name).name == "student" and minetest.check_player_privs(name, {teacher = true}) then
60                 coronaserver.savedata.ranks[name] = "teacher"
61                 coronaserver.save()
62         end
63     minetest.chat_send_all(coronaserver.get_player_name(name) .. "has joined the Server.")
64     player:set_nametag_attributes({color = coronaserver.get_rank(name).color})
65 end)
66 minetest.register_on_leaveplayer(function(player)
67         local name = player:get_player_name()
68     minetest.chat_send_all(coronaserver.get_player_name(name) .. "has left the Server.")
69 end)
70 minetest.register_on_chat_message(function(name, message)
71     minetest.chat_send_all(coronaserver.get_player_name(name, {"<", ">"}) .. message)
72     return true
73 end)
74 minetest.register_chatcommand("rank", {
75         params = "<player> <rank>",
76         description = "Einem Spieler einen Rang geben (owner|admin|moderator|developer|supporter|teacher|student)",
77         privs = {privs = true},
78         func = function(admin, param)
79                 local name = param:split(' ')[1] or ""
80                 local player = minetest.get_player_by_name(name)
81         local rank = coronaserver.get_rank_by_name(param:split(' ')[2])
82                 if not rank then 
83             minetest.chat_send_player(admin, "Invalid Rank.")
84         else
85                         coronaserver.savedata.ranks[name] = rank.name
86                         coronaserver.save()
87                         if player then
88                                 player:set_nametag_attributes({color = rank.color})
89                         end
90                         minetest.chat_send_all(name .. " ist jetzt ein " .. minetest.colorize(rank.color, rank.name))
91                 end
92         end,
93 })