]> git.lizzy.rs Git - coronaserver.git/blob - advprivs.lua
Gave the Player Rank a prefix
[coronaserver.git] / advprivs.lua
1 coronaserver.savedata.grantall = coronaserver.savedata.grantall or {}
2 coronaserver.savedata.revokeall = coronaserver.savedata.revokeall or {}
3
4 function coronaserver.update_privs(player)
5         local name = player:get_player_name()
6         local privs = minetest.get_player_privs(name)
7         for _, priv in pairs(coronaserver.savedata.grantall) do
8                 privs[priv] = true
9         end
10         for _, priv in pairs(coronaserver.savedata.revokeall) do
11                 privs[priv] = nil
12         end
13         minetest.set_player_privs(name, privs)
14 end
15
16 function coronaserver.update_privs_all()
17         local players = minetest.get_connected_players()
18         for _, player in pairs(players) do
19                 coronaserver.update_privs(player)
20         end
21 end
22
23 minetest.register_on_joinplayer(coronaserver.update_privs)
24
25 minetest.register_chatcommand("grantall", {
26         description = "Grant a privilegue to players when they join",
27         param = "<priv>",
28         privs = {privs = true},
29         func = function(name, param)
30                 table.insert(coronaserver.savedata.grantall, param)
31                 coronaserver.update_privs_all()
32                 coronaserver.save()
33         end
34 })
35
36 minetest.register_chatcommand("revokeall", {
37         description = "Revoke a privilegue from players when they join",
38         param = "<priv>",
39         privs = {privs = true},
40         func = function(name, param)
41                 table.insert(coronaserver.savedata.revokeall, param)
42                 coronaserver.update_privs_all()
43                 coronaserver.save()
44         end
45 })
46
47
48 minetest.register_chatcommand("remove_from_allprivs", {
49         description = "Remove a priv from /grantall or /revokeall",
50         param = "<priv>",
51         privs = {privs = true},
52         func = function(name, param)
53                 local function rmpriv(tab)
54                         for i, priv in pairs(tab) do
55                                 if priv == param then
56                                         table.remove(tab, i)
57                                         return rmpriv(tab)
58                                 end
59                         end
60                 end
61                 rmpriv(coronaserver.savedata.revokeall)
62                 rmpriv(coronaserver.savedata.grantall)
63                 coronaserver.save()
64         end
65 })
66
67 minetest.register_chatcommand("show_allprivs", {
68         description = "Show list of /grantall and /revokall ",
69         param = "<priv>",
70         privs = {privs = true},
71         func = function(name, param)
72                 minetest.chat_send_player(name, "/grantall: " .. table.concat(coronaserver.savedata.grantall, ", "))
73                 minetest.chat_send_player(name, "/revokeall: " .. table.concat(coronaserver.savedata.revokeall, ", "))
74         end
75 })
76