Что нового

Работа с pointer'ом, offset'ами и изменение значения в игре

dworkin

Новичок
Сообщения
5
Репутация
0
Здравствуйте. Помогите пожалуйста разобраться с написанием небольшого скрипта, который для меня является сложным :(

Вот данные:
0xB6F5F0 - Player pointer (CPed)
CPed +0x540 = [float] Health

Получается:
поинтер - 0xB6F5F0
оффсет - 0x540
Тип данных - float
Полные жизни = 100.0 - это value

В Cheat Engine у меня все отлично получается изменить жизни в игре. Но скажите пожалуйста как сделать это с помощью Autoit?
 
Автор
D

dworkin

Новичок
Сообщения
5
Репутация
0
я прочитал, но там так много кода и непонятного точно достаточно, что я не пойму как мне переделать для моей цели.
Я понял можно как то использовать:

Код:
$MemTemp = (_MemoryRead($Base, $DllInformation))
For $i = 2 To UBound($Offset, 1)-1 Step 1
    If String($Offset[$i]) = "nop" Then
        If $ToDo = "Read" Then $MemTemp =  _MemoryRead($MemTemp+Dec($Offset[$i-1]), $DllInformation, $DataType)
        If $ToDo = "Write" Then $MemTemp =  _MemoryWrite($MemTemp+Dec($Offset[$i-1]), $DllInformation, $Data, $DataType)
        ExitLoop
    Else
        $MemTemp =  (_MemoryRead($MemTemp+Dec($Offset[$i-1]), $DllInformation))
    EndIf
Next
Return $MemTemp


Но что из этого использовать, что лишнее убрать я без понятия. Помогите пожалуйста
 

Black_Hole

Знающий
Сообщения
126
Репутация
11
Код:
#include <NomadMemory.au3>
$a = 0x0B7F2884
$b = 'test.exe'
$c = '0xffc99a3b' ;999.999.999 ресурса
$d = 'byte[4]'

HotKeySet("{F9}", "_Exit")

While 1
mw()
WEnd
Func mw()
Sleep(500)
_MemoryWrite($a ,_MemoryOpen(ProcessExists($b)), $c, $d)
EndFunc
Func _Exit()
Exit
EndFunc
 
Автор
D

dworkin

Новичок
Сообщения
5
Репутация
0
Black_Hole спасибо за ответ, но это не то. У тебя нету работы с оффсетами.

Я тут поискал и вот что нашел. Это с туториал как создать тренер, но почему у меня не получается.
Код:
If $button3status Then                                   

            $Static = "0x" & Hex($BaseAddr + 1634596)            
;Base address (usually 400000) + 18F124 (Pointer in decimal)

            $Pointer = _MemoryRead($Static, $hwnd, 'dword')      
;Static pointer address

            $Static = "0x" & Hex($Pointer + 4)                   
;Pointer + offset (in decimal)

            $Pointer = _MemoryRead($Static, $hwnd, 'dword')      
;Address pointer points to

            $Static = $Pointer + 9216                            
;Address to write to -- Pointer read + 2400 (offset in decimal)

            $Value = _MemoryWrite($Static, $hwnd, "99", 'double') ;Write decimal value 99 as a double value

        EndIf


В моей игре $BaseAddr тоже 400000. У меня 1 поинтер = 0xB6F5F0 и оффсет = 0x540. Но как по мне то в этом кусочке кода зачем то еще один оффсет...

Поэтому я переделал под себя, но почему то не работает(

Код:
If $button3status Then                                   
;Rope Cheat ------------------------------------------------

            $Static = "0x" & Hex($BaseAddr + 11990512)            
;Базовый адресс (обычно 400000) + 0xB6F5F0 (поинтер игрока перевел в десятичную сис.)

            $Pointer = _MemoryRead($Static, $hwnd, 'float)      
;Static pointer address

            $Static = "0x" & Hex($Pointer + 1344)                   
;Pointer + offset (мой оффсет 0x540 на хп перевел в десятичную сис.)

            $Value = _MemoryWrite($Static, $hwnd, "100.0", 'float') ;

        EndIf


Не работает(
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Код:
$vPointer = 0xB6F5F0
$vOffset - 0x540

$iPID = ProcessExists('некий процесс.exe')
$hMemory = _MemoryOpen($iPID)

$vPointer = _MemoryRead($vPointer, $hMemory)      
$vAdress = $Pointer + $vOffset
_MemoryWrite($vAdress, $hMemory, "100", 'float')
 
Верх