- Если Тема находиться под скрытым текстом, и Вы не понимаете, что происходит, прочитайте >> Правила
- Не оставляйте сообщения, не относящиеся к тематики первоначального поста!
- Если у Вас что-то не работает, описывайте более детально вашу проблему, дабы Вам могли помочь
- Если тема более не актуальна, укажите в какой момент тема перестала быть интересной, рабочей и почему
- Если тема находится не в АРХИВЕ, то значит она всё ещё действенна. Не надо писать "Работает ли?"
- На нашем портале нет "Личных хайдов", а так же запрещено просить слить имеющийся хайд лично Вам!
- Хотите отблагодарить автора темы? Для этого есть специальная кнопка, в правом нижнем углу сообщения.
( прим. DarkCat )
Данный бот умеет:
¤ Таргетить все красное, при отсутствии целей крутится.
¤ Дамажит или контролит 2-мя скилами, следит за своим хп и петом, если надо
¤ Определяет тип цели и процент хп, лутает только после убийства моба!
¤ Бафается и можно настроить тип дудки[ хп или мп]
¤ Работает с одним окном! Все интервалы, между нажатиями кнопок, рандомные
¤ Запуск и остановка по F10
¤ Настроен на разрешение окна 1280 х 1024
Код:
Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc
;init
HotKeySet("{F10}","StartOrStop")
;------- Global control information --------------------
Global $STOP = True
_WinWaitActivate("- ArcheAge ","")
Global $hWnd = WinActive("- ArcheAge ","")
Global $TOTAL_KILLED = 0
Global $HP = 0
Global $MP = 0
Global $PET_HP = 0
Global $PET_MP = 0
Global $TARGET_HP = 0
Global $TARGET_MP = 0
Global $TARGET_STATE = 0
Global $LOOT_TIMES = 3
Global $LOOT_FLAG = True
Global $BAR_PERC = 0 ;return percent filling
Global $EMPTYHP_COLOR = '372A11'
Global $EMPTYMP_COLOR = '2B210E'
Global $HPPOT_PERC = 50
Global $HPPOT_KEY = "{F6}"
Global $HPPOT_TIMER = 30
Global $HP_REGEN_STOP = 98
Global $MPPOT_PERC = 20
Global $MPPOT_KEY = "{F5}"
Global $MPPOT_TIMER = 30
Global $MP_REGEN_STOP = 98
Global $HPSKILL_PERC = 70
Global $HPSKILL_KEY = "{F8}"
Global $HPSKILL_TIMER = 21
Global $MPSKILL_PERC = 50
Global $MPSKILL_KEY = "{F7}"
Global $MPSKILL_TIMER = 120
Global $FLUITE_PERC = 80
Global $FLUITE_KEY = "{F4}"
Global $FLUITE_HP_TYPE = True ; true - HP / False - MP
Global $ROTATE_SEARCH = True
Global $SKILL1_KEY = "{F1}" ; Agro for target
Global $SKILL1_TIMER = 6
Global $SKILL2_KEY = "{F2}" ; Damage
Global $SKILL2_TIMER = 0
Global $SKILL3_KEY = "{F3}" ; Control
Global $SKILL3_TIMER = 15
Global $HP_PET_PERC = 80
Global $HP_PET_REGENSTOP = 98
Global $BUFF1_KEY = "{F11}"
Global $BUFF1_TIMER = 60
Global $BUFF2_KEY = "{F12}"
Global $BUFF2_TIMER = 900
Global $BUFF1_COUNT = TimerInit()
Global $BUFF2_COUNT = TimerInit()
Global $HPPOT_COUNT = TimerInit()
Global $MPPOT_COUNT = TimerInit()
Global $HPSKILL_COUNT = TimerInit()
Global $MPSKILL_COUNT = TimerInit()
Global $SKILL1_COUNT = TimerInit()
Global $SKILL2_COUNT = TimerInit()
Global $SKILL3_COUNT = TimerInit()
Global $MP_YPOS = 80
Global $HP_YPOS = 65
Global $CHAR_XMIN_POS = 11
Global $CHAR_XMAX_POS = 308
Global $PET_XMIN_POS = 331
Global $PET_XMAX_POS = 448
Do
Sleep(1000)
;This part run on OFF mode
;Update Char HP and MP
;UpdateCharInfo()
Until $STOP = False
While (1)
UpdateCharInfo()
UpdatePetInfo()
TargetTypeCheck()
Main()
WEnd
Func Main()
If $STOP = False Then
TargetMob()
If $TARGET_STATE > 9 Then
KillTarget()
EndIf
UpdateCharInfo()
;Stop on die
StopCheck()
HPMPRestore()
BuffsCheck()
Else
Sleep(300)
EndIf
EndFunc ;==>Main
Func StartOrStop()
If $STOP = True Then
$STOP = False
Else
$STOP = True
EndIf
EndFunc
Func BarDetect($BAR_XMIN,$BAR_XMAX,$BAR_YPOS,$BAR_EMPTYCOLOR)
;Func for get bar fill in %
;Left to right scan
;-------------------------------------------------------
; BAR check
;-------------------------------------------------------
Local $BAR_SEARCH = $BAR_XMIN - 1
Local $BAR_TEMP = 1
Local $BAR_LENGHT = $BAR_XMAX - $BAR_XMIN
Do
$BAR_SEARCH = $BAR_SEARCH + 1
Local $iColorTEMPbar = PixelGetColor($BAR_SEARCH,$BAR_YPOS,$hWnd)
If Hex($iColorTEMPbar,6) = $BAR_EMPTYCOLOR Then ExitLoop
Until $BAR_SEARCH = $BAR_XMAX
$BAR_TEMP = $BAR_SEARCH - $BAR_XMIN
$BAR_PERC = Int($BAR_TEMP / $BAR_LENGHT * 100)
Return $BAR_PERC
EndFunc ;==> BarDetect
;-----------------------------------------------------------------------------------------
;
; TARGET SECTION
;
;-----------------------------------------------------------------------------------------
Func TargetMob()
;Use Skill for agro
If TimerDiff($SKILL1_COUNT) > ($SKILL1_TIMER * 1000) Then
ControlSend($hWnd, "", "", $SKILL1_KEY)
Sleep(100)
TargetTypeCheck()
TargetHPCheck()
If $TARGET_STATE > 9 Then $SKILL1_COUNT = TimerInit()
EndIf
If $ROTATE_SEARCH = True Then
If $TARGET_STATE = 0 Then
ControlSend($hWnd, "", "", "{UP}")
Sleep(Random(30,60,1))
ControlSend($hWnd, "", "", "{DOWN}")
Sleep(Random(30,60,1))
Sleep(200)
If TimerDiff($SKILL1_COUNT) > ($SKILL1_TIMER * 1000) Then
ControlSend($hWnd, "", "", $SKILL1_KEY)
Sleep(300)
TargetTypeCheck()
TargetHPCheck()
If $TARGET_STATE > 9 Then $SKILL1_COUNT = TimerInit()
EndIf
EndIf
If $TARGET_STATE = 0 Then
If Random(0,1,1) = 1 Then
ControlSend($hWnd, "", "", "{PGUP}")
Sleep(Random(30,60,1))
ControlSend($hWnd, "", "", "{DOWN}")
Sleep(Random(30,60,1))
ControlSend($hWnd, "", "", "{UP}")
Sleep(Random(30,60,1))
Else
ControlSend($hWnd, "", "", "{PGDN}")
Sleep(Random(30,60,1))
ControlSend($hWnd, "", "", "{DOWN}")
Sleep(Random(30,60,1))
ControlSend($hWnd, "", "", "{UP}")
Sleep(Random(30,60,1))
EndIf
Sleep(200)
If TimerDiff($SKILL1_COUNT) > ($SKILL1_TIMER * 1000) Then
ControlSend($hWnd, "", "", $SKILL1_KEY)
Sleep(100)
TargetTypeCheck()
TargetHPCheck()
If $TARGET_STATE > 9 Then $SKILL1_COUNT = TimerInit()
EndIf
EndIf
EndIf
EndFunc ;==>TargetMob
Func TargetTypeCheck()
$TARGET_STATE = 0
Local $iColorTEMP3 = PixelGetColor(729,$HP_YPOS,$hWnd);miniHPmax
Local $iColorTEMP4 = PixelGetColor(553,$HP_YPOS,$hWnd);miniHPmin
Local $iColorTEMP5 = PixelGetColor(494,$HP_YPOS,$hWnd);mobHPmin
Local $iColorTEMP6 = PixelGetColor(428,$HP_YPOS,$hWnd);bossHPmin
If Hex($iColorTEMP3,6) = '372A11' Then $TARGET_STATE = 1
If Hex($iColorTEMP3,6) = '579134' Then $TARGET_STATE = 2
If Hex($iColorTEMP3,6) = 'D45A5A' Or Hex($iColorTEMP4,6) = '902727' Then $TARGET_STATE = 10
If Hex($iColorTEMP3,6) = 'A0322D' Or Hex($iColorTEMP5,6) = '892020' Then $TARGET_STATE = 11
If Hex($iColorTEMP3,6) = '9A2D2A' Or Hex($iColorTEMP6,6) = '972E2E' Then $TARGET_STATE = 12
EndFunc ;==>TargetTypeCheck
Func TargetHPCheck()
;for Mini MOB
If $TARGET_STATE = 10 Then
$TARGET_HP = BarDetect(553,729,$HP_YPOS,$EMPTYHP_COLOR)
EndIf
;for Normal MOB
If $TARGET_STATE = 11 Then
$TARGET_HP = BarDetect(494,788,$HP_YPOS,$EMPTYHP_COLOR)
EndIf
;For Boss MOB
If $TARGET_STATE = 12 Then
$TARGET_HP = BarDetect(428,854,$HP_YPOS,$EMPTYHP_COLOR)
EndIf
EndFunc ;==>TargetCheck
;-----------------------------------------------------------------------------------------
;
; END TARGET SECTION
;
;-----------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------
;
; IN COMBAT ACTION SECTION
;
;-----------------------------------------------------------------------------------------
Func StopCheck()
UpdateCharInfo()
If $HP = 0 Then
StartOrStop()
EndIf
EndFunc
Func KillTarget()
;Read Last HP Info
;UpdateCharInfo()
If $TARGET_STATE > 9 Then
Do
;Loop for skill spaming
If TimerDiff($SKILL2_COUNT) > ($SKILL2_TIMER * 1000) Then
ControlSend($hWnd, "", "", $SKILL2_KEY)
$SKILL2_COUNT = TimerInit()
Sleep(Random(20,30,1))
EndIf
If TimerDiff($SKILL3_COUNT) > ($SKILL3_TIMER * 1000) Then
ControlSend($hWnd, "", "", $SKILL3_KEY)
$SKILL3_COUNT = TimerInit()
Sleep(Random(20,30,1))
EndIf
;Check if Auto-Pot is Needed
HPMPFightAutoPotCheck()
TargetHPCheck()
If $TARGET_HP = 0 Then
Sleep(500)
$TOTAL_KILLED = $TOTAL_KILLED + 1
PickLoot($LOOT_TIMES)
TargetTypeCheck()
If $TARGET_STATE = 1 Then ControlSend($hWnd, "", "", "{ESC}") ;drop dead target
EndIf
Until $TARGET_STATE < 10
;Pick loot thin mob die
PickLoot($LOOT_TIMES)
Else
ControlSend($hWnd, "", "", "{ESC}")
EndIf
EndFunc
Func HPMPFightAutoPotCheck()
;HP and MP restore in Combat
UpdateCharInfo()
If $HP < $HPPOT_PERC And TimerDiff($HPPOT_COUNT) > ($HPPOT_TIMER * 1000) Then
ControlSend($hWnd, "", "", $HPPOT_KEY)
$HPPOT_COUNT = TimerInit()
Sleep(30)
EndIf
If $MP < $MPPOT_PERC And TimerDiff($MPPOT_COUNT) > ($MPPOT_TIMER * 1000) Then
ControlSend($hWnd, "", "", $MPPOT_KEY)
$MPPOT_COUNT = TimerInit()
Sleep(30)
EndIf
EndFunc ;==> HPMPFightAutoPotCheck
;-----------------------------------------------------------------------------------------
;
; END IN COMBAT ACTION SECTION
;
;-----------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------
;
; OUT COMBAT ACTION SECTION
;
;-----------------------------------------------------------------------------------------
Func PickLoot($MAX)
;Check if need pick loot
If $LOOT_FLAG = True Then
For $P = $MAX To 1 Step -1
ControlSend($hWnd, "", "", "f")
Sleep(Random(100,200,1))
Next
EndIf
EndFunc ;==>PickLoot
Func HPMPRestore()
UpdateCharInfo()
UpdatePetInfo()
TargetTypeCheck()
If $TARGET_STATE = 0 Then
Do
Sleep(500)
If $MP > $MP_REGEN_STOP And ($HP < $HPSKILL_PERC Or $PET_HP < $HP_PET_PERC) And TimerDiff($HPSKILL_COUNT) > ($HPSKILL_TIMER * 1000) Then
ControlSend($hWnd, "", "", $HPSKILL_KEY)
$HPSKILL_COUNT = TimerInit()
Sleep(500)
ElseIf $FLUITE_HP_TYPE = True And ($HP < $FLUITE_PERC Or $PET_HP < $HP_PET_PERC) Then
ControlSend($hWnd, "", "", $FLUITE_KEY)
Sleep(7000)
EndIf
If $FLUITE_HP_TYPE = False And $MP < $FLUITE_PERC Then
ControlSend($hWnd, "", "", $FLUITE_KEY)
Sleep(7000)
ElseIf $MP < $MPSKILL_PERC And TimerDiff($MPSKILL_COUNT) > ($MPSKILL_TIMER * 1000) Then
ControlSend($hWnd, "", "", $MPSKILL_KEY)
$MPSKILL_COUNT = TimerInit()
Sleep(9000)
EndIf
UpdateCharInfo()
UpdatePetInfo()
TargetTypeCheck()
Until ($HP > $HP_REGEN_STOP And $MP > $MP_REGEN_STOP And $PET_HP > $HP_PET_REGENSTOP) Or $TARGET_STATE <> 0
EndIf
EndFunc ; ==> HPMPRestore
Func BuffsCheck()
If TimerDiff($BUFF1_COUNT) > ($BUFF1_TIMER * 1000) Then
ControlSend($hWnd, "", "", $BUFF1_KEY)
Sleep(2000)
$BUFF1_COUNT = TimerInit()
EndIf
If TimerDiff($BUFF2_COUNT) > ($BUFF2_TIMER * 1000) Then
ControlSend($hWnd, "", "", $BUFF2_KEY)
Sleep(2000)
$BUFF2_COUNT = TimerInit()
EndIf
EndFunc
;-----------------------------------------------------------------------------------------
;
; END OUT COMBAT ACTION SECTION
;
;-----------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------------
;
; CHAR and PET STATUS SECTION
;
;-----------------------------------------------------------------------------------------
Func UpdatePetInfo()
$PET_HP = BarDetect($PET_XMIN_POS,$PET_XMAX_POS,$HP_YPOS,$EMPTYHP_COLOR)
$PET_MP = BarDetect($PET_XMIN_POS,$PET_XMAX_POS,$MP_YPOS,$EMPTYMP_COLOR)
EndFunc ;==>UpdatePetInfo
Func UpdateCharInfo()
$HP = BarDetect($CHAR_XMIN_POS,$CHAR_XMAX_POS,$HP_YPOS,$EMPTYHP_COLOR)
$MP = BarDetect($CHAR_XMIN_POS,$CHAR_XMAX_POS,$MP_YPOS,$EMPTYMP_COLOR)
EndFunc ;==>UpdateCharInfo
;-----------------------------------------------------------------------------------------
;
; End CHAR and PET STATUS SECTION
;
;-----------------------------------------------------------------------------------------
Последний раз редактировалось dark; 22.04.2014 в 15:16.
сохрани скрипт в текстовый файл и потом запускай через autoIT, хотел узнать с помошью какой программы ты вычислял координаты? я могу брать координат с помошью кликермана?