|  | 
	
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Sat Jun 05, 2004 6:49 pm 
 #var editing
 
 |  
				| I have made some scripts to clear all the immunities, resistances, and vulns on a mob and to then reapply a number of random imm/res/vuln back on to the mob. To cut down on the spam I get from flagging and the spam the rest of the staff sees from wiznet secure, I can execute this command to remove all the immunities. 
 flag mob *mob imm - magic poison holy energy disease drowning illusion
 
 By changing the - to +, I can add multiple damn types back. How can I change the below script to run x number of times with the immune var getting update, not overwritten, each time the script runs. Ex: first run through returns holy, second run returns acid. The immune var at the end of the second run is "holy acid."
 
 (Note, the @ spec char has been changed to * because of the color code system on my mud)
 
 #var mob %1
 #var number %random( 1, 13)
 #var immune %item( *immlist, *number)
 |  | 
	
	  |  | 
	
		|  | 
	
		| LightBulb MASTER
 
 
 Joined: 28 Nov 2000
 Posts: 4817
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 06, 2004 2:09 am 
 |  
				| Clear the variable before starting. #VAR immune {}
 Then just check to see if there's anything in it each time you repeat.
 #IF %len( *immune) {#VAR immune {*immune %item( *immlist, *number)}} {#VAR immune {%item( *immlist, *number)}}
 
 By the way, it's hard to think of a worse choice for your variable symbol than the general-purpose wildcard.
 |  | 
	
	  |  | 
	
		|  | 
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 06, 2004 2:56 am 
 |  
				| Well, when I made it a * it was REAL late. I'll change it again. As for getting a for/next like statement to determine how many times it adds in nouns, what is the best way to do this? 
 |  | 
	
	  |  | 
	
		|  | 
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 06, 2004 3:01 am 
 |  
				| Oh and I was so rude! Thank you, LightBulb. 
 |  | 
	
	  |  | 
	
		|  | 
	
		| LightBulb MASTER
 
 
 Joined: 28 Nov 2000
 Posts: 4817
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 06, 2004 11:52 am 
 |  
				| If you don't want duplication, the best method is to use a list rather than a string. #ADDITEM will automatically prevent duplicate entries and you can easily convert the list to a string when you are finished by replacing the |s with spaces. 
 If you just want to count how many times each immunity is used, a stringlist would still be a good idea but you would use the %additem function instead of the #ADDITEM command. The %countlist function will quickly provide the number of times each item exists in the list.
 
 The reason * is a poor choice for variable symbol is that variables are frequently used in trigger patterns, so it's not a good idea to assign a symbol which already has another meaning assigned to it.
 |  | 
	
	  |  | 
	
		|  | 
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Sat Jun 12, 2004 5:33 pm 
 |  
				| Well, getting closer to getting this thing finished. I've added an #until statement in, but it doesn't seem to want to work correctly. Here is where it stands now. 
 #var immune {}
 #until {RI = 0} {$number %random( 1, 13) ; #IF %len( $immune) {#VAR immune {$immune %item( $immlist, $number)}} {#VAR immune {%item( $immlist, $number)} ; #add RI -1}}
 
 RI is a varible set in an alias that determines how many Random Immunities I want the mob to have. It seems to just keep adding random immunes in there, completely igoring the #until statement. Is my #add in the wrong place or do I have a syntax error in there somewhere?
 |  | 
	
	  |  | 
	
		|  | 
	
		| LightBulb MASTER
 
 
 Joined: 28 Nov 2000
 Posts: 4817
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 13, 2004 3:08 am 
 |  
				| Did you mean? #UNTIL {$RI = 0}
 |  | 
	
	  |  | 
	
		|  | 
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 13, 2004 5:35 am 
 |  
				| Well, I'm getting very frustrated with getting this script to work correctly. Anyone interested in being brave and going over the entire thing and attempt to straighten it out? 
 |  | 
	
	  |  | 
	
		|  | 
	
		| LightBulb MASTER
 
 
 Joined: 28 Nov 2000
 Posts: 4817
 Location: USA
 
 | 
			
			  |  Posted: Sun Jun 13, 2004 5:59 pm 
 |  
				| Why did you ignore my question? You don't have to answer it, but it does answer your question. 
 RI is a string. It will never equal 0. If you meant a variable named RI, then you MUST put the variable symbol in front of the name! Otherwise, your loop will continue forever since the expression controlling it will always be false.
 |  | 
	
	  |  | 
	
		|  | 
	
		| turian Novice
 
 
 Joined: 05 Jun 2004
 Posts: 37
 Location: USA
 
 | 
			
			  |  Posted: Mon Jun 14, 2004 9:06 pm 
 |  
				| Didn't mean to not answer, my mistake. Yes, I did mean $RI and threw in that fix to no avail. 
 |  | 
	
	  |  | 
	
		|  | 
	
		|  | 
	
		|  |