Показать сообщение отдельно
Старый 07.04.2014, 11:24   #1
arksu
Подпольщик WoT
Аватар для arksu
OFFLINE
Регистрация: 08.10.2012
Возраст: 41
Сообщений: 161
Благодарностей:
89 всего
Мнения: + 227
Репутация: 268
Отправить сообщение для arksu с помощью ICQ Отправить сообщение для arksu с помощью Skype™

[AutoIT] Бот-кликер на мага


Важно помнить:

- Если Тема находиться под скрытым текстом, и Вы не понимаете, что происходит, прочитайте >> Правила

- Не оставляйте сообщения, не относящиеся к тематики первоначального поста!

- Если у Вас что-то не работает, описывайте более детально вашу проблему, дабы Вам могли помочь

- Если тема более не актуальна, укажите в какой момент тема перестала быть интересной, рабочей и почему

- Если тема находится не в АРХИВЕ, то значит она всё ещё действенна. Не надо писать "Работает ли?"

- На нашем портале нет "Личных хайдов", а так же запрещено просить слить имеющийся хайд лично Вам!

- Хотите отблагодарить автора темы? Для этого есть специальная кнопка, в правом нижнем углу сообщения.


( прим. DarkCat )

Скрипт для AutoIT для кача мага
ищем кучкующихся мобов встаем, в опциях убираем бег по клику мышки (чтобы бот не бегал до мобов иначе убежит хз куда)
F10 - старт / стоп
F11 - убить процесс бота

бот юзает огненный шар, поглощение энергии чтобы восполнять мп
следит за своим мп, если мало и если моб уже убит - играет на флейте
следит за мобами - если не может найти начинает вращатся чтобы искать новые цели


PHP код:
разрешение экрана 1280х800
F10 запуск остановка кача

Opt
("SendKeyDownDelay"35) ; Глобальная задержка для удержания клавиши в нажатом состоянии 35мс
Opt
("PixelCoordMode"2)
Func _WinWaitActivate($title,$text,$timeout=0)
    
WinWait($title,$text,$timeout)
    If 
