mirror of
				https://gitlab.com/rubenwardy/awards.git
				synced 2025-10-30 20:45:32 +01:00 
			
		
		
		
	Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev
This commit is contained in:
		
							
								
								
									
										6
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								init.lua
									
									
									
									
									
								
							| @@ -16,7 +16,11 @@ dofile(minetest.get_modpath("awards").."/src/api_triggers.lua") | ||||
| dofile(minetest.get_modpath("awards").."/src/chat_commands.lua") | ||||
| dofile(minetest.get_modpath("awards").."/src/gui.lua") | ||||
| dofile(minetest.get_modpath("awards").."/src/triggers.lua") | ||||
| dofile(minetest.get_modpath("awards").."/src/awards.lua") | ||||
|  | ||||
| -- Optionally add default awards. | ||||
| if minetest.settings:get_bool("awards.add_defaults", true) then | ||||
| 	dofile(minetest.get_modpath("awards").."/src/awards.lua") | ||||
| end | ||||
|  | ||||
| awards.load() | ||||
| minetest.register_on_shutdown(awards.save) | ||||
|   | ||||
							
								
								
									
										2
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								settingtypes.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| # Add default achievements from the awards mod | ||||
| awards.add_defaults (Add Default Achievements) bool true | ||||
| @@ -43,6 +43,11 @@ end | ||||
| -- name - the name of the player | ||||
| -- award - the name of the award to give | ||||
| function awards.unlock(name, award) | ||||
| 	-- Ensure the player is online. | ||||
| 	if not minetest.get_player_by_name(name) then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	-- Access Player Data | ||||
| 	local data  = awards.player(name) | ||||
| 	local awdef = awards.registered_awards[award] | ||||
| @@ -60,7 +65,7 @@ function awards.unlock(name, award) | ||||
| 	end | ||||
|  | ||||
| 	-- Unlock Award | ||||
| 	minetest.log("action", name.." has unlocked award "..name) | ||||
| 	minetest.log("action", name.." has unlocked award "..award) | ||||
| 	data.unlocked[award] = award | ||||
| 	awards.save() | ||||
|  | ||||
| @@ -91,7 +96,7 @@ function awards.unlock(name, award) | ||||
| 	local title = awdef.title or award | ||||
| 	local desc = awdef.description or "" | ||||
| 	local background = awdef.background or "awards_bg_default.png" | ||||
| 	local icon = awdef.icon or "awards_unknown.png" | ||||
| 	local icon = (awdef.icon or "awards_unknown.png") .. "^[resize:32x32" | ||||
| 	local sound = awdef.sound | ||||
| 	if sound == nil then | ||||
| 		-- Explicit check for nil because sound could be `false` to disable it | ||||
|   | ||||
| @@ -144,8 +144,8 @@ function awards.register_trigger(tname, tdef) | ||||
| 			if tdef.key_is_item and key:sub(1, 6) ~= "group:" then | ||||
| 				local itemdef = minetest.registered_items[key] | ||||
| 				if itemdef then | ||||
| 					for groupname, _ in pairs(itemdef.groups or {}) do | ||||
| 						if tdef.watched_groups[groupname] then | ||||
| 					for groupname,rating in pairs(itemdef.groups or {}) do | ||||
| 						if rating ~= 0 and tdef.watched_groups[groupname] then | ||||
| 							tdef.notify(player, "group:" .. groupname, n) | ||||
| 						end | ||||
| 					end | ||||
| @@ -160,8 +160,9 @@ function awards.register_trigger(tname, tdef) | ||||
| 			data[tname] = data[tname] or {} | ||||
| 			local currentVal = (data[tname][key] or 0) + n | ||||
| 			data[tname][key] = currentVal | ||||
| 			data[tname].__total = (data[tname].__total or 0) | ||||
| 			if key:sub(1, 6) ~= "group:" then | ||||
| 				data[tname].__total = (data[tname].__total or 0) + n | ||||
| 				data[tname].__total = data[tname].__total + n | ||||
| 			end | ||||
|  | ||||
| 			tdef:run_callbacks(player, data, function(entry) | ||||
| @@ -173,7 +174,6 @@ function awards.register_trigger(tname, tdef) | ||||
| 				else | ||||
| 					return | ||||
| 				end | ||||
|  | ||||
| 				if current >= entry.target then | ||||
| 					return entry.award | ||||
| 				end | ||||
| @@ -201,7 +201,7 @@ end | ||||
|  | ||||
| function awards.increment_item_counter(data, field, itemname, count) | ||||
| 	itemname = minetest.registered_aliases[itemname] or itemname | ||||
| 	data[field][itemname] = (data[field][itemname] or 0) + 1 | ||||
| 	data[field][itemname] = (data[field][itemname] or 0) + (count or 1) | ||||
| end | ||||
|  | ||||
| function awards.get_item_count(data, field, itemname) | ||||
|   | ||||
| @@ -89,7 +89,7 @@ if minetest.get_modpath("fire") then | ||||
| 		secret = true, | ||||
| 	}) | ||||
| 	awards.register_on_death(function(player,data) | ||||
| 		local pos = player:getpos() | ||||
| 		local pos = player:get_pos() | ||||
| 		if pos and minetest.find_node_near(pos, 2, "fire:basic_flame") ~= nil then | ||||
| 			return "award_burn" | ||||
| 		end | ||||
| @@ -115,7 +115,7 @@ awards.register_award("award_deep_down", { | ||||
| 	secret = true, | ||||
| }) | ||||
| awards.register_on_death(function(player,data) | ||||
| 	local pos = player:getpos() | ||||
| 	local pos = player:get_pos() | ||||
| 	if pos and pos.y < -10000 then | ||||
| 		return "award_deep_down" | ||||
| 	end | ||||
| @@ -129,7 +129,7 @@ awards.register_award("award_no_screen", { | ||||
| 	secret = true, | ||||
| }) | ||||
| awards.register_on_death(function(player,data) | ||||
| 	local pos = player:getpos() | ||||
| 	local pos = player:get_pos() | ||||
| 	if pos and pos.y > 10000 then | ||||
| 		return "award_no_screen" | ||||
| 	end | ||||
| @@ -767,7 +767,7 @@ if minetest.get_modpath("default") then | ||||
| 		secret = true, | ||||
| 	}) | ||||
| 	awards.register_on_death(function(player,data) | ||||
| 		local pos = player:getpos() | ||||
| 		local pos = player:get_pos() | ||||
| 		if pos and (minetest.find_node_near(pos, 2, "default:lava_flowing") ~= nil or | ||||
| 				minetest.find_node_near(pos, 2, "default:lava_source") ~= nil) then | ||||
| 			return "award_in_the_flow" | ||||
| @@ -782,7 +782,7 @@ if minetest.get_modpath("default") then | ||||
| 		secret = true, | ||||
| 	}) | ||||
| 	awards.register_on_death(function(player,data) | ||||
| 		local pos = player:getpos() | ||||
| 		local pos = player:get_pos() | ||||
| 		if pos and minetest.find_node_near(pos, 5, "default:stone_with_diamond") ~= nil then | ||||
| 			return "award_this_is_sad" | ||||
| 		end | ||||
| @@ -798,7 +798,7 @@ if minetest.get_modpath("bones") then | ||||
| 		secret = true, | ||||
| 	}) | ||||
| 	awards.register_on_death(function(player,data) | ||||
| 		local pos = player:getpos() | ||||
| 		local pos = player:get_pos() | ||||
| 		if pos and minetest.find_node_near(pos, 5, "bones:bones") ~= nil then | ||||
| 			return "award_the_stack" | ||||
| 		end | ||||
|   | ||||
| @@ -14,6 +14,10 @@ | ||||
| -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
| -- | ||||
|  | ||||
| -- Check if a player object is valid for awards. | ||||
| local function player_ok(player) | ||||
| 	return player and player.is_player and player:is_player() and not player.is_fake_player | ||||
| end | ||||
|  | ||||
| awards.register_trigger("chat", { | ||||
| 	type = "counted", | ||||
| @@ -22,7 +26,7 @@ awards.register_trigger("chat", { | ||||
| }) | ||||
| minetest.register_on_chat_message(function(name, message) | ||||
| 	local player = minetest.get_player_by_name(name) | ||||
| 	if not player or string.find(message, "/")  then | ||||
| 	if not player_ok(player) or string.find(message, "/")  then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| @@ -68,7 +72,7 @@ awards.register_trigger("dig", { | ||||
| 	key_is_item = true, | ||||
| }) | ||||
| minetest.register_on_dignode(function(pos, node, player) | ||||
| 	if not player or not pos or not node then | ||||
| 	if not player_ok(player) or not pos or not node then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| @@ -89,7 +93,7 @@ awards.register_trigger("place", { | ||||
| 	key_is_item = true, | ||||
| }) | ||||
| minetest.register_on_placenode(function(pos, node, player) | ||||
| 	if not player or not pos or not node then | ||||
| 	if not player_ok(player) or not pos or not node then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| @@ -110,7 +114,7 @@ awards.register_trigger("craft", { | ||||
| 	key_is_item = true, | ||||
| }) | ||||
| --minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) | ||||
| --	if not player or itemstack:is_empty() then | ||||
| --	if not player_ok(player) or itemstack:is_empty() then | ||||
| --		return | ||||
| --	end | ||||
| -- | ||||
| @@ -131,11 +135,11 @@ awards.register_trigger("eat", { | ||||
| 	key_is_item = true, | ||||
| }) | ||||
| minetest.register_on_item_eat(function(_, _, itemstack, player, _) | ||||
| 	if not player or itemstack:is_empty() then | ||||
| 	if not player_ok(player) or itemstack:is_empty() then | ||||
| 		return | ||||
| 	end | ||||
|  | ||||
| 	local itemname = itemstack:get_name() | ||||
| 	itemname = minetest.registered_aliases[itemname] or itemname | ||||
| 	awards.notify_craft(player, itemname, itemstack:get_count()) | ||||
| 	awards.notify_eat(player, itemname) | ||||
| end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user