Другое С/С++ Вопрос - Ответ

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
bool CALLBACK ShowShowDialog(stRakNetHookParams *params) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
    {
        WORD dialogId;
        params->bitStream->Read(dialogId);
        params->bitStream->ResetReadPointer();
        if (SF->getSAMP()->getDialog()->iIsActive == true)
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF0011}[DIALOG]: {FFFFFF}Диалог найден!");
        }
    }
    return true;
};
маин луп теперь
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Revalto

Известный
532
225
Для сравнения используется два знака равно ( == ), все было правильно.
Выше ответ почему не работало
А если еще сделать проверку по ID диалог, и там же сделать проверку ли он открыт, с =, то тупо будет открываться диалог... Как будто DialogHider залагал..
 

BlackKnigga

Известный
BH Team
922
445
А если еще сделать проверку по ID диалог, и там же сделать проверку ли он открыт, с =, то тупо будет открываться диалог... Как будто DialogHider залагал..
Потому что пишешь единицу вместо сравнивания и диалог показывается.
 

Revalto

Известный
532
225
Потому что пишешь единицу вместо сравнивания и диалог показывается.
Если ставить "==" пишит:
Код:
1>main.cpp(26): warning C4805: ==: небезопасное смешение типа "int" и типа "bool" в операции
upload_2017-10-24_20-49-55.png

Делал проверку на этом TD...
Код:
bool CALLBACK ShowShowDialog(stRakNetHookParams *params) // определение callback-функции, которая будет вызвана, если от сервера был получен новый RPC.
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
    {
        WORD dialogId;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(dialogId);
        params->bitStream->ResetReadPointer();
        if (dialogId == 8868)
        {
            if (SF->getSAMP()->getDialog()->iIsActive == true)
            {
                SF->getSAMP()->getChat()->AddChatMessage(-1, "{FF0011}[DIALOG]: {FFFFFF}Диалог найден!");
                SF->getSAMP()->getDialog()->SetInputText("Test");
            }
        }
    }
    return true;
};


void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{FFFF00}[test]: {FFFFFF}1");
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, ShowShowDialog);
        init = true;
    }
}
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
С "==" не работает, а вот с "=" работает)
"==" оператор сравнения, "=" присвоения. А работает потому, что оператор "=" вернул true
Советую тебе сначала изучить структуру stDialogInfo, да и синтаксис с++ в целом.
 
  • Нравится
Реакции: romanblinov2013 и memir