Лучший Ответ
Elrmrnt-Kritik
,
18 Август 2016 - 13:06
1. Выводить этот диалог нужно в определенный момент. Ну, например, по команде или при становлении на пикап. Возьму как пример в команде. Команда будет называться /mm. В OnPlayerCommandText:
Создаем саму команду, ставим все необходимые условия, при которых будет выводится сам диалог. Я поставил условие, что диалог будет выводится только если игрок авторизован на сервере.
if(strcmp(cmd, "/mm", true) == 0)
{
if(IsPlayerConnected(playerid))
{
ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_LIST, "Название диалога", "Пункт 1\nПункт2\nПункт 3\nПункт 4\nПункт 5", "Кнопка 1", "Кнопка 2");
}
return true;
}
Немного пояснений:
ShowPlayerDialog - функция показа игроку диалога;
playerid - кому конкретно показываем диалог (в данном случае игроку, который вводит команду);
15000 - ID диалога. Если такой уже существует, заменить стоит на свой;
DIALOG_STYLE_LIST - тип диалога. DIALOG_STYLE_MSGBOX - обычное окно с информацией и двумя кнопками. DIALOG_STYLE_LIST - диалоговое окно с возможность выбора пунктов, также две кнопки. DIALOG_STYLE_INPUT - диалог с возможностью ввода текста, видимого игроку. DIALOG_STYLE_PASSWORD - диалоговое окно с возможностью ввода пароля (текст будет закрываться символами).
Следом название, пункты, обе кнопки. Здесь, думаю, все итак понятно.
2. Создаем нашему диалогу функции... Переходим в OnDialogResponse:
if(dialogid == 15000)//Если вызывается диалог с ID 15000
{
if(response)//Если игрок нажимает на кнопку в диалоговом окне первую - "Кнопка 1"
{
if(listitem == 0)//Если игрок нажал на пункт 1, у нас это - "Пункт 1"
{
ShowPlayerDialog(playerid, 15001, DIALOG_STYLE_MSGBOX, "Пункт 1", "Вы выбрали пункт 1", "Кнопка 1", "Кнопка 2");
}
if(listitem == 1)//Если игрок нажал на пункт 2, у нас это - "Пункт 2"
{
ShowPlayerDialog(playerid, 15002, DIALOG_STYLE_MSGBOX, "Пункт 2", "Вы выбрали пункт 2", "Кнопка 1", "Кнопка 2");
}
if(listitem == 2)//Если игрок нажал на пункт 3, у нас это - "Пункт 3"
{
ShowPlayerDialog(playerid, 15003, DIALOG_STYLE_MSGBOX, "Пункт 3", "Вы выбрали пункт 3", "Кнопка 1", "Кнопка 2");
}
if(listitem == 3)//Если игрок нажал на пункт 4, у нас это - "Пункт 4"
{
ShowPlayerDialog(playerid, 15004, DIALOG_STYLE_MSGBOX, "Пункт 4", "Вы выбрали пункт 4", "Кнопка 1", "Кнопка 2");
}
if(listitem == 3)//Если игрок нажал на пункт 5, у нас это - "Пункт 5"
{
OnPlayerCommandText(playerid, "/report");//Если игрок выбрал пункт 5, то ему прописывается автоввод команды /report.
}
}
else//Если игрок нажал на кнопку 2 в диалоговом окне - "Кнопка 2"
{
SendClientMessage(playerid, 0xFF0000FF, "Вы закрыли диалог. Введите /mm, чтобы его снова открыть");
}
}
Если текст слишком большой, вместо содержимого окна (текста), сделайте так, как мы делали ночью, создайте новую переменную и форматируйте ее:
new string[256], str[128];
format(str, sizeof(str),"Текст текст текст текст текст текст текст текст текст\n");
strcat(string,str);
format(str, sizeof(str),"Текст2 текст2 текст2 текст2 текст2 текст2 текст2 текст2\n");
strcat(string,str);
ShowPlayerDialog(playerid, 15001, DIALOG_STYLE_MSGBOX, "Название окна", string, "Кнопка1", "Кнопка2");
И не забывайте про символ \n, чтобы у вас весь текст не был в одной строке. Напомню, он переносит на новую строку с нужного вам момента.
Перейти к сообщению »