![]() |
![]() |
![]() |
#9 |
Матёрый пользователь
|
![]()
Будут
![]() Код:
struct pWagon{ DWORD pTM; // Давление в тормозной магистрали, psi float TM; DWORD pZR; // Давление в запасном резервуаре, psi float ZR; DWORD pTC; // Давление в тормозном цилиндре, psi float TC; DWORD pSpeed; // Скорость (м/с) float Speed; DWORD pTractiveForce; // Сила тяги float TractiveForce; DWORD pBrakeForce; // Сила торможения float BrakeForce; }; DWORD pConsist = 0x7c8778; DWORD pHour = 0x810984; // Часы игрового времени int DWORD pMin = 0x810980; // Минуты игрового времени int DWORD pSec = 0x81097c; // Секунды игрового времени int DWORD pSpeed = 0x80f680; // Скорость (м/с) float DWORD pSigAsp = 0x80f70c; // SIGASP впередистоящего светофора int А так я ищу адреса для заполнения структур pWagon: // Предполагая, что HANDLE hProcess = OpenProcess(... я уже сделал. Код:
nWag = 0; ReadProcessMemory(hProcess, (LPCVOID)pConsist, &adr1, 4, NULL); adr1 += 0x6a; ReadProcessMemory(hProcess, (LPCVOID)adr1, &adr2, 4, NULL); // Поиск адресов вагонных переменных float m_A, m_B; // Переменные записи значений меток поиска DWORD pSearch = adr2 - 0x13ef0; // Границы адресов поиска DWORD pSearchEnd = 0x2100000; while (pSearch < pSearchEnd) { ReadProcessMemory(hProcess, (LPCVOID)pSearch, &m_A, 4, NULL); if (m_A == 76) { ReadProcessMemory(hProcess, (LPCVOID)(pSearch + 0xC), &m_B, 4, NULL); if (m_B == 60) { nWag += 1; Wag(nWag).pZR = pSearch - 0x4; Wag(nWag).pTC = pSearch + 0x8; Wag(nWag).pTM = pSearch + 0x10; Wag(nWag).pSpeed = pSearch - 0x6c; Wag(nWag).pBrakeForce = pSearch + 0x4; Wag(nWag).pTractiveForce = pSearch + 0x76; } } pSearch += 0x4; } // Чтение времени из игры ReadProcessMemory(hProcess, (LPCVOID)pHour, &Hour, 4, NULL); ReadProcessMemory(hProcess, (LPCVOID)pMin, &Min, 4, NULL); ReadProcessMemory(hProcess, (LPCVOID)pSec, &Sec, 4, NULL); TrainBrakesControllerMaxSystemPressure( 76 ) EngineBrakesControllerMaxSystemPressure( 60 ) |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
|
![]() Что это? |