Закрыть диалоговое окно.
#1

Есть какой-то способ закрыть диалоговое окно? Может функция какая-то?
Reply
#2

https://sampwiki.blast.hk/wiki/ShowPlayerDialog_RU

Quote:

dialogid Уникальный ID диалога. Используется в OnDialogResponse. При значении, равном -1, любой текущий диалог будет скрыт с экрана игрока.

Reply
#3

Точно... А я что-то и забыл совсем. Раньше же экспериментировал с ID диалогов.
Огромное спасибо, coloN!
Reply
#4

Сегоня опробовал, но в сочетании с кликабельными текстдравами диалог не закрывается. В чём проблема?
Reply
#5

Quote:
Originally Posted by TN0
Посмотреть сообщение
Сегоня опробовал, но в сочетании с кликабельными текстдравами диалог не закрывается. В чём проблема?
Ну попробуй тогда отключать кликабельность текстдравов перед скрытием диалога
Reply
#6

Quote:
Originally Posted by S4D
Посмотреть сообщение
Ну попробуй тогда отключать кликабельность текстдравов перед скрытием диалога
Так когда ESC нажимаешь — кликабельность сама пропадает.
То есть смотри: есть текстдравы и диалог. При нажатии на ESC срабатывает кликабельность, а не диалог. Мне нужно, чтобы сработал диалог. Пробовал вызвать сразу колбэк OnDialogResponse — не помогло. Пробовал сделать если текстдрав инвалид, то выдать -1 ID диалога и снова выдать кликабельность. Ничего не помогает.
Reply
#7

Короооче, PRO strategy!

PHP код:
ShowPlayerDialogEx(playeriddialogidstylecaption[], info[], button1[], button2[])
{
        
SetPVarInt(playerid"blablabla"1);
        return 
ShowPlayerDialog(playeriddialogidstylecaptioninfobutton1button2);

PHP код:
public OnPlayerClickTextDraw(playeridText:clickedid)
{
    if(
clickedid == INVALID_TEXT_DRAW && GetPVarType(playerid"blablabla") == 1)
    {
         
ShowPlayerDialog(playerid, -11"""""""");
         
DeletePVar(playerid"blablabla");
         
SelectTextDraw(playerid0); // не уверен
    
}
    return 
1;

Reply
#8

Quote:
Originally Posted by S4D
Посмотреть сообщение
Короооче, PRO strategy!

PHP код:
ShowPlayerDialogEx(playeriddialogidstylecaption[], info[], button1[], button2[])
{
        
SetPVarInt(playerid"blablabla"1);
        return 
ShowPlayerDialog(playeriddialogidstylecaptioninfobutton1button2);

PHP код:
public OnPlayerClickTextDraw(playeridText:clickedid)
{
    if(
clickedid == INVALID_TEXT_DRAW && GetPVarType(playerid"blablabla") == 1)
    {
         
ShowPlayerDialog(playerid, -11"""""""");
         
DeletePVar(playerid"blablabla");
         
SelectTextDraw(playerid0); // не уверен
    
}
    return 
1;

Ну я же делал так. Писал же, что после инвалидного текстдрава делал ID диалога -1.

PHP код:
    if(DA_INFO[playerid][DA_USE_DIALOG] == true) {
        switch(
clickedid == TextINVALID_TEXT_DRAW) {
            case 
false: return ShowPlayerDialog(playerid, -11"""""""");
            case 
true: return TEXTDRAW_SET_SELECT(playeridDA_INFO[playerid][DA_TEXTDRAW_SELECT]);
        }
    } 
Reply
#9

Сам себя запутал, так должно всё выглядеть:
PHP код:
    if(DA_INFO[playerid][DA_USE_DIALOG] == true) { 
        switch(
clickedid == TextINVALID_TEXT_DRAW) { 
            case 
false: return true
            case 
true: return /* Тут закрыть диалог, но как!? */
        } 
    } 
Reply
#10

Quote:
Originally Posted by TN0
Посмотреть сообщение
Сам себя запутал, так должно всё выглядеть:
PHP код:
    if(DA_INFO[playerid][DA_USE_DIALOG] == true) { 
        switch(
clickedid == TextINVALID_TEXT_DRAW) { 
            case 
false: return true
            case 
true: return /* Тут закрыть диалог, но как!? */
        } 
    } 
Что за наркомания? Почему не просто if(clickedid == Text: INVALID_TEXT_DRAW) { ... } ?

По-моему, ты решение не там ищешь. Лично я убираю кликабельность текстдравов, если она включена на момент показа диалога. И возвращаю по респонсу диалога.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)