Закрыть диалоговое окно.
#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(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;
} 
Reply
#8

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]);
        }
    } 
Reply
#9

Сам себя запутал, так должно всё выглядеть:
PHP код:
    if(DA_INFO[playerid][DA_USE_DIALOG] == true) { 
        switch(
clickedid == Text: INVALID_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 == Text: INVALID_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)