update to version 4.1
fixed: * text is saved if user exit formspec by pressign esc * everybody was allowed to edit the locked arrow sign * uninitialized global variable * tidy up code
This commit is contained in:
		
							
								
								
									
										29
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								init.lua
									
									
									
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| --more_signs by addi | ||||
| --arrow_signs by addi | ||||
| --thanks to Jat15 for the new place and rotate-system. | ||||
| --Code and Textures are under the CC by-sa 3.0 licence 	 | ||||
| --see: http://creativecommons.org/licenses/by-sa/3.0/	 | ||||
| 	 | ||||
| @@ -8,7 +9,7 @@ arrow_signs={} | ||||
|  | ||||
| arrow_signs.formspec = "field[text;Sign text:;${text}]"; | ||||
|  | ||||
| arrow_signs_on_place = function(itemstack, placer, pointed_thing) | ||||
| arrow_signs.on_place = function(itemstack, placer, pointed_thing) | ||||
| 	 | ||||
| 	local posabove = pointed_thing.above | ||||
| 	local posunder = pointed_thing.under | ||||
| @@ -103,20 +104,20 @@ arrow_signs_on_place = function(itemstack, placer, pointed_thing) | ||||
| 	 | ||||
| end | ||||
|  | ||||
|  function arrow_signs:savetext(pos, formname, fields, sender) | ||||
| 		 | ||||
| arrow_signs.savetext = function(pos, formname, fields, sender) | ||||
| 	if fields.text then | ||||
| 		if not minetest.get_player_privs(sender:get_player_name())["interact"] then | ||||
| 			minetest.chat_send_player(sender:get_player_name(), "error: you don't have permission to edit the sign. you need the interact priv") | ||||
| 		return | ||||
| 		end | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		fields.text = fields.text or "" | ||||
| 		print((sender:get_player_name() or "").." wrote \""..fields.text.. | ||||
| 				"\" to sign at "..minetest.pos_to_string(pos)) | ||||
| 		minetest.log("action", (sender:get_player_name() or "").." wrote \""..fields.text.. | ||||
| 				"\" to sign at "..minetest.pos_to_string(pos)); | ||||
| 		meta:set_string("text", fields.text) | ||||
| 		text = arrow_signs:create_lines(fields.text) | ||||
| 		local text = arrow_signs.create_lines(fields.text) | ||||
| 		meta:set_string("infotext", '"'..text..'"') | ||||
| 		i=0 | ||||
| 		local i=0 | ||||
| 		for wort in text:gfind("\n") do | ||||
| 		i=i+1 | ||||
|         end | ||||
| @@ -125,8 +126,10 @@ end | ||||
| 		end | ||||
| 	return true | ||||
| 	end | ||||
| end | ||||
|  | ||||
| function arrow_signs:create_lines(text) | ||||
| --this function creates the linebreaks | ||||
| arrow_signs.create_lines = function(text) | ||||
| 	text = text:gsub("/", "\"\n\"") | ||||
| 	text = text:gsub("|", "\"\n\"") | ||||
| 	return text | ||||
| @@ -163,16 +166,14 @@ minetest.register_node("arrow_signs:wall", { | ||||
| 	walkable = false, | ||||
| 	groups = {choppy=2,dig_immediate=2,sign=1}, | ||||
| 	sounds = default.node_sound_defaults(), | ||||
| 	on_place = arrow_signs_on_place,	 | ||||
| 	on_place = arrow_signs.on_place,	 | ||||
| 	on_construct = function(pos) | ||||
| 		--local n = minetest.get_node(pos) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("formspec", arrow_signs.formspec) | ||||
| 		meta:set_string("infotext", "\"\"") | ||||
| 	end, | ||||
| 	on_receive_fields = function(pos, formname, fields, sender) | ||||
| 		arrow_signs:savetext(pos, formname, fields, sender) | ||||
| 		meta:set_string("infotext", [[""]]) | ||||
| 	end, | ||||
| 	on_receive_fields = arrow_signs.savetext, | ||||
| }) | ||||
|  | ||||
| --Recipes | ||||
|   | ||||
| @@ -26,14 +26,16 @@ minetest.register_node("arrow_signs:shared_locked", { | ||||
| 	groups = {choppy=2,dig_immediate=2,sign_locked=1}, | ||||
| 	legacy_wallmounted = true, | ||||
| 	 | ||||
| 	on_place = arrow_signs_on_place, | ||||
| 	 | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 			arrow_signs.on_place(itemstack, placer, pointed_thing); | ||||
| 			locks:lock_set_owner( pointed_thing.above, placer, "Shared locked sign" ); | ||||
| 	end, | ||||
| 	on_construct = function(pos) | ||||
| 			local meta =  minetest.get_meta(pos) | ||||
| 			-- prepare the lock of the sign | ||||
| 			locks:lock_init( pos, | ||||
| 							"size[8,4]".. | ||||
| 							"field[0.3,0.6;6,0.7;text;Text:;]".. | ||||
| 							"field[0.3,0.6;6,0.7;text;Text:;${text}]".. | ||||
| 							"field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. | ||||
| 							"button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); | ||||
| 	end, | ||||
| @@ -54,18 +56,21 @@ minetest.register_node("arrow_signs:shared_locked", { | ||||
| 				and ( not(fields.locks_sent_lock_command) | ||||
| 					   or fields.locks_sent_lock_command=="") | ||||
| 				and locks:lock_allow_use( pos, sender )) then | ||||
|  | ||||
| 				--then save the text to the sign meta | ||||
| 				--print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) | ||||
| 				local meta =  minetest.get_meta(pos) | ||||
| 				fields.text = fields.text or ""; | ||||
| 				print((sender:get_player_name() or "").." wrote \""..fields.text.. | ||||
| 				minetest.log("action", (sender:get_player_name() or "").." wrote \""..fields.text.. | ||||
| 							"\" to sign at "..minetest.pos_to_string(pos)); | ||||
| 				meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); | ||||
| 				meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); | ||||
| 				meta:set_string("text", fields.text); | ||||
| 				local text = arrow_signs.create_lines(fields.text) | ||||
| 				meta:set_string("infotext", '"'..text..'"'.." ["..sender:get_player_name().."]"); | ||||
|  | ||||
| 			-- a command for the lock? | ||||
| 			else | ||||
| 			   arrow_signs:savetext( pos, formname, fields, sender ); | ||||
| 				--do nothing, because user does not have the right to change the sign | ||||
| 				--a warning message is also printed by the locks mod | ||||
| 				--arrow_signs.savetext( pos, formname, fields, sender ); | ||||
| 			end | ||||
|  | ||||
| 	end, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user