| 
		
			| AndMetal | 11-15-2008 07:12 PM |  
 
	Quote: 
	
		| 
 
					Originally Posted by paaco
					(Post 160034)
				 Only thing in the quest that does not work correctly is all of the nested if statements up top, rest works perfectly. 
 |  What is sounds like you're trying to do is a string of ORs, not nested IFs. If you were trying to nest IF statements, you could also do it by using a bunch of AND statements:
 
	Code: 
 if ((($ulevel <= 8) && ($mlevel + 3 >= $ulevel) )&& (($ulevel == 9) && ($mlevel + 4 >= $ulevel))
 && (($ulevel == 10) && ($mlevel + 5 >= $ulevel))
 && (($ulevel == 11) && ($mlevel + 5 >= $ulevel))
 && (($ulevel == 12) && ($mlevel + 5 >= $ulevel))
 && (($ulevel == 13) && ($mlevel + 6 >= $ulevel))
 && (($ulevel == 14) && ($mlevel + 6 >= $ulevel))
 && (($ulevel == 15) && ($mlevel + 6 >= $ulevel))
 && (($ulevel == 16) && ($mlevel + 6 >= $ulevel))
 && (($ulevel == 17) && ($mlevel + 7 >= $ulevel))
 && (($ulevel == 18) && ($mlevel + 7 >= $ulevel))
 && (($ulevel == 19) && ($mlevel + 7 >= $ulevel))
 && (($ulevel == 20) && ($mlevel + 7 >= $ulevel))
 && (($ulevel == 21) && ($mlevel + 8 >= $ulevel))
 && (($ulevel == 22) && ($mlevel + 8 >= $ulevel))
 && (($ulevel == 23) && ($mlevel + 8 >= $ulevel))
 && (($ulevel == 24) && ($mlevel + 8 >= $ulevel))
 && (($ulevel == 25) && ($mlevel + 9 >= $ulevel))
 && (($ulevel == 26) && ($mlevel + 9 >= $ulevel))
 && (($ulevel == 27) && ($mlevel + 9 >= $ulevel))
 && (($ulevel == 28) && ($mlevel + 10 >= $ulevel))
 && (($ulevel == 29) && ($mlevel + 10 >= $ulevel))
 && (($ulevel == 30) && ($mlevel + 10 >= $ulevel))
 && (($ulevel == 31) && ($mlevel + 11 >= $ulevel))
 && (($ulevel == 32) && ($mlevel + 11 >= $ulevel))
 && (($ulevel == 33) && ($mlevel + 12 >= $ulevel))
 && (($ulevel == 34) && ($mlevel + 12 >= $ulevel))
 && (($ulevel == 35) && ($mlevel + 12 >= $ulevel))
 && (($ulevel == 36) && ($mlevel + 12 >= $ulevel))
 && (($ulevel == 37) && ($mlevel + 13 >= $ulevel))
 && (($ulevel == 38) && ($mlevel + 13 >= $ulevel))
 && (($ulevel == 39) && ($mlevel + 13 >= $ulevel))
 && (($ulevel == 40) && ($mlevel + 13 >= $ulevel))
 && (($ulevel == 41) && ($mlevel + 14 >= $ulevel))
 && (($ulevel == 42) && ($mlevel + 15 >= $ulevel))
 && (($ulevel == 43) && ($mlevel + 15 >= $ulevel))
 && (($ulevel == 44) && ($mlevel + 15 >= $ulevel))
 && (($ulevel == 45) && ($mlevel + 16 >= $ulevel))
 && (($ulevel == 46) && ($mlevel + 16 >= $ulevel))
 && (($ulevel == 47) && ($mlevel + 16 >= $ulevel))
 && (($ulevel == 48) && ($mlevel + 16 >= $ulevel))
 && (($ulevel == 49) && ($mlevel + 17 >= $ulevel))
 && (($ulevel == 50) && ($mlevel + 17 >= $ulevel))
 ) {
 But that's not going to work, because you're never going to be all levels 50 and below at the same time. However, if you changed all of the &&'s to ||'s, it would do what you're looking for.
 
	Quote: 
	
		| 
 
					Originally Posted by AndMetal
					(Post 160033)
				 There's a lot of things I can think of that would trim the script down a LOT, but I think it would be better to understand where we're trying to get first. 
 |  Here's a thought on the whole if part...
 
I'm not sure if this will actually work (unable to test syntax, etc), but it should work in theory:
 
	Code: 
 sub EVENT_KILLED_MERIT {# $level_diff{level} == difference
 my %level_diff = (
 1, 3,
 2, 3,
 3, 3,
 4, 3,
 5, 3,
 6, 3,
 7, 3,
 8, 3,
 9, 4,
 10, 5,
 11, 5,
 12, 5,
 13, 6,
 14, 6,
 15, 6,
 16, 6,
 17, 7,
 18, 7,
 19, 7,
 20, 7,
 21, 8,
 22, 8,
 23, 8,
 24, 8,
 25, 9,
 26, 9,
 27, 9,
 28, 10,
 29, 10,
 30, 10,
 31, 11,
 32, 11,
 33, 12,
 34, 12,
 35, 12,
 36, 12,
 37, 13,
 38, 13,
 39, 13,
 40, 13,
 41, 14,
 42, 15,
 43, 15,
 44, 15,
 45, 16,
 46, 16,
 47, 16,
 48, 16,
 49, 17,
 50, 17,
 )
 
 if ($mlevel + $level_diff{$ulevel} >= $ulevel) {
 #whatever
 }
 }
 Although this is a little more dynamic, since it accounts any values over 50:
 
	Code: 
 sub EVENT_KILLED_MERIT {if ((($ulevel <= 8) && ($mlevel + 3 >= $ulevel) )
 || (($ulevel == 9) && ($mlevel + 4 >= $ulevel))
 || (($ulevel >= 10 && $ulevel <= 12) && ($mlevel + 5 >= $ulevel))
 || (($ulevel >= 13 && $ulevel <= 16) && ($mlevel + 6 >= $ulevel))
 || (($ulevel >= 17 && $ulevel <= 20) && ($mlevel + 7 >= $ulevel))
 || (($ulevel >= 21 && $ulevel <= 24) && ($mlevel + 8 >= $ulevel))
 || (($ulevel >= 25 && $ulevel <= 27) && ($mlevel + 9 >= $ulevel))
 || (($ulevel >= 28 && $ulevel <= 30) && ($mlevel + 10 >= $ulevel))
 || (($ulevel >= 31 && $ulevel <= 32) && ($mlevel + 11 >= $ulevel))
 || (($ulevel >= 33 && $ulevel <= 36) && ($mlevel + 12 >= $ulevel))
 || (($ulevel >= 37 && $ulevel <= 40) && ($mlevel + 13 >= $ulevel))
 || (($ulevel == 41) && ($mlevel + 14 >= $ulevel))
 || (($ulevel >= 42 && $ulevel <= 44) && ($mlevel + 15 >= $ulevel))
 || (($ulevel >= 45 && $ulevel <= 48) && ($mlevel + 16 >= $ulevel))
 || (($ulevel >= 49) && ($mlevel + 17 >= $ulevel))
 ) {
 #whatever
 }
 }
 |