Здравствуйте дорогие пользователи bforum.uz,сегодня я продолжу урок про диалоги,на этот раз я вам расскажу про создание диалога с полем ввода,и так приступим.
В этом уроке мы переходим к разбору второго стиля диалога: DIALOG_STYLE_INPUT. Работать с
данным стилем диалога будет сложнее по сравнению с остальными стилями диалогов, т.к. тут есть
поле ввода. Начнем с простого примера: мы командой вызовем диалоговое окно, введем текст и
данный текст отправиться всем игрокам в чат. Имя игрока видно не будет, сообщение анонимное.
Итак, приступим к созданию диалога:
Данную строку я думаю, вы уже догадались, что ее нужно вписать внутрь готовой команды. ЯPHP код:
ShowPlayerDialog(playerid,0,DSI,"Отправить сообщение всем","Введите текст сообщения","ОК","Отмена");
все также использовал константу DSI из прошлого урока, чтобы не писать длинное название стиля
диалога, поэтому не забудьте ее добавить в ваш скрипт.
Итак, диалоговое окно мы создали, и оно будет выглядеть следующим образом.PHP код:
#define DSI DIALOG_STYLE_INPUT
Приступим к написанию функции для этого диалога. Как и в прошлом уроке, внутрь функции
OnDialogResponse, пишем условную конструкцию проверки на вызов диалога с ID = 0. Внутрь этой
условной конструкции пишем еще одну, проверку на нажатие кнопки. Дальше внутри этой проверки
будет еще одна проверка на то, что поле ввода у нас содержит какие-либо символы. Ведь мы же не
можем отправить пустой текст. Условная конструкция будет такая:
Данную условную конструкцию мы пишем внутри условной конструкции if(response). А теперь яPHP код:
if(!strlen(inputtext))
{
}
else
{
}
вам объясню, что значит strlen и inputtext:
Strlen – возвращает количество символов в строке.
Inputtext – этот аргумент содержит в себе текст, который мы вводим в поле ввода.
В общем, думаю, вам будет все понятно, посмотрев нижеприведенный готовый скрипт, но все
же я вам кратко его объясню на всякий случай. Сначала идет проверка на вызов диалогового окна с ID
= 0. Мы данное окно вызывали функцией ShowPlayerDailog(playerid,0…); - я специально выделил
цифру, это dialogid. После проверки, внутри идет еще одна проверка на нажатие кнопки. Если нажата
кнопка 1, т.е. кнопка «ОК», идет следующая проверка на то, что в поле ввода есть какой-либо текст.
Если он есть, функция SendClientMessage отправляет в чат значение аргумента inputtext, т.е то, что
игрок введет в поле ввода диалогового окна. Если игрок не введет в поле ввода ничего, функция SendClientMessage отправит в чат сообщение с ошибкой, о том, что текст сообщения не был введен в
поле ввода.
PHP код:
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;
}