- 46
- 7
Пробую изменить координаты машины, в которой находится игрок, но почему-то при нажатии RSHIFT крашит игру, вот адреса.
CPed +0x58C = [dword] Последняя или текущая машина, которую вы водили/ведёте (CarPointer)
+0x14 = [dword] Указатель на матрицу вращения/позиционирования (64 байта)
CPed +0x58C = [dword] Последняя или текущая машина, которую вы водили/ведёте (CarPointer)
+0x14 = [dword] Указатель на матрицу вращения/позиционирования (64 байта)
C++:
WNDPROC pWndProc = nullptr;
DWORD CPed = 0xB6F5F0;
DWORD Car = CPed + 0x58C;
float* CarCoord = (*(DWORD*)Car) ? (float*)(*(DWORD*)(*(DWORD*)Car + 0x14) + 0x64) : NULL;
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static bool enabled = false;
if (uMsg == WM_KEYUP)
{
if (wParam == VK_SHIFT && lParam == 0xC0360001) // костыль
{
enabled ^= true;
}
}
if (enabled && uMsg == WM_KEYDOWN)
{
switch (wParam)
{
case VK_UP:
CarCoord[2] += 2.0f;
break;
case VK_DOWN:
CarCoord[2] -= 2.0f;
break;
case 0x41: // 'A' key
CarCoord[0] -= 1.5f;
break;
case 0x44: // 'D' key
CarCoord[0] += 1.5f;
break;
case 0x53: // 'S' key
CarCoord[1] -= 1.5f;
break;
case 0x57: // 'W' key
CarCoord[1] += 1.5f;
break;
default:
break;
}
}
return CallWindowProcA(WNDPROC(pWndProc), hwnd, uMsg, wParam, lParam);
}
bool WINAPI DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
pWndProc = (WNDPROC)SetWindowLongPtr(FindWindowA(nullptr, "GTA:SA:MP"), GWL_WNDPROC, (LONG_PTR)WndProc);
return true;
}