Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Хм вроде должен быть рабочий, вот полный код нашел в архиве, занимался на старте ванилы, сейчас проверить возможности нету. За помощь с курсором буду благодарен
CODE:
#include <WinAPIEx.au3>
HotKeySet("{F2}", "Kill")
Global $WinName = "World of Warcraft"
Global $aCursor[5], $aCursorInfo[6], $hCursor, $hbmMask, $hColor, $hIcon
Global $Diskr=3, $Border=50 ;дискретизация, границы поиска вокруг метки
Global $Win_X1=230, $Win_Y1=200, $Win_X2=1010, $Win_Y2=620 ;границы окна
;MsgBox ($MB_SYSTEMMODAL, "title", $EnergyColor, 5)
Global $HPSelfColor=0x00E400
Global $HPSelf[2]
$HPSelf[0]=290
$HPSelf[1]=163
Global $HPMonsterColor=0x00AC00
Global $HPMonster[2]
$HPMonster[0]=335
$HPMonster[1]=163
Global $Metka[2]
;Global $MetkaColor=0xFBF887 ;желтый крест
$Metka[0]=455
;$Metka[1]=134
;Global $MetkaColor=0xD962E7 ;фиолетовый ромб
;$Metka[1]=133
Global $MetkaColor=0x00D0FF ;синий квадрат
$Metka[1]=135
Global $MetkaCoord[2]
Global $MetkaCoord2
Global $MightColor_gray=0x9F9F9F, $MightColor_gold=0xF3DDBA ;цвет меча
Global $Might[2]
$Might[0]=51
$Might[1]=498
Global $EnergyColor=0xC4C100
Global $Energy[2]
$Energy[0]=240
$Energy[1]=172
Global $RedSerColor=0x6F181B
Global $RedSer[2]
$RedSer[0]=482 ;если 3 серия красная (484, 170 0xEB605C если 5 серия красная)
$RedSer[1]=154
Global $DropColor=0xD5A358 ;если коричневый
Global $Drop[2]
$Drop[0]=27
$Drop[1]=474
Global $Mouse_X, $Mouse_Y
Global $Low ;глубина по Y если далеко 5-15-37 25 130 =100
Global $Diff ;ширина квадрата или изменене глубины =10
Global $Obzor_X=639, $Obzor_Y=496, $Povorot=70 ;центр
;Global $BlueSquare=0xB259BA ;фиолетовый ромб 0xFF9CFF
Global $BlueSquare=0x0C8DCD ;синий квадрат 0x30CDEA
;Global $BlueSquare=0xFFFFB3 ;желтый крест
Global $Var=50 ;точность цвета
Global $Step=3 ;шаг поиска
Global $MimoColor=0xE21C1C, $MimoPovorot=60 ;мимо цели
Global $Mimo[4]
$Mimo[0]=559
$Mimo[1]=222
$Mimo[2]=719
$Mimo[3]=234
Global $Timer
Global $Switch
Global $Skill_HideColor=0x507487
Global $Skill_Hide[2]
$Skill_Hide[0]=273
$Skill_Hide[1]=809
;======================================================================= выход ================================================================================
Func Kill()
Exit
EndFunc
;======================================================================= окно курсора =========================================================================
Global Const $STM_SETIMAGE = 0x0172
GUICreate('', 100, 100, 10)
Global $idIcon=GUICtrlCreateIcon('', 0, 10, 10, 32, 32)
GUISetState()
Func _SetIcon()
$aCursor = _WinAPI_GetCursorInfo() ;Извлекает информацию о глобальном курсоре
If Not @error Then
$hCursor = $aCursor[2] ;Handle курсора
$aCursorInfo = _WinAPI_GetIconInfo($hCursor) ;Извлекает информацию об указанном значке или курсоре
If Not @error Then
$hbmMask = $aCursorInfo[4] ;Задает значок маска растрового изображения (Specifies the icon bitmask bitmap)
$hColor = $aCursorInfo[5] ;Дескриптор цветного растрового изображения значка
$hIcon = _WinAPI_CreateIconIndirect($hColor, $hbmMask) ;Создает значок или курсор с указанным размером, цветами и битовыми узорами
GUICtrlSendMsg($idIcon, $STM_SETIMAGE, 1, $hIcon)
EndIf
EndIf
EndFunc ;==>_SetIcon
;=========================================================================== main ===============================================================================
WinWaitActive($WinName)
Sleep(5000)
While (1)
Sost() ;общее состояние, если НР моба зеленое значит на нас напали, если мало жизней уходим в хайд
WEnd
;======================================================================= общее состояние =========================================================================
Func Sost()
If PixelGetColor($HPMonster[0], $HPMonster[1])=$HPMonsterColor And PixelGetColor($HPSelf[0], $HPSelf[1])<>$HPSelfColor Then
Fight()
;And PixelGetColor($Metka[0], $Metka[1], $WinName)<>$MetkaColor
Else
If PixelGetColor ($Skill_Hide[0], $Skill_Hide[1])=$Skill_HideColor Then ;если мы готовы перейти в хайд
Send("{F6}") ;уходим в хайд
Sleep(100)
EndIf
While PixelGetColor($HPSelf[0], $HPSelf[1])<>$HPSelfColor ;если свое НР не зеленое
Sleep(2000) ;проверяем каждые 2 сек
WEnd
Send("{k}")
Sleep(1000)
Metka() ;ставим новую метку
EndIf
EndFunc
;======================================================================= поиск метки =========================================================================
Func Metka()
If $Switch=0 Then
Send("{F4}") ;нажимаем макрос нексттаргет
$Switch=1
Else
Send("{F5}")
$Switch=0
EndIf
Sleep(1000)
$Timer=10
If PixelGetColor ($Metka[0], $Metka[1])=$MetkaColor Then ;если есть метка в цели
While($Timer>0)
$MetkaCoord = PixelSearch($Win_X1, $Win_Y1, $Win_X2, $Win_Y2, $BlueSquare, $Var, $Step) ;ищем метку
If Not @error Then ;если нашли
Sled()
Return True
Else ;если не нашли
MouseClickDrag($MOUSE_CLICK_LEFT, $Obzor_X, $Obzor_Y, $Obzor_X+$Povorot, $Obzor_Y, 1) ;поворачиваем экран
EndIf
$Timer-=1
WEnd
EndIf
EndFunc
(Добавление)
продолжение
CODE:
;======================================================================= следование =========================================================================
Func Sled()
Local $PrevCoord[2] ;предыдущие координаты
$Timer=200 ;15 сек
While $Timer>0
;$MetkaCoord = PixelSearch($PrevCoord[0]-$Border, $PrevCoord[1]-$Border, $PrevCoord[0]+$Border, $PrevCoord[1]+$Border, $BlueSquare, 50, 3)
$MetkaCoord = PixelSearch($Win_X1, $Win_Y1, $Win_X2, $Win_Y2, $BlueSquare, $Var, $Step)
If Not @error Then ;если нашли метку
If Abs($MetkaCoord[0]-$PrevCoord[0]) > $Diskr or Abs($MetkaCoord[1]-$PrevCoord[1]) > $Diskr Then ;если координаты изменились на n пихелей
$PrevCoord=$MetkaCoord ;переписываем предыдущие координаты
$MetkaCoord2 = PixelSearch($MetkaCoord[0]+200, $MetkaCoord[1], $MetkaCoord[0], $MetkaCoord[1], $BlueSquare, $Var, $Step)
If Not @error Then
$Diff=$MetkaCoord2[0]-$MetkaCoord[0] ;ширина квадрата
If $Diff>$Step Then
;MsgBox ($MB_SYSTEMMODAL, "title", $Diff, 5)
$Mouse_X=$MetkaCoord[0]+$Diff/2 ;начальные координаты метки
$Mouse_Y=$MetkaCoord[1]
$Low=$Diff*5 ;глубина 4 квадрата
While $Mouse_Y < $MetkaCoord[1]+$Low
MouseMove($Mouse_X, $Mouse_Y, 0) ;двигаем мышь
_SetIcon() ;вызываем функцию проверки мыши
If PixelGetColor($Might[0], $Might[1])=$MightColor_gray Then ;если серый
MouseClick('right', $Mouse_X, $Mouse_Y, 1) ;тыкаем мышкой и бежим
ExitLoop ;выходим из цикла шевеления мышкой
ElseIf PixelGetColor($Might[0], $Might[1])=$MightColor_gold Then ;если золотой
Send("{DOWN}") ;шаг назад чтобы остановится
Sleep(100)
Fight() ;деремсо
Sleep(2000) ;ждем чтобы убедится что больше нас никто не бьет
Return ;выходим из функции
EndIf
$Mouse_Y+=$Diff ;дискретизация 1 квадрат 5
WEnd
EndIf
EndIf
EndIf ;выходим из функции
Sleep(100) ;задержка обновления движения мыши под меткой
EndIf
$Timer-=1
WEnd
EndFunc
;======================================================================= битва =========================================================================
Func Fight()
$Timer=20
While $Timer>0
While PixelGetColor($HPMonster[0], $HPMonster[1])=$HPMonsterColor ;пока НР моба зеленое
If PixelGetColor($Energy[0], $Energy[1])=$EnergyColor Then ;если есть енергия
If PixelGetColor($RedSer[0], $RedSer[1])=$RedSerColor Then ;если 3 серия красная
Send("{3}") ;нажимаем потрошение
Sleep(1000)
Else
Send("{1}") ;нажимаем удар
Sleep(1000)
EndIf
Else
Sleep(1000)
EndIf
$Timer-=1
WEnd
Sleep(1000) ;ждем пока упадет
Obysk()
Return
WEnd
EndFunc
;======================================================================= обыск =========================================================================
Func Obysk()
Send("{F7}")
Sleep(1000)
Send("{G}")
Sleep(2000)
EndFunc
|