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

#1
offline   andrei58russ

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

Как сделать что бы окно было, например, с пунктами статистика персонажа, подать жалобу, команды сервера и т.д

И когда выбрали статистику там открылась статистика,когда нажали задать вопрос,там вышло окно для жалобы и т.д.


Сообщение отредактировал Elrmrnt-Kritik: 18 Август 2016 - 12:49
Поправил содержимое текста, убрав часть прежнего сообщения.


#2
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 790
    • Сообщений: 3 210
    • Регистрация: 19.07.15
✓  Лучший Ответ

1. Выводить этот диалог нужно в определенный момент. Ну, например, по команде или при становлении на пикап. Возьму как пример в команде. Команда будет называться /mm. В OnPlayerCommandText:

Создаем саму команду, ставим все необходимые условия, при которых будет выводится сам диалог. Я поставил условие, что диалог будет выводится только если игрок авторизован на сервере.

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

Немного пояснений:

ShowPlayerDialog - функция показа игроку диалога;

playerid - кому конкретно показываем диалог (в данном случае игроку, который вводит команду);

15000 - ID диалога. Если такой уже существует, заменить стоит на свой;

DIALOG_STYLE_LIST - тип диалога. DIALOG_STYLE_MSGBOX - обычное окно с информацией и двумя кнопками. DIALOG_STYLE_LIST - диалоговое окно с возможность выбора пунктов, также две кнопки. DIALOG_STYLE_INPUT - диалог с возможностью ввода текста, видимого игроку. DIALOG_STYLE_PASSWORD - диалоговое окно с возможностью ввода пароля (текст будет закрываться символами).

Следом название, пункты, обе кнопки. Здесь, думаю, все итак понятно.

 

2. Создаем нашему диалогу функции... Переходим в OnDialogResponse:

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

Если текст слишком большой, вместо содержимого окна (текста), сделайте так, как мы делали ночью, создайте новую переменную и форматируйте ее:

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

И не забывайте про символ \n, чтобы у вас весь текст не был в одной строке. Напомню, он переносит на новую строку с нужного вам момента.


  • 4

#3
offline   andrei58russ

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

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

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

и

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

И у меня ни что не происходит!Кто понимает напишите пожалуйста как должно быть,просто с диалогами не разу не работал,но увижу что и как сразу пойму,вот сами команды

Команды
Статистика /stats
Жалоба /support
Паспорт /showpass id



#4
offline   compan

compan
  • 693
    • Сообщений: 2 088
    • Регистрация: 13.03.14


Жалоба /support
Жалоба - /report
  • 0

#5
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 790
    • Сообщений: 3 210
    • Регистрация: 19.07.15
Если вы хотите увидеть эти команды при выборе пунктов, зачем используете ShowPlayerDialog, вместо OnPlayerCommandText?
  • 1

#6
offline   andrei58russ

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

Elrmrnt-Kritik,Ну вот я и прошу  в 3-ем посту как лучше сделать правильно!Покажи готовый хотя бы для одного пункта,ну сам понимаешь заодно не мне только будет это полезно и остальным!



#7
offline   Elrmrnt-Kritik

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

andrei58russ , да у вас все правильно, просто в OnDialogResponse ShowPlayerDialog меняйте на OnPlayerCommandText(playerid, "/команда");


Сообщение отредактировал Elrmrnt-Kritik: 18 Август 2016 - 21:37

  • 1

#8
offline   andrei58russ

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

Elrmrnt-Kritik,Ерроры на данную команду

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

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



#9
offline   Elrmrnt-Kritik

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

andrei58russ , не 

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

, а 

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


Сообщение отредактировал Elrmrnt-Kritik: 18 Август 2016 - 21:37

  • 0

#10
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16
Elrmrnt-Kritik,Все сделал нормально спасибо!Но у меня есть в пункте

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

Ну то есть писать жалобу или задавать вопрос и когда я выбираю ее у меня в чате пишет ИНФО: /support [текст] а как сделать что бы выбрал Вопрос и следом открылось окно что бы задать вопрос,а не писать в чате его?(подскажите пожалуйста и тогда вопрос будет точно уже решен!Просто не могу понять!Если что вот сама тема вопроса,точнее команда

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

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

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

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

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

Этот код я вырезал с crmp мода!
Vlad_Trifonov (19 Август 2016 - 08:58):
Объединил.

Сообщение отредактировал Vlad_Trifonov: 19 Август 2016 - 08:58


#11
offline   Elrmrnt-Kritik

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

andrei58russ , что в данный момент вы от меня хотите, если у меня на руках нет полного кода? Вы лишь скинули сами диалоги, а остальная часть где?


  • 0

#12
offline   andrei58russ

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

Elrmrnt-Kritik,Мне нужно когда выбрали в /mm пункт жалоба или вопрос(одно и тоже) и им выдало окно куда писать,просто у меня нажимаешь на жалоба и в чате пишет то что бы писали в чат а не в всплывающее окно! 



#13
offline   Basis

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

так в чём проблема,выводишь вот так когда вводишь команду /mm

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

и сам диалог

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

действия диалогов я расписывать уж не буду

 


  • 0

#14
offline   andrei58russ

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


ShowPlayerDialog(playerid,ИД ДИАЛОГА2,DIALOG_STYLE_INPUT,"Жалоба","Введите сюда свою жалобу","Далее","Отмена"); } case 1: { ShowPlayerDialog(playerid,ИД ДИАЛОГА3,DIALOG_STYLE_INPUT,"Вопрос","Введите сюда свой вопрос","Далее","Отмена");
А вот тут я как понял ИД ДИАЛОГА2  Писать от самой команды /жалоба только тут нет ИД от данного диалога

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



#15
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 790
    • Сообщений: 3 210
    • Регистрация: 19.07.15
andrei58russ ,вставьте в эту команду показ диалога, а всю остальную часть кода удалите.
  • 0

#16
offline   andrei58russ

andrei58russ
  • 44
    • Сообщений: 592
    • Регистрация: 19.04.16
Elrmrnt-Kritik,Если честно не понимаю какую часть удалить а какую и куда вставить! И все что вы говорили мне тоже удалять все полностью?

У меня выходит окно жалобы и вопроса пишу нажимаю отправить но не отправляется!Окно пропало но обращение не отправилось!

Сообщение отредактировал Elrmrnt-Kritik: 20 Август 2016 - 15:06
Обьединил оба сообщения, идущих подряд.


#17
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 790
    • Сообщений: 3 210
    • Регистрация: 19.07.15
andrei58russ , ну, вы сделали вывод диалогового окна, а кто будет делать ему функцию? Вводимый текст должен показываться администрации, вот форматируйте его и отправляйте.
  • 0

#18
offline   andrei58russ

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

Elrmrnt-Kritik,Ну я создал команду

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

И вот это

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

Потом

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

Или что то не так?просто данный вид делаю первый раз! Напишите пж как правильно



#19
offline   Elrmrnt-Kritik

Elrmrnt-Kritik
  • 790
    • Сообщений: 3 210
    • Регистрация: 19.07.15
andrei58russ , вы команду /report на диалог не перевели. Уберите все, что находится в фигурных скобках (за исключением return и всех проверок). И после проверок добавьте вывод диалога:

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


  • 0

#20
offline   andrei58russ

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

Elrmrnt-Kritik,Ну вот у меня вот так

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

И сделал вот так правильно?

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




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

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


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