From 837845140629037f181ae2d21932f6089c72674f Mon Sep 17 00:00:00 2001 From: cale Date: Sun, 9 Oct 2016 12:16:23 +0200 Subject: [PATCH] added skills page to the players inventory --- mods/default/player.lua | 1 + mods/skills/init.lua | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/mods/default/player.lua b/mods/default/player.lua index 5ec8030..2d97b56 100644 --- a/mods/default/player.lua +++ b/mods/default/player.lua @@ -81,6 +81,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if not(default.player_inventory.tabs[default.player_inventory.contexts[name].tab]) then return end if not(default.player_inventory.tabs[default.player_inventory.contexts[name].tab]).on_event then return end default.player_inventory.tabs[default.player_inventory.contexts[name].tab].on_event(player, fields) + default.player_inventory.update(player) end end) diff --git a/mods/skills/init.lua b/mods/skills/init.lua index 6b17226..e203026 100644 --- a/mods/skills/init.lua +++ b/mods/skills/init.lua @@ -28,6 +28,25 @@ function skills.get_text(name) return str end +function skills.level_up(name, text) + if not(skills.lvls[name][text]) then + return false + end + + local count = 0 + for s,l in pairs(skills.lvls[name]) do + count = count + (l-1) + end + if xp.player_levels[name] > count then + skills.lvls[name][text] = skills.lvls[name][text] + 1 + skills.save_skills() + cmsg.push_message_player(minetest.get_player_by_name(name), "[skills] " .. skills.get_text(name)) + return true + else + return false + end +end + function skills.register_weapon(name, fromLevel, levels, def) if not def.damage then if def.damage_m and def.damage_d then @@ -144,6 +163,38 @@ function skills.save_skills() end end +default.player_inventory.register_tab({ + name = "Skills", + type = "function", + get_formspec = function(name) + local text = minetest.formspec_escape("If you level up your skills, you will be able\nto use better tools or weapons.") + text = text .. "\n" + + local formspec = "size[8,7.5;]" .. + default.gui_colors .. + default.gui_bg .. + "label[0,0;Skills:]".. + "label[2.5,0;"..text.."]" + + + local i = 0 + for skill_name, skill_level in pairs(skills.lvls[name]) do + formspec = formspec .. "button[0,"..tostring(i+0.5)..";2,1;" .. skill_name .. ";" .. skill_name .. " : " .. tostring(skill_level) .. "]" + i = i +1 + end + + return formspec + end, + on_event = function(player, fields) + local name = player:get_player_name() + for n,v in pairs(fields) do + if v then + skills.level_up(name, n) + end + end + end +}) + -- cmd minetest.register_chatcommand("skill", {