- Сообщения
- 3,608
- Репутация
- 941
WinGetHP v1.0
Сканирование идет от внешней дуги ХУДа к внутренней, Шилд>Армор>Структура, справа на лево в поисках серого цвета.
Скорость не самая лучшая, чем сильнее побит корабль тем дольше скан потому что сканирование дуги проходит от начала и до того момента как будет найден серый цвет. Потом еще переделаю и выложу версию с возвратом значения капы.
Примерная погрешность модуля 5% так что он возвращает не идеальные данные а как правило на 5% меньше фактического. Так же желающим предлагается модифицировать скорость работы так, что если шилд > 10% то армор и структуру мы ваще не сканируем, ну или я потом сам другую версию уже выложу когда будет время
Другие версии и модификации:
WinGetHP v2.8
Код:
Opt("MustDeclareVars", 1)
Opt("PixelCoordMode",0)
Opt("MouseCoordMode",0)
Dim $Name = "WinName", _
Dim $pi = 3.14159265358979, _
$WinGetHealth[6], _ ;Различная малодинамичная инфа о WinGetHealth
$Col, _ ;Сюда приходит инфа о найденном цвете
$WinSearchHUD, _ ;Сюда приходит инфа о расположении HUDa
$HPStatus[4] , _ ;Инфа о Шилде, Арморе и Структуре корабля
$WinSearchHealth[7] ;Инфа относящаяся к поиску
$WinGetHealth[3] = 0xE71B1B ;Красный цвет покоцанности худа
$WinGetHealth[4] = 5 ;Шейдер краснава цвета покоцанности
$WinGetHealth[5] = 67 ;Радиус окружности
$WinSearchHealth[1] = 571
$WinSearchHealth[2] = 757
$WinSearchHealth[3] = 0x9E9E9E
$WinSearchHealth[4] = 5
$WinSearchHealth[5] = 67
$WinSearchHealth[6] = 69
WinActivate($Name)
WinWaitActive($Name)
WinGetHPTest()
Func _WinGetHealth()
For $ii = 1 To 3 Step 1
For $i = 360 To 80 Step -1
$WinSearchHUD = PixelSearch($WinSearchHealth[1]-10, $WinSearchHealth[2], $WinSearchHealth[1]+10,$WinSearchHealth[2], $WinSearchHealth[3], $WinSearchHealth[4]) ;Ищем треугольник справа от худа
If @error Then
Return "Немогу найти треугольник HUDa"
Else
$WinGetHealth[1] = $WinSearchHUD[0] - 58 ;Если нашли тругольник то определяем где находится центр худа
$WinGetHealth[2] = $WinSearchHUD[1] - 66
$Col = PixelSearch(($WinSearchHealth[5])*Cos($i*$pi / 180)+$WinGetHealth[1]+1, _ ;Методично ищем серый цвет справа на лево по дуге
($WinSearchHealth[6])*Sin($i*$pi / 180)+$WinGetHealth[2]-1, _
($WinSearchHealth[5])*Cos($i*$pi / 180)+$WinGetHealth[1]+1, _
($WinSearchHealth[6])*Sin($i*$pi / 180)+$WinGetHealth[2]-1, _
$WinSearchHealth[3], $WinGetHealth[4])
If Not @error Then ExitLoop ;Если нашли завершаем цикл
EndIf
Next
$HPStatus[$ii] = 100-Round(((360-$i)/180*100),0) ;Записываем процентное число полученное после проверки этой дуги
$WinSearchHealth[5] = $WinSearchHealth[5] - 10 ;Уменьшаем радиус поиска на 10 пикселей тем самым переходя на следующую дугу
$WinSearchHealth[6] = $WinSearchHealth[6] - 10
Next
$WinSearchHealth[5] = 67 ;Обнуляем обратно область поиска
$WinSearchHealth[6] = 69
Return $HPStatus
EndFunc
Func WinGetHPTest()
While WinActive($Name)
_WinGetHealth()
ToolTip($HPStatus[1]&@CRLF&$HPStatus[2]&@CRLF&$HPStatus[3], 0,0)
WEnd
EndFunc
Сканирование идет от внешней дуги ХУДа к внутренней, Шилд>Армор>Структура, справа на лево в поисках серого цвета.
Скорость не самая лучшая, чем сильнее побит корабль тем дольше скан потому что сканирование дуги проходит от начала и до того момента как будет найден серый цвет. Потом еще переделаю и выложу версию с возвратом значения капы.
Примерная погрешность модуля 5% так что он возвращает не идеальные данные а как правило на 5% меньше фактического. Так же желающим предлагается модифицировать скорость работы так, что если шилд > 10% то армор и структуру мы ваще не сканируем, ну или я потом сам другую версию уже выложу когда будет время
Другие версии и модификации:
WinGetHP v2.8