Другое С/С++ Вопрос - Ответ

Digger Man52

52NGG
Проверенный
1,121
987
спасибо большое. я сейчас прохожу ООП - Полифоризм. Вообще планирую писать обходы и читы для разных игр. Если бы вы посоветовали что еще изучить нужно, был бы очень благодарен)
Для твоих целей… тебе нужное еще изучить Reverse Engineering
 
  • Нравится
Реакции: Z3roKwq

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,791
2,617
samp-api
c++:
bool __stdcall RakClientRecvHook(SAMP::CallBacks::HookedStructs::stRakClientRecv* params) {
    if (params->bitStream->GetData()[1] == 215 && skip)
    {
    }
}

ну и рег SAMP::CallBacks::pCallBackRegister->RegisterRakClientCallback(RakClientRecvHook);
банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)Посмотреть вложение 212922
В самп апи есть хуки? Мне кажется лучше использовать ракхуки от имринга
 

hefesto

Новичок
12
1
тг дай, кину пдфки
Решился С#/C++ изучать. Как думаешь, что из этого лучше всего? Я думаю, что нужно изучить сразу два языка, я прав?
Если да, то мог бы ты подсказать мне, какие видеоуроки смотреть на ютубе по C# и C++? Какие книги читать по этим языкам?
 
  • Ха-ха
Реакции: ARMOR

F0RQU1N and

Известный
1,307
498
samp-api
c++:
bool __stdcall RakClientRecvHook(SAMP::CallBacks::HookedStructs::stRakClientRecv* params) {
    if (params->bitStream->GetData()[0] == 215 && skip)
    {
    }
}

ну и рег SAMP::CallBacks::pCallBackRegister->RegisterRakClientCallback(RakClientRecvHook);
банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)Посмотреть вложение 212922
Мб потому что ты читаешь у любого пакета дату+8(которой у него может и не быть)
 
  • Влюблен
Реакции: Z3roKwq

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,791
2,617
если кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?
 

Z3roKwq

Известный
291
154
Помогите переписать no gears с луа

Lua:
if isCharInAnyCar(PLAYER_PED) then
    header = getCarModel(storeCarCharIsInNoSave(PLAYER_PED))
    header = memory.getint32(header * 0x4 + 0xA9B0C8, false)
    header = memory.getint16(header + 0x4A, false)
    memory.setint8(header * 0xE0 + 0xC2B9DC + 0x74, 1, false)
end

пробовал

C++:
typedef unsigned long Uint;
inline Uint bit_set(Uint number, Uint n) {
    return number | ((Uint)1 << n);
}

if (isLocalPlayerInCar()) {
    int car_model = SF->getSAMP()->getVehicles()->sampVehicle[SF->getSAMP()->getPlayers()->localPlayerInfo.data->inCarData.vehicleId]->gtaVehicle->base.model_alt_id;
    car_model = readUInt32FromMemory(reinterpret_cast<void*>(car_model * 0x4 + 0xA9B0C8));
    car_model = readUInt16FromMemory(reinterpret_cast<void*>(car_model + 0x4A));
    bit_set((car_model * 0xE0 + 0xC2B9DC + 0x74), 1);
}

но результата не дало
 

Digger Man52

52NGG
Проверенный
1,121
987
Помогите переписать no gears с луа

Lua:
if isCharInAnyCar(PLAYER_PED) then
    header = getCarModel(storeCarCharIsInNoSave(PLAYER_PED))
    header = memory.getint32(header * 0x4 + 0xA9B0C8, false)
    header = memory.getint16(header + 0x4A, false)
    memory.setint8(header * 0xE0 + 0xC2B9DC + 0x74, 1, false)
end

пробовал

C++:
typedef unsigned long Uint;
inline Uint bit_set(Uint number, Uint n) {
    return number | ((Uint)1 << n);
}

if (isLocalPlayerInCar()) {
    int car_model = SF->getSAMP()->getVehicles()->sampVehicle[SF->getSAMP()->getPlayers()->localPlayerInfo.data->inCarData.vehicleId]->gtaVehicle->base.model_alt_id;
    car_model = readUInt32FromMemory(reinterpret_cast<void*>(car_model * 0x4 + 0xA9B0C8));
    car_model = readUInt16FromMemory(reinterpret_cast<void*>(car_model + 0x4A));
    bit_set((car_model * 0xE0 + 0xC2B9DC + 0x74), 1);
}

но результата не дало
а че за readUInt16FromMemory , покажи реализацию
 

Z3roKwq

Известный
291
154
а че за readUInt16FromMemory , покажи реализацию
C++:
uint16_t readUInt16FromMemory(void* address) {
    uint16_t value;
    std::memcpy(&value, address, sizeof(uint16_t));
    return value;
}

uint32_t readUInt32FromMemory(void* address) {
    uint32_t value;
    std::memcpy(&value, address, sizeof(uint32_t));
    return value;
}
с чтением и "сложением" проблем нету, как я понял дело имени в записи "итогового" адреса
 

F0RQU1N and

Известный
1,307
498
C++:
uint16_t readUInt16FromMemory(void* address) {
    uint16_t value;
    std::memcpy(&value, address, sizeof(uint16_t));
    return value;
}

uint32_t readUInt32FromMemory(void* address) {
    uint32_t value;
    std::memcpy(&value, address, sizeof(uint32_t));
    return value;
}
с чтением и "сложением" проблем нету, как я понял дело имени в записи "итогового" адреса
нихуя чо ты придумал а зачем

Помогите переписать no gears с луа

Lua:
if isCharInAnyCar(PLAYER_PED) then
    header = getCarModel(storeCarCharIsInNoSave(PLAYER_PED))
    header = memory.getint32(header * 0x4 + 0xA9B0C8, false)
    header = memory.getint16(header + 0x4A, false)
    memory.setint8(header * 0xE0 + 0xC2B9DC + 0x74, 1, false)
end

пробовал

C++:
typedef unsigned long Uint;
inline Uint bit_set(Uint number, Uint n) {
    return number | ((Uint)1 << n);
}

if (isLocalPlayerInCar()) {
    int car_model = SF->getSAMP()->getVehicles()->sampVehicle[SF->getSAMP()->getPlayers()->localPlayerInfo.data->inCarData.vehicleId]->gtaVehicle->base.model_alt_id;
    car_model = readUInt32FromMemory(reinterpret_cast<void*>(car_model * 0x4 + 0xA9B0C8));
    car_model = readUInt16FromMemory(reinterpret_cast<void*>(car_model + 0x4A));
    bit_set((car_model * 0xE0 + 0xC2B9DC + 0x74), 1);
}

но результата не дало
мб твоя функа isLocalPlayerInCar хуйня?
 
  • Ха-ха
Реакции: Z3roKwq