All pastes #497406 Raw Edit

gfd

public text v1 · immutable
·published 2007-05-19 20:50 UTC
rendered paste body
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 <date.au3>
#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