Уже пару дней как мучаюсь... Низкий уровень знаний AU и библиотеки NomadMemory, не дают довести до конца мою идею, хотелось бы узнать, где тут допущена ошибка? Почему персонаж не пьет HP, если она уже ниже, чем в Input-е?
Код:
Global $windowtitle = "Grand Fantasia"
Global $processid = ProcessExists("GrandFantasia.exe")
Global $pointer = 0x00A6486C
Global $hppointer = $pointer
Global $hpoffset1 = Dec("8")
Global $hpoffset2 = Dec("4")
Global $hpcappointer = $pointer
Global $hpcapoffset1 = Dec("8")
Global $hpcapoffset2 = Dec("48")
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#Region ### START GUI section ###
$GFBoT = GUICreate("HP Test", 201, 71, 600, 300)
$CheckHP = GUICtrlCreateCheckbox("HP", 85, 5, 35, 17)
$Label1 = GUICtrlCreateLabel("If HP", 10, 35, 25, 17)
$InputHP = GUICtrlCreateInput("", 40, 33, 50, 21)
$Label2 = GUICtrlCreateLabel("then send", 95, 35, 51, 17)
$ComboHP = GUICtrlCreateCombo("{1}", 150, 33, 40, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
#EndRegion ### END GUI section ###
check()
Func check()
If WinExists("Grand Fantasia") Then
GUISetState(@SW_SHOW, $GFBoT)
Else
Global $ask = MsgBox(0, "Ошибка", "Сперва запустите Grand Fantasia!")
Exit
EndIf
EndFunc
Func HP()
If GUICtrlRead($CheckHP) = $GUI_CHECKED Then
HPPotion()
EndIf
EndFunc
Func HPPotion()
mem()
If $currenthp <= GUICtrlRead($InputHP) Then
$Send = GUICtrlRead($ComboHP)
Send($Send)
EndIf
EndFunc
Func mem()
$memopen = _memoryopen($processid)
Global $currenthp = _memoryread($hppointer, $memopen)
Global $hpcur1 = "0x" & Hex($currenthp + $hpoffset1)
Global $currenthp = _memoryread($hpcur1, $memopen)
Global $hpcur2 = "0x" & Hex($currenthp + $hpoffset2)
Global $currenthp = _memoryread($hpcur2, $memopen)
_memoryclose($processid)
EndFunc
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd