Byte
Потрачен
- 115
- 32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пытаюсь поставить хук на UpdateNetwork, но когда отправляю ракнет пакеты ничего не работает
zalupa code:void CNetGame__UpdateNetwork__HOOK(const decltype(CNetGame__UpdateNetwork_Hook) & hook, void * _this) { Packet * packet = nullptr; uint8_t * localdata = nullptr; uint8_t state {}; for (packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive(); packet; packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive()) { localdata = packet -> data; switch (state) { localdata = packet->data; if(*localdata == 40) state = localdata[5]; case 223: { RakNet::BitStream bs((unsigned char * ) packet -> data, packet -> length, false); uint8_t packetID; uint32_t rpcID; bs.Read(packetID); bs.Read(rpcID); if (rpcID == 15) { sampapi::v037r3::RefChat() -> AddChatMessage("я тормоз", 0xFFFFFFFF, "я тормоз"); return; } break; } default: break; } } return hook.call_trampoline(_this); } void hooks::install_tormoz_updatenetwork_hook() { CNetGame__UpdateNetwork_Hook.set_dest(0xAF20); CNetGame__UpdateNetwork_Hook.set_cb(&CNetGame__UpdateNetwork__HOOK); CNetGame__UpdateNetwork_Hook.install(); }
C++:
void CNetGame__UpdateNetwork__HOOK(const decltype(CNetGame__UpdateNetwork_Hook) & hook, void * _this) {
Packet * packet = nullptr;
for (packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive(); packet; packet = sampapi::v037r3::RefNetGame()->m_pRakClient->Receive()) {
uint8_t packetID = packet->data[0];
if (packetID == 40) {
RakNet::BitStream bs((unsigned char*)packet->data, packet->length, false);
bs.Read(packetID);
uint16_t rpcID;
bs.Read(rpcID);
if (rpcID == 15) {
sampapi::v037r3::RefChat()->AddChatMessage("RPC 15 получен", 0xFFFFFFFF, "Отладка");
}
}
else if (packetID == 223) {
sampapi::v037r3::RefChat()->AddChatMessage("Пакет 223 получен", 0xFFFFFFFF, "Отладка");
}
}
return hook.call_trampoline(_this);
}
void hooks::install_tormoz_updatenetwork_hook() {
CNetGame__UpdateNetwork_Hook.set_dest(0xAF20);
CNetGame__UpdateNetwork_Hook.set_cb(&CNetGame__UpdateNetwork__HOOK);
CNetGame__UpdateNetwork_Hook.install();
}
state не устанавливается перед switch, а внутри первого case