Что нового

[Автоматизация] Вывод значений маны/хп и т.п. в WoW

Pontik

Новичок
Сообщения
9
Репутация
0
Используя поиск нашел http://autoit-script.ru/index.php/topic,1239.msg8887/topicseen.html#msg8887
С офсетами кое как разобрался, но никак не могу вывести это в нормально виде ... вот мой код, основанный на коде из темы выше.
Код:
#requireadmin
#include <NomadMemory.au3>

$pid = WinGetProcess('World of Warcraft')
$mo = _Memoryopen($pid)
Sleep(100)
$pBasePointer01 = _MemoryRead(0x00D3F7B4,$mo,'ptr') 
$pBasePointer02 = _MemoryRead($pBasePointer01 + 0x230,$mo,'ptr')
$pBasePointer03 = _MemoryRead($pBasePointer02 + 0x8,$mo,'ptr')
$pBasePointer04 = _MemoryRead($pBasePointer03 + 0x027C,$mo,'ptr')
$pBasePointer05 = _MemoryRead($pBasePointer04 + 0x2C,$mo,'ptr')
$hex  = $pBasePointer05
$hex = StringTrimLeft($hex, 2)
$dec = Dec($hex)
TrayTip('asd',$dec,5,10)
Sleep(10000)

В итоге я получаю число 1113325568 что соответствует 55 рунической энергии... в CE 1113325568 соответствует типу 4 bytes, а если там же, для полученного адреса поставить тип float то получается как раз 55 ... как мне сделать так, чтобы в моем скрипте, тоже отображалось 55 ? Спасибо.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
балин, давно с памятью не работал, попробуй подставить в функцию не в 'ptr', а во 'float'


Добавлено:
Сообщение автоматически объединено:

А во:
Код:
$CurrentLocX = floor(_MemoryRead(0x00D80228, $DllInformation, 'float'))

пример вычисления X координаты чара в WoW. Запрашивай с параметром 'float'


Добавлено:
Сообщение автоматически объединено:

Код:
func MemoryLoop()
            
            ;Check if memory is accesible
        Local $DllInformation = _MemoryOpen($ProcessID)
        If @Error Then
            MsgBox(4096, "ERROR", "Failed to open memory.")
            Exit
        EndIf
        $CurrentCharname = _MemoryRead(0x00cbaa88, $DllInformation, 'char[11]')
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
            EndIf
        $CurrentLocX = floor(_MemoryRead(0x00D80228, $DllInformation, 'float'))
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
            EndIf
        $CurrentLocY = floor(_MemoryRead(0x00D81234, $DllInformation, 'float'))
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
        EndIf
        $CurrentRot = _MemoryRead(0x00d80248, $DllInformation, 'float')
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
        EndIf
        $continentID = _MemoryRead(0x008D5B20, $DllInformation, 'dword')
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
        EndIf
        $deathNY = _MemoryRead(0x00C58FD0, $DllInformation, 'dword')
            If @Error Then
            MsgBox(4096, "ERROR", "Failed to read memory.")
            Exit
        EndIf
    
        
        
        _MemoryClose($DllInformation)
        ;Final Calculations
        $Xstart = $CurrentLocX
        $Ystart = $CurrentLocY
        $CurrentRot = floor(($CurrentRot / (3.14159265358979/180)))
        ;Update GUI
        
        ControlSetText($App_Title, "", $FinalCharname, $CurrentCharname)
        ControlSetText($App_Title, "", $Finalrot, $CurrentRot)
        ControlSetText($App_Title, "", $FinallocX, $CurrentLocX)
        ControlSetText($App_Title, "", $Finallocy, $CurrentLocY)
        ControlSetText($App_Title, "", $Finalrandom, $continentID)
EndFunc
 
Автор
P

Pontik

Новичок
Сообщения
9
Репутация
0
Спасибо! Это именно то, что мне нужно ! :ok:
 
Верх