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

hefesto

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

F0RQU1N and

Известный
1,310
495
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

хуега)

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

Z3roKwq

Известный
294
157
Помогите переписать 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 Man

Любитель Linux
Модератор
1,629
1,125
Помогите переписать 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

Известный
294
157
а че за 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,310
495
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