modstorage and inv storage

This commit is contained in:
kakalak-lumberJack 2018-02-19 14:11:00 -05:00
parent fbe1b75ef2
commit 39ded3e190

View File

@ -1,5 +1,8 @@
local cr_areas_file = minetest.get_worldpath().."/creative_areas.dat" local cr_areas_file = minetest.get_worldpath().."/creative_areas.dat"
local cr_areas = {} --local inv_file = minetest.get_worldpath().."/creative_areas_inv.dat"
local storage = minetest.get_mod_storage()
local cr_areas = minetest.deserialize(storage:get_string("cr_areas")) or {}
--------------- ---------------
-- Functions -- Functions
--------------- ---------------
@ -32,7 +35,8 @@ function make_cr_area(name, areaID)
end end
end end
table.insert(cr_areas, id) table.insert(cr_areas, id)
write_file(cr_areas_file, cr_areas) --write_file(cr_areas_file, cr_areas)
storage:set_string("cr_areas", minetest.serialize(cr_areas))
minetest.chat_send_player(name, "Area added to Creative Areas!") minetest.chat_send_player(name, "Area added to Creative Areas!")
else minetest.chat_send_player(name, "Not a valid area ID") else minetest.chat_send_player(name, "Not a valid area ID")
end end
@ -75,10 +79,16 @@ end
--------------------- ---------------------
--Initialize mod --Initialize mod
------------------- -------------------
--[[
local tbl = storage:to_table()
if tbl ~= nil then
cr_areas = tbl["fields"]
end
if cr_areas_file ~= nil then if cr_areas_file ~= nil then
cr_areas = load_file(cr_areas_file) cr_areas = load_file(cr_areas_file)
end end
]]--
-- Chat Commands -- Chat Commands
minetest.register_chatcommand("creative_area", { minetest.register_chatcommand("creative_area", {
description = "Sets area to grant players creative priv while inside it", description = "Sets area to grant players creative priv while inside it",
@ -106,6 +116,7 @@ minetest.register_globalstep(function(dtime)
for _, player in ipairs(minetest.get_connected_players()) do for _, player in ipairs(minetest.get_connected_players()) do
local pname = player:get_player_name() local pname = player:get_player_name()
local privs = minetest.get_player_privs(pname) local privs = minetest.get_player_privs(pname)
local inv = minetest.get_inventory({type="player", name=pname})
--if minetest.get_player_privs(pname).privs == nil then --Players with the "privs" priv will not have privileges effected. --if minetest.get_player_privs(pname).privs == nil then --Players with the "privs" priv will not have privileges effected.
if check_cr_area(player) == true then if check_cr_area(player) == true then
if not minetest.check_player_privs(pname, {creative = true}) then if not minetest.check_player_privs(pname, {creative = true}) then
@ -113,12 +124,24 @@ minetest.register_globalstep(function(dtime)
minetest.set_player_privs(pname, privs) minetest.set_player_privs(pname, privs)
local context = {page = sfinv.get_homepage_name(player)}--minetest.get_inventory{{type="detached", name="creative_"..pname}}--{page = sfinv.pages["creative_"..pname]} local context = {page = sfinv.get_homepage_name(player)}--minetest.get_inventory{{type="detached", name="creative_"..pname}}--{page = sfinv.pages["creative_"..pname]}
sfinv.set_player_inventory_formspec(player, context) sfinv.set_player_inventory_formspec(player, context)
local invlist = inv:get_list("main")
inv:set_list("saved", invlist)
local list = ""
for i = 1, #invlist do
list = list .." "..dump(invlist[i])
end
--write_file(inv_file,)
minetest.chat_send_player(pname, "You are in creative area.") minetest.chat_send_player(pname, "You are in creative area.")
end end
else else
if minetest.check_player_privs(pname, {creative=true}) then if minetest.check_player_privs(pname, {creative=true}) then
privs.creative = nil privs.creative = nil
minetest.set_player_privs(pname, privs) minetest.set_player_privs(pname, privs)
local saved = inv:get_list("saved")
if saved ~= nil then
inv:set_list("main", saved)
end
local context = {page = sfinv.get_homepage_name(player)} local context = {page = sfinv.get_homepage_name(player)}
sfinv.set_player_inventory_formspec(player, context) sfinv.set_player_inventory_formspec(player, context)
minetest.chat_send_player(pname, "You have left creative area.") minetest.chat_send_player(pname, "You have left creative area.")