added energy

This commit is contained in:
cale 2016-03-31 13:51:15 +02:00
parent 21f6cdb87d
commit 983d8c0af0
5 changed files with 46 additions and 8 deletions

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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.

View File

@ -0,0 +1,3 @@
Farmer : Thank you!
Farmer : you can keep the wheat seeds and craft bread aut of them :)
You : Thank you :)