Перейти к содержанию

Проблема с трейнером на VB6


Гость (_СирожА_)

Рекомендуемые сообщения

Всем привет! Извините, что делаю тему, но я тут новенький и не знаю куда писать...

Я уже год ломаю голову над одной проблемой в моем трейнере для GTA: San Andreas

Я хочу сделать в программе телепортер... Собсно он готов, но работает не правильно!

А конкретно не работает "ReadProcessMemory", вернее оно работает, но не так.

В игре каждая координата игрока записана в виде числа с точкой, например: 176.00, тоесть Float,

но когда я пытаюсь прочесть это значение, мне возвращает 1127219200, тоесть целое число(4 байта).

Вот как я обявляю API:

Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long

Вот функция чтения:

Private Function ReadMemory(WindowName As String, Adress As Long)
Dim hWnd As Long, pid As Long, pHandle As Long, str As String * 4
hWnd = FindWindow(vbNullString, "GTA: San Andreas")
If (hWnd = 0) Then Exit Function
GetWindowThreadProcessId hWnd, pid
pHandle = OpenProcess(Process_All_Access, False, pid)
ReadProcessMemory pHandle, Adress, str, 4&, 0&
ReadMemory = Val("&H" + Str2Hex(str))
CloseHandle hProcess
End Function

Вот вызов функции:

ReadMemory("Crusader", &HB7CD98)

Я уже облазил сотни форумов и в отчаянии пишу на очередной.

Умоляю Вас! Перестройте этот кусок кода так, чтобы он возвращал мне Float значение. Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.