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=584871)



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




Re: Закрыть диалоговое окно. - TN0 - 10.08.2015

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



Re: Закрыть диалоговое окно. - TN0 - 15.08.2015

Сам себя запутал, так должно всё выглядеть:
PHP код:
    if(DA_INFO[playerid][DA_USE_DIALOG] == true) { 
        switch(
clickedid == TextINVALID_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 == TextINVALID_TEXT_DRAW) { 
            case 
false: return true
            case 
true: return /* Тут закрыть диалог, но как!? */
        } 
    } 
Что за наркомания? Почему не просто if(clickedid == Text: INVALID_TEXT_DRAW) { ... } ?

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