From 69ce8e826682e79716c114f7a429e11a4f2fc00b Mon Sep 17 00:00:00 2001 From: Wouters Dorian Date: Wed, 22 Jul 2015 00:04:54 +0200 Subject: [PATCH] Add quest framework and basic periodic quest support --- mods/mff/README.md | 5 + mods/mff/mff_core/init.lua | 2 + mods/mff/mff_introspect/UPCOMING | 0 mods/mff/mff_quests/depends.txt | 3 + mods/mff/mff_quests/init.lua | 119 ++++++++ mods/mff/modpack.txt | 0 mods/quests/README | 82 +++++ mods/quests/central_message.lua | 12 + mods/quests/core.lua | 184 ++++++++++++ mods/quests/depends.txt | 4 + mods/quests/formspecs.lua | 284 ++++++++++++++++++ mods/quests/hud.lua | 233 ++++++++++++++ mods/quests/init.lua | 66 ++++ mods/quests/inventory_plus.lua | 9 + mods/quests/locale/de.txt | 20 ++ mods/quests/locale/template.txt | 20 ++ mods/quests/sounds/quests_failed.ogg | Bin 0 -> 50022 bytes mods/quests/sounds/quests_new.ogg | Bin 0 -> 19777 bytes mods/quests/sounds/quests_success.ogg | Bin 0 -> 28051 bytes .../quests/textures/inventory_plus_quests.png | Bin 0 -> 3397 bytes mods/quests/textures/quests_questbar.png | Bin 0 -> 155 bytes .../textures/quests_questbar_background.png | Bin 0 -> 337 bytes mods/quests/unified_inventory.lua | 47 +++ 23 files changed, 1090 insertions(+) create mode 100644 mods/mff/README.md create mode 100644 mods/mff/mff_core/init.lua create mode 100644 mods/mff/mff_introspect/UPCOMING create mode 100644 mods/mff/mff_quests/depends.txt create mode 100644 mods/mff/mff_quests/init.lua create mode 100644 mods/mff/modpack.txt create mode 100644 mods/quests/README create mode 100644 mods/quests/central_message.lua create mode 100644 mods/quests/core.lua create mode 100644 mods/quests/depends.txt create mode 100644 mods/quests/formspecs.lua create mode 100644 mods/quests/hud.lua create mode 100644 mods/quests/init.lua create mode 100644 mods/quests/inventory_plus.lua create mode 100644 mods/quests/locale/de.txt create mode 100644 mods/quests/locale/template.txt create mode 100644 mods/quests/sounds/quests_failed.ogg create mode 100644 mods/quests/sounds/quests_new.ogg create mode 100644 mods/quests/sounds/quests_success.ogg create mode 100644 mods/quests/textures/inventory_plus_quests.png create mode 100644 mods/quests/textures/quests_questbar.png create mode 100644 mods/quests/textures/quests_questbar_background.png create mode 100644 mods/quests/unified_inventory.lua diff --git a/mods/mff/README.md b/mods/mff/README.md new file mode 100644 index 00000000..c4f1a1b1 --- /dev/null +++ b/mods/mff/README.md @@ -0,0 +1,5 @@ +* MFF-specific mods folder + +** Code convention +All MFF mods must be in the `mff` global table, and thus shall depend on the mff_core mod first defining it. +The reason for this is to allow introspection using mff_introspect to track bugs at runtime, and more generally to define a code namespace. diff --git a/mods/mff/mff_core/init.lua b/mods/mff/mff_core/init.lua new file mode 100644 index 00000000..2c840174 --- /dev/null +++ b/mods/mff/mff_core/init.lua @@ -0,0 +1,2 @@ +mff = {} +mff.core = {} \ No newline at end of file diff --git a/mods/mff/mff_introspect/UPCOMING b/mods/mff/mff_introspect/UPCOMING new file mode 100644 index 00000000..e69de29b diff --git a/mods/mff/mff_quests/depends.txt b/mods/mff/mff_quests/depends.txt new file mode 100644 index 00000000..e8cef597 --- /dev/null +++ b/mods/mff/mff_quests/depends.txt @@ -0,0 +1,3 @@ +mff_core +default +quests \ No newline at end of file diff --git a/mods/mff/mff_quests/init.lua b/mods/mff/mff_quests/init.lua new file mode 100644 index 00000000..1208a8ee --- /dev/null +++ b/mods/mff/mff_quests/init.lua @@ -0,0 +1,119 @@ +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +--- HIGLY UNFINISHED!!!! +-- GOT THAT ENOUGH? +-- - gravgun +mff.quests = {} +mff.QPREFIX = "mff_quests:" + +mff.quests.quests = { + testdiggydiggyhole = { + title = "Dig 10 nodes", + max = 10, + desc = "As long as you can not dig, you are not a real miner.", + periodicity = 10, + objective = { + dig = {"default:stone"} + } + } +} + +mff.quests.quest_status = {} + +function table.contains(table, element) + for _, value in pairs(table) do + if value == element then + return true + end + end + return false +end + +function mff.quests.start_quest(playername, qname, meta) + mff.quests.quest_status[playername][qname] = 0 + quests.start_quest(playername, mff.QPREFIX .. qname, meta) +end + +function mff.quests.restart_periodic_quest(playername, qname) + mff.quests.start_quest(playername, qname) +end + +function mff.quests.start_periodicity_timer(playername, qname) + local tstamp = -mff.quests.quest_status[playername][qname] + minetest.after(tstamp-os.time(), mff.quests.restart_periodic_quest, playername, qname) +end + +function mff.quests.start_all_periodicity_timers(playername) + local qstatus = mff.quests.quest_status[playername] + for qname, _ in pairs(qstatus) do + mff.quests.start_periodicity_timer(playername, qname) + end +end + +function mff.quests.set_quest_ended(playername, questname, metadata) + local qstatus = mff.quests.quest_status[playername] + local qname = questname:sub(mff.QPREFIX:len()+1) + local qinfo = mff.quests.quests[qname] + if qinfo.periodicity ~= nil and qinfo.periodicity >= 1 then + qstatus[qname] = -(os.time() + qinfo.periodicity) + mff.quests.start_periodicity_timer(playername, qname) + else + qstatus[qname] = nil + end +end + +-- Register the quests defined above +for qname, quest in pairs(mff.quests.quests) do + quests.register_quest(mff.QPREFIX .. qname, { + title = quest.title, + description = quest.desc, + max = quest.max, + autoaccept = true, + callback = mff.quests.set_quest_ended + }) +end + +-- For quests where you have to dig something, the updates happen here +minetest.register_on_dignode(function(pos, oldnode, digger) + local qstatus = mff.quests.quest_status[digger:get_player_name()] + for qname, quest in pairs(mff.quests.quests) do + if qstatus[qname] ~= nil and qstatus[qname] >= 0 then + if quest.objective.dig then + if table.contains(quest.objective.dig, oldnode.name) then + quests.update_quest(digger:get_player_name(), mff.QPREFIX .. qname, 1) + end + end + end + end +end) + +-- TODO load data +--[[ +for playername in players do + mff.quests.start_all_periodicity_timers(playername) +end +]] + +minetest.register_on_joinplayer(function (player) + -- TODO do nothing + mff.quests.quest_status[player:get_player_name()] = {} + mff.quests.start_quest(player:get_player_name(), "testdiggydiggyhole") +end) + +minetest.register_on_leaveplayer(function (player) + -- TODO do nothing + mff.quests.quest_status[player:get_player_name()] = nil +end) + +minetest.register_on_shutdown(function() + -- TODO save data +end) \ No newline at end of file diff --git a/mods/mff/modpack.txt b/mods/mff/modpack.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/quests/README b/mods/quests/README new file mode 100644 index 00000000..d9ba3c7d --- /dev/null +++ b/mods/quests/README @@ -0,0 +1,82 @@ +quests 1.1 + +quests is a simple quest framework for minetest that lets you define your own quests and handels the representation. + +Dependencies: +intllib (optional) +unified_inventory or inventory_plus (optional) +central_message (optional) + +License: WTFPL +Sounds: CC-BY +Textures: CC-BY + +------------------------------------------------------------------------------- + +You can see a full list of your active quests with the chatcommand /quests + +API: +quests.register_quest(questname,quest) +-- registers a quest for later use +-- +-- questname is the name of the quest to identify it later +-- it should follow the naming conventions: "modname:questname" +-- quest is a table in the following format +-- { +-- title, -- is shown to the player and should contain usefull information about the quest. +-- description, -- a small description of the mod. +-- max, -- is the desired maximum. If max is 1, no maximum is displayed. defaults to 1 +-- autoaccept, -- is true or false, wether the result of the quest should be dealt by this mode or the registering mod. +-- callback -- when autoaccept is true, at the end of the quest, it gets removed and callback is called. +-- -- function(playername, questname, metadata) +-- } +-- +-- returns true, when the quest was successfully registered +-- returns falls, when there was already such a quest + +quests.start_quest(playername, questname) +-- starts a quest for a specified player +-- +-- playername - the name of the player +-- questname - the name of the quest, which was registered with quests.register_quest +-- metadata - optional additional data +-- +-- returns false on failure +-- returns true if the quest was started + +quests.update_quest(playername, questname, value) +-- when something happens that has effect on a quest, a mod should call this method +-- playername is the name of the player +-- questname is the quest which gets updated +-- the quest gets updated by value +-- this method calls a previously specified callback if autoaccept is true +-- returns true if the quest is finished +-- returns false if there is no such quest or the quest continues + +quests.accept_quest(playername, questname) +-- When the mod handels the end of quests himself, e.g. you have to talk to somebody to finish the quest, +-- you have to call this method to end a quest +-- returns true, when the quest is completed +-- returns false, when the quest is still ongoing + +quests.abort_quest(playername, questname) +-- call this method, when you want to end a quest even when it was not finished +-- example: the player failed +-- +-- returns false if the quest was not aborted +-- returns true when the quest was aborted + +quests.show_hud(playername) +-- shows the hud to player playername + +quests.hide_hud(playername) +-- hides the hud for player playername + +quests.show_formspec(playername) +-- shows the player playername his/her questlog + +quests.get_metadata(playername, questname) +-- get metadata of the quest if the quest exists, else return nil + +quests.set_metadata(playername, questname, metadata) +-- set metadata of the quest diff --git a/mods/quests/central_message.lua b/mods/quests/central_message.lua new file mode 100644 index 00000000..ff3402e0 --- /dev/null +++ b/mods/quests/central_message.lua @@ -0,0 +1,12 @@ +if (cmsg) then + function quests.show_message(t, playername, text) + if (quests.hud[playername].central_message_enabled) then + local player = minetest.get_player_by_name(playername) + cmsg.push_message_player(player, text, quests.colors[t]) + minetest.sound_play("quests_" .. t, {to_player = playername}) + end + end +else + function quests.show_message(...) + end +end diff --git a/mods/quests/core.lua b/mods/quests/core.lua new file mode 100644 index 00000000..5c37cf3d --- /dev/null +++ b/mods/quests/core.lua @@ -0,0 +1,184 @@ +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + -- If you don't use insertions (@1, @2, etc) you can use this: + S = function(s) return s end +end + + +-- registers a quest for later use +-- +-- questname is the name of the quest to identify it later +-- it should follow the naming conventions: "modname:questname" +-- quest is a table in the following format +-- { +-- title, -- is shown to the player and should contain usefull information about the quest. +-- description, -- a small description of the mod. +-- max, -- is the desired maximum. If max is 1, no maximum is displayed. defaults to 1 +-- autoaccept, -- is true or false, wether the result of the quest should be dealt by this mode or the registering mod. +-- callback -- when autoaccept is true, at the end of the quest, it gets removed and callback is called. +-- -- function(playername, questname, metadata) +-- } +-- +-- returns true, when the quest was successfully registered +-- returns falls, when there was already such a quest +function quests.register_quest(questname, quest) + if (quests.registered_quests[questname] ~= nil) then + return false -- The quest was not registered since there already a quest with that name + end + quests.registered_quests[questname] = + { title = quest.title or S("missing title"), + description = quest.description or S("missing description"), + max = quest.max or 1, + autoaccept = quest.autoaccept or false, + callback = quest.callback, } + return true +end + +-- starts a quest for a specified player +-- +-- playername - the name of the player +-- questname - the name of the quest, which was registered with quests.register_quest +-- metadata - optional additional data +-- +-- returns false on failure +-- returns true if the quest was started +function quests.start_quest(playername, questname, metadata) + if (quests.registered_quests[questname] == nil) then + return false + end + if (quests.active_quests[playername] == nil) then + quests.active_quests[playername] = {} + end + if (quests.active_quests[playername][questname] ~= nil) then + return false -- the player has already this quest + end + quests.active_quests[playername][questname] = {value = 0, metadata = metadata} + + quests.update_hud(playername) + quests.show_message("new", playername, S("New quest:") .. " " .. quests.registered_quests[questname].title) + return true +end + +-- when something happens that has effect on a quest, a mod should call this method +-- playername is the name of the player +-- questname is the quest which gets updated +-- the quest gets updated by value +-- this method calls a previously specified callback if autoaccept is true +-- +-- returns true if the quest is finished +-- returns false if there is no such quest or the quest continues +function quests.update_quest(playername, questname, value) + if (quests.active_quests[playername] == nil) then + quests.active_quests[playername] = {} + end + if (quests.active_quests[playername][questname] == nil) then + return false -- there is no such quest + end + if (quests.active_quests[playername][questname].finished) then + return false -- the quest is already finished + end + if (value == nil) then + return false -- no value given + end + quests.active_quests[playername][questname]["value"] = quests.active_quests[playername][questname]["value"] + value + if (quests.active_quests[playername][questname]["value"] >= quests.registered_quests[questname]["max"]) then + quests.active_quests[playername][questname]["value"] = quests.registered_quests[questname]["max"] + if (quests.registered_quests[questname]["autoaccept"]) then + if (quests.registered_quests[questname]["callback"] ~= nil) then + quests.registered_quests[questname]["callback"](playername, questname, + quests.active_quests[playername][questname].metadata) + end + quests.accept_quest(playername,questname) + quests.update_hud(playername) + end + return true -- the quest is finished + end + quests.update_hud(playername) + return false -- the quest continues +end + +-- When the mod handels the end of quests himself, e.g. you have to talk to somebody to finish the quest, +-- you have to call this method to end a quest +-- returns true, when the quest is completed +-- returns false, when the quest is still ongoing +function quests.accept_quest(playername, questname) + if (quests.active_quests[playername][questname] and not quests.active_quests[playername][questname].finished) then + if (quests.successfull_quests[playername] == nil) then + quests.successfull_quests[playername] = {} + end + if (quests.successfull_quests[playername][questname] ~= nil) then + quests.successfull_quests[playername][questname].count = quests.successfull_quests[playername][questname].count + 1 + else + quests.successfull_quests[playername][questname] = {count = 1} + end + quests.active_quests[playername][questname].finished = true + for _,quest in ipairs(quests.hud[playername].list) do + if (quest.name == questname) then + local player = minetest.get_player_by_name(playername) + player:hud_change(quest.id, "number", quests.colors.success) + end + end + quests.show_message("success", playername, S("Quest completed:") .. " " .. quests.registered_quests[questname].title) + minetest.after(3, function(playername, questname) + quests.active_quests[playername][questname] = nil + quests.update_hud(playername) + end, playername, questname) + return true -- the quest is finished, the mod can give a reward + end + return false -- the quest hasn't finished +end + +-- call this method, when you want to end a quest even when it was not finished +-- example: the player failed +-- +-- returns false if the quest was not aborted +-- returns true when the quest was aborted +function quests.abort_quest(playername, questname) + if (questname == nil) then + return false + end + if (quests.failed_quests[playername] == nil) then + quests.failed_quests[playername] = {} + end + if (quests.active_quests[playername][questname] == nil) then + return false + end + if (quests.failed_quests[playername][questname] ~= nil) then + quests.failed_quests[playername][questname].count = quests.failed_quests[playername][questname].count + 1 + else + quests.failed_quests[playername][questname] = { count = 1 } + end + + quests.active_quests[playername][questname].finished = true + for _,quest in ipairs(quests.hud[playername].list) do + if (quest.name == questname) then + local player = minetest.get_player_by_name(playername) + player:hud_change(quest.id, "number", quests.colors.failed) + end + end + quests.show_message("failed", playername, S("Quest failed:") .. " " .. quests.registered_quests[questname].title) + minetest.after(3, function(playername, questname) + quests.active_quests[playername][questname] = nil + quests.update_hud(playername) + end, playername, questname) +end + +-- get metadata of the quest if the quest exists, else return nil +function quests.get_metadata(playername, questname) + if (quests.active_quests[playername] == nil or quests.active_quests[playername][questname] == nil) then + return nil + end + return quests.active_quests[playername][questname].metadata +end + +-- set metadata of the quest +function quests.set_metadata(playername, questname, metadata) + if (quests.active_quests[playername] == nil or quests.active_quests[playername][questname] == nil) then + return + end + quests.active_quests[playername][questname].metadata = metadata +end + diff --git a/mods/quests/depends.txt b/mods/quests/depends.txt new file mode 100644 index 00000000..0650d900 --- /dev/null +++ b/mods/quests/depends.txt @@ -0,0 +1,4 @@ +intllib? +unified_inventory? +inventory_plus? +central_message? diff --git a/mods/quests/formspecs.lua b/mods/quests/formspecs.lua new file mode 100644 index 00000000..5db7cd70 --- /dev/null +++ b/mods/quests/formspecs.lua @@ -0,0 +1,284 @@ +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + -- If you don't use insertions (@1, @2, etc) you can use this: + S = function(s) return s end +end + + +-- construct the questlog +function quests.create_formspec(playername, tab, integrated) + local queststringlist = {} + local questlist = {} + quests.formspec_lists[playername] = quests.formspec_lists[playername] or {} + quests.formspec_lists[playername].id = 1 + quests.formspec_lists[playername].list = {} + tab = tab or quests.formspec_lists[playername].tab or "1" + if (tab == "1") then + questlist = quests.active_quests[playername] or {} + elseif (tab == "2") then + questlist = quests.successfull_quests[playername] or {} + elseif (tab == "3") then + questlist = quests.failed_quests[playername] or {} + end + quests.formspec_lists[playername].tab = tab + + local no_quests = true + for questname,questspecs in pairs(questlist) do + if (questspecs.finished == nil) then + local queststring = quests.registered_quests[questname]["title"] + if (questspecs["count"] and questspecs["count"] > 1) then + queststring = queststring .. " - " .. questspecs["count"] + elseif(not questspecs["count"] and quests.registered_quests[questname]["max"] ~= 1) then + queststring = queststring .. " - (" .. quests.round(questspecs["value"], 2) .. "/" .. quests.registered_quests[questname]["max"] .. ")" + end + table.insert(queststringlist, queststring) + table.insert(quests.formspec_lists[playername].list, questname) + no_quests = false + end + end + local formspec = "" + if (not integrated) then + formspec = formspec .. "size[7,9]" + end + formspec = formspec .. "tabheader[0,0;quests_header;" .. S("Open quests") .. "," .. S("Finished quests") .. "," .. S("Failed quests") .. ";" .. tab .. "]" + if (no_quests) then + formspec = formspec .. "label[0.25,0.25;" .. S("There are no quests in this category.") .. "]" + else + formspec = formspec .. "textlist[0.25,0.25;6.5,6.5;quests_questlist;"..table.concat(queststringlist, ",") .. ";1;false]" + end + if (quests.formspec_lists[playername].tab == "1") then + formspec = formspec .."button[0.25,7;3,.7;quests_abort;" .. S("Abort quest") .. "]" + end + formspec = formspec .. "button[3.75,7;3,.7;quests_config;" .. S("Configure") .. "]".. + "button[.25,8;3,.7;quests_info;" .. S("Info") .. "]".. + "button_exit[3.75,8;3,.7;quests_exit;" .. S("Exit") .. "]" + return formspec +end + +-- construct the configuration +function quests.create_config(playername, integrated) + local formspec = "" + if (not integrated) then + formspec = formspec .. "size[7,3]" + end + formspec = formspec .. "checkbox[.25,.25;quests_config_enable;" .. S("Enable HUD") .. ";" + if(quests.hud[playername] ~= nil and quests.hud[playername].list ~= nil) then + formspec = formspec .. "true" + else + formspec = formspec .. "false" + end + formspec = formspec .. "]checkbox[.25,.75;quests_config_autohide;" .. S("Autohide HUD") .. ";" + if(quests.hud[playername] ~= nil and quests.hud[playername].autohide) then + formspec = formspec .. "true" + else + formspec = formspec .. "false" + end + formspec = formspec .. "]checkbox[.25,1.25;quests_config_central_message;" .. S("Central messages") .. ";" + if(quests.hud[playername] ~= nil and quests.hud[playername].central_message_enabled) then + formspec = formspec .. "true" + else + formspec = formspec .. "false" + end + formspec = formspec .. "]" .. + "button[.25,2.25;3,.7;quests_config_return;" .. S("Return") .. "]" + return formspec +end + +local function wordwrap(text, linelength) + local lines = text:split("\n") + local ret = "" + for i = 1,#lines do + local line = lines[i] + while (#line > linelength) do + local split = false + local j = linelength + while (not split) do + if (string.sub(line, j, j) == " ") then + split = true + ret = ret .. string.sub(line, 1, j) .. "\n" + line = string.sub(line, j + 1) + end + if (j <= 1) then + break + end + j = j - 1 + end + if (not split) then + ret = ret .. string.sub(line, 1, linelength) .. "\n" + line = string.sub(line, linelength); + end + end + ret = ret .. line .. "\n" + end + return ret +end + +-- construct the info formspec +function quests.create_info(playername, questname, integrated) + local formspec = "" + if (not integrated) then + formspec = formspec .. "size[9,6.5]" + end + formspec = formspec .. "label[0.5,0.5;" + + if (questname) then + formspec = formspec .. quests.registered_quests[questname].title .. "]" .. + "box[.4,1.5;8.2,4.5;#999999]" .. + "label[.5,1.5;" .. + wordwrap(quests.registered_quests[questname].description, 60) .. "]" + + if (quests.formspec_lists[playername].tab == "1") then + formspec = formspec .. "button[.5,6;3,.7;quests_info_abort;" .. S("Abort quest") .. "]" + end + else + formspec = formspec .. S("No quest specified.") .. "]" + end + formspec = formspec .. "button[3.25,6;3,.7;quests_info_return;" .. S("Return") .. "]" + return formspec +end + +-- show the player playername his/her questlog +function quests.show_formspec(playername) + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) +end + +-- chatcommand to see a full list of quests: +minetest.register_chatcommand("quests", { + params = "", + description = S("Show all open quests"), + func = function(name, param) + minetest.show_formspec(name, "quests:questlog", quests.create_formspec(name)) + return true + end +}) + +-- Handle the return fields of the questlog +minetest.register_on_player_receive_fields(function(player, formname, fields) + if (player == nil) then + return + end + local playername = player:get_player_name(); + if (playername == "") then + return + end + +-- questlog + if (fields["quests_header"]) then + if (formname == "quests:questlog") then + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername, fields["quests_header"])) + else + if (fields["quests_header"] == "1") then + unified_inventory.set_inventory_formspec(player, "quests") + elseif (fields["quests_header"] == "2") then + unified_inventory.set_inventory_formspec(player, "quests_successfull") + return + else + unified_inventory.set_inventory_formspec(player, "quests_failed") + return + end + end + return + end + if (fields["quests_questlist"]) then + local event = minetest.explode_textlist_event(fields["quests_questlist"]) + if (event.type == "CHG") then + quests.formspec_lists[playername].id = event.index + end + end + if (fields["quests_abort"]) then + if (quests.formspec_lists[playername].id == nil) then + return + end + quests.abort_quest(playername, quests.formspec_lists[playername]["list"][quests.formspec_lists[playername].id]) + if (formname == "quests:questlog") then + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests") + end + end + if (fields["quests_config"]) then + if (formname == "quests:questlog") then + minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests_config") + end + end + if (fields["quests_info"]) then + if (formname == "quests:questlog") then + minetest.show_formspec(playername, "quests:info", quests.create_info(playername, quests.formspec_lists[playername].list[quests.formspec_lists[playername].id])) + else + unified_inventory.set_inventory_formspec(player, "quests_info") + end + end + +-- config + if (fields["quests_config_enable"]) then + quests.hud[playername].autohide = false + if (fields["quests_config_enable"] == "true") then + quests.show_hud(playername) + else + quests.hide_hud(playername) + end + if (formname == "quests:config") then + minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests_config") + end + end + if (fields["quests_config_autohide"]) then + if (fields["quests_config_autohide"] == "true") then + quests.hud[playername].autohide = true + quests.update_hud(playername) + else + quests.hud[playername].autohide = false + end + if (formname == "quests:config") then + minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests_config") + end + end + if (fields["quests_config_central_message"]) then + if (fields["quests_config_central_message"] == "true") then + quests.hud[playername].central_message_enabled = true + else + quests.hud[playername].central_message_enabled = false + end + if (formname == "quests:config") then + minetest.show_formspec(playername, "quests:config", quests.create_config(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests_config") + end + end + + if (fields["quests_config_return"]) then + if (formname == "quests:config") then + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests") + end + end + +-- info + if (fields["quests_info_abort"]) then + if (quests.formspec_lists[playername].id == nil) then + return + end + quests.abort_quest(playername, quests.formspec_lists[playername]["list"][quests.formspec_lists[playername].id]) + if (formname == "quests:info") then + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests") + end + end + if (fields["quests_info_return"]) then + if (formname == "quests:info") then + minetest.show_formspec(playername, "quests:questlog", quests.create_formspec(playername)) + else + unified_inventory.set_inventory_formspec(player, "quests") + end + end +end) diff --git a/mods/quests/hud.lua b/mods/quests/hud.lua new file mode 100644 index 00000000..527186bd --- /dev/null +++ b/mods/quests/hud.lua @@ -0,0 +1,233 @@ +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + -- If you don't use insertions (@1, @2, etc) you can use this: + S = function(s) return s end +end + +local show_max = 10 -- the maximum visible quests. + +local hud_config = { position = {x = 1, y = 0.2}, + offset = { x = -200, y = 0}, + number = quests.colors.new } + +-- call this function to enable the HUD for the player that shows his quests +-- the HUD can only show up to show_max quests +function quests.show_hud(playername, autohide) + if (quests.hud[playername] == nil) then + quests.hud[playername] = { autohide = autohide} + end + if (quests.hud[playername].list ~= nil) then + return + end + local hud = { + hud_elem_type = "text", + alignment = {x=1, y=1}, + position = {x = hud_config.position.x, y = hud_config.position.y}, + offset = {x = hud_config.offset.x, y = hud_config.offset.y}, + number = hud_config.number, + text = S("Quests:") } + + + + local player = minetest.get_player_by_name(playername) + if (player == nil) then + return false + end + quests.hud[playername].list = {} + table.insert(quests.hud[playername].list, { value=0, id=player:hud_add(hud) }) + minetest.after(0, quests.update_hud, playername) +end + +-- call this method to hide the hud +function quests.hide_hud(playername) + local player = minetest.get_player_by_name(playername) + if (player == nil or quests.hud[playername] == nil or quests.hud[playername].list == nil) then + return + end + for _,quest in pairs(quests.hud[playername].list) do + player:hud_remove(quest.id) + if (quest.id_background ~= nil) then + player:hud_remove(quest.id_background) + end + if (quest.id_bar ~= nil) then + player:hud_remove(quest.id_bar) + end + end + quests.hud[playername].list = nil +end + + +local function get_quest_hud_string(questname, quest) + local quest_string = quests.registered_quests[questname].title + if (quests.registered_quests[questname].max ~= 1) then + quest_string = quest_string .. "\n ("..quests.round(quest.value, 2).."/"..quests.registered_quests[questname].max..")" + end + return quest_string +end + +-- only for internal use +-- updates the hud +function quests.update_hud(playername) + if (quests.hud[playername] == nil or quests.active_quests[playername] == nil) then + return + end + if (quests.hud[playername].list == nil) then + if (quests.hud[playername].autohide and next(quests.active_quests[playername]) ~= nil) then + quests.show_hud(playername) + end + return + end + local player = minetest.get_player_by_name(playername) + if (player == nil) then + return + end + + -- Check for changes in the hud + local i = 2 -- the first element is the title + local change = false + local visible = {} + local remove = {} + for j,hud_element in ipairs(quests.hud[playername].list) do + if (hud_element.name ~= nil) then + if (quests.active_quests[playername][hud_element.name] ~= nil) then + if (hud_element.value ~= quests.active_quests[playername][hud_element.name].value) then + hud_element.value = quests.active_quests[playername][hud_element.name].value + player:hud_change(hud_element.id, "text", get_quest_hud_string(hud_element.name, quests.active_quests[playername][hud_element.name])) + if (hud_element.id_bar ~= nil) then + player:hud_change(hud_element.id_bar, "scale", + { x = math.floor(20 * hud_element.value / quests.registered_quests[hud_element.name].max), + y = 1}) + end + end + if (i ~= j) then + player:hud_change(hud_element.id, "offset", { x= hud_config.offset.x, y=hud_config.offset.y + (i-1) *40}) + if (hud_element.id_background ~= nil) then + player:hud_change(hud_element.id_background, "offset", { x= hud_config.offset.x, y=hud_config.offset.y + (i-1) *40 + 22}) + end + if (hud_element.id_bar ~= nil) then + player:hud_change(hud_element.id_bar, "offset", { x= hud_config.offset.x + 2, y=hud_config.offset.y + (i-1) *40 + 24}) + end + + end + visible[hud_element.name] = true + i = i + 1 + else + player:hud_remove(hud_element.id) + if (hud_element.id_background ~= nil) then + player:hud_remove(hud_element.id_background) + end + if (hud_element.id_bar ~= nil) then + player:hud_remove(hud_element.id_bar) + end + table.insert(remove, j) + end + end + end + --remove ended quests + if (remove[1] ~= nil) then + for _,j in ipairs(remove) do + table.remove(quests.hud[playername].list, j) + i = i - 1 + end + end + + if (i >= show_max + 1) then + return + end + -- add new quests + local counter = i - 1 + for questname,questspecs in pairs(quests.active_quests[playername]) do + if (not visible[questname]) then + local id = player:hud_add({ hud_elem_type = "text", + alignment = { x=1, y= 1 }, + position = {x = hud_config.position.x, y = hud_config.position.y}, + offset = {x = hud_config.offset.x, y = hud_config.offset.y + counter * 40}, + number = hud_config.number, + text = get_quest_hud_string(questname, questspecs) }) + local id_background + local id_bar + if (quests.registered_quests[questname].max ~= 1) then + id_background = player:hud_add({ hud_elem_type = "image", + scale = { x = 1, y = 1 }, + size = { x = 2, y = 4 }, + alignment = { x = 1, y = 1 }, + position = { x = hud_config.position.x, y = hud_config.position.y }, + offset = { x = hud_config.offset.x, y = hud_config.offset.y + counter * 40 + 22 }, + text = "quests_questbar_background.png" }) + id_bar = player:hud_add({hud_elem_type = "image", + scale = { x = math.floor(20 * questspecs.value / quests.registered_quests[questname].max), + y = 1 }, + alignment = { x = 1, y = 1 }, + position = { x = hud_config.position.x, y = hud_config.position.y }, + offset = { x = hud_config.offset.x + 2, y = hud_config.offset.y + counter * 40 + 24 }, + text = "quests_questbar.png" }) + end + + table.insert(quests.hud[playername].list, { name = questname, + id = id, + id_background = id_background, + id_bar = id_bar, + value = questspecs.value }) + counter = counter + 1 + if (counter >= show_max + 1) then + break + end + end + end + + if (quests.hud[playername].autohide) then + if (next(quests.active_quests[playername]) == nil) then + player:hud_change(quests.hud[playername].list[1].id, "text", S("No more Quests")) + minetest.after(3, function(playername) + if (next(quests.active_quests[playername]) ~= nil) then + player:hud_change(quests.hud[playername].list[1].id, "text", S("Quests:")) + else + quests.hide_hud(playername) + end + end, playername) + end + end +end + + + +-- show the HUDs +--for playername,id in pairs(quests.hud) do +-- if (id ~= nil) then +-- quests.hud[playername] = nil +-- minetest.after(10, function(playername) +-- quests.show_hud(playername) +-- quests.update_hud(playername) +-- end, playername) +-- end +--end + +minetest.register_on_joinplayer(function(player) + local playername = player:get_player_name() + if (quests.hud[playername] ~= nil) then + if (not(quests.hud[playername].first)) then + return + end + local list = quests.hud[playername].list + local autohide = quests.hud[playername].autohide + local central_message_enabled = quests.hud[playername].central_message_enabled + quests.hud[playername] = { + autohide = autohide, + central_message_enabled = central_message_enabled + } + if (list ~= nil) then + minetest.after(1, function(playername) + quests.show_hud(playername) + end, playername) + end + else -- new player + quests.hud[playername] = { + autohide = true, + central_message_enabled = true + } + quests.active_quests[playername] = {} + end +end) diff --git a/mods/quests/init.lua b/mods/quests/init.lua new file mode 100644 index 00000000..8bd4eff1 --- /dev/null +++ b/mods/quests/init.lua @@ -0,0 +1,66 @@ +-- reading previous quests +local file = io.open(minetest.get_worldpath().."/quests", "r") +if file then + minetest.log("action", "Reading quests...") + quests = minetest.deserialize(file:read("*all")) + file:close() +end +quests = quests or {} +quests.registered_quests = {} +quests.active_quests = quests.active_quests or {} +quests.successfull_quests = quests.successfull_quests or {} +quests.failed_quests = quests.failed_quests or {} +quests.hud = quests.hud or {} +for idx,_ in pairs(quests.hud) do + quests.hud[idx].first = true +end + + +quests.formspec_lists = {} +function quests.round(num, n) + local mult = 10^(n or 0) + return math.floor(num * mult + .5) / mult +end + +quests.colors = { + new = "0xAAAA00", + success = "0x00AD00", + failed = "0xAD0000" +} + + +local MP = minetest.get_modpath("quests") + +dofile(MP .. "/central_message.lua") +dofile(MP .. "/core.lua") +dofile(MP .. "/hud.lua") +dofile(MP .. "/formspecs.lua") + +-- support for unified_inventory +if (minetest.get_modpath("unified_inventory") ~= nil) then + dofile(minetest.get_modpath("quests") .. "/unified_inventory.lua") +elseif (minetest.get_modpath("inventory_plus") ~= nil) then + dofile(minetest.get_modpath("quests") .. "/inventory_plus.lua") +end + + +-- write the quests to file +minetest.register_on_shutdown(function() + minetest.log("action", "Writing quests to file") + for playername, quest in pairs(quests.active_quests) do + for questname, questspecs in pairs(quest) do + if (questspecs.finished) then + quests.active_quests[playername][questname] = nil -- make sure no finished quests are saved as unfinished + end + end + end + local file = io.open(minetest.get_worldpath().."/quests", "w") + if (file) then + file:write(minetest.serialize({ --registered_quests = quests.registered_quests, + active_quests = quests.active_quests, + successfull_quests = quests.successfull_quests, + failed_quests = quests.failed_quests, + hud = quests.hud})) + file:close() + end +end) diff --git a/mods/quests/inventory_plus.lua b/mods/quests/inventory_plus.lua new file mode 100644 index 00000000..24b65883 --- /dev/null +++ b/mods/quests/inventory_plus.lua @@ -0,0 +1,9 @@ +minetest.register_on_joinplayer(function(player) + inventory_plus.register_button(player, "quests") +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if (fields.quests) then + quests.show_formspec(player:get_player_name()) + end +end) diff --git a/mods/quests/locale/de.txt b/mods/quests/locale/de.txt new file mode 100644 index 00000000..10ca0d57 --- /dev/null +++ b/mods/quests/locale/de.txt @@ -0,0 +1,20 @@ +missing description = fehlende Beschreibung +missing title = fehlender Titel +Quests: = Quests: +No more Quests = Keine weiteren Quests +Abort quest = Quest abbrechen +Configure = Konfigurieren +Enable HUD = HUD einschalten +Autohide HUD = HUD automatisch verstecken +Exit = Verlassen +Failed quests = Gescheiterte Quests +Finished quests = Beendete Quests +Info = Info +No quest specified. = Keine Quest ausgewählt. +Open quests = Offene Quests +Return = Zurück +Show all open quests = Zeige alle offenen Quests +There are no quests in this category. = Es gibt keine Quests in dieser Kategorie. +New quest: = Neue Quest: +Quest completed: = Quest beendet: +Quest failed: = Quest gescheitert: diff --git a/mods/quests/locale/template.txt b/mods/quests/locale/template.txt new file mode 100644 index 00000000..76e1b77b --- /dev/null +++ b/mods/quests/locale/template.txt @@ -0,0 +1,20 @@ +missing description = +missing title = +Quests: = +No more Quests = +Abort quest = +Configure = +Enable HUD = +Autohide HUD = +Exit = +Failed quests = +Finished quests = +Info = +No quest specified. = +Open quests = +Return = +Show all open quests = +There are no quests in this category. = +New quest: = +Quest completed: = +Quest failed: = diff --git a/mods/quests/sounds/quests_failed.ogg b/mods/quests/sounds/quests_failed.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ce2970d5c4fc7f7980fdc6d1c937bcecf7dc7347 GIT binary patch literal 50022 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 z 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 M=ox@KA9(}?08Z0~AOHXW literal 0 HcmV?d00001 diff --git a/mods/quests/sounds/quests_success.ogg b/mods/quests/sounds/quests_success.ogg new file mode 100644 index 0000000000000000000000000000000000000000..270972fe51e89876eb4137049d6f834e52f6d70a GIT binary patch literal 28051 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 bgq;5aV~hMEc_B=^00000NkvXXu0mjf&4xk5 literal 0 HcmV?d00001 diff --git a/mods/quests/textures/quests_questbar.png b/mods/quests/textures/quests_questbar.png new file mode 100644 index 0000000000000000000000000000000000000000..bc63aaa568dc7b93ae187124c889c7f965bf352b GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-S0V1_~EAxO9XMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w&m<$PW_b9rq83m{vcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%`PaLR7 v)YHW=gyVX0%8lex2M!!Ka^OINBO`;vMTVc{ThIRmDq!$*^>bP0l+XkK&iE;f literal 0 HcmV?d00001 diff --git a/mods/quests/textures/quests_questbar_background.png b/mods/quests/textures/quests_questbar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..ef980c9b3d59acb7575426734f20a0e6b0e41f6c GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^IzY_9!3HFocFHOODb50q$YKTtZeb8+WSBKa0w~B{ z;_2(kexFH3SWWgLx9>@ykYtH#M2T~LZf z(P>W?#}JFtSEm@}H9Ls7+>b9?>cYXbqeZ&=kY&&8wU)tIQt>J;V;Fk%H|jZPOceXJ z{G{Tw;-=*nXA3gC|I4|f(_{InCnAE5q3#c?cn&-7`L6yvCcWonBi|3!Z$1^eAJ}>{ zm!6k+oY6Sj@Y&66Zx^px_5QKNnpIwEZ?ghLe(zf6%dwDMN?S>G!YScmIZt1)rMu%wn|SwM@n1W2ysdpNyRY+NC=bomDe%=SRcx_qneg>R fLtxz7YyTK_t}WE~_{72t=q(0MS3j3^P6