Закрыть диалоговое окно. -
TN0 - 08.08.2015
Есть какой-то способ закрыть диалоговое окно? Может функция какая-то?
Re: Закрыть диалоговое окно. -
coloN - 08.08.2015
https://sampwiki.blast.hk/wiki/ShowPlayerDialog_RU
Quote:
dialogid Уникальный ID диалога. Используется в OnDialogResponse. При значении, равном -1, любой текущий диалог будет скрыт с экрана игрока.
|
Re: Закрыть диалоговое окно. -
TN0 - 08.08.2015
Точно... А я что-то и забыл совсем. Раньше же экспериментировал с ID диалогов.
Огромное спасибо, coloN!
Re: Закрыть диалоговое окно. -
TN0 - 09.08.2015
Сегоня опробовал, но в сочетании с кликабельными текстдравами диалог не закрывается. В чём проблема?
Re: Закрыть диалоговое окно. -
S4D - 10.08.2015
Quote:
Originally Posted by TN0
Сегоня опробовал, но в сочетании с кликабельными текстдравами диалог не закрывается. В чём проблема?
|
Ну попробуй тогда отключать кликабельность текстдравов перед скрытием диалога
Re: Закрыть диалоговое окно. -
TN0 - 10.08.2015
Quote:
Originally Posted by S4D
Ну попробуй тогда отключать кликабельность текстдравов перед скрытием диалога
|
Так когда ESC нажимаешь — кликабельность сама пропадает.
То есть смотри: есть текстдравы и диалог. При нажатии на ESC срабатывает кликабельность, а не диалог. Мне нужно, чтобы сработал диалог. Пробовал вызвать сразу колбэк OnDialogResponse — не помогло. Пробовал сделать если текстдрав инвалид, то выдать -1 ID диалога и снова выдать кликабельность. Ничего не помогает.
Re: Закрыть диалоговое окно. -
S4D - 10.08.2015
Короооче, PRO strategy!
PHP код:
ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
SetPVarInt(playerid, "blablabla", 1);
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}
PHP код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == INVALID_TEXT_DRAW && GetPVarType(playerid, "blablabla") == 1)
{
ShowPlayerDialog(playerid, -1, 1, "", "", "", "");
DeletePVar(playerid, "blablabla");
SelectTextDraw(playerid, 0); // не уверен
}
return 1;
}
Re: Закрыть диалоговое окно. -
TN0 - 10.08.2015
Quote:
Originally Posted by S4D
Короооче, PRO strategy!
PHP код:
ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
SetPVarInt(playerid, "blablabla", 1);
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}
PHP код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == INVALID_TEXT_DRAW && GetPVarType(playerid, "blablabla") == 1)
{
ShowPlayerDialog(playerid, -1, 1, "", "", "", "");
DeletePVar(playerid, "blablabla");
SelectTextDraw(playerid, 0); // не уверен
}
return 1;
}
|
Ну я же делал так. Писал же, что после инвалидного текстдрава делал ID диалога -1.
PHP код:
if(DA_INFO[playerid][DA_USE_DIALOG] == true) {
switch(clickedid == Text: INVALID_TEXT_DRAW) {
case false: return ShowPlayerDialog(playerid, -1, 1, "", "", "", "");
case true: return TEXTDRAW_SET_SELECT(playerid, DA_INFO[playerid][DA_TEXTDRAW_SELECT]);
}
}
Re: Закрыть диалоговое окно. -
TN0 - 15.08.2015
Сам себя запутал, так должно всё выглядеть:
PHP код:
if(DA_INFO[playerid][DA_USE_DIALOG] == true) {
switch(clickedid == Text: INVALID_TEXT_DRAW) {
case false: return true;
case true: return /* Тут закрыть диалог, но как!? */;
}
}
Re: Закрыть диалоговое окно. -
stabker - 15.08.2015
Quote:
Originally Posted by TN0
Сам себя запутал, так должно всё выглядеть:
PHP код:
if(DA_INFO[playerid][DA_USE_DIALOG] == true) {
switch(clickedid == Text: INVALID_TEXT_DRAW) {
case false: return true;
case true: return /* Тут закрыть диалог, но как!? */;
}
}
|
Что за наркомания?
Почему не просто if(clickedid == Text: INVALID_TEXT_DRAW) { ... } ?
По-моему, ты решение не там ищешь. Лично я убираю кликабельность текстдравов, если она включена на момент показа диалога. И возвращаю по респонсу диалога.