SA-MP Forums Archive
Открыт ли диалог? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Открыт ли диалог? (/showthread.php?tid=534910)



Открыт ли диалог? - LiMOH - 31.08.2014

Приветствую, вопрос таков, как можно узнать, открыто ли в текущий момент у игрока какое-либо диалоговое окно?


Re: Открыт ли диалог? - stabker - 31.08.2014

Вы можете проверять, не было ли закрыто показанное вами окно (show - запоминаем ид, response - обнуляем). Если читом его свернут/откроют (или что-то вроде того), то вы это не узнаете.


Re: Открыт ли диалог? - Daea - 01.09.2014

Лови:
Code:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
	ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
	SetPVarInt(playerid, "DialogShown", 1);
	return true;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	SetPVarInt(playerid, "DialogShown", 0);
        return true;
}
if(GetPVarInt(playerid, "DialogShown")) - проверка на то, что открыт ли диалог


Re: Открыт ли диалог? - Stepashka - 01.09.2014

Quote:
Originally Posted by Daea
View Post
Лови:
Code:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
	ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
	SetPVarInt(playerid, "DialogShown", 1);
	return true;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	SetPVarInt(playerid, "DialogShown", 0);
        return true;
}
if(GetPVarInt(playerid, "DialogShown")) - проверка на то, что открыт ли диалог
Прочтите предыдущий пост внимательно!

Топикстартеру, этот способ не проверяет на открытый диалог.


Re: Открыт ли диалог? - Daea - 01.09.2014

Ну давайте перечитаем..."как можно узнать, открыто ли в текущий момент у игрока какое-либо диалоговое окно?" >>> "открыто ли какое-либо диалоговое окно" >>> КАКОЕ-ЛИБО!
Все так ведь...
Так что этот способ работает так, как надо...
К тому же, этот способ встречается в IpleoMax, и работает нормально...


Re: Открыт ли диалог? - Stepashka - 01.09.2014

Quote:
Originally Posted by Daea
View Post
Ну давайте перечитаем..."как можно узнать, открыто ли в текущий момент у игрока какое-либо диалоговое окно?" >>> "открыто ли какое-либо диалоговое окно" >>> КАКОЕ-ЛИБО!
Все так ведь...
Так что этот способ работает так, как надо...
К тому же, этот способ встречается в IpleoMax, и работает нормально...
Этот способ позволяет проверить показали ли вы игроку диалог и выполнил ли он его, но не позволяет проверить открыт ли он у него потому что:
Quote:
Originally Posted by stabker
View Post
Если читом его свернут/откроют (или что-то вроде того), то вы это не узнаете.



Re: Открыт ли диалог? - Daea - 01.09.2014

Хорошо, признаю свою ошибку, НО тем не менее, он просил решение, я дал решение...


Re: Открыт ли диалог? - Jon_De - 01.09.2014

Code:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
	ShowPlayerDialog(playerid, random(1000), style, caption, info, button1, button2);
	SetPVarInt(playerid, "DialogShown", dialogid);
	return true;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	dialogid = GetPVarInt(playerid, "DialogShown");
        DeletePVar(playerid, "DialogShown");
        return true;
}
А еще лучше так. Во первых можно ид диалога узнать, во вторых читом нельзя будет подменить/несколько раз использовать диалог


Re: Открыт ли диалог? - LiMOH - 02.09.2014

Спасибо всем отписавшимся.