lvlBot

08/02/2004 09:48 Lowfyr#1
Requirements: AutoIt

Code:
; BASIC Level bot 
; use a "full" keyboard with default settings 
; resolution 1024x768 background res 1024x1024 
; set crtl-9 to /echo . if u want to know this script is working 
; start ffxi and open up the character u want, leave the bot alone! 

;sleep to give ffxi time to start 
sleep (40000); 
;auto start 

WinWaitActive("FFXiApp"); 
AutoItSetOption("SendKeyDelay", 40); 
send ("{ENTER}"); 
sleep (10250); 
Send ("{ENTER}"); 
Sleep (10250); 
Send ("{ENTER}"); 
Sleep (10250); 
Send ("{ENTER}"); 

;Variables Here 
$mainloop = 1 



;---------------------------------Main commands----------------------------------- 
sleep(10000); 
findenemy(); 

;---------------------------------End Main---------------------------------------- 





;--------------------------------Func Find Enemy------------------------------- 
Func findenemy() 
While $mainloop = 1 

  sleep(0250); 
  AutoItSetOption("SendKeyDelay", 0235); 
  AutoItSetOption("SendKeyDownDelay", 0100); 
  Send("^9"); 
  $tempvar = Int(Random(1,5)); 

;go a random direction and check for an enemy 

  If $tempvar = 1 Then 
   Send("{NUMPAD8 down}"); 
   $temp = Random(2000,6000); 
   sleep($temp); 
   Send("{NUMPAD8 up}"); 
   sleep(Random(0100,0500)); 
    
   CheckEnemy(); 
   sleep(Random(0100,0500)); 
  


  EndIf 

  If $tempvar = 2 Then 
   Send("{NUMPAD2 down}"); 
   $temp = Random(2000,6000); 
   sleep($temp); 
   Send("{NUMPAD2 up}"); 
   sleep(Random(0100,0500)); 
    
   CheckEnemy(); 
   sleep(Random(0100,0500)); 
  


  EndIf 

  If $tempvar = 3 Then 
   Send("{NUMPAD4 down}"); 
   $temp = Random(2000,6000); 
   sleep($temp); 
   Send("{NUMPAD4 up}"); 
   sleep(Random(0100,0500)); 
    
   CheckEnemy(); 
   sleep(Random(0100,0500)); 
  


  EndIf 

  If $tempvar = 4 Then 
   Send("{NUMPAD6 down}"); 
   $temp = Random(2000,6000); 
   sleep($temp); 
   Send("{NUMPAD6 up}"); 
   sleep(Random(0100,0500)); 
    
   CheckEnemy(); 
   sleep(Random(0100,0500)); 
  


  EndIf 


WEnd 
EndFunc 
;------------------------------End Func Find Enemy----------------------------- 

;------------------------------Func Check Enemy-------------------------------- 
Func CheckEnemy() 
sleep(Random(0100,0400)); 

CheckAggro(); 




sleep(Random(0100,0400)); 

Send("{NUMPAD0}"); 

sleep(Random(0100,0400)); 

PixelSearch( 900, 682, 989, 702, 10736855); 

If Not @error Then 

;this is a valid monster so attack it 
  
  
  Attack(); 

EndIf 

sleep(Random(0100,0500)); 

PixelSearch( 900, 682, 989, 702, 11328992); 

If Not @error Then 

;this is a valid monster so attack it 
  
  
  Attack(); 

EndIf 

sleep(Random(0100,0500)); 


Send("{ESC}"); 
EndFunc 
;-----------------------------End Func Check Enemy------------------------------ 

;------------------------------Func Check Aggro-------------------------------- 
;check if we have been attacked 

Func CheckAggro() 

sleep(Random(0100,0400)); 

;see if we have been aggroed 

PixelSearch( 922, 700, 928, 709, 11068359); 

If NOT @error Then 

;we have been aggroed! attack! 

  Attack(); 

EndIf 

EndFunc 

;----------------------------End Func Check Aggro-------------------------------- 




;------------------------------Func Attack-------------------------------------- 

Func Attack() 



;Hit enter twice to turn on autoattack 

