Что нового

[Автоматизация] Сравнение числа и действия при соответствующем значение.

PreDoK

Новичок
Сообщения
30
Репутация
3
Здравствуйте!
У меня возник один вопрос ,можно сделать определения числа(HP моба) и соответствующее к нему действие.
Что то вроде если 100 НР то не чего не происходит если 50 НР то жмет клавишу (1).

Код:
#include <nomadmemory.au3>

Global $ProcessName = "Killing Floor" ;Собственно...Название окна
Global $ProcessID = WinGetProcess($ProcessName,"") ;Ну или $Pid кому как нравится 
Global $HP = 0x00121548 ; Указатель 
Global $DllInformation = _MemoryOpen($ProcessID) 
If $ProcessID = -1 Then
    MsgBox(4096, "#Error4", "Сперва запустите игру.")
    Exit
EndIf

$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr')) 
$Cur = $CurrentHP + 1152 
$Curr =  (_MemoryRead($Cur, $DllInformation, 'ptr')) ;получаем Адрес
$RHP =dec(StringTrimLeft($Curr, 2)) ; извлекаем значение

MsgBox (1,"Проверь",$RHP ,"") ; значение HP моба


Зарание спасибо!
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Что-то типа такого, если требуется действие только при ХП меньше 50:
Код:
#include <nomadmemory.au3>

Global $ProcessName = "Killing Floor" ;Собственно...Название окна
Global $ProcessID = WinGetProcess($ProcessName,"") ;Ну или $Pid кому как нравится
Global $HP = 0x00121548 ; Указатель
Global $DllInformation = _MemoryOpen($ProcessID)
If $ProcessID = -1 Then
    MsgBox(4096, "#Error4", "Сперва запустите игру.")
    Exit
EndIf

$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
$Cur = $CurrentHP + 1152
$Curr =  (_MemoryRead($Cur, $DllInformation, 'ptr')) ;получаем Адрес
$RHP =dec(StringTrimLeft($Curr, 2)) ; извлекаем значение

If $RHP < 50 Then ; ХП меньше 50
    ; пора пить пузыри и драпать
    Send('1')
EndIf
MsgBox (1,"Проверь",$RHP ,"") ; значение HP моба


Или можно разложить на два действия:
Код:
If $RHP >= 50 Then ; ХП больше либо равно 50
    ; у нас все в порядке ждем когда нас стукнут посильнее
    Sleep(100)
Else
    ; пора пить пузыри и драпать
    Send('1')
EndIf
 
Автор
P

PreDoK

Новичок
Сообщения
30
Репутация
3
Слушай еще кое что а можно сделать так ,чтобы она типо ждала изменений НР моба(если уменьшилась) то лечила? Буду очень признателен в помоше)
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
AdlibRegister

или между другими действиями запускать
 
Автор
P

PreDoK

Новичок
Сообщения
30
Репутация
3
Вот вроде разобрался! Ну если у кого нибудь будут еще какие мысли пишите )

Код:
#include <nomadmemory.au3>


Global $ProcessName = "Killing Floor" ;Собственно...Название окна
Global $ProcessID = WinGetProcess($ProcessName,"") ;Ну или $Pid кому как нравится
Global $HP = 0x00121548 ; Указатель
Global $DllInformation = _MemoryOpen($ProcessID)
If $ProcessID = -1 Then
    MsgBox(4096, "#Error4", "Сперва запустите игру.")
    Exit
EndIf


AdlibRegister('HPmob')

While 1
    Sleep(25)
WEnd

Func HPmob() ; проверяет изменение
$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
$Cur = $CurrentHP + 1152
$Curr =  (_MemoryRead($Cur, $DllInformation, 'ptr')) ;получаем Адрес
$RHP =dec(StringTrimLeft($Curr, 2)) ; извлекаем значение

If $RHP < 50 Then ; ХП меньше 50
    ; пора пить пузыри и драпать
    Send('1')
EndIf
EndFunc
 
Верх