diff options
| -rw-r--r-- | init.lua | 33 | ||||
| -rw-r--r-- | triggers.lua | 9 | 
2 files changed, 35 insertions, 7 deletions
| @@ -14,6 +14,26 @@ awards.def={}  -- Load files  dofile(minetest.get_modpath("awards").."/triggers.lua") +-- Table Save Load Functions +local function save(table, file) +	local file = io:open(file, "w") +	if file then +		file:write(minetest.serialize(table)) +		file:close() +	end +end +  +local function load(file) +	local file = io:open(file, "r") +	if file then +		local table = minetest.deserialize(file:read("*all")) +		if type(table) == "table" then +			return table +		end +	end +	return {} +end +  -- API Functions  function awards.register_achievement(name,data_table) @@ -25,6 +45,19 @@ function awards.register_onDig(func)  	table.insert(awards.onDig,func);  end +function awards.give_achievement(name,award) +	local data=player_data[name] + +	if not data['unlocked'] then +		data['unlocked']={} +	end +	 +	if not data['unlocked'][award] or data['unlocked'][award]~=award then +		data['unlocked'][award]=award +		minetest.chat_send_player(name, "Achievement Unlocked: "..award) +	end +end +  -- List a player's achievements  minetest.register_chatcommand("list_awards", {  	params = "", diff --git a/triggers.lua b/triggers.lua index 3971c21..6d458f8 100644 --- a/triggers.lua +++ b/triggers.lua @@ -49,14 +49,9 @@ minetest.register_on_dignode(function(pos, oldnode, digger)  		for i=1,# awards.onDig do  			local res=awards.onDig[i](player,data) -			 -			if not data['unlocked'] then -				data['unlocked']={} -			end -			if res~=nil and (not data['unlocked'][res] or data['unlocked'][res]~=res) then -				data['unlocked'][res]=res -				minetest.chat_send_player(playern, "Achievement Unlocked: "..res) +			if res~=nil then +				awards.give_achievement(playern,res)  			end  		end  	end | 
