_FliKZeT_
Умник
Автор мануала: XaskeL(_FliKZeT_)
Думаю мало кто знает как использовать/создавать - диалоги, из новичков Pawn.
В этом уроке, я попробую объяснить что к чему с этой темой 'диалоги'.
1) Как создавать диалог? Функция: ShowPlayerDialog возможно у вас используются диалоги типа SPD, если создать по стандарту через ShowPlayerDialog после его закрытия вас будет просто кикать, если такая проблема есть, замените функцию ShowPlayerDialog на SPD
Чтобы создать диалог, нам нужна команда или его вызов в stock, действия диалогам, а именно кнопкам задаются через паблик OnDialogResponse
Вывод диалога:
PHP:
ShowPlayerDialog(playerid,D_LOGIN,DIALOG_STYLE_PASSWORD,"заголовок","текст","Кнопка (1)","Кнопка (2)");
PHP:
#define D_LOGIN 333
playerid - это кому мы вывели диалог, в данном случае игроку тому кто выполнял действие связанное с вызовом диалога
DIALOG_STYLE_PASSWORD - стиль диалога
Стили диалогов существует 4, такие как(В 0.3.7 RC3 добавили 2 или 3 новых типа диалогов, о них мы поговорим чуть позже):
PHP:
1. DIALOG_STYLE_LIST
2. DIALOG_STYLE_INPUT
3. DIALOG_STYLE_PASSWORD
4. DIALOG_STYLE_MSGBOX
например у нас был ID диалога 333
Создаем действие:
PHP:
if(dialogid == 333) // ID диалога: 333
{
if(response)//Кнопка номер 1
{
SendClientMessage(playerid,-1,"Вы нажали на кнопку номер 1");
}
if(!response)//Кнопка номер 2
{
SendClientMessage(playerid,-1,"Вы нажали на кнопку номер 2");
}
//Тут тоже можно задать действие только оно будет выполнятся независимо от нажатия на кнопку
return true;
}
То все диалоги будут идти у вас по порядку, но так же с ID'aми
Пример:
PHP:
case 333: // ID диалога: 333
{
if(response)//Кнопка номер 1
{
SendClientMessage(playerid,-1,"Вы нажали на кнопку номер 1");
}
if(!response)//Кнопка номер 2
{
SendClientMessage(playerid,-1,"Вы нажали на кнопку номер 2");
}
//Тут тоже можно задать действие только оно будет выполнятся независимо от нажатия на кнопку
return true;
}
PHP:
new DC = 4;
new asd[60]; // Объявляем переменную
format(asd,sizeof(asd),"Переменная DC равна: %d",DC); // В диалоге будет этот текст, вместо "текст" мы заменяем это на название переменной
ShowPlayerDialog(playerid,333,DIALOG_STYLE_MSGBOX,"Заголовок",asd,"Кнопка 1","Кнопка 2");
DIALOG_STYLE_LIST:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
На всякий случай, stock SPD даю вам, вдруг у кого-то нет, тогда все ShowPlayerDialog заменить на SPD
Либо в начало мода:
PHP:
#define ShowPlayerDialog SPD
PHP:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
ShowPlayerDialog(playerid,dialogid, style, caption, info, button1, button2);
SetPVarInt(playerid,"USEDIALOGID", dialogid);
return true;
}
PHP:
if(GetPVarInt(playerid,"USEDIALOGID") != dialogid) return Kick(playerid);//Если использовал не существующий диалог, то наказываем игрока.
