Перейти к содержанию
Авторизация  
Devin Coleman

Урок №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

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vadimkuis

Как Написать чтобы давал скин?

SetPlayerSkin(playerid, 283);  так что ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
hteppl

@vadimkuis,да,так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Na'Vi

Надеюсь под систему доната подойдёт

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.