From 435a3556fa6c1abbee76488c7661fda6a14b0314 Mon Sep 17 00:00:00 2001 From: cale Date: Sat, 20 Aug 2016 13:00:27 +0200 Subject: [PATCH] fixed bug in skills mod + added quest button to the crafting guide --- mods/crafting_guide/depends.txt | 1 + mods/crafting_guide/init.lua | 4 ++- mods/quests/init.lua | 57 ++++++++++++++++++--------------- mods/skills/init.lua | 3 +- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/mods/crafting_guide/depends.txt b/mods/crafting_guide/depends.txt index 4ad96d5..01e8a73 100644 --- a/mods/crafting_guide/depends.txt +++ b/mods/crafting_guide/depends.txt @@ -1 +1,2 @@ default +quests diff --git a/mods/crafting_guide/init.lua b/mods/crafting_guide/init.lua index 87ed9d7..61980d3 100644 --- a/mods/crafting_guide/init.lua +++ b/mods/crafting_guide/init.lua @@ -3,7 +3,7 @@ crafting_guide = {} crafting_guide.form = "size[3,3;]"..default.gui_colors..default.gui_bg; crafting_guide.form_back = "size[3,4;]"..default.gui_colors..default.gui_bg.."button[0,3;3,1;btn_back;Back]"; -crafting_guide.form_items = "size[8,7]"..default.gui_colors..default.gui_bg.."button[0,6;3,1;btn_left;<]button[5,6;3,1;btn_right;>]" +crafting_guide.form_items = "size[8,7]"..default.gui_colors..default.gui_bg.."button[0,6;3,1;btn_left;<]button[5,6;3,1;btn_right;>]button[3,6;2,1;btn_quests;Quests]" crafting_guide.pages = {} @@ -89,6 +89,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.btn_right then crafting_guide.pages[player:get_player_name()] = crafting_guide.pages[player:get_player_name()] +1 minetest.show_formspec(player:get_player_name(), "crafting_guide:book_items", crafting_guide.get_item_formspec(crafting_guide.pages[player:get_player_name()])) + elseif fields.btn_quests then + minetest.show_formspec(player:get_player_name(), "quests:show_quests", quests.get_formspec(player:get_player_name())) elseif fields.quit then crafting_guide.pages[player:get_player_name()] = nil else diff --git a/mods/quests/init.lua b/mods/quests/init.lua index 89a320a..cd8d8f9 100644 --- a/mods/quests/init.lua +++ b/mods/quests/init.lua @@ -186,35 +186,39 @@ function quests.format_goal(player, quest, goal) end end +function quests.get_formspec(name) + local player_quests = quests.player_quests[name] + if not player_quests or #player_quests == 0 then + local s = quests.show_quests_form + s = string.format(s, "You have not got any quests yet.") + return s + end + + local s = quests.show_quests_form + local txt = "" + for _, quest in pairs(player_quests) do + if quest.done then + txt = txt .. " -> " .. (quest.title or "[NO TITLE]") .. " (Completed)\n" + else + txt = txt .. " -> " .. (quest.title or "[NO TITLE]") .. "\n" + for _, goal in pairs(quest.goals) do + if not goal.requires or goal.requires.done then + txt = txt .. quests.format_goal(name, quest, goal) + end + end + end + end + s = string.format(s, minetest.formspec_escape(txt)) + + return s +end + minetest.register_chatcommand("quests", { params = "", description = "Shows your quests", privs = {}, func = function(name, text) - local player_quests = quests.player_quests[name] - if not player_quests or #player_quests == 0 then - local s = quests.show_quests_form - s = string.format(s, "You have not got any quests yet.") - minetest.show_formspec(name, "quests:show_quests", s) - return - end - - local s = quests.show_quests_form - local txt = "" - for _, quest in pairs(player_quests) do - if quest.done then - txt = txt .. " -> " .. (quest.title or "[NO TITLE]") .. " (Completed)\n" - else - txt = txt .. " -> " .. (quest.title or "[NO TITLE]") .. "\n" - for _, goal in pairs(quest.goals) do - if not goal.requires or goal.requires.done then - txt = txt .. quests.format_goal(name, quest, goal) - end - end - end - end - s = string.format(s, minetest.formspec_escape(txt)) - minetest.show_formspec(name, "quests:show_quests", s) + minetest.show_formspec(name, "quests:show_quests", quests.get_formspec(name)) return true, "" end, }) @@ -246,13 +250,14 @@ minetest.register_on_newplayer(function(player) --tutorial local name = player:get_player_name() local quest = quests.new(name, "Tutorial", "Hey you!\nI didnt see you before. Are you new here?\nOh, Ok.\nI will help you to find the city \"NAME HERE\".\nYou will be save there.\n But first you need some basic equipment!") - local q1 = quests.add_dig_goal(quest, "Harvest dirt", {"default:dirt"}, 10, "You need to harvest some Dirt to get stones!") + local q1 = quests.add_dig_goal(quest, "Harvest dirt", {"default:dirt", "default:grass"}, 10, "You need to harvest some Dirt to get stones!") local q2 = quests.add_dig_goal(quest, "Harvest Grass", {"default:plant_grass", "default:plant_grass_2", "default:plant_grass_3", "default:plant_grass_4", "default:plant_grass_5"}, 12, "Now you need to get some Grass to craft strings.") local q3 = quests.add_dig_goal(quest, "Harvest Leaves", {"default:leaves_1", "default:leaves_2", "default:leaves_3" ,"default:leaves_4"}, 6, "Harvest some leaves to craft twigs.") - local q4 = quests.add_place_goal(quest, "Place Workbench", {"default:workbench"}, 1, "You should craft a workbench and place it in front of you!", "Great! The tutorial ends here. If you want to know how to craft things just goto the RPGtest wiki.\nBut I think cdqwertz will add a crafting guide soon.") + local q4 = quests.add_place_goal(quest, "Place Workbench", {"default:workbench"}, 1, "You should craft a workbench and place it in front of you!", "Great! The tutorial ends here. If you want to know how to craft things,\n just open the crafting guide I gave you.\nYou can find all craftable items there!") q3.reward = "default:wood 3" + q4.reward = "crafting_guide:book" q2.requires = q1 q3.requires = q2 diff --git a/mods/skills/init.lua b/mods/skills/init.lua index 0af4777..d2584e4 100644 --- a/mods/skills/init.lua +++ b/mods/skills/init.lua @@ -9,6 +9,7 @@ minetest.register_on_newplayer(function(player) for s,a in pairs(skills.all_skills) do skills.lvls[player:get_player_name()][s] = 1 end + skills.save_skills() end) function skills.get_dmg(lvl) @@ -301,7 +302,7 @@ minetest.override_item("default:stone_with_diamond", { minetest.override_item("default:stone", { on_dig = function(pos, node, player) - if skills.lvls[player:get_player_name()]["miner"] then + if skills.lvls[player:get_player_name()] and skills.lvls[player:get_player_name()]["miner"] then if skills.lvls[player:get_player_name()]["miner"] > 1 then if math.random(0, 20) == 1 then xp.add_xp(player,10)