Показать сообщение отдельно

  #3  
Старый 16.05.2019, 00:40
astap_
Постоянный
Регистрация: 05.03.2014
Сообщений: 626
С нами: 6415078

Репутация: 163


По умолчанию

Цитата:
Сообщение от HanPrincess  

Как узнать текст диалога? При таком коде выводится только текст "Авторизация/Принять", то есть титла/кнопки, а дальше какие-то иероглифы, а мне надо прочитать текст, который находится в самом диалоге

Код:





Код:
bool CALLBACK incomingRPC(stRakNetHookParams* params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
    {
        short int DialogID;
        char pText[64];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(DialogID);
        params->bitStream->Read(pText);
        params->bitStream->ResetReadPointer();

        SF->getSAMP()->getChat()->AddChatMessage(-1, "DIALOG ID [%d]]",    DialogID);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "Text: [%s]", pText);
    };

    return true;
};

странно что у тебя вообще что-то выводится с таким кодом.

компоненты RPC/пакета нужно получать строго по порядку.

Код:





Код:
struct stSAMPDialog
{
    int iIsActive;
    BYTE bDialogStyle;
    WORD wDialogID;
    BYTE bTitleLength;
    char szTitle[257];
    BYTE bButton1Len;
    char szButton1[257];
    BYTE bButton2Len;
    char szButton2[257];
    char szInfo[1000];
};

bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (hook->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
    {
        stSAMPDialog sampDialog;

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(sampDialog.wDialogID);
        params->bitStream->Read(sampDialog.bDialogStyle);
        params->bitStream->Read(sampDialog.bTitleLength);
        params->bitStream->Read(sampDialog.szTitle, sampDialog.bTitleLength);
        sampDialog.szTitle[sampDialog.bTitleLength] = 0;
        params->bitStream->Read(sampDialog.bButton1Len);
        params->bitStream->Read(sampDialog.szButton1, sampDialog.bButton1Len);
        sampDialog.szButton1[sampDialog.bButton1Len] = 0;
        params->bitStream->Read(sampDialog.bButton2Len);
        params->bitStream->Read(sampDialog.szButton2, sampDialog.bButton2Len);
        sampDialog.szButton2[sampDialog.bButton2Len] = 0;
        SF->getRakNet()->DecodeString(sampDialog.szInfo, 900, params->bitStream);
 
        SF->getSAMP()->getChat()->AddChatMessage(-1, sampDialog.szInfo);
    };
    return true;
};
 
Ответить с цитированием