Devin_Coleman
Специалист
В этом уроке мы переходим к разбору третьего стиля диалога: DIALOG_STYLE_LIST. Давайте
рассмотрим данный стиль диалога на следующем примере. Допустим нам нужно командой,
вызвать меню со списком оружия на выбор.
Создаем простейшую команду и внутрь ее пишем функцию вызова диалога. Так как это
будет список, нам нужно использовать \n – переход на новую строчку. Т.е. мы пишем название
пункта \n название пункта и снова \n.
Диалог будет выглядеть следующим образом:
Перед тем как написать функцию для этого диалогового окна, давайте посмотрим на
следующую конструкцию приведенную ниже.
Вот так должен выглядеть код для данного стиля диалога. Тут мы проверяем значение
listitem, т.е. пункта списка которого мы выберем в диалоге. listitem = 1 – это кольт, значит, в
условную конструкцию listitem == 1 мы должны вписать функцию GivePlayerWeapon, чтобы дать
оружие игроку.
То же самое делаем и для остальных listitem. Вписываем ту же строчку, только вместо 22,
пишем следующее: 23 – для кольта с глушителем, 24 – для пустынного орла (эти цифры, это ID
модели этого оружия). ID модели смотрите на странице «ID оружия».
Вообще, приведенный выше пример, очень схож с оператором switch, т.к. мы проверяем
значение одного аргумента и в зависимости от этого значения выполняем действие. Тоесть, это
все можно заменить на оператор switch, таким образом:
Но все же, если вы хорошо не усвоите этот урок, лучше этим примером не пользоваться
Автор Cloud
рассмотрим данный стиль диалога на следующем примере. Допустим нам нужно командой,
вызвать меню со списком оружия на выбор.
Создаем простейшую команду и внутрь ее пишем функцию вызова диалога. Так как это
будет список, нам нужно использовать \n – переход на новую строчку. Т.е. мы пишем название
пункта \n название пункта и снова \n.
Код:
if (strcmp("/weaponlist", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,0,DSL,"Список оружия»,«Кольт\nКольт с глушителем\nПустынный орел",
"Выбор", "Отмена");
return 1;
}
Перед тем как написать функцию для этого диалогового окна, давайте посмотрим на
следующую конструкцию приведенную ниже.
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(listitem == 1) //Если был выбран 1 пункт списка
{
//Выполнить этот код
}
if(listitem == 2) //Если был выбран 2 пункт списка
{
//Выполнить этот код
}
}
return 1;
}
listitem, т.е. пункта списка которого мы выберем в диалоге. listitem = 1 – это кольт, значит, в
условную конструкцию listitem == 1 мы должны вписать функцию GivePlayerWeapon, чтобы дать
оружие игроку.
Код:
if(listitem == 1) //Если был выбран 1 пункт списка
{
GivePlayerWeapon(playerid,22,100); //Дать игроку кольт и 100 патронов
}
пишем следующее: 23 – для кольта с глушителем, 24 – для пустынного орла (эти цифры, это ID
модели этого оружия). ID модели смотрите на странице «ID оружия».
Вообще, приведенный выше пример, очень схож с оператором switch, т.к. мы проверяем
значение одного аргумента и в зависимости от этого значения выполняем действие. Тоесть, это
все можно заменить на оператор switch, таким образом:
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
switch(listitem)
{
case 1: //Если был выбран 1 пункт списка
{
//Выполнить этот код
}
case 2: //Если был выбран 1 пункт списка
{
//Выполнить этот код
}
}
}
return 1;
}
Автор Cloud
