forked from minetest-mods/more_chests
		
	Merge pull request #4 from HybridDog/master
fix dropbox cheat Thanx @HybridDog !
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | ## Generic ignorable patterns and files | ||||||
|  | *~ | ||||||
|  | .*.swp | ||||||
|  | debug.txt | ||||||
							
								
								
									
										31
									
								
								dropbox.lua
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								dropbox.lua
									
									
									
									
									
								
							| @@ -14,13 +14,13 @@ minetest.register_node("more_chests:dropbox", { | |||||||
| 	legacy_facedir_simple = true, | 	legacy_facedir_simple = true, | ||||||
| 	sounds = default.node_sound_wood_defaults(), | 	sounds = default.node_sound_wood_defaults(), | ||||||
| 	after_place_node = function(pos, placer) | 	after_place_node = function(pos, placer) | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.get_meta(pos) | ||||||
| 		meta:set_string("owner", placer:get_player_name() or "") | 		meta:set_string("owner", placer:get_player_name() or "") | ||||||
| 		meta:set_string("infotext", "Dropbox (owned by ".. | 		meta:set_string("infotext", "Dropbox (owned by ".. | ||||||
| 				meta:get_string("owner")..")") | 				meta:get_string("owner")..")") | ||||||
| 	end, | 	end, | ||||||
| 	on_construct = function(pos) | 	on_construct = function(pos) | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.get_meta(pos) | ||||||
| 		meta:set_string("formspec", | 		meta:set_string("formspec", | ||||||
| 				"size[8,9]".. | 				"size[8,9]".. | ||||||
| 				"list[current_name;main;0,0;8,4;]".. | 				"list[current_name;main;0,0;8,4;]".. | ||||||
| @@ -30,12 +30,12 @@ minetest.register_node("more_chests:dropbox", { | |||||||
| 		inv:set_size("main", 8*4) | 		inv:set_size("main", 8*4) | ||||||
| 	end, | 	end, | ||||||
| 	can_dig = function(pos,player) | 	can_dig = function(pos,player) | ||||||
| 		local meta = minetest.env:get_meta(pos); | 		local meta = minetest.get_meta(pos); | ||||||
| 		local inv = meta:get_inventory() | 		local inv = meta:get_inventory() | ||||||
| 		return inv:is_empty("main") | 		return inv:is_empty("main") | ||||||
| 	end, | 	end, | ||||||
|     allow_metadata_inventory_take = function(pos, listname, index, stack, player) | 	allow_metadata_inventory_take = function(pos, listname, index, stack, player) | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.get_meta(pos) | ||||||
| 		if not has_locked_chest_privilege(meta, player) then | 		if not has_locked_chest_privilege(meta, player) then | ||||||
| 			minetest.log("action", player:get_player_name().. | 			minetest.log("action", player:get_player_name().. | ||||||
| 					" tried to access a dropbox belonging to ".. | 					" tried to access a dropbox belonging to ".. | ||||||
| @@ -45,15 +45,32 @@ minetest.register_node("more_chests:dropbox", { | |||||||
| 		end | 		end | ||||||
| 		return stack:get_count() | 		return stack:get_count() | ||||||
| 	end, | 	end, | ||||||
|  | 	allow_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||||
|  | 		local meta = minetest.get_meta(pos) | ||||||
|  | 		if has_locked_chest_privilege(meta, player) then | ||||||
|  | 			return stack:get_count() | ||||||
|  | 		end | ||||||
|  | 		local target = meta:get_inventory():get_list(listname)[index] | ||||||
|  | 		local target_name = target:get_name() | ||||||
|  | 		local stack_count = stack:get_count() | ||||||
|  | 		if target_name == stack:get_name() | ||||||
|  | 		and target:get_count() < stack_count then | ||||||
|  | 			return stack_count | ||||||
|  | 		end | ||||||
|  | 		if target_name ~= "" then | ||||||
|  | 			return 0 | ||||||
|  | 		end | ||||||
|  | 		return stack_count | ||||||
|  | 	end, | ||||||
| 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) | 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff in dropbox at "..minetest.pos_to_string(pos)) | 				" moves stuff in dropbox at "..minetest.pos_to_string(pos)) | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_put = function(pos, listname, index, stack, player) | 	on_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff to dropbox at "..minetest.pos_to_string(pos)) | 				" moves stuff to dropbox at "..minetest.pos_to_string(pos)) | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_take = function(pos, listname, index, stack, player) | 	on_metadata_inventory_take = function(pos, listname, index, stack, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" takes stuff from dropbox at "..minetest.pos_to_string(pos)) | 				" takes stuff from dropbox at "..minetest.pos_to_string(pos)) | ||||||
| 	end, | 	end, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user