Сайт восстановлен из веб архива. Сейчас он доступен только для чтения, скачивание материалов также недоступно. Если у вас до сих пор есть какие-то вопросы по разработке серверов CRMP, вы можете перейти на актуальный портал: https://pawno-rus.com

Перейти к содержимому

Уважаемый гость, если у Вас возникли проблемы с регистрацией, просьба обратиться в тех.поддержку или на почту admin@pawno-crmp.ru

Для полного доступа ко всем функциям форума, Вам необходимо зарегистрироваться и авторизоваться.

Фотография

Создание диалога с пунктами


Лучший Ответ 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, чтобы у вас весь текст не был в одной строке. Напомню, он переносит на новую строку с нужного вам момента.

Перейти к сообщению »


  • Закрытая тема Тема закрыта
Сообщений в теме: 43

#21
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15

andrei58russ , нет...

Вот так должна выглядеть команда /жалоба: 

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

А в OnDialogResponse уже добавляете функцию к диалогу 15789, где делаете действия для каждого из выбранных пунктов...


  • 0

#22
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Elrmrnt-Kritik,Варнинги

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Вот строки

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.



#23
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15
andrei58russ , удалите объявление переменной s и настройте табуляцию.
  • 0

#24
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Elrmrnt-Kritik,Теперь ерроры

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Вот строка

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.



#25
offline   Basis

Basis
  • 271
    • Сообщений: 769
    • Регистрация: 24.06.14

тут ничего не объявлено,переменная пустая,должно быть new название[110];, вообще просто сотри new[110];


Сообщение отредактировал Basis: 20 Август 2016 - 21:05

  • 0

#26
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16



нет тоже самое,пишу жалобу или вопрос и ни что не отправляется!Т.е окно ушло а мне(админу) ни какой вопрос и ни какая жалоба не пришла!

#27
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15

andrei58russ , а почему что-то должно уйти, если вы функцию к созданному диалогу не написали? Я же вам скинул команду /жалоба, в появившемся окне игрок выбирает тематику. Позже пусть снова получает окно с вводом текста, после чего этот текст форматируйте и отправляйте администраторам...


  • 0

#28
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Elrmrnt-Kritik,Вот все что у меня по данной теме есть и сделано

Первое

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Потом само меню(команда)

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Ну и потом команды "жалоба" и "вопрос"

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Вот и все!Все сделал как вы и писали!



#29
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15

andrei58russ , ну, теперь для диалогов 15789 и 15790 создайте еще функции, которые будут форматировать набранный текст и отправлять администрации. 


  • 0

#30
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Elrmrnt-Kritik,Что то не понял!Можешь объяснить как? Просто как писал выше с диалогами я не занимался,начинаю вот только заниматься!Так я все понял,но вот как это сделать не понял! И еще сразу задам вопрос я все что было ранее у меня убрал(то что ты в первом посту писал,у меня там статистика была и т.д) а как в данное что у меня уже есть вписать еще и статистику персонажа?Ну для начала помоги пожалуйста написать по /жалоба и /вопрос



#31
offline   Basis

Basis
  • 271
    • Сообщений: 769
    • Регистрация: 24.06.14

ну и сделал же ты...вот команда

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

вот диалог

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

вот действие на жалобу,по такому же примеру вопрос

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

если нет SendAdminMessage добавь в конец

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

   

  • 1

#32
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16


если нет SendAdminMessage добавь в конец
Есть у меня это!И все что ты написал у меня это все есть я пост выше писал все что есть у меня!
Дополнение к сообщению:

Basis,Это то есть саму команды /жалобы и /вопрос убрать и заменить их   на

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Или команды так же остаются?



#33
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15

andrei58russ , нет у вас этого.  Вам же Basis сказал, добавьте действие, если игрок выбирает "Жалоба" или "Вопрос":

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Аналогично для вопроса... Читайте внимательно его сообщения.


Сообщение отредактировал Elrmrnt-Kritik: 20 Август 2016 - 22:10

  • 0

#34
offline   Basis

Basis
  • 271
    • Сообщений: 769
    • Регистрация: 24.06.14

andrei58russ ,сравни мой диалог и свой,что у тебя есть то,я тебе написал рабочую жалобу,а у тебя огрызок какой-то который не выводит сообщения админам


  • 0

#35
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

 Basis,Ерроры

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

На данную строку

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.



#36
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 797
    • Сообщений: 3 223
    • Регистрация: 19.07.15

andrei58russ , выше:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.


  • 0

#37
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Basis,Все работает,но все видят что я написал в жалобу/ответ и все видят то что ответил мне администратор! 



#38
offline   Basis

Basis
  • 271
    • Сообщений: 769
    • Регистрация: 24.06.14

не может быть,жалоба отправляется только администраторам(возможно ты администратор),на счёт ответа не уверен,тут нужно видеть ответ на жалобу


  • 0

#39
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16

Basis,Извини да я админом был!И еще ты написал 

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

А ее как вывести? Я ее просто делал по первому посту который мне писал Критик!А Твое решение более удобнее!

 

Вот сама команда

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.


Сообщение отредактировал andrei58russ: 20 Август 2016 - 22:48


#40
offline   Basis

Basis
  • 271
    • Сообщений: 769
    • Регистрация: 24.06.14

вот так должно получится

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Данную тему посетили 126 пользователей