initial files added
This commit is contained in:
commit
10412ab355
|
@ -0,0 +1,7 @@
|
||||||
|
# gui_privs
|
||||||
|
a minetest privilege manager for the sfinv inventory
|
||||||
|
|
||||||
|
## Depends
|
||||||
|
sfinv
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
local S = minetest.get_translator("sfinv")
|
||||||
|
|
||||||
|
gui_privs = {}
|
||||||
|
gui_privs.selection_index = {}
|
||||||
|
gui_privs.privs_index = {}
|
||||||
|
|
||||||
|
gui_privs.enable = function(playername, privname)
|
||||||
|
minetest.chat_send_player(playername, "you enable the privilege ".. privname)
|
||||||
|
local privs = minetest.get_player_privs(playername)
|
||||||
|
privs[privname] = true
|
||||||
|
minetest.set_player_privs(playername, privs)
|
||||||
|
end
|
||||||
|
|
||||||
|
gui_privs.disable = function(playername, privname)
|
||||||
|
minetest.chat_send_player(playername, "you disabled the privilege ".. privname)
|
||||||
|
local privs = minetest.get_player_privs(playername)
|
||||||
|
privs[privname] = nil
|
||||||
|
minetest.set_player_privs(playername, privs)
|
||||||
|
end
|
||||||
|
|
||||||
|
sfinv.register_page("gui_privs:privileges", {
|
||||||
|
title = S("Privileges"),
|
||||||
|
get = function(self, player, context)
|
||||||
|
local privs = minetest.registered_privileges
|
||||||
|
local priv_string = ""
|
||||||
|
local first = true
|
||||||
|
local i = 1
|
||||||
|
for k, v in pairs(privs) do
|
||||||
|
gui_privs.privs_index[i] = k
|
||||||
|
i = i + 1
|
||||||
|
local enabled = " - disabled"
|
||||||
|
if minetest.get_player_privs(player:get_player_name())[k] then
|
||||||
|
enabled = " - enabled"
|
||||||
|
end
|
||||||
|
if first then
|
||||||
|
first = false
|
||||||
|
else
|
||||||
|
k = "," .. k
|
||||||
|
end
|
||||||
|
k = k .. enabled
|
||||||
|
priv_string = priv_string .. k
|
||||||
|
end
|
||||||
|
return sfinv.make_formspec(player, context, [[
|
||||||
|
textlist[0,0;8,3.5;privileges;]]..priv_string..[[]
|
||||||
|
button[0,4;2,1;enable;Enable]
|
||||||
|
button[3,4;2,1;disable;Disable]
|
||||||
|
]], true)
|
||||||
|
end,
|
||||||
|
is_in_nav = function(self, player, context)
|
||||||
|
if minetest.get_player_privs(player:get_player_name())["privs"] then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_player_receive_fields = function(self, player, context, fields)
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
if fields.privileges ~= nil then
|
||||||
|
local index = tonumber(fields.privileges:sub(5))
|
||||||
|
gui_privs.selection_index[playername] = index
|
||||||
|
end
|
||||||
|
|
||||||
|
local selected_priv_idx = gui_privs.selection_index[playername]
|
||||||
|
local selected_priv = gui_privs.privs_index[selected_priv_idx]
|
||||||
|
if fields.enable ~= nil then
|
||||||
|
gui_privs.enable(playername, selected_priv)
|
||||||
|
sfinv.set_player_inventory_formspec(player, context)
|
||||||
|
elseif fields.disable ~= nil then
|
||||||
|
gui_privs.disable(playername, selected_priv)
|
||||||
|
sfinv.set_player_inventory_formspec(player, context)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue