Revalto
Известный
- 532
- 225
Решил проблему!Код весь дай, сказали же
Код:
if (SF->getSAMP()->getDialog()->iIsActive = true)
было
if (SF->getSAMP()->getDialog()->iIsActive == true)
Последнее редактирование:
Решил проблему!Код весь дай, сказали же
if (SF->getSAMP()->getDialog()->iIsActive = true)
было
if (SF->getSAMP()->getDialog()->iIsActive == true)
маин луп теперьКод: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; };
Решил проблему!маин луп теперь
if (SF->getSAMP()->getDialog()->iIsActive = true)
было
if (SF->getSAMP()->getDialog()->iIsActive == true)
Ты внутри хука эту проверку поставить не сможешь, код внутри хука выполняется до появления диалогаРешил проблему!
Для сравнения используется два знака равно ( == ), все было правильно.Решил проблему!
А если еще сделать проверку по ID диалог, и там же сделать проверку ли он открыт, с =, то тупо будет открываться диалог... Как будто DialogHider залагал..Для сравнения используется два знака равно ( == ), все было правильно.
Выше ответ почему не работало
Потому что пишешь единицу вместо сравнивания и диалог показывается.А если еще сделать проверку по ID диалог, и там же сделать проверку ли он открыт, с =, то тупо будет открываться диалог... Как будто DialogHider залагал..
Если ставить "==" пишит:Потому что пишешь единицу вместо сравнивания и диалог показывается.
1>main.cpp(26): warning C4805: ==: небезопасное смешение типа "int" и типа "bool" в операции
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;
}
}
Сейчас проверюТы внутри хука эту проверку поставить не сможешь, код внутри хука выполняется до появления диалога
С "==" не работает, а вот с "=" работает)Ты внутри хука эту проверку поставить не сможешь, код внутри хука выполняется до появления диалога
:facepalm:С "==" не работает, а вот с "=" работает)
ты вместо сравнения присваиваешь переменной значениеС "==" не работает, а вот с "=" работает)
"==" оператор сравнения, "=" присвоения. А работает потому, что оператор "=" вернул trueС "==" не работает, а вот с "=" работает)
Я не правильно написал, работает не коректно! Тоесть вообще капец творится :D:facepalm:
Это только ты думаешь что работает как надо, можешь вообще тогда условие убрать и ничего не изменится. Совсем
Я не правильно написал, работает не коректно! Тоесть вообще капец творится :D
Так что мне делать, как мне проверить тогда открытыт ли диалог? С == 1 и == true не работает
Ты внутри хука эту проверку поставить не сможешь, код внутри хука выполняется до появления диалога