Сайт восстановлен из веб архива. Сейчас он доступен только для чтения, скачивание материалов также недоступно. Если у вас до сих пор есть какие-то вопросы по разработке серверов 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

#41
offline   andrei58russ

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

Basis,Все понял,а вот смотри!(извини что пишу снова просто тут по другому,у меня команда /help а как ее сделать тоже в /mm

вот команда

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

Это получается вот так нужно?

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

И по ИД ДИАЛОГА так же вставлять в 

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

Да? или что то не так?После команды /help высвечивается еще у меня окно с выбором команд!(уже сделано окно)



#42
offline   Elrmrnt-Kritik

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

andrei58russ , а в чем разница? SPD и есть ShowPlayerDialog... И слово "Помощь" в кавычках двойных быть должно, видимо, просто знаком ошиблись.


  • 0

#43
offline   andrei58russ

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

Elrmrnt-Kritik,Ну я правильно сделал да?так и должно быть? 

И тут что писать так вот?

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


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


#44
offline   Elrmrnt-Kritik

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

andrei58russ , да. Только не забудьте ID диалога поменять в OnDialogResponse. 


  • 0


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

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


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