Привет, уважаемые форумчане!
Я к вам вернулся с уроком по диалогам.
Давайте же начнём.
Для начала сделаем основу диалогам в OnDialogResponse:
switch(dialogid){
case 1:
{
//Первый диалог
}
case 2:
{
//Второй диалог
}
//Ну в общем я думаю принцип системы ясен.
}
Разберём типы диалогов
DIALOG_STYLE_INPUT - это диалог в который вводится текст.
DIALOG_STYLE_PASSWORD - это диалог в который вводится текст, но он зашифрован точками.
DIALOG_STYLE_LIST - это диалог в котором выбирают предмет из списка.
DIALOG_STYLE_MSGBOX - это диалог который отображает текст.
Ну а теперь разберём функцию показа диалога на примере команды:
CMD:showdialog1(playerid, params[]) //Какой вы процессор используете впринципе не важен
{
ShowPlayerDialog(playerid /* Кому показываем диалог */,DIALOG_STYLE_INPUT /* Тип диалога */,1 /* ID диалога */, "Заголовок", "Содержимое диалога", "Кнопка1", "Кнопка2");
}
Теперь сделаем так чтобы нам выводило текст из строки которую игрок ввёл в чат.
Это мы будем писать в кейс диалога:
case 1:
{
if(response){ // 1 кнопка
if(inputtext != null) return "Поле пустое"; // Проверка на то что в строке что-то есть
SendClientMessage(playerid, -1, inputtext); // Отправляем ему этот текст
} else { // 2 кнопка
SendClientMessage(playerid, -1, "Вы нажали кнопку 2"); // Отправляем игроку текст что он нажал кнопку 2
}
}
Мы разобрали этот тип диалога. Принцип работы с PASSWORD тот же самый поэтому я показывать это не буду.
Перейдём сразу к LIST. Показ диалога немного другой.
ShowPlayerDialog(playerid /* Кому показываем диалог */,DIALOG_STYLE_LIST /* Тип диалога */,1 /* ID диалога */, "Заголовок", "Персонаж\nПротивник\nИграть", "Кнопка1", "Кнопка2");
Теперь будем писать диалог:
case 1:
{
if(response){ // 1 кнопка
switch(listitem){ // Switch всех айтемов списка
case 0: { // 1
// Что-то происходит...
}
case 1: { // 2
// Что-то происходит...
}
case 2: { // 3
// Что-то происходит...
}
}
} else { // 2 кнопка
SendClientMessage(playerid, -1, "Вы нажали кнопку 2"); // Отправляем игроку текст что он нажал кнопку 2
}
}
Ну и наконец MSG_BOX.
ShowPlayerDialog(playerid, DIALOG_STYLE_MSGBOX, 1,"Заголовок","Строка 1\nСтрока 2", "Кнопка 1", "Кнопка 2");
case 1:
{
if(response){ // Кнопка 1
// Что-то происходит...
} else { // Кнопка 2
// Что-то происходит...
}
}
MSGBOX может только что-то делать на кнопки отображать текст.
Если что-то попутал исправьте.
Автор урока: _KostyaGames_
Я к вам вернулся с уроком по диалогам.
Давайте же начнём.
Для начала сделаем основу диалогам в OnDialogResponse:
switch(dialogid){
case 1:
{
//Первый диалог
}
case 2:
{
//Второй диалог
}
//Ну в общем я думаю принцип системы ясен.
}
Разберём типы диалогов
DIALOG_STYLE_INPUT - это диалог в который вводится текст.
DIALOG_STYLE_PASSWORD - это диалог в который вводится текст, но он зашифрован точками.
DIALOG_STYLE_LIST - это диалог в котором выбирают предмет из списка.
DIALOG_STYLE_MSGBOX - это диалог который отображает текст.
Ну а теперь разберём функцию показа диалога на примере команды:
CMD:showdialog1(playerid, params[]) //Какой вы процессор используете впринципе не важен
{
ShowPlayerDialog(playerid /* Кому показываем диалог */,DIALOG_STYLE_INPUT /* Тип диалога */,1 /* ID диалога */, "Заголовок", "Содержимое диалога", "Кнопка1", "Кнопка2");
}
Теперь сделаем так чтобы нам выводило текст из строки которую игрок ввёл в чат.
Это мы будем писать в кейс диалога:
case 1:
{
if(response){ // 1 кнопка
if(inputtext != null) return "Поле пустое"; // Проверка на то что в строке что-то есть
SendClientMessage(playerid, -1, inputtext); // Отправляем ему этот текст
} else { // 2 кнопка
SendClientMessage(playerid, -1, "Вы нажали кнопку 2"); // Отправляем игроку текст что он нажал кнопку 2
}
}
Мы разобрали этот тип диалога. Принцип работы с PASSWORD тот же самый поэтому я показывать это не буду.
Перейдём сразу к LIST. Показ диалога немного другой.
ShowPlayerDialog(playerid /* Кому показываем диалог */,DIALOG_STYLE_LIST /* Тип диалога */,1 /* ID диалога */, "Заголовок", "Персонаж\nПротивник\nИграть", "Кнопка1", "Кнопка2");
Теперь будем писать диалог:
case 1:
{
if(response){ // 1 кнопка
switch(listitem){ // Switch всех айтемов списка
case 0: { // 1
// Что-то происходит...
}
case 1: { // 2
// Что-то происходит...
}
case 2: { // 3
// Что-то происходит...
}
}
} else { // 2 кнопка
SendClientMessage(playerid, -1, "Вы нажали кнопку 2"); // Отправляем игроку текст что он нажал кнопку 2
}
}
Ну и наконец MSG_BOX.
ShowPlayerDialog(playerid, DIALOG_STYLE_MSGBOX, 1,"Заголовок","Строка 1\nСтрока 2", "Кнопка 1", "Кнопка 2");
case 1:
{
if(response){ // Кнопка 1
// Что-то происходит...
} else { // Кнопка 2
// Что-то происходит...
}
}
MSGBOX может только что-то делать на кнопки отображать текст.
Если что-то попутал исправьте.
Автор урока: _KostyaGames_