SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
bool __stdcall incomingRPC(stRakNetHookParams* params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
UINT16 wDialogID;
UINT8 bDialogStyle;
UINT8 bTitleLength, bButton1Len, bButton2Len;
char szTitle[256], szButton1[256], szButton2[256];
char szInfo[4096];
params->bitStream->ResetReadPointer();
params->bitStream->Read(wDialogID);
params->bitStream->Read(bDialogStyle);
params->bitStream->Read(bTitleLength);
params->bitStream->Read(szTitle, bTitleLength);
szTitle[bTitleLength] = NULL;
params->bitStream->Read(bButton1Len);
params->bitStream->Read(szButton1, bButton1Len);
szButton1[bButton1Len] = NULL;
params->bitStream->Read(bButton2Len);
params->bitStream->Read(szButton2, bButton2Len);
szButton2[bButton2Len] = NULL;
SF->getRakNet()->DecodeString(szInfo, 4096, params->bitStream);
std::string new_title = "HOOKED | " + std::string(szTitle);
strcpy_s(szTitle, new_title.c_str());
params->bitStream->ResetWritePointer();
params->bitStream->Write(wDialogID);
params->bitStream->Write(bDialogStyle);
params->bitStream->Write((UINT8)strlen(szTitle));
params->bitStream->Write(szTitle, strlen(szTitle));
params->bitStream->Write((UINT8)strlen(szButton1));
params->bitStream->Write(szButton1, strlen(szButton1));
params->bitStream->Write((UINT8)strlen(szButton2));
params->bitStream->Write(szButton2, strlen(szButton2));
SF->getRakNet()->EncodeString(szInfo, 4096, params->bitStream);
}
return true;
}