100 lines
3.3 KiB
Lua
100 lines
3.3 KiB
Lua
--Creative Mode
|
|
local modpath=minetest.get_modpath("adventures")
|
|
dofile(modpath.."/creativeGeneral.lua")
|
|
dofile(modpath.."/creativeInitialStuff.lua")
|
|
dofile(modpath.."/creativeQuest.lua")
|
|
dofile(modpath.."/Book.lua")
|
|
|
|
minetest.register_on_joinplayer(function(obj)
|
|
if adventures.started then return end
|
|
local file = io.open(minetest.get_worldpath().."/adventures_previousmode", "r")
|
|
if(file:read("*l") ~= adventures.creative) then
|
|
file:close()
|
|
for pos,data in pairs(adventures.sourceData) do
|
|
minetest.env:set_node({x=data[2],y=data[3],z=data[4]}, {name=data[1]})
|
|
end
|
|
file = io.open(minetest.get_worldpath().."/adventures_previousmode", "w")
|
|
file:write(adventures.creative)
|
|
file:close()
|
|
else
|
|
file:close()
|
|
for pos,data in pairs(adventures.sourceData) do
|
|
adventures.sources[adventures.positionToString(pos)] = {name=data[1],pos={x=data[2],y=data[3],z=data[4]}}
|
|
end
|
|
end
|
|
adventures.started = true
|
|
end)
|
|
|
|
minetest.register_chatcommand("save", {
|
|
description = "saveAdventure : Save all node data to files",
|
|
func = function(name, param)
|
|
local saved = dofile(minetest.get_modpath("adventures").."/encode.lua")
|
|
if saved then
|
|
minetest.chat_send_player(name, "ADVENTURE SAVED")
|
|
else
|
|
minetest.chat_send_player(name, "ADVENTURE NOT SAVED")
|
|
end
|
|
end,
|
|
})
|
|
|
|
|
|
local function showBookData(name)
|
|
local lines = adventures.registered_books[name]
|
|
local story = ""
|
|
for _,line in pairs(lines) do
|
|
story = story..line.."\n"
|
|
end
|
|
return "size[5,5]field[0.25,0.25;3,1;bookname;;"..name.."]textarea[0.25,1;5,4;bookstory;;"..story.."]"..
|
|
"button[2.75,0;1,0.75;bookreturn;<-]button[3.5,0;1,0.75;booksave;Save]button[4.5,0;.75,.75;bookdelete;X]"
|
|
end
|
|
local function showBookList()
|
|
local str = "field[0.25,0.25;4,1;bookname;;]button[4,0;1.5,0.75;bookcreate;Create]"
|
|
local x = 0
|
|
local y = 1
|
|
for name,story in pairs(adventures.registered_books) do
|
|
if story ~= nil then
|
|
str = str.."button["..x..","..y..";1.25,0.75;"..name..";"..name.."]"
|
|
x = x+1
|
|
if x == 5 then
|
|
x = 0
|
|
y = y+1
|
|
end
|
|
end
|
|
end
|
|
str = "size[5.5,"..(y+3).."]"..str
|
|
return str
|
|
end
|
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
if fields.bookreturn then
|
|
minetest.show_formspec(player:get_player_name(), "adventures:books", showBookList())
|
|
end
|
|
if fields.bookcreate then
|
|
adventures.registered_books[fields.bookname] = {}
|
|
print("NAME: "..fields.bookname)
|
|
minetest.show_formspec(player:get_player_name(), "adventures:books", showBookList())
|
|
end
|
|
if fields.bookdelete then
|
|
adventures.registered_books[fields.bookname] = nil
|
|
minetest.show_formspec(player:get_player_name(), "adventures:books", showBookList())
|
|
end
|
|
if fields.booksave then
|
|
local lines = fields.bookstory:split("\n")
|
|
local story = {}
|
|
for _,line in pairs(lines) do
|
|
table.insert(story, line)
|
|
end
|
|
adventures.registered_books[fields.bookname] = story
|
|
minetest.show_formspec(player:get_player_name(), "adventures:book("..fields.bookname..")", showBookData(fields.bookname))
|
|
end
|
|
for name,story in pairs(adventures.registered_books) do
|
|
if fields[name] then
|
|
minetest.show_formspec(player:get_player_name(), "adventures:book("..name..")", showBookData(name))
|
|
end
|
|
end
|
|
end)
|
|
minetest.register_chatcommand("books", {
|
|
description = "saveAdventure : Save all node data to files",
|
|
func = function(name, param)
|
|
minetest.show_formspec(name, "adventures:books", showBookList())
|
|
end,
|
|
}) |