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

Урок №20 – Создание простого диалога с полем ввода

Рекомендуемые сообщения

Devin Coleman

В этом уроке мы переходим к разбору второго стиля диалога: DIALOG_STYLE_INPUT.

Работать с данным стилем диалога будет сложнее по сравнению с остальными стилями диалогов,

т.к. тут есть поле ввода. Начнем с простого примера: мы командой вызовем диалоговое окно,

введем текст и данный текст отправиться всем игрокам в чат. Имя игрока видно не будет,

сообщение анонимное. Итак, приступим к созданию диалога:

ShowPlayerDialog(playerid,0,DSI,"Отправить сообщение всем","Введите текст сообщения","ОК","Отмена");
Данную строку я думаю, вы уже догадались, что ее нужно вписать внутрь готовой команды.

Я все также использовал константу DSI из прошлого урока, чтобы не писать длинное название

стиля диалога, поэтому не забудьте ее добавить в ваш скрипт.

#define DSI DIALOG_STYLE_INPUT
Итак, диалоговое окно мы создали, и оно будет выглядеть следующим образом.

Приступим к написанию функции для этого диалога. Как и в прошлом уроке, внутрь

функции OnDialogResponse, пишем условную конструкцию проверки на вызов диалога с ID = 0.

Внутрь этой условной конструкции пишем еще одну, проверку на нажатие кнопки. Дальше внутри

этой проверки будет еще одна проверка на то, что поле ввода у нас содержит какие-либо символы.

Ведь мы же не можем отправить пустой текст. Условная конструкция будет такая:

if(!strlen(inputtext))
{
}else{
}
Данную условную конструкцию мы пишем внутри условной конструкции if(response). А

теперь я вам объясню, что значит strlen и inputtext:

Strlen – возвращает количество символов в строке.

Inputtext – этот аргумент содержит в себе текст, который мы вводим в поле ввода.

В общем, думаю, вам будет все понятно, посмотрев нижеприведенный готовый скрипт, но

все же я вам кратко его объясню на всякий случай. Сначала идет проверка на вызов диалогового

окна с ID = 0. Мы данное окно вызывали функцией ShowPlayerDailog(playerid,0…); - я специально

выделил цифру, это dialogid. После проверки, внутри идет еще одна проверка на нажатие кнопки.

Если нажата кнопка 1, т.е. кнопка «ОК», идет следующая проверка на то, что в поле ввода есть

какой-либо текст. Если он есть, функция SendClientMessage отправляет в чат значение аргумента

inputtext, т.е то что игрок введет в поле ввода диалогового окна. Если игрок не введет в поле ввода

ничего, функция SendClientMessage отправит в чат сообщение с ошибкой, о том что текст

сообщения не был введен в поле ввода.

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(response) //Если была нажата 1 кнопка
{
if(!strlen(inputtext)){ //Если в поле не был введен текст при отправке
SendClientMessage(playerid,COLOR_RED,"Вы не написали текст сообщения в поле ввода");
return 1;
}else{
SendClientMessage(playerid,COLOR_WHITE,inputtext);
}
}
}
return 1;
}
Если вы поняли этот урок, тогда переходим к следующему.

 

Автор Cloud

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


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

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

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

×

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

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