Вот так надоПробовал в хуке вот так:
Видно я не правильно перезаписываю, потому что в чат выбивает вот это: Warning: ignoring large TextDraw size=25940Код:if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw) { stTextDrawTransmit txd; WORD txdID, cTextLen; char cText[800]; params->bitStream->ResetReadPointer(); params->bitStream->Read(txdID); params->bitStream->Read((PCHAR)&txd, sizeof(stTextDrawTransmit)); params->bitStream->Read(cTextLen); params->bitStream->Read(cText, cTextLen); params->bitStream->ResetReadPointer(); cText[cTextLen] = '\0'; if (txdID == 6) { params->bitStream->ResetWritePointer(); params->bitStream->Write(txdID); params->bitStream->Write((PCHAR)&txd, sizeof(stTextDrawTransmit)); strcpy_s(cText, "Test"); params->bitStream->Write(cText, strlen(cText)); } return true; }
C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
{
WORD wTextID, cTextLen;
stTextDrawTransmit data;
char cText[65535];
BitStream *bsData = params->bitStream;
bsData->Read(wTextID);
bsData->Read((PCHAR)&data, sizeof(stTextDrawTransmit));
bsData->Read(cTextLen);
bsData->Read(cText, cTextLen);
cText[cTextLen] = '\0';
stTextDrawTransmit MyTD;
SF->getSAMP()->getInfo()->pPools->pTextdraw->GetTransmit(125, MyTD);
MyTD.fBoxHeight = 0.249999;
MyTD.fLetterWidth = 0.300000;
MyTD.dwBoxColor = -16776961;
MyTD.byteShadow = 0;
MyTD.byteOutline = -1;
MyTD.dwBackgroundColor = -1;
MyTD.byteStyle = 2;
MyTD.byteProportional = 1;
SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(125);
SF->getSAMP()->getInfo()->pPools->pTextdraw->Create(125, &MyTD, "DIAMOND");
SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(126);
SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(127);
SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(128);
SF->getSAMP()->getInfo()->pPools->pTextdraw->Delete(129);
};
return true;
};