Четверг, 17.07.2025, 18:31
Приветствую Вас Гость | RSS
[•X•X•X•X•X•X•X•X•X• SRK •X•X•X•X•X•X•X•X•X•] - 193.107.179.214:7777
Главная | Урок №20 DIALOG_STYLE_INPUT - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: DimanCC, Awesome, [Tuner_Life]Nikotin  
Урок №20 DIALOG_STYLE_INPUT
AwesomeДата: Среда, 29.02.2012, 16:39 | Сообщение # 1
Генерал-майор
Группа: Проверенные
Сообщений: 70
Награды: 14
Репутация: 25
Статус: Offline
В этом уроке мы переходим к разбору второго стиля диалога: DIALOG_STYLE_INPUT.
Работать с данным стилем диалога будет сложнее по сравнению с остальными стилями диалогов,
т.к. тут есть поле ввода. Начнем с простого примера: мы командой вызовем диалоговое окно,
введем текст и данный текст отправиться всем игрокам в чат. Имя игрока видно не будет,
сообщение анонимное. Итак, приступим к созданию диалога:
Code
ShowPlayerDialog(playerid,0,DSI,"Отправить сообщение всем","Введите текст сообщения","ОК","Отмена");


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


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


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

Code
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;   
}


Если вы поняли этот урок, тогда переходим к следующему.


я вернулся
 
  • Страница 1 из 1
  • 1
Поиск:

Поддержка пишите на наш форум:Walter & alisa