Здравствуйте дорогие пользователи bforum.uz,сегодня я продолжу урок про диалоги,на этот раз я вам расскажу про создание диалога с полем ввода,и так приступим.

В этом уроке мы переходим к разбору второго стиля диалога: DIALOG_STYLE_INPUT. Работать с
данным стилем диалога будет сложнее по сравнению с остальными стилями диалогов, т.к. тут есть
поле ввода. Начнем с простого примера: мы командой вызовем диалоговое окно, введем текст и
данный текст отправиться всем игрокам в чат. Имя игрока видно не будет, сообщение анонимное.
Итак, приступим к созданию диалога:

PHP код:
ShowPlayerDialog(playerid,0,DSI,"Отправить сообщение всем","Введите текст сообщения","ОК","Отмена"); 
Данную строку я думаю, вы уже догадались, что ее нужно вписать внутрь готовой команды. Я
все также использовал константу DSI из прошлого урока, чтобы не писать длинное название стиля
диалога, поэтому не забудьте ее добавить в ваш скрипт.
PHP код:
#define DSI DIALOG_STYLE_INPUT 
Итак, диалоговое окно мы создали, и оно будет выглядеть следующим образом.



Приступим к написанию функции для этого диалога. Как и в прошлом уроке, внутрь функции
OnDialogResponse, пишем условную конструкцию проверки на вызов диалога с ID = 0. Внутрь этой
условной конструкции пишем еще одну, проверку на нажатие кнопки. Дальше внутри этой проверки
будет еще одна проверка на то, что поле ввода у нас содержит какие-либо символы. Ведь мы же не
можем отправить пустой текст. Условная конструкция будет такая:
PHP код:
if(!strlen(inputtext)) 

 

else 

 

Данную условную конструкцию мы пишем внутри условной конструкции if(response). А теперь я
вам объясню, что значит strlen и inputtext:
Strlen – возвращает количество символов в строке.
Inputtext – этот аргумент содержит в себе текст, который мы вводим в поле ввода.

В общем, думаю, вам будет все понятно, посмотрев нижеприведенный готовый скрипт, но все
же я вам кратко его объясню на всякий случай. Сначала идет проверка на вызов диалогового окна с ID
= 0. Мы данное окно вызывали функцией ShowPlayerDailog(playerid,0…); - я специально выделил
цифру, это dialogid. После проверки, внутри идет еще одна проверка на нажатие кнопки. Если нажата
кнопка 1, т.е. кнопка «ОК», идет следующая проверка на то, что в поле ввода есть какой-либо текст.
Если он есть, функция SendClientMessage отправляет в чат значение аргумента inputtext, т.е то, что
игрок введет в поле ввода диалогового окна. Если игрок не введет в поле ввода ничего, функция SendClientMessage отправит в чат сообщение с ошибкой, о том, что текст сообщения не был введен в
поле ввода.
PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[]) 

  if(
dialogid == 0
  { 
  if(
response//Если была нажата 1 кнопка 
  

  if(!
strlen(inputtext)) //Если в поле не был введен текст при отправке 
  
{  
  
SendClientMessage(playerid,COLOR_RED,"Вы не написали текст сообщения в поле ввода"); 
  return 
1
  } 
  else 
  { 
  
SendClientMessage(playerid,COLOR_WHITE,inputtext); 
  } 
  } 
  } 
  return 
1