Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок №21 – Создание простого диалога-списка

Статус
В этой теме нельзя размещать новые ответы.

Devin_Coleman

Специалист
В этом уроке мы переходим к разбору третьего стиля диалога: DIALOG_STYLE_LIST. Давайте
рассмотрим данный стиль диалога на следующем примере. Допустим нам нужно командой,
вызвать меню со списком оружия на выбор.
Создаем простейшую команду и внутрь ее пишем функцию вызова диалога. Так как это
будет список, нам нужно использовать \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 патронов
}
То же самое делаем и для остальных listitem. Вписываем ту же строчку, только вместо 22,
пишем следующее: 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
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу