mirror of
				https://github.com/sys4-fr/server-nalc.git
				synced 2025-10-31 04:25:32 +01:00 
			
		
		
		
	[peace_areas] Apply Hg's peace_areas' fixes
This commit is contained in:
		| @@ -5,9 +5,9 @@ | ||||
|  | ||||
| peace_areas = {areas = {}} | ||||
|  | ||||
| minetest.register_on_punchplayer(function(player, hitter) | ||||
| function is_in_peace_area(player) | ||||
| 	local pos = player:getpos()  | ||||
| 	if pos == nil then return end | ||||
| 	if pos == nil then return false end | ||||
| 	for name, positions in pairs(peace_areas.areas) do | ||||
| 		local pos1 = positions["pos1"] | ||||
| 		local pos2 = positions["pos2"] | ||||
| @@ -24,18 +24,45 @@ minetest.register_on_punchplayer(function(player, hitter) | ||||
| 		if minp.x < pos.x and pos.x < maxp.x and | ||||
| 			minp.y < pos.y and pos.y < maxp.y and | ||||
| 			minp.z < pos.z and pos.z < maxp.z then | ||||
| 			if hitter:is_player() then | ||||
| 				minetest.chat_send_player(hitter:get_player_name(), "You cannot punch player " .. | ||||
| 					player:get_player_name() .. ". They are in area " .. name .. ".") | ||||
| 			end | ||||
| 			return true | ||||
| 			--[[ | ||||
| 			Note: | ||||
| 				This use of the callback register_on_punchplayer may prevent other | ||||
| 				instance of it to work correctly. Please take note of it. | ||||
| 			]]-- | ||||
| 		end | ||||
| 	end | ||||
| 	return false | ||||
| end | ||||
|  | ||||
| function peace_area(pos) | ||||
| 	for name, positions in pairs(peace_areas.areas) do | ||||
| 		local pos1 = positions["pos1"] | ||||
| 		local pos2 = positions["pos2"] | ||||
| 		local minp = { | ||||
| 			x = math.min(pos1.x, pos2.x), | ||||
| 			y = math.min(pos1.y, pos2.y), | ||||
| 			z = math.min(pos1.z, pos2.z) | ||||
| 		} | ||||
| 		local maxp = { | ||||
| 			x = math.max(pos1.x, pos2.x), | ||||
| 			y = math.max(pos1.y, pos2.y), | ||||
| 			z = math.max(pos1.z, pos2.z) | ||||
| 		} | ||||
| 		if minp.x < pos.x and pos.x < maxp.x and | ||||
| 			minp.y < pos.y and pos.y < maxp.y and | ||||
| 			minp.z < pos.z and pos.z < maxp.z then | ||||
| 			return name | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_on_punchplayer(function(player, hitter) | ||||
| 	if is_in_peace_area(player) and hitter:is_player() then | ||||
| 		minetest.chat_send_player(hitter:get_player_name(), "You cannot punch player " .. | ||||
| 			player:get_player_name() .. ". They are in area '" .. peace_area(player:getpos()) .. "'.") | ||||
| 		return true | ||||
| 		--[[ | ||||
| 		Note: | ||||
| 			This use of the callback register_on_punchplayer may prevent other | ||||
| 			instance of it to work correctly. Please take note of it. | ||||
| 		]]-- | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| function peace_areas.register_area(area_name, def) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user