69 lines
2.7 KiB
Lua
69 lines
2.7 KiB
Lua
local function updateQuest(meta)
|
|
return "size[8,9]"..
|
|
"field[0.25,0.25;5,1;name;Quest Name;"..meta:get_string("name").."]"..
|
|
"field[0.25,1.25;5,1;objective;Objective;"..meta:get_string("objective").."]"..
|
|
"field[0.25,2.25;5,1;description;Description;"..meta:get_string("description").."]button[5.5,0;2,0.75;save;Save]"..
|
|
"label[0,2.5;Quest Items]list[context;items;0,3;2,2;]"..
|
|
"label[6,2.5;Quest Reward]list[context;reward;6,3;2,2;]"..
|
|
"button[2.325,4;.75,.5;idminusten;<<]button[2.925,4;.75,.5;idminusone;<]label[3.75,3.875;"..meta:get_int("id").."]button[4.325,4;.75,.5;idplusone;>]button[4.925,4;.75,.5;idplusten;>>]"..
|
|
"list[current_player;main;0,5;8,4]"
|
|
end
|
|
|
|
minetest.register_node("adventures:quest", {
|
|
description = "Quest",
|
|
walkable = false,
|
|
groups = {crumbly=3},
|
|
tiles = {"adventures_quest.png"},
|
|
on_construct = function(pos)
|
|
adventures.sources[adventures.positionToString(pos)] = {name="adventures:quest",pos=pos}
|
|
local meta = minetest.env:get_meta(pos)
|
|
local data = adventures.sourceData[adventures.positionToString(pos)]
|
|
if data ~= nil then
|
|
meta:set_string("name", data[5])
|
|
meta:set_string("objective", data[6])
|
|
meta:set_string("description", data[7])
|
|
meta:set_int("id", data[8])
|
|
else
|
|
meta:set_string("name", "")
|
|
meta:set_string("objective", "")
|
|
meta:set_string("description", "")
|
|
meta:set_int("id", 0)
|
|
end
|
|
meta:set_string("formspec", updateQuest(meta))
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("items", 4)
|
|
inv:set_size("reward", 4)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local meta = minetest.env:get_meta(pos)
|
|
if fields.save then
|
|
meta:set_string("name", fields.name)
|
|
meta:set_string("objective", fields.objective)
|
|
meta:set_string("description", fields.description)
|
|
end
|
|
if fields.idminusten then meta:set_int("id", meta:get_int("id")-10) end
|
|
if fields.idminusone then meta:set_int("id", meta:get_int("id")-1) end
|
|
if fields.idplusone then meta:set_int("id", meta:get_int("id")+1) end
|
|
if fields.idplusten then meta:set_int("id", meta:get_int("id")+10) end
|
|
meta:set_string("formspec", updateQuest(meta))
|
|
end,
|
|
on_destruct = function(pos)
|
|
adventures.sources[adventures.positionToString(pos)] = nil
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("adventures:quest_destination", {
|
|
description = "Quest Destination",
|
|
walkable = false,
|
|
groups = {crumbly=3},
|
|
tiles = {"adventures_questDestination.png"},
|
|
on_construct = function(pos)
|
|
adventures.sources[adventures.positionToString(pos)] = {name="adventures:quest",pos=pos}
|
|
local meta = minetest.env:get_meta(pos)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
end,
|
|
on_destruct = function(pos)
|
|
adventures.sources[adventures.positionToString(pos)] = nil
|
|
end,
|
|
}) |