|  | 
	
	
		| Darklord Beginner
 
 
 Joined: 29 Jan 2008
 Posts: 17
 
 
 | 
			
			  |  Posted: Tue Jan 29, 2008 8:00 pm 
 For Next Loop
 
 |  
				| I would like to see an example of a for next loop, my goal is to loop rang of numbers, room numbers to be specific 
 Something like this, but Im lost at how to build it in ZMud
 
 For %room = 1 to 30000
 goto %room
 next %room
 
 Thanks in advance
 Darklord
 |  | 
	
	  |  | 
	
		|  | 
	
		| Taz GURU
 
 
 Joined: 28 Sep 2000
 Posts: 1395
 Location: United Kingdom
 
 | 
			
			  |  Posted: Tue Jan 29, 2008 8:20 pm 
 |  
				| You need to use #FORALL. 
 In your specific case I think you're wanting to go through all rooms in your map and do something so you want
 
 #FORALL %numrooms {#noop replace text inside these curly braces with what you want to do instead of no operation.}
 |  | 
	
	  | 
		    
			  | _________________ Taz :)
 
 Last edited by Taz on Tue Jan 29, 2008 8:26 pm; edited 1 time in total
 |   |  | 
	
		|  | 
	
		| Fang Xianfu GURU
 
  
 Joined: 26 Jan 2004
 Posts: 5155
 Location: United Kingdom
 
 | 
			
			  |  Posted: Tue Jan 29, 2008 8:25 pm 
 |  
				| #loop is zScript's looping command. If you need to do something more complex (like speedwalking all the way to a room for each step) you might find it better to have your own variable to store the number in, and then add 1 to it as needed. 
 |  | 
	
	  |  | 
	
		|  | 
	
		| Darklord Beginner
 
 
 Joined: 29 Jan 2008
 Posts: 17
 
 
 | 
			
			  |  Posted: Tue Jan 29, 2008 8:38 pm   Thanks using the #loop works perfectly 
 |  
				| #LOOP 3005,3000 {goto %i} 
 
 
 Thanks for the prompt replys
 You guys rock
 Darklord
 |  | 
	
	  |  | 
	
		|  | 
	
		| Darklord Beginner
 
 
 Joined: 29 Jan 2008
 Posts: 17
 
 
 | 
			
			  |  Posted: Sun Feb 03, 2008 4:19 pm   This fires a million times 
 |  
				| on a small scale, Im using 'goto' to goto room then looking for items, in this case a Trophy is used for testing, I fires, but when it fires it fires more than once, just need it to fire for the specific room, room being %i 
 
 
 #LOOP 16009,16011 {
 goto %i
 #TRIGGER {Trophy} {say there is Trophy in room %i}
 }
 
 
 Told you guys I would be back :)
 Darklord
 |  | 
	
	  |  | 
	
		|  | 
	
		| Vijilante SubAdmin
 
  
 Joined: 18 Nov 2001
 Posts: 5187
 
 
 | 
			
			  |  Posted: Sun Feb 03, 2008 8:55 pm 
 |  
				| First the trigger is a seperate setting.  You want to create it once and have it do whatever it is supposed to.  Right now you have it being receated with each iteration of the loop.  This is what is leading to your multiple firing situation. 
 Next you want to actually await some data after each goto command.  In order to do this properly you need to have 2 distinct recognition patterns.  One is is the data you want to see. The other is some data that you will definitely see, and specifically it will be seen after the data you want.  That second condition is generally much harder to determine.  Sometimes the second condition can only be met by recognizing some data that will be before what you want and then allowing time to elapse.
 
 Without more specific information I can not tell you an exact way to do what you want.  The general description of how to do it, that I gave above, might be enough.
 |  | 
	
	  | 
		    
			  | _________________ The only good questions are the ones we have never answered before.
 Search the Forums
 |   |  | 
	
		|  | 
	
		| Darklord Beginner
 
 
 Joined: 29 Jan 2008
 Posts: 17
 
 
 | 
			
			  |  Posted: Sun Feb 03, 2008 9:34 pm 
 |  
				| Thanks for the quick reply 
 Specific is:
 I have vnums for an area, ie 16001 to 16459
 The #loop 16001, 16459 loops through the vnums doing goto %1
 
 #loop 16001, 16459 { goto %1}  * works great
 
 Now I want use triggers  ie (%w) Trophy
 (%w) Trophy
 clan Trophy was see in room %i    * clan being ooc for a clan
 
 I did get this to work, with out the repeating, but it uses the last value in the #loop this being 16459, where is needs to be the %i it fired in
 
 Thanks again for the help
 Darklord
 |  | 
	
	  |  | 
	
		|  | 
	
		|  | 
	
		|  |