with saves
This commit is contained in:
parent
1546d73e87
commit
4208b97808
@ -91,8 +91,8 @@ end
|
|||||||
local function panel_code(pos,program)
|
local function panel_code(pos,program)
|
||||||
return button(10,0,"vbots_gui_run.png","run",true)
|
return button(10,0,"vbots_gui_run.png","run",true)
|
||||||
..button(11,0,"vbots_gui_check.png","check")
|
..button(11,0,"vbots_gui_check.png","check")
|
||||||
..button(12,0,"vbots_gui_load.png","load")
|
..button(12,0,"vbots_gui_load.png","load",true)
|
||||||
..button(13,0,"vbots_gui_save.png","save")
|
..button(13,0,"vbots_gui_save.png","save",true)
|
||||||
..highlight(10,0,4,1,"5","5","f")
|
..highlight(10,0,4,1,"5","5","f")
|
||||||
|
|
||||||
..button(15,0,"vbots_gui_exit.png","exit",true)
|
..button(15,0,"vbots_gui_exit.png","exit",true)
|
||||||
|
@ -23,18 +23,18 @@ minetest.register_on_player_receive_fields(function(player, bot_key, fields)
|
|||||||
if fields.run then
|
if fields.run then
|
||||||
minetest.after(0, vbots.bot_togglestate, bot_data.pos, "on")
|
minetest.after(0, vbots.bot_togglestate, bot_data.pos, "on")
|
||||||
end
|
end
|
||||||
|
if fields.save then
|
||||||
|
vbots.save(bot_data.pos)
|
||||||
|
end
|
||||||
|
if fields.load then
|
||||||
|
vbots.load(bot_data.pos,player)
|
||||||
|
end
|
||||||
if fields.quit=="true" then
|
if fields.quit=="true" then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if fields.commands then
|
if fields.commands then
|
||||||
meta:set_int("panel", 0)
|
meta:set_int("panel", 0)
|
||||||
end
|
end
|
||||||
if fields.save then
|
|
||||||
--
|
|
||||||
end
|
|
||||||
if fields.load then
|
|
||||||
--
|
|
||||||
end
|
|
||||||
if fields.player_inv then
|
if fields.player_inv then
|
||||||
meta:set_int("panel", 1)
|
meta:set_int("panel", 1)
|
||||||
end
|
end
|
||||||
|
44
init.lua
44
init.lua
@ -7,7 +7,6 @@
|
|||||||
vbots={}
|
vbots={}
|
||||||
vbots.modpath = minetest.get_modpath("vbots")
|
vbots.modpath = minetest.get_modpath("vbots")
|
||||||
vbots.bot_info = {}
|
vbots.bot_info = {}
|
||||||
vbots.storage = minetest.get_mod_storage()
|
|
||||||
vbots.steptime = 0.3
|
vbots.steptime = 0.3
|
||||||
|
|
||||||
local trashInv = minetest.create_detached_inventory(
|
local trashInv = minetest.create_detached_inventory(
|
||||||
@ -18,8 +17,51 @@ local trashInv = minetest.create_detached_inventory(
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
trashInv:set_size("main", 1)
|
trashInv:set_size("main", 1)
|
||||||
|
local mod_storage = minetest.get_mod_storage()
|
||||||
|
|
||||||
|
|
||||||
|
vbots.save = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local botname = meta:get_string("name")
|
||||||
|
local meta_table = meta:to_table()
|
||||||
|
local inv_list = {}
|
||||||
|
for i,t in pairs(meta_table.inventory) do
|
||||||
|
for _,s in pairs(t) do
|
||||||
|
if s and s:get_count()>0 then
|
||||||
|
inv_list[#inv_list+1] = i.." "..s:get_name().." "..s:get_count()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local clean_meta = {meta_table.fields, inv_list}
|
||||||
|
mod_storage:set_string(botname,minetest.serialize(clean_meta))
|
||||||
|
end
|
||||||
|
|
||||||
|
vbots.load = function(pos,player)
|
||||||
|
local data = mod_storage:to_table().fields
|
||||||
|
local bot_list = ""
|
||||||
|
for n,d in pairs(data) do
|
||||||
|
bot_list = bot_list..n..","
|
||||||
|
end
|
||||||
|
bot_list = bot_list:sub(1,#bot_list-1)
|
||||||
|
local formspec = "size[5,9;]"..
|
||||||
|
"textlist[0,0;5,9;saved;"..bot_list.."]"
|
||||||
|
minetest.show_formspec(player:get_player_name(), "loadbot", formspec)
|
||||||
|
--print(bot_list)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_player_receive_fields(function(player, key, fields)
|
||||||
|
local data = mod_storage:to_table().fields
|
||||||
|
local bot_list = {}
|
||||||
|
for n,d in pairs(data) do
|
||||||
|
bot_list[#bot_list+1] = n
|
||||||
|
end
|
||||||
|
if key == "loadbot" then
|
||||||
|
minetest.close_formspec(player:get_player_name(), "loadbot")
|
||||||
|
if fields.saved then
|
||||||
|
print( bot_list[tonumber(string.split(fields.saved,":")[2])] )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
-- Generate 32 bit key for formspec identification
|
-- Generate 32 bit key for formspec identification
|
||||||
|
@ -59,14 +59,23 @@ local function bot_init(pos, placer)
|
|||||||
vbots.bot_info[bot_key] = { owner = bot_owner, pos = pos, name = bot_name}
|
vbots.bot_info[bot_key] = { owner = bot_owner, pos = pos, name = bot_name}
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_int("program",0)
|
meta:set_int("program",0)
|
||||||
|
meta:mark_as_private("program")
|
||||||
meta:set_int("panel",0)
|
meta:set_int("panel",0)
|
||||||
|
meta:mark_as_private("panel")
|
||||||
meta:set_string("key", bot_key)
|
meta:set_string("key", bot_key)
|
||||||
|
meta:mark_as_private("key")
|
||||||
meta:set_string("owner", bot_owner)
|
meta:set_string("owner", bot_owner)
|
||||||
|
meta:mark_as_private("owner")
|
||||||
meta:set_string("infotext", bot_name .. " (" .. bot_owner .. ")")
|
meta:set_string("infotext", bot_name .. " (" .. bot_owner .. ")")
|
||||||
|
meta:mark_as_private("infotext")
|
||||||
meta:set_string("name", bot_name)
|
meta:set_string("name", bot_name)
|
||||||
|
meta:mark_as_private("name")
|
||||||
meta:set_int("PC", 0)
|
meta:set_int("PC", 0)
|
||||||
|
meta:mark_as_private("PC")
|
||||||
meta:set_int("PR", 0)
|
meta:set_int("PR", 0)
|
||||||
|
meta:mark_as_private("PR")
|
||||||
meta:set_string("stack","")
|
meta:set_string("stack","")
|
||||||
|
meta:mark_as_private("stack")
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
inv:set_size("p0", 56)
|
inv:set_size("p0", 56)
|
||||||
inv:set_size("p1", 56)
|
inv:set_size("p1", 56)
|
||||||
@ -369,7 +378,7 @@ local function register_bot(node_name,node_desc,node_tiles,node_groups)
|
|||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
legacy_facedir_simple = true,
|
legacy_facedir_simple = true,
|
||||||
groups = node_groups,
|
groups = node_groups,
|
||||||
light = core.MAXLIGHT,
|
light_source = 14,
|
||||||
on_blast = function() end,
|
on_blast = function() end,
|
||||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
bot_init(pos, placer)
|
bot_init(pos, placer)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user