Всё о сервере, форум!
Основы программирования
ИНФОРМАЦИОННО-РАЗВЛЕКАТЕЛЬНЫЙ ПОРТАЛ

PrR[ Проект SAMP - Romashka [0.3e] ™18+™

Pawn :: Основы скриптинга
Создание простого диалога с полем ввода

Создадим второй тип диалога: DIALOG_STYLE_INPUT.

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

Начнем с простого примера:

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

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

1 ShowPlayerDialog(playerid,0,DSI,"Отправить сообщение всем","Введите текст сообщения","ОК","Отмена");

Данную строку  нужно вписать внутрь готовой команды. Здесь используется константа DSI , чтобы не писать длинное название стиля
диалога, поэтому не забудьте ее добавить в ваш скрипт.

1 #define DSI DIALOG_STYLE_INPUT

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



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

if(!strlen(inputtext))
{
}
else
{
}


Данную условную конструкцию мы пишем внутри условной конструкции if(response).
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;
}


Логин: Пароль:
Забыли пароль?Регистрация
При копировании материала с сайта активная ссылка обязательна!
Сайт управляется SiNG cms © 2010-2015