sleep(Random(0100,0400)); 
Send("{ENTER}"); 
sleep(Random(0200,0600)); 
Send("{ENTER}"); 

;check lockon and lockon if not already locked on 
;check every 1/10-3/10 sec to check that we are engaged 
Lockon(); 

sleep(0100); 
Send("{NUMPAD8 down}"); 

While PixelGetColor(26,31) = 16777200 OR PixelGetColor(22,32) = 16777215 
  
  Lockon(); 
  sleep(0100); 
    
  
  

WEnd 

sleep(0100); 
Send("{NUMPAD8 up}"); 
sleep(0100); 

; now that we have won, autosort (in case we got something) and heal 

Autosort(); 

sleep(Random(0300,0500)); 

Heal(); 

EndFunc 

;-----------------------------End Func Attack---------------------------------------- 

;------------------------------Func Lockon------------------------------------- 
;this function also checks if we are attacking the target 
Func Lockon() 

PixelSearch(931,710,973,713,4342527); 

If @error Then 

Send("{NUMPADMULT}"); 

EndIf 

PixelSearch(20,54, 35, 65, 7235991) 

If @error Then 

Send("{ENTER}"); 

EndIf 

EndFunc 

;----------------------------End Func Lockon----------------------------------- 


;-----------------------------Func AutoSort--------------------------- 

Func Autosort() 
Sleep(9000); 
AutoItSetOption("SendKeyDelay", 0235); 
AutoItSetOption("SendKeyDownDelay", 0100); 
Send ("!i"); 
Sleep(0250); 
Send ("{NUMPADADD}"); 
Sleep (0250); 
Send ("{ENTER}"); 
sleep(0350); 
Send ( "{UP}" ); 
sleep(0350); 
Send ("{ENTER}"); 
sleep(0250); 
Send ("{ESCAPE}"); 
sleep(0250); 
Send ("{ESCAPE}"); 
Sleep (0250); 
EndFunc 

;-----------------------------------End Func AutoSort-------------------- 



;------------------------------Func Heal--------------------------------------------- 

Func Heal() 

;press asterisk to heal, get up at full health 

Send("{NUMPADMULT}"); 

Do 

  sleep(0100); 
  CheckAggro(); 

Until PixelGetColor(991,732) = 10658536 

Send("{NUMPADMULT}"); 

;sleep a bit cuz it takes a while to get up 

sleep(2000); 

EndFunc
06/02/2005 20:08 sansi#2
ich hab's mal mit AutoIT v2.64 ausprobiert, und da funktioniert das nicht. bei der version ist z.b. statt "sleep (40000);" einfach nur "sleep, 40000" und alle ; am ende werden weggelassen. aber selbst nachdem ich das alles geändert habe funktioniert es immernoch nicht, weil manche befehle gibt's irgendwie garnicht bei der AutoIT version wie z.b.: AutoITSetOption oder SendKeyDelay (ich hab da nur SetKeyDelay gefunden, allerdings gibt es dazu kein SetKeyDownDelay). also kannst du bitte nochmal posten mit welcher AutoIT version es funktioniert ? vielen dank im voraus

gruss
sansi
06/02/2005 21:19 Lowfyr#3
hasts auch mit autoit3 versucht?
06/02/2005 21:48 sansi#4
also mit version 3 gibt's zwar keine fehler was die befehle angeht, aber der bot ist nicht zu gebrauchen, nachdem man einloggt und man erwischt zufälligerweise ein mob dann attackt er das halt bis es tot ist, aber danach war's das dann. dann läuft er halt in random richtungen hin und her, wählt auch mobs aus, aber er attackt nicht mehr, er läuft einfach wieder los und wählt was anderes aus was so in der gegend rumsteht (mob oder player) und läuft dann wieder weiter, usw. und wenn das erste nach dem einloggen ein player is was ausgewählt wird, dann attackt er nichtmal ein einziges mob.
06/03/2005 13:05 Lowfyr#5
kann mich noch dran erinnern als ich den benutzt habe, hatte glaube das gleiche prob
07/11/2005 04:21 smack11238#6
:( i dont understand this all