Другие аси грузит? Asi и dll это одно и то жеКак из DLL сделать ASI? Если просто переименовать - не работает. Писал на Visual C++. ASI loader стоит.
Другие аси грузит? Asi и dll это одно и то жеКак из DLL сделать ASI? Если просто переименовать - не работает. Писал на Visual C++. ASI loader стоит.
Другие АСИ грузит прекрасно.Другие аси грузит? Asi и dll это одно и то же
Если инжектить через cheat engine - то все работает.Код покажи.
LRESULT defwndproc;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_KEYDOWN)
{
switch (wParam)
{
case VK_LEFT:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD4, lParam);
break;
case VK_RIGHT:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD6, lParam);
break;
case VK_UP:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD8, lParam);
break;
case VK_DOWN:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD2, lParam);
break;
}
}
if (uMsg == WM_KEYUP)
{
switch (wParam)
{
case VK_LEFT:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD4, lParam);
break;
case VK_RIGHT:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD6, lParam);
break;
case VK_UP:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD8, lParam);
break;
case VK_DOWN:
CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD2, lParam);
break;
}
}
return CallWindowProcA(WNDPROC(defwndproc), hwnd, uMsg, wParam, lParam);
}
BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
defwndproc = SetWindowLongA(FindWindowA(0, "GTA:SA:MP"), GWL_WNDPROC, LONG(WindowProc));
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Название окна становится GTA:SA:MP только после того, как загрузится сам самп (покажется чат и игра, естественно).Если инжектить через cheat engine - то все работает.
ASI инжектится моментально , при запуске процесса(точно не знаю).Если инжектить через cheat engine - то все работает.
C++:LRESULT defwndproc; LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_KEYDOWN) { switch (wParam) { case VK_LEFT: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD4, lParam); break; case VK_RIGHT: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD6, lParam); break; case VK_UP: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD8, lParam); break; case VK_DOWN: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYDOWN, VK_NUMPAD2, lParam); break; } } if (uMsg == WM_KEYUP) { switch (wParam) { case VK_LEFT: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD4, lParam); break; case VK_RIGHT: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD6, lParam); break; case VK_UP: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD8, lParam); break; case VK_DOWN: CallWindowProcA(WNDPROC(defwndproc), hwnd, WM_KEYUP, VK_NUMPAD2, lParam); break; } } return CallWindowProcA(WNDPROC(defwndproc), hwnd, uMsg, wParam, lParam); } BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: defwndproc = SetWindowLongA(FindWindowA(0, "GTA:SA:MP"), GWL_WNDPROC, LONG(WindowProc)); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
HWND hWnd = 0;
while(hWnd == 0){
hWnd = FindWindow(0, "GTA:SA:MP");
Sleep(100);
}
Проблема в том, что я не могу добавить цикл, ибо с ним все зависает.ASI инжектится моментально , при запуске процесса(точно не знаю).
Так что добавляй цикл.
C++:HWND hWnd = 0; while(hWnd == 0){ hWnd = FindWindow(0, "GTA:SA:MP"); Sleep(100); }
Возможно.Возможно ли узнать скины других игроков через память игры?
stOnFootData sync;
memset(&sync, 0, sizeof(stOnFootData));
sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
sync.sKeys = 131072;
BitStream bsActorSync;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);