yep ill share it with those that have acess to this forum ifanyone ever need it... its still pretty beta if someone wanna help me ill b happy to work with someone (this is a priority over diablo... for now). this bot is 100% by me, you need to have window mode set to 1009x763 resoluition INCLUDING WINDOWS XP CLASSIC THEME. have the UI set to larger in gw options and the default interface. main.au3 [code] Opt ( "CaretCoordMode" , 2 ) opt ( "MouseCoordMode" , 2 ) opt ( "PixelCoordMode" , 2 ) ;WINSIZE: 1009 763 WinMinimizeAll() WinActivate( 'Guild Wars' ) WinWaitActive( 'Guild Wars' ) $file = FileOpen( 'log.txt',2) WinMove('Guild Wars','',0,0) MouseClick( 'left', 50, -10 ); ;è Sleep( 2000 ) ;511/38 _log( '==================================================================================' ) HotKeySet( '9','TooglePause' ) ;configs global $SkillChecksum1 = 629865937 , _ $SkillChecksum2 = 1432347367 , _ $SkillChecksum3 = 548153391 , _ $SkillChecksum4 = 3353687470, _ $SkillChecksum5 = 1037325805, _ $SkillChecksum6 = 789173279, _ $SkillChecksum7 = 0, _ $SkillChecksum8 = 0 global $AttackTimeout_Minotaur = 8*60*1000 , $AttackTimeout_Hydra=20*60*1000, $AttackTimeout_Griffon=10*60*1000 global const $ItemColor_White = 16777215, $ItemColor_Blue = 0x99EEFF, $MonsterColor_Red = 15663104 ;item colors definition global $SplashText = '' global $SellRun = 10;ID each x runs ;private vars global $VigorousTimer = -1, $DefyTimer = -1, $GladTimer = 11000,$way = 1, $Dead = false, $coretimer = TimerInit(), $paused = false global $FirstBrake = Random( 1*60*60*1000,2*60*60*1000) , $SecondBrake = Random( 2*60*60*1000,4*60*60*1000), $ThirdBrake=Random(4*60*60*1000,6*60*60*1000), $FourthBrake= Random( 6*60*60*1000,9*60*60*1000 ) global $runs = 0, $hours, $mins, $Secs func TooglePause() $paused = not $paused EndFunc #region reference arrays global $Monster[255] $Monster[0] = '98BD9641C9EA99C47A121186A98968A12CA5' ;level 24 minotaure $Monster[1] = '98BD99896BCF4249C47A121186A98968A12CA5' ;level 10 minotaure $Monster[2] = '271A99BBAF4DF9F42423D4271F4241' ;lvl 22 hydra $Monster[3] = '271A99BBAC8F42423D4271F4241' ;lvl 26 hydra $Monster[4] = '3E9F4DF9643E93D49959D2DC6C186A98968C356498968F4628186A2715' ;lvl 21 griffon $Monster[5] = '3E8292888F4381312D141312D1E848C8A7D1312D14C81' ;gordok merchant in ICS ;$Monster[5] = '' ; lvl 26 griffon global $IgnoreItems[255] $IgnoreItems[0] = '3E864F424186A2713E81F4283E8493E1' ;ice tooth cave $IgnoreItems[1] = '2FB179F4243E84E232FAF8F4241312DF42464271F4241'; skyward reach $IgnoreItems[2] = '4C4DB1F424C83E85F424164F4241' ;augury rock $IgnoreItems[3] = '3E864271F4244C63C327113882714C4B41874131C941642715' ;teleport switch $IgnoreItems[4] = '98BDA43ED12C13881998968BB8192713E8141' ;destinys gorge 98BDA43ED12C13881998968BB8192713E8141 64989683E812C271A5C81312DF4A198BD93E8186A4D99A3ED $IgnoreItems[5] = '6498E4AA3ED64A7A122713E898BD93E8186A98968A4C4B43' ;bleached bones (grif) $IgnoreItems[6] = 'A7A122713E93D4989683E9' ; the scar global $KeepItems[7] $KeepItems[0] = '3D927112714C4B4F424127151' ;warrior tome $KeepItems[1] = '6498968A3E9' ;lockpick $KeepItems[2] = '138861A8AFA98968F624861DA271D5EDA61A8CD' ;silver dye $KeepItems[3] = '3E83D9A9C4FB44C4B7EA28138D23E83D9155CC989681' ; GRAY $KeepItems[4] = '6461A81FA1927A12641312D43F4E261A8A9DD1' ;black dye $KeepItems[5] = '2861A82861A862AE8F51E61A8C82626A2CFA2625A1' ;yellow dye $KeepItems[6] = '4C4B442713D964A7D1F44C35989682625A451' ;red dye #endregion ;include other files #include #include 'Common.au3' #include 'Minotaur.au3' #include 'hydra.au3' #include 'Griffon.au3' #include 'Griffon_HM.au3' ;ClipPut( getitemcode( $ItemColor_White) ) ;ClipPut( PixelChecksum(576,663,640,716) ) ;Exit ;877,79 ;ClipPut( PixelGetColor( 877,79 ) ) ;SellItems() ;ClearInventory() ;HotKeySet( '9','test' ) ;while 1 ; Sleep( 100 ) ; if PixelChecksum(369,68,401,80,1 ) == 1993648085 then ; MsgBox( 0,'','HEAL SIG' ) ; Exit ; EndIf ;WEnd ;exit func test() ;369,68,401,80 = 2424899071 1993648085 ClipPut( PixelChecksum( 369,68,401,80,1 ) ) Exit EndFunc func ClearInventory() Send('m') Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',500,500,2,1) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',650,380) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left', 469,535,2,1) Sleep( Random( 7000, 10000 ) ) Send( 'v' ) Sleep( Random( 1000, 2000 ) ) if getitemcode( $ItemColor_White ) <> $Monster[5] then return Send( '{SPACE}') Sleep( Random( 5000, 7000 ) ) ;ClipPut( SpecificChecksum( 463,123,653, 145, $ItemColor_White ) ) if SpecificChecksum( 463,123,653, 145, $ItemColor_White ) <> 51 then _log( 'Error opening trade screen' ) ;MsgBox( 0,'','ERROR OPENING TRAde sacreen' ) return false EndIf MouseClick( 'Left',560,106 ) Sleep( 2000 ) $lastsum = 0 while 1 if SellItems() then _log('sellitems return true continue loop') continueloop Else _log('sellitems return false') MouseMove( 769, 351 ) MouseWheel( 'down', 5 ) if $lastsum = 0 then _log( 'lastsum=' & $lastsum ) $lastsum = PixelChecksum( 950,252,962,388, 1 ) _log( 'lastsum=' & $lastsum ) ContinueLoop EndIf _log( 'Lastsum=' & $lastsum & ' Currentsum=' & PixelChecksum( 950,252,962,388, 1 ) ) Sleep( Random( 50, 100 ) ) if $lastsum == PixelChecksum( 950,252,962,388, 1 ) then return $lastsum = PixelChecksum( 950,252,962,388, 1 ) EndIf WEnd EndFunc func SellItems() dim $ItemsArray[6][2] $ItemsArray[0][0] = 0 $ItemsArray[1][0] = 0 $ItemsArray[2][0] = 0 $ItemsArray[3][0] = 0 $ItemsArray[4][0] = 0 $ItemsArray[5][0] = 0 local $InvLeft = 505, $InvTop = 228, $invRight = 745, $InvBottom = 392 ;the square to scan for items local $numPixelsFound = 0, $ConsecutiveLines = 0, $ItemsArrayIndex = 0 for $y = $InvTop to $InvBottom ;scan top to bottom... for $x = $InvLeft to $invRight ;... left to right if PixelGetColor( $x, $y ) == $ItemColor_White then $numPixelsFound += 1 ;get the total pixels per lines Next if $numPixelsFound < 2 then ;this line is empty ;_log( $y & ' is empty' ) if $ConsecutiveLines > 3 then ;this means we found an item and are at the end of it _log( 'Item end found, Start = ' & $y - $ConsecutiveLines & ' End = ' & ($y - 1) & ' Size = ' & $ConsecutiveLines ) _log( 'Item code = ' & SpecificChecksum( $InvLeft, $y - $ConsecutiveLines, $invRight, $y - 1, $ItemColor_White ) ) $ItemsArray[$ItemsArrayIndex][0] = $y - $ConsecutiveLines $ItemsArray[$ItemsArrayIndex][1] = $y - 1 $ItemsArrayIndex +=1 ;increase the index EndIf $ConsecutiveLines = 0 Else ;this line contains white pixels _log( $y & ' contains white pixels. Total pixels found: ' & $numPixelsFound ) $ConsecutiveLines += 1 EndIf $numPixelsFound = 0 Next local $LastItem = 5 for $i = 0 to 5 if $ItemsArray[$i][0] == 0 then $LastItem = $i ExitLoop EndIf Next dim $SellItems[6] $SellItems[0] = false $SellItems[1] = false $SellItems[2] = false $SellItems[3] = false $SellItems[4] = false $SellItems[5] = false local $continueloop for $i = 0 to $LastItem ;-1 $continueloop = true Switch( $i ) case 1 for $x = $InvLeft to $invRight ;... left to right if PixelGetColor( $x, $InvTop -1 ) == $ItemColor_White Then $SellItems[0] = False $continueloop = false EndIf Next case 5 for $x = $InvLeft to $invRight ;... left to right if PixelGetColor( $x, $InvBottom + 1 ) == $ItemColor_White then $SellItems[5] = false $continueloop = false EndIf Next EndSwitch if not $ContinueLoop then ContinueLoop if $i > 5 then ExitLoop _log( 'Selling item #' & $i & ' to true' ) $SellItems[$i] = true $ItemCode = SpecificChecksum( $InvLeft,$ItemsArray[$i][0],$invRight,$ItemsArray[$i][1], $ItemColor_White ) _log($ItemCode) for $a = 0 to UBound( $KeepItems ) - 1 if $ItemCode == $KeepItems[$a] then _log( 'Item is in keep items list. current item: ' & $ItemCode & ' List item: ' & $KeepItems[$a] ) $SellItems[$i] = false ExitLoop EndIf Next Next for $i = 0 to 5 if $SellItems[$i] == true then if $ItemsArray[$i][0] < $InvTop then ContinueLoop ;this is a GAY bug, sometime i click out of inv (I think y = 0) must investigate, this is a temp fix _log( 'Selling item #' & $i ) ;todo sell item MouseClick( 'left', $InvLeft + 50, $ItemsArray[$i][0] + 4 ) Sleep( Random( 1000, 2000 ) ) MouseClick( 'left',799,597 ) Sleep( Random( 1000, 2000 ) ) return true Else _log( 'Dosent selling item #' & $i ) EndIf Next return False ;if return false it means no item is sold, so scrool or if at end exit, return true will ONLY sell 1 item. EndFunc func SpecificChecksum($left, $top, $right, $bottom, $color) local $LastFound, $ConsecutiveFails = 0, $TotalColors = 0 local $sum2[255];array of bytes local $sum = 0, $index = 1, $byteIndex = 0,$started = false for $x5 = $right to $left step -3 for $y5 = $Bottom to $Top - 14 step -3 if PixelGetColor( $x5, $y5 ) == $color then $sum += $index $started = true EndIf if not $started then ContinueLoop $index = $index *2 if $index > 4294967295 then ;add the byte into the array $sum2[$byteIndex] = Hex( $sum ) $sum = 0 $byteIndex += 1 $index = 1 EndIf Next Next ;built the string off the bytes $bytestring = '' for $i = $byteIndex to 0 step -1 $bytestring &= Hex( $sum2[$i] ) Next $bytestring = StringReplace( $bytestring, '0','') return $bytestring EndFunc while 1 global $RunTracker = 0 while not $paused _TicksToTime( TimerDiff( $coretimer ), $hours, $mins,$Secs ) $SplashText = @CRLF & 'Total runs: ' & $runs & @CRLF & 'Next inv clearance: ' & $SellRun - $RunTracker _ & @CRLF & 'Total run time: ' & $hours & ':' & $mins SplashTextOn( 'State','Starting a new run'&$SplashText,200,400,1010,0) ;travelto_hydra() ;SetDiff(1) ;SetSkillTemplate(1) ;LeaveArea_Hydra() ;Reach_Hydra() ;Main_Hydra() travelto_minotaur() SetDiff(1) SetSkillTemplate(3) main_minotaur() ;travelto_Griffon() ;while not LeaveArea_Griffon() ; travelto_minotaur() ; travelto_Griffon() ; WEnd ; Main_Griffon() ;travelto_Griffon_HM() ;while not LeaveArea_Griffon_HM() ; travelto_minotaur() ; travelto_Griffon_HM() ;WEnd ;Main_Griffon_HM() if $RunTracker == $SellRun then $RunTracker = 0 ;è ClearInventory() EndIf $RunTracker += 1 $runs += 1 WEnd WEnd [/code] common.au3 [code] ;TODO func func MissionMap( $Action ) ;1 = open 2 = close ;TODO EndFunc ;detect if a monster is within aggro are, true = monster in aggro, false = no monster in aggro Func ScanAggro() ;PixelSearch( 826,122,882,172,$MonsterColor_Red,10,1 ) ;if @error then ; Sleep( 100 ) ; PixelSearch( 826,122,882,172,$MonsterColor_Red,10,1 ) ; if @error then return false ;EndIf ;return True PixelSearch( 4,74,755,616,$MonsterColor_Red,10,1 ) if @error then Sleep( 100 ) PixelSearch( 4,74,755,616,$MonsterColor_Red,10,1 ) if @error then return false EndIf return True EndFunc ;set difficulty, 0=normal 1=hard Func SetDiff( $ID ) Switch( $ID ) case 0 MouseClick( 'left',790,352 ) Sleep( 500 ) case 1 MouseClick( 'left',829,352 ) Sleep( 500 ) EndSwitch EndFunc ;check if the desired skill is available func SkillAvailable($Location) ;location = 1 to 8 Switch $location case 1 if PixelChecksum(239,663,291,716) == $SkillChecksum1 then return true Case 2 if PixelChecksum(306,663,359,716) == $SkillChecksum2 then return true Case 3 if PixelChecksum(376,663,424,716) == $SkillChecksum3 then return true ;temp fix this is for watch yourself if PixelChecksum(376,663,424,716) == 3441050876 then return true case 4 if PixelChecksum(444,663,496,716) == $SkillChecksum4 then return true ;temps fix this is for glad defence if PixelChecksum(444,663,496,716) == 2655215 then return true case 5 if PixelChecksum(510,663,564,716) == $SkillChecksum5 then return true case 6 if PixelChecksum(576,663,640,716) == $SkillChecksum6 then return true case 7 EndSwitch return false EndFunc ;return mana % func GetManaPercent() local $LifeIndex = -1 for $x = 517 to 760 if PixelGetColor( $x, 644 ) == 7502 then $LifeIndex = $x ExitLoop EndIf Next if $LifeIndex = -1 then return 100 return Round( ( ( $LifeIndex - 517 ) / 243 ) * 100 ) - 6 EndFunc ;return life % func GetLifePercent() local $LifeIndex = -1 for $x = 246 to 493 if PixelGetColor( $x, 644 ) == 5711645 then $LifeIndex = $x ExitLoop EndIf Next if $LifeIndex = -1 then return 100 return Round( ( ( $LifeIndex - 246 ) / 247 ) * 100 ) EndFunc ;check if a target match (used on monster because it dosent match 100% due to health bar func TargetMatch( $Target, $StringReturned ) local $strLen = StringLen( $Target ), $MatchedChars = 0 if StringLen( $StringReturned ) < $strLen then $strLen = StringLen( $StringReturned ) for $i = 1 to $strLen if StringMid( $Target, $i, 1 ) == StringMid( $StringReturned, $i, 1 ) then $MatchedChars += 1 Next _log( 'Targetmatch: ' & $MatchedChars / $strLen ) if $MatchedChars / $strLen > 0.9 then return true return false EndFunc ;get the item code off a focused item func GetItemCode( $color ) local $Left = 360, $Top = 28, $Right = 653, $Bottom = 49 local $LastFound, $ConsecutiveFails = 0, $TotalColors = 0 local $sum2[255];array of bytes local $sum = 0, $index = 1, $byteIndex = 0,$started = false for $x5 = $right to $left step -3 for $y5 = $Bottom to $Top - 14 step -3 if PixelGetColor( $x5, $y5 ) == $color then $sum += $index $started = true EndIf if not $started then ContinueLoop $index = $index *2 if $index > 4294967295 then ;add the byte into the array $sum2[$byteIndex] = Hex( $sum ) $sum = 0 $byteIndex += 1 $index = 1 EndIf Next Next ;built the string off the bytes $bytestring = '' for $i = $byteIndex to 0 step -1 $bytestring &= Hex( $sum2[$i] ) Next $bytestring = StringReplace( $bytestring, '0','') return $bytestring EndFunc ;do some random stuff to avoid detection func DoRandomStuff() $bet = Random( 0, 100 ) Select case $bet > -1 and $bet < 10 return case $bet > 10 and $bet < 20 Send( '{enter}' ) Sleep( Random( 1000, 9000 ) ) Send( '/dance' ) Sleep( Random( 500, 2000 ) ) Send( '{enter}' ) Sleep( Random( 30000, 5*60*1000 ) ) case $bet > 20 and $bet < 30 Sleep( Random( 1000,2000 ) ) case $bet > 30 and $bet < 40 Sleep( Random( 100,1000 ) ) case $bet > 40 and $bet < 50 Sleep( Random( 10 * 1000,20*1000 ) ) case $bet > 50 and $bet < 60 Sleep( Random( 5*60*1000, 1*60*1000) ) case $bet > 60 and $bet < 70 Sleep( Random( 100,120*1000 ) ) case $bet > 70 and $bet < 80 Sleep( Random( 10,100 ) ) case $bet > 80 and $bet < 90 Send( '{enter}' ) Sleep( Random( 1000, 9000 ) ) Send( '/dance' ) Sleep( Random( 500, 2000 ) ) Send( '{enter}' ) Sleep( Random( 100,10000 ) ) case $bet > 90 and $bet < 101 Sleep( Random( 10,50 ) ) EndSelect EndFunc func _log( $string ) FileWriteLine( $file, $String ) EndFunc func TakeBreak() return if $FirstBrake > 0 then if TimerDiff( $coretimer ) > $FirstBrake then $FirstBrake = -1 $sleep = Random( 5, 35 ) for $i = 0 to $Sleep MouseMove( Random( 0, 800 ) ,Random(0,600) ) Sleep( 60*1000 ) Next endif ElseIf $SecondBrake > 0 then if TimerDiff( $coretimer ) > $SecondBrake then $SecondBrake = -1 $sleep = Random( 5, 35 ) for $i = 0 to $Sleep MouseMove( Random( 0, 800 ) ,Random(0,600) ) Sleep( 60*1000 ) Next endif ElseIf $ThirdBrake > 0 then if TimerDiff( $coretimer ) > $ThirdBrake then $ThirdBrake = -1 $sleep = Random( 5, 35 ) for $i = 0 to $Sleep MouseMove( Random( 0, 800 ) ,Random(0,600) ) Sleep( 60*1000 ) Next endif ElseIf $FourthBrake > 0 then if TimerDiff( $coretimer ) > $FourthBrake then $FourthBrake = -1 $sleep = Random( 5, 35 ) for $i = 0 to $Sleep MouseMove( Random( 0, 800 ) ,Random(0,600) ) Sleep( 60*1000 ) Next EndIf EndIf EndFunc func SetSkillTemplate($ID) Send( 'k' ) Sleep( Random( 2000, 3000 ) ) mouseclick( 'left', 192,118 ) Sleep( Random( 400, 800 ) ) MouseClick( 'left',276,160) Sleep( Random( 1000, 2000 ) ) switch $ID case 1 ;hydras MouseClick( 'left' , 274,207, 2, 1 ) Sleep( Random( 1000, 2000 ) ) case 2 Sleep( Random( 1000, 2000 ) ) case 3 ;minotaur griffons MouseClick( 'left',311,255,2,1 ) Sleep( Random( 1000, 2000 ) ) EndSwitch Send('{escape}') Sleep( Random( 1000, 2000 ) ) EndFunc [/code] minotuar.au3 [code] func Main_Minotaur() TakeBreak() $FirstPause = true SplashTextOn('Run info','Total runs: ' & $runs,100, 30, 1100,0 ) $runs += 1 $dead = false LeaveArea_Minotaur() _log( 'going to minotaurs' ) Sleep( Random( 100, 300 ) ) Send( '8' ) Sleep( Random( 6000, 7000 ) ) Send( 'é' ) Sleep( Random( 500, 1000 ) ) MouseClick( 'left', 565, 465, 1, 1 ) Sleep( Random( 500, 1000 ) ) Send('{q down}' ) Sleep( random( 2000, 3000 ) ) Send('{q up}') Sleep( Random( 100, 300 ) ) Send('{w down}' ) Sleep( random( 3700, 4300 ) ) Send('{w up}') Sleep( Random( 100, 300 ) ) Send('{q down}' ) Sleep( random( 4500, 5000 ) ) Send('{q up}') Sleep( Random( 100, 300 ) ) Send('{w down}' ) Sleep( random( 1500, 3500 ) ) Send('{w up}') _log( 'waiting for mana to replenish' ) global $AntiDeadLock = 0 while GetManaPercent() < 100 and $AntiDeadLock < 600 $AntiDeadLock +=1 Sleep( 100 ) WEnd $AntiDeadLock = 0 Sleep( Random( 500, 6000 ) ) Send( '7' ) Sleep( Random( 5000, 6000 ) ) Send('c') Sleep(Random( 100, 400 ) ) Send('{space}') for $i = 0 to 5 Send('c') Sleep( Random( 100, 200 ) ) Send('{space}') Sleep( random( 600, 1000 ) ) Next _log( 'Starting attack' ) #cs global $AttackTimer = TimerInit() global $AttackRandom = Random ( 1000, 2000 ) while TimerDiff( $AttackTimer ) < ( $AttackTimeout_Minotaur + $AttackRandom ) if not Attack_Minotaur() then ExitLoop if GetLifePercent() < 10 then $dead = true ExitLoop EndIf WEnd global $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[0],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 10 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd #ce local $Failcount, $PickitTimer , $PickitTimeout = 10*60*1000 local $AttackTimer = TimerInit() local $AttackRandom = Random ( 1000, 2000 ) local $LastLife = GetLifePercent() while TimerDiff( $AttackTimer ) < ( $AttackTimeout_Minotaur + $AttackRandom ) if not Attack_Minotaur() then ExitLoop for $i = 0 to 200 if ScanAggro() then ExitLoop Sleep( 100 ) if $LastLife > GetLifePercent() then ExitLoop $LastLife = GetLifePercent() Next while ScanAggro() or $LastLife > GetLifePercent() or ( $LastLife - GetLifePercent() ) < -2 _log( 'ScanAggro true attacking minotaur' ) Attack_Minotaur() if GetLifePercent() < 10 then $dead = true ExitLoop 2 EndIf $LastLife = GetLifePercent() WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[0],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[0],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd DoRandomStuff() EndFunc func TravelTo_Minotaur() WinActivate( 'Guild Wars', '' ) WinWaitActive( 'Guild Wars','',10) Send( 'm' ) Sleep( random ( 2000, 3000 ) ) MouseClick( 'left',400,400,1,1 ) Sleep( Random( 1000, 2000 ) ) MouseClick( 'left', 577,52 ) Sleep( Random( 500, 2000 ) ) MouseClick( 'left', 475,349,2,1) Sleep( Random( 4000, 6000 ) ) EndFunc Func LeaveArea_Minotaur() Send( 'u' ) Sleep( Random( 500, 1500 ) ) ;DoRandomStuff() send( ';' ) Sleep( 200 ) Send( '{space}' ) Sleep( Random( 5000, 7000 ) ) ;140 232 ;MsgBox(0,'',PixelGetColor(143,232)) ;5435218 local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 60000 while 1 Sleep( 100 ) PixelSearch( 139, 225, 142, 250 , 5435218,0,1 ) if not @error then ExitLoop Send( '{d down}' ) Sleep( 50 ) Send( '{d up}' ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then Send( '{s down}' ) Sleep( Random(3000,7000) ) Send( '{s up}' ) ExitLoop EndIf WEnd send( '{w down}' ) $GoOutsideTimer = TimerInit() While 1 $pix1 = PixelGetColor( 200,20 ) $pix2 = PixelGetColor( 220,20 ) $pix3 = PixelGetColor( 240,20 ) $pix4 = PixelGetColor( 260,20 ) $pix5 = PixelGetColor( 280,20 ) $pix6 = PixelGetColor( 300,20 ) if $pix1 == 0x000000 and $pix1 == $pix2 and $pix1 == $pix3 and $pix1 == $pix4 and $pix1 == $pix5 and $pix1 == $pix6 then ExitLoop if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd send( '{w up}' ) Sleep(Random(500,1000)) $GoOutsideTimer = TimerInit() while PixelGetColor( 200,20 ) == 0x000000 and PixelGetColor( 300,20 ) == 0x000000 Sleep( Random(800, 1000) ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd Sleep( random( 1000, 2000 ) ) Send( 'u' ) Sleep( Random( 500, 1500 ) ) EndFunc func Attack_Minotaur() ;check health to stop ... blablabla local $skip = False ;check dolyak signet first always if SkillAvailable( 5 ) then _log( 'casting dolyak' ) Send( '5' ) Sleep( Random(100,300) ) Send( '6' ) Sleep( Random( 300, 400 ) ) if not SkillAvailable(6) THEN $VigorousTimer = TimerInit() ;check vigorous spirit (30% mana atleast on 20mana) elseIf $VigorousTimer == -1 or TimerDiff( $VigorousTimer ) > Random( 15000, 20000 ) then _log( 'casting vigorous spirit' ) ;well we gota cast it $VigorousTimer = -1 for $i = 0 to Random( 1, 3 ) Send( '6' ) Sleep( Random(100,300) ) Next Sleep( Random( 300, 400 ) ) if not SkillAvailable(6) THEN $VigorousTimer = TimerInit() ;glad defence elseif SkillAvailable( 4 ) Then _log( 'casting glad defence' ) Send( '4' ) Sleep( Random( 100, 300 )) $GladTimer = TimerInit() ;riposte elseif SkillAvailable( 2 ) then _log( 'casting riposte' ) Send( '2' ) Sleep( Random( 100,300 ) ) ;flurry ElseIf SkillAvailable(1) and GetManaPercent() > 24 and TimerDiff($GladTimer) > 10000 Then _log( 'casting flurry' ) Send( '1' ) Sleep( Random( 100, 300 ) ) ;watch urself elseif SkillAvailable(3) and GetManaPercent() > 24 then _log( 'casting watch urself' ) Send( '3' ) Sleep( Random( 100, 300 ) ) EndIf Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) Sleep( random( 50, 150) ) if not TargetMatch( $Monster[0], GetItemCode( $ItemColor_White ) ) then Sleep( Random( 300, 500 ) ) Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) if not TargetMatch($Monster[0], GetItemCode( $ItemColor_White ) ) then return false EndIf return True EndFunc [/code] hydra.au3 [code] func TravelTo_Hydra() Send('m') Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',500,500,2,1) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',802,580) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left', 560,470,2,1) Sleep( Random( 7000, 10000 ) ) EndFunc Func Main_Hydra() ;global $AttackTimer = TimerInit() ;global $AttackRandom = Random ( 1000, 2000 ) ;while TimerDiff( $AttackTimer ) < ( $AttackTimeout_Hydra + $AttackRandom ) ; if not Attack_Hydra() then ExitLoop ; if GetLifePercent() < 10 then ; $dead = true ; ExitLoop ; EndIf ;WEnd ;local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 ;while not ( TargetMatch( $IgnoreItems[2],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout ; if GetItemCode( $ItemColor_White ) == '' then ; $Failcount += 1 ; if $Failcount > 10 then ExitLoop ; endif ; Send( ';' ) ; Sleep( Random(100, 700) ) ; Send( '{space}' ) ; Sleep( Random( 1000, 7000 ) ) ; if GetLifePercent() < 10 then ; ExitLoop ; EndIf ;WEnd local $Failcount, $PickitTimer , $PickitTimeout = 10*60*1000 local $AttackTimer = TimerInit() local $AttackRandom = Random ( 1000, 2000 ) local $LastLife = GetLifePercent() while TimerDiff( $AttackTimer ) < ( $AttackTimeout_Hydra + $AttackRandom ) if not Attack_Hydra() then ExitLoop for $i = 0 to 300 if ScanAggro() then ExitLoop Sleep( 100 ) if $LastLife > GetLifePercent() then ExitLoop $LastLife = GetLifePercent() Next while ScanAggro() or $LastLife > GetLifePercent() or ( $LastLife - GetLifePercent() ) < -2 _log( 'ScanAggro true attacking minotaur' ) Attack_Hydra() if GetLifePercent() < 10 then $dead = true ExitLoop 2 EndIf $LastLife = GetLifePercent() WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[2],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[2],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd EndFunc Func Attack_Hydra() ;check dolyak signet first always if SkillAvailable( 5 ) then _log( 'casting dolyak signet' ) Send( '5' ) Sleep( Random(100,300) ) ;check vigorous spirit (30% mana atleast on 20mana) elseIf $VigorousTimer == -1 or TimerDiff( $VigorousTimer ) > 29000 then _log( 'casting vigorous spirit' ) ;well we gota cast it $VigorousTimer = -1 Send( '6' ) Sleep( Random(500,800) ) if not SkillAvailable(6) THEN $VigorousTimer = TimerInit() ;defy pain here also very important elseif ($DefyTimer = -1 or TimerDiff( $DefyTimer ) > 10 ) and SkillAvailable( 4 ) Then Send( '4' ) Sleep( Random( 100, 300 )) ;riposte elseif SkillAvailable( 2 ) then Send( '2' ) Sleep( Random( 100,300 ) ) ;flurry ElseIf SkillAvailable(1) and GetManaPercent() > 25 Then Send( '1' ) Sleep( Random( 100, 300 ) ) ;deadly riposte elseif SkillAvailable(3) and GetManaPercent() > 25 then Send( '3' ) Sleep( Random( 100, 300 ) ) EndIf if not TargetMatch( $Monster[2], GetItemCode( $ItemColor_White ) ) and not TargetMatch( $Monster[3], GetItemCode( $ItemColor_White ) ) then Sleep( Random( 300, 500 ) ) Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) if not TargetMatch($Monster[2], GetItemCode( $ItemColor_White ) ) and not TargetMatch( $Monster[3], GetItemCode( $ItemColor_White ) ) then return false EndIf Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) return true EndFunc func Reach_Hydra() Send( '8' ) While GetManaPercent() < 90 Sleep( 100 ) WEnd Sleep( Random( 2000, 3000 ) ) Send( '7' ) Sleep( Random( 3000, 5000 ) ) ;MouseClick( 'left',713,37,1,1 ) ;Sleep( Random( 7000, 9000 ) ) ;for $i = 0 to 5 ; MouseClick( 'left',990,592 ) ; Sleep( Random( 1500, 2500 ) ) ; Next #cs MouseClick( 'left' ,651,40,1,1 ) Sleep( Random( 7000, 8000 ) ) for $i = 0 to 2 MouseClick( 'Left',989,708,1,1 ) Sleep( Random( 1500,2500 ) ) if ScanAggro() then return Next MouseClick( 'left',987,185,1,1 ) Sleep( Random( 7000, 9000 ) ) if ScanAggro() then return for $i = 0 to 12 MouseClick( 'left',688,615 , 1,1 ) Sleep( Random( 1000, 1500 ) ) if ScanAggro() then return Next for $i = 0 to 9 MouseClick( 'left', 583,609, 1, 1 ) Sleep( Random( 1000, 1500 ) ) if ScanAggro() then return Next for $i = 0 to 3 MouseClick( 'left',990,705,1,1 ) Sleep( Random( 1000, 1500 ) ) if ScanAggro() then return Next ;Sleep( Random( 300, 500 ) ) ;if GetItemCode($ItemColor_White) <> $Monster[2] Then ; ;do something cuz we too far from hydras... ; ;TODO ;EndIf #ce Send( 'c' ) Sleep( 2000 ) Send( '{SPACE}' ) Sleep( Random( 1000, 2000 ) ) EndFunc Func LeaveArea_Hydra() Send( 'u' ) Sleep( random( 500, 1500 ) ) Send(';') Sleep( 500 ) if not ( GetItemCode( $ItemColor_White ) ) == $IgnoreItems[1] then Send( 'è' ) Sleep( Random( 1500, 3000 ) ) Send( '{SPACE}' ) Sleep( random( 11000, 13000 ) ) local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 60000 while 1 Sleep( 100 ) PixelSearch( 177, 229, 179, 233 , 5435218,0,1 ) if not @error then ExitLoop Send( '{d down}' ) Sleep( 50 ) Send( '{d up}' ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then Send( '{s down}' ) Sleep( Random(3000,7000) ) Send( '{s up}' ) ExitLoop EndIf WEnd Send('{w down}') Sleep( random( 1000, 2000 ) ) Send('{w up}') Sleep( random( 1000, 2000 ) ) Send('{q down}') local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 60000 While 1 $pix1 = PixelGetColor( 200,20 ) $pix2 = PixelGetColor( 220,20 ) $pix3 = PixelGetColor( 240,20 ) $pix4 = PixelGetColor( 260,20 ) $pix5 = PixelGetColor( 280,20 ) $pix6 = PixelGetColor( 300,20 ) if $pix1 == 0x000000 and $pix1 == $pix2 and $pix1 == $pix3 and $pix1 == $pix4 and $pix1 == $pix5 and $pix1 == $pix6 then ExitLoop if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd Send('{q up}') Sleep(Random(500,1000)) $GoOutsideTimer = TimerInit() while PixelGetColor( 200,20 ) == 0x000000 and PixelGetColor( 300,20 ) == 0x000000 Sleep( Random(800, 1000) ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd Sleep( random( 1000, 2000 ) ) Send( 'u' ) Sleep( Random( 500, 1500 ) ) EndFunc [/code] griffon.au3 [code] func Main_Griffon() local $Failcount, $PickitTimer , $PickitTimeout = 10*60*1000 local $AttackTimer = TimerInit() local $AttackRandom = Random ( 1000, 2000 ) local $LastLife = GetLifePercent() while TimerDiff( $AttackTimer ) < ( $AttackTimeout_Griffon + $AttackRandom ) for $i = 0 to 200 if ScanAggro() then ExitLoop Sleep( 100 ) if $LastLife > GetLifePercent() then ExitLoop $LastLife = GetLifePercent() Next if not Attack_Griffon() then ExitLoop while ScanAggro() or $LastLife > GetLifePercent() or ( $LastLife - GetLifePercent() ) < -2 _log( 'ScanAggro true attacking minotaur' ) if not Attack_Griffon() then ExitLoop if GetLifePercent() < 10 then $dead = true ExitLoop 2 EndIf $LastLife = GetLifePercent() WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[4],GetItemCode( $ItemColor_White ) ) ) and not ( TargetMatch( $IgnoreItems[3],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd WEnd local $Failcount = 0, $PickitTimer = TimerInit(), $PickitTimeout = 10*60*1000 while not ( TargetMatch( $IgnoreItems[4],GetItemCode( $ItemColor_White ) ) ) and not ( TargetMatch( $IgnoreItems[3],GetItemCode( $ItemColor_White ) ) ) and TimerDiff( $PickitTimer ) < $PickitTimeout if GetItemCode( $ItemColor_White ) == '' then $Failcount += 1 if $Failcount > 5 then ExitLoop endif Send( ';' ) Sleep( Random(100, 700) ) Send( '{space}' ) Sleep( Random( 100, 700 ) ) if GetLifePercent() < 10 then ExitLoop EndIf WEnd EndFunc func Attack_Griffon() ;check health to stop ... blablabla local $skip = False ;check dolyak signet first always if SkillAvailable( 5 ) then _log( 'casting dolyak' ) Send( '5' ) Sleep( Random(100,300) ) Send( '6' ) Sleep( Random( 300, 400 ) ) if not SkillAvailable(6) THEN $VigorousTimer = TimerInit() ;check vigorous spirit (30% mana atleast on 20mana) elseIf $VigorousTimer == -1 or TimerDiff( $VigorousTimer ) > Random( 15000, 20000 ) then _log( 'casting vigorous spirit' ) ;well we gota cast it $VigorousTimer = -1 for $i = 0 to Random( 1, 3 ) Send( '6' ) Sleep( Random(100,300) ) Next Sleep( Random( 300, 400 ) ) if not SkillAvailable(6) THEN $VigorousTimer = TimerInit() ;glad defence elseif SkillAvailable( 4 ) Then _log( 'casting glad defence' ) Send( '4' ) Sleep( Random( 100, 300 )) $GladTimer = TimerInit() ;riposte elseif SkillAvailable( 2 ) then _log( 'casting riposte' ) Send( '2' ) Sleep( Random( 100,300 ) ) ;flurry ElseIf SkillAvailable(1) and GetManaPercent() > 24 and TimerDiff($GladTimer) > 10000 Then _log( 'casting flurry' ) Send( '1' ) Sleep( Random( 100, 300 ) ) ;watch urself elseif SkillAvailable(3) and GetManaPercent() > 24 then _log( 'casting watch urself' ) Send( '3' ) Sleep( Random( 100, 300 ) ) EndIf Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) Sleep( random( 50, 150) ) if not TargetMatch( $Monster[4], GetItemCode( $ItemColor_White ) ) then Sleep( Random( 300, 500 ) ) Send( 'c' ) Sleep( Random ( 50, 150 ) ) Send( '{space}' ) if not TargetMatch($Monster[4], GetItemCode( $ItemColor_White ) ) then return false EndIf return True EndFunc ;SplashTextOn( 'State',''&$SplashText,200,400,1010,0) func LeaveArea_Griffon() SplashTextOn( 'State','Leaving Destiny gorge. Destination: the scar' &$SplashText,200,400,1010,0) Send( ';' ) Sleep( Random( 1000, 2000 ) ) if GetItemCode( $ItemColor_White ) <> $IgnoreItems[6] then Send( 'è' ) Sleep( Random( 1000, 2000 ) ) if GetItemCode( $ItemColor_White ) <> $IgnoreItems[6] then SplashTextOn( 'State','Failed to find the scar'&$SplashText,200,400,1010,0) return false EndIf EndIf Sleep( Random( 500, 1000 ) ) Send( '{SPACE}' ) Sleep( Random( 7000, 9000 ) ) Send( 'u' ) Sleep( Random( 100, 300 ) ) ;180,241 local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 20000 SplashTextOn( 'State','Searching the right orientation to leave town'&$SplashText,200,400,1010,0) while 1 Sleep( 100 ) PixelSearch( 178, 239, 183, 244 , 5435218,0,1 ) if not @error then ExitLoop Send( '{d down}' ) Sleep( 50 ) Send( '{d up}' ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then Send( '{s down}' ) Sleep( Random(3000,7000) ) Send( '{s up}' ) ExitLoop EndIf WEnd Sleep( 500 ) Send('{w down}') Sleep( 500 ) Send('{w down}') SplashTextOn( 'State','Going outside'&$SplashText,200,400,1010,0) local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 20000 While 1 $pix1 = PixelGetColor( 200,20 ) $pix2 = PixelGetColor( 220,20 ) $pix3 = PixelGetColor( 240,20 ) $pix4 = PixelGetColor( 260,20 ) $pix5 = PixelGetColor( 280,20 ) $pix6 = PixelGetColor( 300,20 ) if $pix1 == 0x000000 and $pix1 == $pix2 and $pix1 == $pix3 and $pix1 == $pix4 and $pix1 == $pix5 and $pix1 == $pix6 then ExitLoop if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd Send('{w up}') Sleep(Random(500,1000)) $GoOutsideTimer = TimerInit() while PixelGetColor( 200,20 ) == 0x000000 and PixelGetColor( 300,20 ) == 0x000000 SplashTextOn( 'State','Loading...'&$SplashText,200,400,1010,0) Sleep( Random(800, 1000) ) if TimerDiff( $GoOutsideTimer ) > $GoOutsideTimeout then ExitLoop WEnd Sleep( random( 1000, 2000 ) ) Send( 'u' ) SplashTextOn( 'State','Casting balthazar aura'&$SplashText,200,400,1010,0) Sleep( Random( 500, 1500 ) ) Send( '8' ) SplashTextOn( 'State','Moving up'&$SplashText,200,400,1010,0) Sleep( Random( 4000,5000 ) ) ;Send( 'é' ) ;Sleep( Random( 500, 1000 ) ) ;MouseClick( 'left', 565, 465, 1, 1 ) ;Sleep( Random( 500, 1000 ) ) Send( '{w down}' ) Sleep( Random( 2000, 3000 ) ) Send( '{w up}' ) local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 25000 Sleep( Random( 1000, 2000 ) ) Send('{q down}') while TimerDiff( $GoOutsideTimer ) < $GoOutsideTimeout SplashTextOn( 'State','Searching for griffons...'&$SplashText,200,400,1010,0) Send( 'c' ) if TargetMatch($Monster[4], GetItemCode( $ItemColor_White ) ) then SplashTextOn( 'State','Griffon found'&$SplashText,200,400,1010,0) ExitLoop EndIf Sleep( Random( 100, 5000 ) ) Send('{q down}') WEnd Send('{q up}') Sleep( Random( 500, 1500 ) ) SplashTextOn( 'State','Casting Live visomething'&$SplashText,200,400,1010,0) Send( '7' ) Sleep( Random( 3000, 5000 ) ) if not TargetMatch($Monster[4], GetItemCode( $ItemColor_White ) ) Then SplashTextOn( 'State','Failed to find griffons, heading right a little'&$SplashText,200,400,1010,0) Send( 'c' ) Sleep( Random( 1000, 2000 ) ) Send('{e down}') Sleep( Random( 2000, 3000 ) ) Send('{e up}') EndIf Sleep( Random( 500, 1500 ) ) Send( 'c' ) Sleep( Random( 500, 1000 ) ) if not TargetMatch($Monster[4], GetItemCode( $ItemColor_White ) ) Then SplashTextOn( 'State','Failed to find griffons, heading straight'&$SplashText,200,400,1010,0) local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 15000 Send('{w down}') Sleep( 500 ) while TimerDiff( $GoOutsideTimer ) < $GoOutsideTimeout Send( 'c' ) if TargetMatch($Monster[4], GetItemCode( $ItemColor_White ) ) then ExitLoop Sleep( Random( 100, 5000 ) ) WEnd Send('{w up}') EndIf SplashTextOn( 'State','We have now reached griffons'&$SplashText,200,400,1010,0) local $GoOutsideTimer = TimerInit(), $GoOutsideTimeout = 10000 while TimerDiff( $GoOutsideTimer ) < $GoOutsideTimeout Send( 'c' ) Sleep( Random( 200, 300 ) ) Send( '{SPACE}' ) Sleep( Random( 200, 300 ) ) if ScanAggro() then ExitLoop WEnd return true EndFunc Func TravelTo_Griffon() Send('m') Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',500,500,2,1) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left',863,559) Sleep( Random( 1000, 1500 ) ) MouseClick( 'Left', 417,518,2,1) Sleep( Random( 7000, 10000 ) ) EndFunc [/code] if you have any question.. feel free to ask them