Другое SAMPFUNCS | API C++

Vadim.dll

Известный
168
80
SR_team Воот нашел твою библиотеку тут https://www.blast.hk/threads/12462/ помоему это прямо то, что мне нужно, не подскажешь как пользоваться?
Вот на этот адресс например #define SAMP_HOOKENTER_STATECHANGE 0x12B82
 

SR_team

like pancake
BH Team
4,720
6,374
SR_team Воот нашел твою библиотеку тут https://www.blast.hk/threads/12462/ помоему это прямо то, что мне нужно, не подскажешь как пользоваться?
Вот на этот адресс например #define SAMP_HOOKENTER_STATECHANGE 0x12B82
Пока лучше не юзай, я потом перезалью с имправленным деструктором
 

QGate

Новичок
78
0
Как проверить открыт ли какой-либо диалог?
---------------
Понял как сделать проверку:
C++:
if (SF->getSAMP()->getDialog()->DialogID != 0)
    {
        //код
    }
    else
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Диалог не открыт");
    }
Но есть проблема, если открыть диалог, вызвать эту проверку, закрыть диалог и снова вызвать, он не очищает предыдущий ид диалога.
 
Последнее редактирование:

QGate

Новичок
78
0
Еще такой вопрос, как открыть диалог скрыто? Т.е. пользователь не заметит открываемого диалога.
 

QGate

Новичок
78
0
Не показывать его
А можно подробней?

Столкнулся с такой проблемой, диалог открывается слишком долго и SF->getSAMP()->getDialog()->pText пытается считать текст раньше открывшегося диалога. Как можно поправить ситуацию?
 
Последнее редактирование:

CarLCas

Известный
161
118
А можно подробней?

Столкнулся с такой проблемой, диалог открывается слишком долго и SF->getSAMP()->getDialog()->pText пытается считать текст раньше открывшегося диалога. Как можно поправить ситуацию?
Хук поставь на rpc диалога
 

QGate

Новичок
78
0
Хук поставь на rpc диалога
Уже поставил, осталось понять как вытащить сообщение.
C++:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
    {
        stSAMPDialog sampDialog;
        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;
       
        //stringCompressor->DecodeString(sampDialog.szInfo, 256, &bsData);

        params->bitStream->Read(sampDialog.bText);
        params->bitStream->Read(sampDialog.szText, sampDialog.bText);
        sampDialog.szText[sampDialog.bText] = 0;
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), sampDialog.szText);
    };
Нашел этот код, но выводит такой текст: "
Р№РU·ји‚ЅW·WµќWґќ
5^wЪ©Р "
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
stringCompressor->DecodeString(sampDialog.szInfo, 256, &bsData);
А это зачем закомментировал?
Отсюда и читается текст, просто упакован алгоритмом, чтобы меньше места занимала
 

QGate

Новичок
78
0
stringCompressor->DecodeString(sampDialog.szInfo, 256, &bsData);
А это зачем закомментировал?
Отсюда и читается текст, просто упакован алгоритмом, чтобы меньше места занимала
У меня нет этого алгоритма, но сейчас как-нибудь перенесу.