Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создание меню

Статус
В этой теме нельзя размещать новые ответы.

Advokat48

Изучающий
Пользователь
Регистрация
21 Окт 2011
Сообщения
360
Лучшие ответы
0
Репутация
242
Поиск по разделу ничего не дал, поэтому решил написать FAQ.
Итак, сейчас я расскажу, как же создать меню.
Пример меню:
Ну что ж, начнем.
Для начала ко всем new добавим:
PHP:
new Menu:test;
Тем самым, мы говорим, что будем использовать меню с название test.

Теперь у нас 2 варианта:
1. Создавать меню в public OnGameModeInit()
2. Или же создать отдельный паблик для меню.
Я обычно использую 2 вариант, т.к. у меня используется не одно меню.

Теперь ко всем forward добавляем
PHP:
forward CreatedMenu();
Тут всем ясно, что мы объявляем наш будущий паблик с нашими менюшками.
После в конеце мода создаем сам паблик:
PHP:
public CreatedMenu()
{
}
И начинаем заполнять его. В итаге у нас получится:
PHP:
public CreatedMenu()
{
test = CreateMenu("Menu", 1, 50.0, 160.0, 90.0);
AddMenuItem(test ,0,"Gun");
AddMenuItem(test ,0,"Armour");
AddMenuItem(test ,0,"HP");
AddMenuItem(test ,0,"Close");
}
Итак, что же мы написали, разберем построчно.
PHP:
test = CreateMenu("Menu", 1, 50.0, 160.0, 90.0);
CreateMenu - создаем само меню.
"Menu" - даем название этому меню, оно будет указываться в самом верху нашего меню.
Далее после запятой идет 1 - количество колонок нашего меню.
50.0, 160.0 - положение меню на экране. Лично я узнаю это положение через программу IEV11.
90.0 - ширина нашего меню.
PHP:
AddMenuItem(test ,0,"Gun");
AddMenuItem - функция добавления в меню так скажем "Кнопки"
0 - в какой колонке будет находиться "Кнопка". Если мы создавали меню с 1 колонкой, то ставим 0. Если с двумя колонками, то будет уже выбор либо 0, либо 1, будет зависеть от того, где мы хотим, что была наша "кнопка"
"Gun" - текст который будет отображаться в меню.
Остальные строки аналогичны предыдущей.

Итак, паблик создали. Теперь идем в
PHP:
public OnGameModeInit()
И добавляем где-нибудь в начале
PHP:
CreatedMenu();
Тем самым мы делаем загрузку всех меню во время загрузки мода.

Что мы делаем теперь. А теперь мы заполним наши "кнопки".
Для этого следуем в паблик:
PHP:
public OnPlayerSelectedMenuRow(playerid, row)
И тут уже начинаем расписывать каждую кнопку:
PHP:
public OnPlayerSelectedMenuRow(playerid, row)
{
    new Menu:Check = GetPlayerMenu(playerid);
    if(Check == test)
	{
	 	switch(row)
	 	{
		case 0:
		{
		GivePlayerWeapon(playerid, 24, 100);
		GivePlayerWeapon(playerid, 25, 100);
		GivePlayerWeapon(playerid, 30, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вам выдали Desert Eagle, Shotgun,AK-47");
		ShowMenuForPlayer(test,playerid);
		}
		case 1:
		{
		SetPlayerArmour(playerid, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вам выдали броню");
		ShowMenuForPlayer(test,playerid);
		}
		case 2:
		{
		SetPlayerHealth(playerid, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вы были вылечены");
		ShowMenuForPlayer(test,playerid);
		}
		case 4:
		{
		OnPlayerExitedMenu(playerid);
		TogglePlayerControllable(playerid, 1);
		}
	}
    return 1;
}
Итак, мы ведь помним, что мы создали 4 "кнопки".
Начинаем описывать первую "кнопку" с case 0, 2 "кнопку" с case 1, и так далее.
PHP:
case 0:
		{
		GivePlayerWeapon(playerid, 24, 100);
		GivePlayerWeapon(playerid, 25, 100);
		GivePlayerWeapon(playerid, 30, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вам выдали Desert Eagle, Shotgun,AK-47");
		ShowMenuForPlayer(test,playerid);
Опишу: при нажатии на первую "кнопку", в нашем случае Gun, игроку будет выдано дигл, дробовик, м4, и будет выдано по 100 патронов.
ShowMenuForPlayer(test,playerid); - показываем игроку наше меню, после того как он нажал первую "кнопку"
PHP:
case 1:
		{
		SetPlayerArmour(playerid, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вам выдали броню");
		ShowMenuForPlayer(test,playerid);
		}
При нажатии на "кнопку" Armour игроку будет установлена броня в размере 100.
PHP:
case 2:
		{
		SetPlayerHealth(playerid, 100);
		SendClientMessage(playerid, 0xFFFFFF, "Вы были вылечены");
		ShowMenuForPlayer(test,playerid);
		}
При нажатии на "кнопку" HP, игроку будет установлено ХП, в размере 100.
PHP:
case 4:
		{
		OnPlayerExitedMenu(playerid);
		TogglePlayerControllable(playerid, 1);
		}
Закрываем меню и размораживаем игрока. Стандартная функция.
Вот и все меню создано. Ах да, чуть не забыл, команда, для вызова меню:
PHP:
if(strcmp(cmdtext, "/menu", true) == 0)
	{
	    	ShowMenuForPlayer(test,playerid);
		TogglePlayerControllable(playerid, 0);
	    	return 1;
	}
Что эти строки обозначают:
ShowMenuForPlayer(test,playerid); - мы показываем наше созданное меню test.
TogglePlayerControllable(playerid, 0); - замораживаем игрока.

Все, можно сохранять, компилировать и идти тестировать.
С вами был advokat48, удачи в скриптинге.
Скачать new.pwn с созданным меню:
Урок подготовил: advokat48.

Ну и напоследок скрин того что мы сделали:

-----------------------------------------
Модератор John_Bens - Тема Одобрена!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу