Неактуально зависает игра при изменении значения в памяти

nonelike

Известный
Автор темы
50
2
говнокод, для тестов:
void removeVehicleLimits()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40E);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits2()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F440);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits3()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F46B);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits4()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5461);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits5()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5501);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits6()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA55A1);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits7()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5641);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits8()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xB2D2F);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}
(я знаю что код хуйня, не пишите, это ток для тестов)

ида:
0x0E40E                 cmp     eax, 263h
0x9F3AE                 cmp     ax, 263h
0x9F440                 cmp     ax, 263h
0x9F46B                 cmp     ax, 263h
0xA5461                 cmp     edx, 263h
0xA5501                 cmp     edx, 263h
0xA55A1                 cmp     edx, 263h
0xA5641                 cmp     edx, 263h
0xB2D2F                 cmp     ax, 263h
0xB752F                 cmp     ax, 263h
(в адресах уже есть смещение на 1байт)

нашел все конструкции через ida pro под самп р3, которые содержат 263h (611) и решил прост заменить их на 30000 тем самым обойдя проверку тачек больше, чем 611, но игра прост виснет про спавне тачки вне 611, 12503 допустим, дело в том что я чет нахуячил в памяти или нет?
 

fuflexxxx

Участник
34
16
При случае cmp eax, 263h ты затираешь байты инструкции cmp, надо патчить байты на address_vehicle + 1.
При случае cmp ax, 263h там вообще ужас будет, там вся инструкция ломается, т.к ax - регистр размером 2 байта, а ты указываешь int32_t.
И вообще зачем все места трогать? Найди одно нужное и меняй там.
 
  • Нравится
Реакции: nonelike

nonelike

Известный
Автор темы
50
2
При случае cmp eax, 263h ты затираешь байты инструкции cmp, надо патчить байты на address_vehicle + 1.
Код:
*reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
?
При случае cmp ax, 263h там вообще ужас будет, там вся инструкция ломается, т.к ax - регистр размером 2 байта, а ты указываешь int32_t.
int16_t?
И вообще зачем все места трогать? Найди одно нужное и меняй там.
пару адресов действительно были лишними, а так по большей части тут не один нужен, а несколько
 

nonelike

Известный
Автор темы
50
2
говнокод, для тестов:
void removeVehicleLimits()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40E);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits2()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F440);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits3()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F46B);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits4()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5461);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits5()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5501);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits6()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA55A1);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits7()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5641);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits8()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xB2D2F);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}
виснет также при спавне тачки..
 

fuflexxxx

Участник
34
16
говнокод, для тестов:
void removeVehicleLimits()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40E);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits2()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F440);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits3()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F46B);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits4()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5461);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits5()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5501);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits6()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA55A1);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits7()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5641);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits8()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xB2D2F);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}
виснет также при спавне тачки..
Забыл уточнить, что для cmp ax, 263h надо addr + 2 делать.
1735932174793.png
 
  • Нравится
Реакции: nonelike

nonelike

Известный
Автор темы
50
2
Забыл уточнить, что для cmp ax, 263h надо addr + 2 делать. Посмотреть вложение 260913
говнокод, для тестов:
void removeVehicleLimits()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40E);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits2()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F440);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits3()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F46B);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits4()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5461);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits5()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5501);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits6()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA55A1);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits7()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5641);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits8()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xB2D2F);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

виснет
 

fuflexxxx

Участник
34
16
Открывай иду, options -> General -> number of opcode bytes пиши 10.
1735932761120.png

Переходи к своей инструкции в асме и ищи там число 263. Смотри сколько до него байт и делай addr + n. Крашит оно как раз в cmp edx, 263 ибо там для них выставлен addr + 1, а надо addr + 2 тоже исходя из скрина.
 
  • Влюблен
Реакции: nonelike

nonelike

Известный
Автор темы
50
2
Открывай иду, options -> General -> number of opcode bytes пиши 10.
Посмотреть вложение 260914
Переходи к своей инструкции в асме и ищи там число 263. Смотри сколько до него байт и делай addr + n. Крашит оно как раз в cmp edx, 263 ибо там для них выставлен addr + 1, а надо addr + 2 тоже исходя из скрина.
говнокод, для тестов:
void removeVehicleLimits()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x0E40D);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+1) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits2()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F43F);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits3()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0x9F46A);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits4()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5460);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits5()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5500);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits6()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA55A0);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits7()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xA5640);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int32_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}

void removeVehicleLimits8()
{
    const uintptr_t address_vehicle =
        reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll")) + (0xB2D2E);

    DWORD dwOldProtect_veh;
    VirtualProtect((LPVOID)address_vehicle, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect_veh);
    *reinterpret_cast<int16_t*>(address_vehicle+2) = 30000;
    VirtualProtect((LPVOID)address_vehicle, 4, dwOldProtect_veh, &dwOldProtect_veh);
}
перепроверил везде, теперь должно стоять верно по байтам, но все равно зависает
(спасибо что научил смотреть байты)
 

nonelike

Известный
Автор темы
50
2
Проверь версию сампа. Проверь не конфликтуют ли твои изменения с другими плагинами, если они есть. А вообще лучше скачать Cheat engine или x64dbg и посмотреть какие там инструкции теперь на адресах.
версия сампа совпадает, лимит аджастер на сборке есть, но без него по сути и вся задумка бессмысленна, да и как будто бы он не трогает эти адреса, щас скачаю гляну инструкции которые теперь