Not WinActive($title,$textThen WinActivate($title,$text)
    
WinWaitActive($title,$text,$timeout)
EndFunc

ToolTip
("started, wait aa"00)
$COUNTER=0
HotKeySet
("{F10}","StartOrStop") ; хоткей старта и остановки если надо более одной копии скрипта запустить используйте другие клавиши
HotKeySet
("{F11}","Terminate")
Global 
$STOP True
Global $AA_TITLE "- ArcheAge " Название ОКНА клиентаЕсли используете мульти-окна переименовывайте их по-разному и в точности вписывайте название (лучше скопировать)

Global 
$hp_color 0x

В данном варианте скрипт привяжется через HWND к первому найденному окну.
_WinWaitActivate($AA_TITLE ,"")
Global 
$hWnd WinActive($AA_TITLE ,"")
sleep(1000)

ToolTip("aa found!"00)

Global 
$BUFF1_COUNT TimerInit()
Global 
$BUFF2_COUNT TimerInit()
Global 
$BUFF3_COUNT TimerInit()
Global 
$NeedShield False
Global $ShieldTryCount 0

Do
    
Sleep(1000)
Until $STOP False
While (1)
    
Main()
WEnd

CHECKING HP LEVEL ===============================
Func CheckHP($xCoord$Color)
   
$y=37
   
if PixelSearch($xCoord,$y,$xCoord+4,$y+4$Color301$hWnd) <> 0 Then
      
Return True
   
Else
      Return 
False
   
EndIf
EndFunc
Func hp90
()
   Return 
CheckHP(2420x62983B)
EndFunc
Func hp75
()
   Return 
CheckHP(1910x528C31)
EndFunc
Func hp50
()
   Return 
CheckHP(1350x3E7E25)
EndFunc
Func hp25
()
   Return 
CheckHP(700x30741D)
EndFunc
CHECKING MP LEVEL ===============================
Func CheckMP($xCoord$Color)
   
$y=52
   
if PixelSearch($xCoord,$y,$xCoord+4,$y+4$Color301$hWnd) <> 0 Then
      
Return True
   
Else
      Return 
False
   
EndIf
EndFunc
Func mp90
()
   Return 
CheckMP(2450x4D76C8)
EndFunc
Func mp75
()
   Return 
CheckMP(1910x4064C3)
EndFunc
Func mp50
()
   Return 
CheckMP(1350x3351BC)
EndFunc
Func mp25
()
   Return 
CheckMP(700x304DBA)
EndFunc
CHECK TARGET ==================================
Func HaveTarget()
   ; 
смотрим на полоску маны моба в нескольких местах
   $y 
52
   $Color 
0x304DBB
   $xCoord 
525
   $px1 
PixelSearch($xCoord,$y,$xCoord+2,$y+2$Color201$hWnd)
   
$xCoord 573
   $px2 
PixelSearch($xCoord,$y,$xCoord+2,$y+2$Color201$hWnd)

   if (
$px1 <> 0) or ($px2 <> 0Then
      
Return True
   
Else
      Return 
False
   
EndIf
EndFunc
;===================================================
Func Main()
    If 
$STOP False Then


         $df 
TimerDiff($BUFF2_COUNT)
         If 
$df 50000 Then
            $NeedShield 
True
            $ShieldTryCount 
3
            $BUFF2_COUNT 
TimerInit()
         EndIf

         ; 
если есть цель
         
If Not HaveTarget() Then
            
цели нет
            
проверим наше мп
            
если его мало запустим реген
            
If (Not mp50()) Then
               
While (Not mp50())
                  
ControlSend($hWnd"""""{F1}") ; РЕГЕН МАНЫФЛЕЙТА
                  Sleep
(1600)
                  
$BUFF1_COUNT TimerInit()
               
WEnd
            
Else
               ; 
если же мп хватает
               
пошлем поворот чтобы найти цель
               Opt
("SendKeyDownDelay"700)
               
ControlSend($hWnd"""""d")
               
Opt("SendKeyDownDelay"35)
            EndIf
         EndIf


         if 
$NeedShield Then
            Sleep
(200)
            
ControlSend($hWnd"""""{F7}") ; Магический щит
            Sleep
(50)
            
$ShieldTryCount $ShieldTryCount 1
            
if ($ShieldTryCount <= 0Then
               $NeedShield 
False
            
EndIf
         else
            
Sleep(50)
            ; 
только если нужно мп!
            if (
Not mp75()) Then
               ControlSend
($hWnd"""""{F6}") ; Поглощение энергии чтобы восполнять мп но можно оставлять слот пустым
               Sleep
(50)
            EndIf

            
ControlSend($hWnd"""""{F5}") ; Огненный шар
            Sleep
(50)

            
ControlSend($hWnd"""""f") ; Поднимаем дроп

         
EndIf

        
Sleep(100)

        
$COUNTER $COUNTER 1


        $text 
"some"
        
if hp90() Then
            $text
="hp >90"
        
ElseIf hp75() Then
            $text
="hp >75"
        
ElseIf hp50() Then
            $text
="hp >50"
        
ElseIf hp25() Then
            $text
="hp >25"
        
Else
            
$text="hp LOW"
        
EndIf
        if 
mp90() Then
            $text2
="mp >90"
        
ElseIf mp75() Then
            $text2
="mp >75"
        
ElseIf mp50() Then
            $text2
="mp >50"
        
ElseIf mp25() Then
            $text2
="mp >25"
        
Else
            
$text2="mp LOW"
         
EndIf

         if 
HaveTarget() Then
            $text3 
"YES"
         
Else
            
$text3 "none"
         
EndIf


        if 
$STOP False Then
           ToolTip
("buff2="& ($df) & " " $text " " $text2 " target=" $text300)
        EndIf

    Else
        
Sleep(100)
    EndIf

EndFunc   ;==>Main

Func StartOrStop
()
    If 
$STOP True Then

        
;On START action
        ToolTip
("STARTED! Press F10 for stop"00) ; подсказка о состоянии работы скрипта в левом верхнем углу
        $STOP 
False
    
Else
        ;
On STOP action
        
;ColorCheck()
        
ToolTip("STOPPED! Press F10 for start"00)
        
$STOP True
    
EndIf
 
EndFunc

Func Terminate
()
    Exit 
0
EndFunc 
подсказка постоянно висит в левом верхнем углу экрана, в ней отображается статус работы бота

клиент запускать в ОКОННОМ режиме. разрешение 1280х800. под него заточен бот
панель хп/мп и таргета должны быть на своих местах

скрипт компилим. упаковываем upx. даем рандомное имя.
запускаем от прав АДМИНИСТРАТОРА

писал сам. соответственно проверил) качнул пока несколько уровней.
система Win 7 x64

жду адекватную критику, предложения по улучшению бота

Последний раз редактировалось Big Bad Sensey; 21.11.2014 в 17:08.
 
Ответить с цитированием
Сказали спасибо:
ANTARES (02.05.2015), Недоступно (31.12.2014), KBADPATuK (30.11.2014), Недоступно (03.10.2014), Недоступно (03.10.2014), Недоступно (20.09.2014), Недоступно (19.09.2014), ALSIY (01.09.2014), Недоступно (27.08.2014), Недоступно (05.08.2014), Недоступно (10.07.2014), Недоступно (15.06.2014), Недоступно (22.05.2014), Недоступно (07.05.2014), Недоступно (30.04.2014), bit (13.04.2014), Недоступно (12.04.2014), wirus666 (10.04.2014), Недоступно (09.04.2014)