 |
|

01.07.2016, 13:01
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Сообщение от Vadim.dll
Это наверно из-за того что вот ты допустим открыл диалог 27 и проверка у тебя оказалась true и он выводит сообщение но она выводит пустоту потомучто ты не ввел ничего сейчас попробую попроще объяснить
первый диалог 27 test = 0 ты ввел в диалог test и хочешь чтобы при следуещем открытии диалога вывело тест
Второй раз открыл диалог 27 test = 1 проверка сбылась, но ты не ввел пока тут ничего
Какаято хрень но вроде по логике так
Мне кажется нет, вот полный код моего изобретения...
Код:
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
stSAMPDialog sampDialog;
BitStream bsData;
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, 256, params->bitStream);
char buff[64];
sprintf(buff, "%d", sampDialog.wDialogID);
if ((statusinfo == 1) && (sampDialog.wDialogID == 74))
{
statusinfo = 0;
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "%s", buff);
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), sampDialog.szInfo);
}
};
void CALLBACK getdialogtext(std::string param)
{
statusinfo = 1;
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/mn");
}
|
|
|

01.07.2016, 13:53
|
|
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами:
5715860
Репутация:
78
|
|
Проще можно сделать вот тут функи есть лянь
SF->getSAMP()->getDialog()->
|
|
|

01.07.2016, 14:18
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Vadim.dll
Проще можно сделать вот тут функи есть лянь
SF->getSAMP()->getDialog()->
Не проще.
|
|
|

01.07.2016, 14:19
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Как задержку сделать? Sleep фризит игру.
Сообщение от Vadim.dll
Проще можно сделать вот тут функи есть лянь
SF->getSAMP()->getDialog()->
Все с этого и начиналось и дошло до хука.
|
|
|

01.07.2016, 14:29
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от QGate
Как задержку сделать? Sleep фризит игру.
Все с этого и начиналось и дошло до хука.
Таймер юзать. Слип нельзя юзать.
|
|
|

01.07.2016, 14:45
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Сообщение от Dark_Knight
Таймер юзать. Слип нельзя юзать.
Можно пример? Я нашел другой пример, но он для mainloop был и я немного не понял как его юзать)
|
|
|

01.07.2016, 15:58
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
static DWORD timer = 0;
void mainloop(){
if(GetTickCount() - timer > 1000){ // ms
//code;
timer = GetTickCount();
}
|
|
|

01.07.2016, 16:52
|
|
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами:
5715860
Репутация:
78
|
|
Тогда поставить хук на OnCloseDialog и заносить каждый раз инфу в переменные
|
|
|

01.07.2016, 17:08
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Vadim.dll
Тогда поставить хук на OnCloseDialog и заносить каждый раз инфу в переменные
Нет такого РПЦ. Есть DIALOGRESPONSE
|
|
|

01.07.2016, 17:54
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Vadim.dll
Должно быть так: SF->getGame()->emulateGTAKey(GTA_KEY_1,true)
Но оно не работает лично у меня например если нужно в машину залезть то не сработает нензнаю крч какаято фигня оно наверно с чатом и диалогами работать будет может из-за того что в игре все кнопки обрабатываются через DirectKey помоему и там задержка нужна после нажатия
там не true, а некое значение, например для клавиши UpDown 255 - идем назад, -1 - идти вперед, 65535 - идти вперед шагом
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|