void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
{
switch (id)
{
case 93: {
pSAMP->addMessageToChat(-1, "chat msg");
break;
}
}
}
callback(rpcParams);
}
uint8_t _declspec (naked) hook_handle_rpc_packet(void)
{
static RPCParameters *pRPCParams = nullptr;
static RPCNode_ *pRPCNode = nullptr;
static DWORD dwTmp = 0;
__asm pushad;
__asm mov pRPCParams, eax;
__asm mov pRPCNode, edi;
HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
dwTmp = pSAMP->g_SAMPAddr() + 0x37443;
__asm popad;
__asm add esp, 4 // overwritten code
__asm jmp dwTmp;
}
Memory::CreateJump((BYTE*)(pSAMP->g_SAMPAddr() + 0xFF5701), (DWORD)&hook_handle_rpc_packet, 6U);