Перейти к содержанию
Авторизация  
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-файлов, или продолжить без изменения настроек.