Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Диалоговые Окна - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

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

  • (7 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Диалоговые Окна Виды/функции
Оценка: ****- 3 Голосов

#1
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Здравствуйте уважаемые пользователи! В этом уроке я вам расскажу про диалоги.
Итак, начнем...
Диалоги бывают всего 4 вида, это:
1) Диалог, который показывает просто сообщение игроку
Ид: 0
Название: DIALOG_STYLE_MSGBOX
Скриншот: Изображение
Код диалога:
ShowPlayerDialog(playerid, 8008 , DIALOG_STYLE_MSGBOX, "Тут название", "Тут текст", "Кнопка1", "Кнопка2");

2) Диалог с полем, в которое можно ввести что-либо
Ид: 1
Название: DIALOG_STYLE_INPUT
Скриншот: Изображение
Код диалога:
ShowPlayerDialog(playerid,8009,DIALOG_STYLE_INPUT,"Тут название","Тут ваш текст","Кнопка1","Кнопка2");

3) Диалог, со списком
Ид: 2
Название: DIALOG_STYLE_LIST
Скриншот: Изображение
Код диалога:
ShowPlayerDialog(playerid, 8007, DIALOG_STYLE_LIST, "Тут название", "Пункт 1\nПункт 2", "Кнопка1", "Кнопка2");

4) Диалог, с полем ввода(используется для ввода пароля) он просто шифрует введеные символы точками
Внимание: диалог был добавлен в версию клиента samp 0.3d (я его не тестировал, поэтому и скрин с офф сайта)
Ид: 3
Название: DIALOG_STYLE_PASSWORD
Скриншот: Изображение
Код диалога:
ShowPlayerDialog(playerid, 8008, DIALOG_STYLE_PASSWORD, "Тут название", "Тут текст(можете написать 'Введите пароль')", "Кнопка1", "Кнопка2");

Использование:
• Диалог 1 ( DIALOG_STYLE_MSGBOX )
if(strcmp(cmd, "/test", true) == 0)
{
	ShowPlayerDialog(playerid, 8008 , DIALOG_STYLE_MSGBOX, "Тут название", "Тут текст", "Кнопка1", "Кнопка2");
	return 1;
}
// И в паблик OnDialogResponse:
if(dialogid == 8008) // 8008 это ид диалога( как бы порядковый )
{
	if(response)
	{
		// действие если игрок нажал на кнопку 1
		SendClientMessage(playerid, COLOR_GRAD5, "Вы нажали на кнопку1!");
	}
	else
	{
		// действие если игрок нажал на кнопку 2
		SendClientMessage(playerid, COLOR_GRAD5, "Вы нажали на кнопку2!");
	}
}


• Диалог 2 ( DIALOG_STYLE_INPUT )
if(strcmp(cmd, "/test", true) == 0)
{
	ShowPlayerDialog(playerid,8009,DIALOG_STYLE_INPUT,"Тут название","Тут ваш текст","Кнопка1","Кнопка2");
	return 1;
}
// И в паблик OnDialogResponse:
if(dialogid == 8009) //
{
	if(response)
	{
		if(!strlen(inputtext)) // этта проверка проверяет, если игрок ничего не ввел в окно, тогда действие
		{
			SendClientMessage(playerid, COLOR_GRAD5, "Вы ничего не ввели!");
			ShowPlayerDialog(playerid,8009,DIALOG_STYLE_INPUT,"Тут название","Тут ваш текст","Кнопка1","Кнопка2");
			return 1;
		}
		// а если игрок что то ввел тогда:
		format(string, sizeof(string), "Вы ввели в окно: %s", inputtext);
		SendClientMessage(playerid, COLOR_GRAD5, string);// это будет выводить в чат, то, что вы ввели в окно диалога
	}
	else
	{
		// тут если он нажал на кнопку 2
		SendClientMessage(playerid, COLOR_GRAD5, "Вы нажали на кнопку2!");
	}
}


• Диалог 3 ( DIALOG_STYLE_LIST )
if(strcmp(cmd, "/test", true) == 0)
{
	ShowPlayerDialog(playerid, 8007, DIALOG_STYLE_LIST, "Тут название", "Пункт 1\nПункт 2", "Кнопка1", "Кнопка2");
	return 1;
}
// И в паблик OnDialogResponse:
if(dialogid == 8007) //
{
	if(response)
	{
		if(listitem == 0)
		{
			SendClientMessage(playerid, COLOR_GRAD5, "Вы выбрали пункт1!");
		}
		if(listitem == 1)
		{
			SendClientMessage(playerid, COLOR_GRAD5, "Вы выбрали пункт2!");
		}
	}
}


