added energy
This commit is contained in:
parent
21f6cdb87d
commit
983d8c0af0
@ -3,6 +3,7 @@
|
||||
quests = {}
|
||||
quests.player_quests = {}
|
||||
quests.file = minetest.get_worldpath() .. "/quests"
|
||||
quests.callback = nil
|
||||
|
||||
function quests.load_quests()
|
||||
local input = io.open(quests.file, "r")
|
||||
@ -37,6 +38,7 @@ function quests.add_quest(player, quest)
|
||||
print("[quests] add quest")
|
||||
table.insert(quests.player_quests[player], quest)
|
||||
quests.save_quests()
|
||||
return #quests.player_quests[player]
|
||||
end
|
||||
|
||||
quests.show_quests_form = "size[8,7.5;]"
|
||||
@ -80,6 +82,7 @@ minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||
if v.progress > (v.max-1) and v.done == false then
|
||||
xp.add_xp(digger, v.xp)
|
||||
v.done = true
|
||||
quests.callback(digger)
|
||||
end
|
||||
quests.save_quests()
|
||||
end
|
||||
@ -99,6 +102,7 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack
|
||||
if v.progress > (v.max-1) and v.done == false then
|
||||
xp.add_xp(placer, v.xp)
|
||||
v.done = true
|
||||
quests.callback(placer)
|
||||
end
|
||||
quests.save_quests()
|
||||
end
|
||||
|
@ -65,6 +65,7 @@ function story.generator.load_storys()
|
||||
local str = input:read("*all")
|
||||
if str then
|
||||
if minetest.deserialize(str) then
|
||||
print("[story] FILE : " .. str)
|
||||
story.generator.players_storys = minetest.deserialize(str)
|
||||
end
|
||||
else
|
||||
@ -108,7 +109,10 @@ function story.generator.gen_next_step(player)
|
||||
if next_part.quit then
|
||||
story.generator.players_storys[player:get_player_name()].pos = nil
|
||||
story.generator.players_storys[player:get_player_name()].part = ""
|
||||
story.generator.players_storys[player:get_player_name()].wait_for = nil
|
||||
story.generator.players_storys[player:get_player_name()].wait_pos = 0
|
||||
story.generator.players_storys[player:get_player_name()].wait = false
|
||||
print("[story] QUIT")
|
||||
return
|
||||
end
|
||||
|
||||
@ -116,8 +120,11 @@ function story.generator.gen_next_step(player)
|
||||
if next_part.wait then
|
||||
story.generator.players_storys[player:get_player_name()].wait = true
|
||||
story.generator.players_storys[player:get_player_name()].wait_pos = next_part.param
|
||||
story.generator.players_storys[player:get_player_name()].wait_for = next_part.param2
|
||||
else
|
||||
story.generator.players_storys[player:get_player_name()].part = next_part.part
|
||||
story.generator.players_storys[player:get_player_name()].wait_for = nil
|
||||
story.generator.players_storys[player:get_player_name()].wait = false
|
||||
story.generator.players_storys[player:get_player_name()].wait_pos = 0
|
||||
end
|
||||
|
||||
@ -125,7 +132,7 @@ function story.generator.gen_next_step(player)
|
||||
story.generator.save_storys()
|
||||
return
|
||||
else
|
||||
print("[ERROR][story] could not find part file")
|
||||
print("[ERROR][story] could not find part file : " .. (story.generator.players_storys[player:get_player_name()].part or "nothing"))
|
||||
return
|
||||
end
|
||||
end
|
||||
@ -135,6 +142,8 @@ function story.generator.new_player(player)
|
||||
story.generator.players_storys[player:get_player_name()] = {}
|
||||
story.generator.players_storys[player:get_player_name()].part = ""
|
||||
story.generator.players_storys[player:get_player_name()].wait_pos = 0
|
||||
story.generator.players_storys[player:get_player_name()].wait = false
|
||||
story.generator.players_storys[player:get_player_name()].wait_for = nil
|
||||
end
|
||||
|
||||
function story.generator.get_part(name)
|
||||
@ -186,6 +195,13 @@ function story.generator.get_quest(player)
|
||||
return nil
|
||||
end
|
||||
|
||||
quests.callback = function (player)
|
||||
print("[quest] done")
|
||||
if (story.generator.players_storys[player:get_player_name()].wait_for and story.generator.players_storys[player:get_player_name()].wait_for == "quest") then
|
||||
story.generator.gen_next_step(player)
|
||||
end
|
||||
end
|
||||
|
||||
function story.generator.run(part, player, line_pos)
|
||||
local out = {}
|
||||
print("[INFO] run script... " .. part)
|
||||
@ -224,7 +240,7 @@ function story.generator.run(part, player, line_pos)
|
||||
end
|
||||
end
|
||||
if cmd[1] == "$quest" and cmd[2] and cmd[3] and cmd[4] and cmd[5] and tonumber(cmd[4]) and tonumber(cmd[5]) then
|
||||
quests.add_quest(player:get_player_name(), {
|
||||
local q_id = quests.add_quest(player:get_player_name(), {
|
||||
quest_type = cmd[2],
|
||||
node = cmd[3],
|
||||
progress = 0,
|
||||
@ -262,7 +278,7 @@ function story.generator.run(part, player, line_pos)
|
||||
end
|
||||
end
|
||||
if cmd[1] == "$wait" then
|
||||
return {cmd="$wait", param=i, wait=true}
|
||||
return {cmd="$wait", param=i, wait=true, param2 = cmd[2] or "talk"}
|
||||
end
|
||||
if cmd[1] == "$spawn" and cmd[2] and cmd[3] then
|
||||
if places.pos[cmd[3]] then
|
||||
@ -359,14 +375,22 @@ minetest.register_entity("story:human", {
|
||||
-- shows the dialog
|
||||
if story.generator.players_storys[clicker:get_player_name()].pos then
|
||||
if vector.distance(self.object:getpos(), story.generator.players_storys[clicker:get_player_name()].pos) < 3 then
|
||||
minetest.show_formspec(clicker:get_player_name(), "story:story", story.get_talk_form(story.generator.players_storys[clicker:get_player_name()].text))
|
||||
story.generator.gen_next_step(clicker)
|
||||
print("[story] not near story position")
|
||||
if (story.generator.players_storys[clicker:get_player_name()].wait_for and story.generator.players_storys[clicker:get_player_name()].wait_for == "talk") or not(story.generator.players_storys[clicker:get_player_name()].wait_for) then
|
||||
story.generator.players_storys[clicker:get_player_name()].wait_for = nil
|
||||
minetest.show_formspec(clicker:get_player_name(), "story:story", story.get_talk_form(story.generator.players_storys[clicker:get_player_name()].text))
|
||||
story.generator.gen_next_step(clicker)
|
||||
else
|
||||
print("[story] waiting for something else")
|
||||
end
|
||||
-- TODO : delete npc after talking with it (or move it some where else)
|
||||
end
|
||||
else
|
||||
story.generator.players_storys[clicker:get_player_name()].wait_for = nil
|
||||
story.generator.players_storys[clicker:get_player_name()].part = story.generator.get_quest(clicker)
|
||||
story.generator.players_storys[clicker:get_player_name()].pos = self.object:getpos()
|
||||
story.generator.players_storys[clicker:get_player_name()].wait_pos = 0
|
||||
story.generator.players_storys[clicker:get_player_name()].wait = false
|
||||
story.generator.gen_next_step(clicker)
|
||||
end
|
||||
end,
|
||||
|
@ -1,5 +1,11 @@
|
||||
$dialog quest_1
|
||||
$create
|
||||
$wait
|
||||
$quest dignode farming:wheat_5 20 10
|
||||
$wait quest
|
||||
$dialog quest_1_done
|
||||
$wait
|
||||
$quest placenode farming:wheat_1 20 10
|
||||
$wait quest
|
||||
$dialog quest_1_done_2
|
||||
$wait
|
||||
$quit
|
||||
|
@ -1,3 +1,4 @@
|
||||
Farmer : Thank you!
|
||||
Farmer : you can keep the wheat seeds and carft bread aut of them :)
|
||||
You : Thank you :)
|
||||
Farmer : Could you replant the wheat?
|
||||
You : Ok
|
||||
Farmer : Thank you very much, I am really busy at the moment.
|
||||
|
3
mods/story/parts/quest_1_done_2.dialog
Normal file
3
mods/story/parts/quest_1_done_2.dialog
Normal file
@ -0,0 +1,3 @@
|
||||
Farmer : Thank you!
|
||||
Farmer : you can keep the wheat seeds and craft bread aut of them :)
|
||||
You : Thank you :)
|
Loading…
x
Reference in New Issue
Block a user