Z3roKwq
Известный
- 294
- 157
Это апи от дрочилы, в него встроен ракхукВ самп апи есть хуки? Мне кажется лучше использовать ракхуки от имринга
Это апи от дрочилы, в него встроен ракхукВ самп апи есть хуки? Мне кажется лучше использовать ракхуки от имринга
знаю. у вас нет случайно курсов?Для твоих целей… тебе нужное еще изучить Reverse Engineering
Только книжки (знаю. у вас нет случайно курсов?
Решился С#/C++ изучать. Как думаешь, что из этого лучше всего? Я думаю, что нужно изучить сразу два языка, я прав?тг дай, кину пдфки
Мб потому что ты читаешь у любого пакета дату+8(которой у него может и не быть)samp-api
банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)Посмотреть вложение 212922c++:bool __stdcall RakClientRecvHook(SAMP::CallBacks::HookedStructs::stRakClientRecv* params) { if (params->bitStream->GetData()[0] == 215 && skip) { } } ну и рег SAMP::CallBacks::pCallBackRegister->RegisterRakClientCallback(RakClientRecvHook);
Ну да ты просто сам хук вызовешьесли кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?
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
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 , покажи реализациюПомогите переписать 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 , покажи реализацию
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;
}
нихуя чо ты придумал а зачемс чтением и "сложением" проблем нету, как я понял дело имени в записи "итогового" адреса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; }
мб твоя функа isLocalPlayerInCar хуйня?Помогите переписать 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 хуйня?
ну, добавь отладочные строки, проверь, выполняется ли вообще твоя проверкаПхах, неа, функа нормально работает, чтение из памяти тоже, проблема именно с записью