Fix saving of ranks, fix missing privs when rank is changed

master
Elias Fleckenstein 2020-05-26 16:51:36 +02:00
parent 55b494e4dc
commit 4725bbd95b
3 changed files with 38 additions and 48 deletions

View File

@ -29,7 +29,6 @@ minetest.register_chatcommand("grantall", {
func = function(name, param)
table.insert(coronaserver.savedata.grantall, param)
coronaserver.update_privs_all()
coronaserver.save()
end
})
@ -40,7 +39,6 @@ minetest.register_chatcommand("revokeall", {
func = function(name, param)
table.insert(coronaserver.savedata.revokeall, param)
coronaserver.update_privs_all()
coronaserver.save()
end
})
@ -60,7 +58,6 @@ minetest.register_chatcommand("remove_from_allprivs", {
end
rmpriv(coronaserver.savedata.revokeall)
rmpriv(coronaserver.savedata.grantall)
coronaserver.save()
end
})

View File

@ -1,16 +1,38 @@
local function ReverseTable(t)
local reversedTable = {}
local itemCount = #t
for k, v in ipairs(t) do
reversedTable[itemCount + 1 - k] = v
end
return reversedTable
end
coronaserver.ranks = {
{
name = "owner",
color = "#FF2D8D",
tag = "[OWNER]",
name = "student",
color = "#BBBBBB",
tag = "[SCHÜLER*IN]",
privs = {student = true, interact = true, shout = true, fast = true, spawn = true, home = true, zoom = true, pvp = true, iblocks = true},
},
{
name = "teacher",
color = "#16AE00",
tag = "[LEHRER*IN / PÄDAGOG*IN]",
privs = {fly = true, teacher = true, creative = true, areas = true, student = false}
},
{
name = "supporter",
color = "#EE6E00",
tag = "[SUPPORTER]",
privs = {kick = true},
},
{
name = "moderator",
color = "#001FFF",
tag = "[MODERATOR]",
privs = {server = true, ban = true, worldedit = true, vanish = true, ["rename"] = true},
},
{
name = "developer",
color = "#EBEE00",
tag = "[ENTWICKLER*IN]",
privs = {privs = true},
},
{
name = "hacker",
color = "#000000",
tag = "[HACKER]",
privs = {},
},
{
@ -20,41 +42,11 @@ coronaserver.ranks = {
privs = {},
},
{
name = "hacker",
color = "#000000",
tag = "[HACKER]",
name = "owner",
color = "#FF2D8D",
tag = "[OWNER]",
privs = {},
},
{
name = "developer",
color = "#EBEE00",
tag = "[ENTWICKLER]",
privs = {privs = true},
},
{
name = "moderator",
color = "#001FFF",
tag = "[MODERATOR]",
privs = {server = true, ban = true, worldedit = true, vanish = true, ["rename"] = true},
},
{
name = "supporter",
color = "#EE6E00",
tag = "[SUPPORTER]",
privs = {kick = true},
},
{
name = "teacher",
color = "#16AE00",
tag = "[LEHRER]",
privs = {fly = true, teacher = true, creative = true, areas = true, student = false}
},
{
name = "student",
color = "#BBBBBB",
tag = "[SCHÜLER]",
privs = {student = true},
}
}
coronaserver.savedata.ranks = coronaserver.savedata.ranks or {}
function coronaserver.get_rank(name)
@ -106,7 +98,7 @@ minetest.register_chatcommand("rank", {
else
coronaserver.savedata.ranks[target] = rank
local privs = {}
for _, r in pairs(ReverseTable(coronaserver.ranks)) do
for _, r in pairs(coronaserver.ranks) do
for k, v in pairs(r.privs) do
privs[k] = v
end

View File

@ -13,3 +13,4 @@ function coronaserver.save()
file:close()
end
coronaserver.load()
minetest.register_on_shutdown(coronaserver.save)