andrei58russ , нет...
Вот так должна выглядеть команда /жалоба:
А в OnDialogResponse уже добавляете функцию к диалогу 15789, где делаете действия для каждого из выбранных пунктов...
Лучший Ответ 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, чтобы у вас весь текст не был в одной строке. Напомню, он переносит на новую строку с нужного вам момента.
Перейти к сообщению »
offline
andrei58russ , нет...
Вот так должна выглядеть команда /жалоба:
А в OnDialogResponse уже добавляете функцию к диалогу 15789, где делаете действия для каждого из выбранных пунктов...
offline
offline
offline
offline
тут ничего не объявлено,переменная пустая,должно быть new название[110];, вообще просто сотри new[110];
Сообщение отредактировал Basis: 20 Август 2016 - 21:05
offline
нет тоже самое,пишу жалобу или вопрос и ни что не отправляется!Т.е окно ушло а мне(админу) ни какой вопрос и ни какая жалоба не пришла!
offline
andrei58russ , а почему что-то должно уйти, если вы функцию к созданному диалогу не написали? Я же вам скинул команду /жалоба, в появившемся окне игрок выбирает тематику. Позже пусть снова получает окно с вводом текста, после чего этот текст форматируйте и отправляйте администраторам...
offline
Elrmrnt-Kritik,Вот все что у меня по данной теме есть и сделано
Первое
Потом само меню(команда)
Ну и потом команды "жалоба" и "вопрос"
Вот и все!Все сделал как вы и писали!
offline
andrei58russ , ну, теперь для диалогов 15789 и 15790 создайте еще функции, которые будут форматировать набранный текст и отправлять администрации.
offline
Elrmrnt-Kritik,Что то не понял!Можешь объяснить как? Просто как писал выше с диалогами я не занимался,начинаю вот только заниматься!Так я все понял,но вот как это сделать не понял! И еще сразу задам вопрос я все что было ранее у меня убрал(то что ты в первом посту писал,у меня там статистика была и т.д) а как в данное что у меня уже есть вписать еще и статистику персонажа?Ну для начала помоги пожалуйста написать по /жалоба и /вопрос
offline
ну и сделал же ты...вот команда
вот диалог
вот действие на жалобу,по такому же примеру вопрос
если нет SendAdminMessage добавь в конец
offline
Есть у меня это!И все что ты написал у меня это все есть я пост выше писал все что есть у меня!
если нет SendAdminMessage добавь в конец
Basis,Это то есть саму команды /жалобы и /вопрос убрать и заменить их на
Или команды так же остаются?
offline
andrei58russ , нет у вас этого. Вам же Basis сказал, добавьте действие, если игрок выбирает "Жалоба" или "Вопрос":
Аналогично для вопроса... Читайте внимательно его сообщения.
Сообщение отредактировал Elrmrnt-Kritik: 20 Август 2016 - 22:10
offline
andrei58russ ,сравни мой диалог и свой,что у тебя есть то,я тебе написал рабочую жалобу,а у тебя огрызок какой-то который не выводит сообщения админам
offline
andrei58russ , выше:
offline
не может быть,жалоба отправляется только администраторам(возможно ты администратор),на счёт ответа не уверен,тут нужно видеть ответ на жалобу
offline
вот так должно получится
0 пользователей, 0 гостей, 0 анонимных