• Диалог 4 ( DIALOG_STYLE_PASSWORD )
if(strcmp(cmd, "/test", true) == 0)
{
	ShowPlayerDialog(playerid, 8008, DIALOG_STYLE_PASSWORD, "Тут название", "Тут текст(можете написать 'Введите пароль')", "Кнопка1", "Кнопка2");
	return 1;
}
// И в паблик OnDialogResponse:
if(dialogid == 8008) //
{
	if(response)
	{
		if(!strlen(inputtext)) // этта проверка проверяет, если игрок ничего не ввел в окно, тогда действие
		{
			SendClientMessage(playerid, COLOR_GRAD5, "Вы ничего не ввели!");
			ShowPlayerDialog(playerid, 8008, DIALOG_STYLE_PASSWORD, "Тут название", "Тут текст(можете написать 'Введите пароль')", "Кнопка1", "Кнопка2");
			return 1;
		}
		// а если игрок что то ввел тогда:
		format(string, sizeof(string), "Ваш пароль: %s", inputtext);
		SendClientMessage(playerid, COLOR_GRAD5, string);// это будет выводить в чат, то, что вы ввели в окно диалога
	}
	else
	{
		// тут если он нажал на кнопку 2
		SendClientMessage(playerid, COLOR_GRAD5, "Вы нажали на кнопку2!");
	}
}


Автор: Mike

© При копировании на посторонние ресурсы ссылка на pawn-wiki.ru и автор должны быть написаны обязательно!

Сообщение отредактировал Romzes: 14 Март 2013 - 22:40

15

Сказали спасибо 7:

#2
Пользователь офлайн   Erick 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Если не ошибаюсь, такой урок был уже :)
0

#3
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Урок такой был но тут немножко по другом описано.
0

#4
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Странно, юзал поиск, не нашел :(
0

#5
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Сразу на главной странице юзай поиск.
0

#6
Пользователь офлайн   Erick 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
SendClientMessage(playerid, 0x8ECDB5AA, "Povergaming->>Вооброжать из себя супер героя .Например драка 1х3.");


Глупый термин, а если ситуация этого требует? Да можно и с 5 подраться.
Уж лучше так будет

SendClientMessage(playerid, 0x8ECDB5AA, "Povergaming->>Вас пытаются ограбить вооруженные люди, но вы убегаете показывая им палец!");


Ну как то так :)
0

#7
Пользователь офлайн   DragoSFire 

  • Знаток
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Erick :D ахах))палец вухах))а так по теме, для новичков подойдет
0

#8
Пользователь офлайн   gko11 

  • хм...
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
C:\Users\?????????????\Desktop\RLS\samp0.3d_server_win32\gamemodes\ GS.pwn(425) : error 017: undefined symbol "cmd"
C:\Users\?????????????\Desktop\RLS\samp0.3d_server_win32\gamemodes\ GS.pwn(437) : error 017: undefined symbol "COLOR_GRAD5"
C:\Users\?????????????\Desktop\RLS\samp0.3d_server_win32\gamemodes\ GS.pwn(439) : error 017: undefined symbol "If"
C:\Users\?????????????\Desktop\RLS\samp0.3d_server_win32\gamemodes\ GS.pwn(441) : error 017: undefined symbol "COLOR_GRAD5"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


4 Errors.





if(strcmp(cmd, "/mm", true) == 0)

SendClientMessage(playerid, COLOR_GRAD5, "?? ??????? ????? ??????? ???????.");

If(listitem == 3)

SendClientMessage(playerid, COLOR_GRAD5, "?? ??????? ????? ?????????? ?????????.");


0

#9
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
if(strcmp(cmd, "/mm", true) == 0)

Замени на:
if (strcmp("/mm", cmdtext, true, 10) == 0)


В начало мода:
#define COLOR_GRAD5 0xE3E3E3FF

0

#10
Пользователь офлайн   gko11 

  • хм...
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
скажите а как сделать вот к примеру

Цитата

ShowPlayerDialog(playerid, 8007, DIALOG_STYLE_LIST, "Тут название", "Пункт 1\nПункт 2", "Кнопка1", "Кнопка2");
при нажатии нп пункт 1 открыывалось другое диалоговое окно тоесть как к примеру репорт в меню при нажатии на репорт открывается другое окно как так делать
0

Поделиться темой:


  • (7 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей