From 6a968c87c51a143f5d09da9991db25b6b0673af0 Mon Sep 17 00:00:00 2001 From: Rubenwardy Date: Fri, 22 Feb 2013 20:38:01 +0000 Subject: [PATCH] onPlace and award description --- init.lua | 41 ++++++++++++++++++++++++++++++++++++++--- triggers.lua | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 86 insertions(+), 5 deletions(-) diff --git a/init.lua b/init.lua index f782e3f..c07c500 100644 --- a/init.lua +++ b/init.lua @@ -36,14 +36,17 @@ dofile(minetest.get_modpath("awards").."/triggers.lua") -- API Functions function awards.register_achievement(name,data_table) - data_table["name"] = name - table.insert(awards.def,data_table); + awards['def'][name] = data_table end function awards.register_onDig(func) table.insert(awards.onDig,func); end +function awards.register_onPlace(func) + table.insert(awards.onPlace,func); +end + function awards.give_achievement(name,award) local data=player_data[name] @@ -52,9 +55,31 @@ function awards.give_achievement(name,award) end if not data['unlocked'][award] or data['unlocked'][award]~=award then + -- set player_data table data['unlocked'][award]=award - minetest.chat_send_player(name, "Achievement Unlocked: "..award) + + -- define local award data + local title = award + local desc = "" + + -- check definition table + if awards['def'][award] and awards['def'][award]['title'] then + title=awards['def'][award]['title'] + end + if awards['def'][award] and awards['def'][award]['description'] then + desc=awards['def'][award]['description'] + end + + -- send award header + minetest.chat_send_player(name, "Achievement Unlocked: "..title) + + -- send award content + if desc~="" then + minetest.chat_send_player(name, desc) + end + + -- save player_data table save_playerD() end end @@ -87,4 +112,14 @@ awards.register_onDig(function(player,data) if data['count']['default']['mese'] > 0 then return "award_mesefind" end +end) + +awards.register_onPlace(function(player,data) + if not data['place']['default'] or not data['place']['default']['mese'] then + return + end + + if data['place']['default']['mese'] > 0 then + return "award_meseplace" + end end) \ No newline at end of file diff --git a/triggers.lua b/triggers.lua index 5f4b3b3..2ce81de 100644 --- a/triggers.lua +++ b/triggers.lua @@ -6,6 +6,7 @@ -- Function for Triggers awards.onDig={} +awards.onPlace={} awards.onTick={} -- Player functions @@ -24,8 +25,6 @@ minetest.register_on_dignode(function(pos, oldnode, digger) if not player_data[playern] then player_data[playern]={} player_data[playern]['count']={} - player_data[playern]['count']['default']={} - player_data[playern]['count']['default']['dirt']=0 player_data[playern]['name']=playern end @@ -57,13 +56,60 @@ minetest.register_on_dignode(function(pos, oldnode, digger) end end) +minetest.register_on_placenode(function(pos, newnode, placer) + local nodedug = string.split(newnode.name, ":") + + local mod=nodedug[1] + local item=nodedug[2] + + local playern = placer:get_player_name() + + if (playern~=nil and nodedug~=nil and mod~=nil and item~=nil) then + --check the player's directory + if not player_data[playern] then + player_data[playern]={} + player_data[playern]['place']={} + player_data[playern]['name']=playern + end + + --check player.count.mod + if not player_data[playern]['place'][mod] then + player_data[playern]['place'][mod]={} + end + + --check player.count.mod.item + if not player_data[playern]['place'][mod][item] then + player_data[playern]['place'][mod][item]=0 + end + + player_data[playern]['place'][mod][item]=player_data[playern]['place'][mod][item]+1 + + print(" - "..mod..":"..item.." 's place is now "..(player_data[playern]['place'][mod][item])) + + -- Roll through the onDig functions + local player=placer + local data=player_data[playern] + + for i=1,# awards.onPlace do + local res=awards.onPlace[i](player,data) + + if res~=nil then + awards.give_achievement(playern,res) + end + end + end +end) + minetest.register_on_newplayer(function(player) + minetest.chat_send_player(player:get_player_name(),"[Awards] Registering you now...") + --Player data root player_data[player:get_player_name()]={} player_data[player:get_player_name()]['name']=player:get_player_name() --The player counter player_data[player:get_player_name()]['count']={} + player_data[player:get_player_name()]['place']={} --Table to contain achievement records player_data[player:get_player_name()]['unlocked']={}