[F.A.Q.] Создание меню - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[F.A.Q.] Создание меню
advokat48 Дата: Пятница, 17.08.2012, 01:41 | Сообщение # 1
Новичок
Сообщений: 12
Статус: Offline
Итак, сейчас я расскажу, как же создать меню.
Пример меню:

Ну что ж, начнем.
Для начала ко всем new добавим:
Code
new Menu:test;

Тем самым, мы говорим, что будем использовать меню с название test.

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

Теперь ко всем forward добавляем
Code
forward CreatedMenu();


Тут всем ясно, что мы объявляем наш будущий паблик с нашими менюшками.
После в конеце мода создаем сам паблик:

Code
public CreatedMenu()  
{  
}

И начинаем заполнять его. В итаге у нас получится:
Code
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");  
}  

Итак, что же мы написали, разберем построчно.
Code
test = CreateMenu("Menu", 1, 50.0, 160.0, 90.0);


CreateMenu - создаем само меню.
"Menu" - даем название этому меню, оно будет указываться в самом верху нашего меню.
Далее после запятой идет 1 - количество колонок нашего меню.
50.0, 160.0 - положение меню на экране. Лично я узнаю это положение через программу IEV11.
90.0 - ширина нашего меню.
Code
AddMenuItem(test ,0,"Gun");


AddMenuItem - функция добавления в меню так скажем "Кнопки"
0 - в какой колонке будет находиться "Кнопка". Если мы создавали меню с 1 колонкой, то ставим 0. Если с двумя колонками, то будет уже выбор либо 0, либо 1, будет зависеть от того, где мы хотим, что была наша "кнопка"
"Gun" - текст который будет отображаться в меню.
Остальные строки аналогичны предыдущей.

Итак, паблик создали. Теперь идем в
Code
public OnGameModeInit()


И добавляем где-нибудь в начале

Code
CreatedMenu();

Тем самым мы делаем загрузку всех меню во время загрузки мода.

Что мы делаем теперь. А теперь мы заполним наши "кнопки".
Для этого следуем в паблик:
Code
public OnPlayerSelectedMenuRow(playerid, row)

И тут уже начинаем расписывать каждую кнопку:
Code
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(playeid, 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, и так далее.
Code
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); - показываем игроку наше меню, после того как он нажал первую "кнопку"
Code
case 1:  
         {  
         SetPlayerArmour(playerid, 100);  
         SendClientMessage(playerid, 0xFFFFFF, "Вам выдали броню");  
         ShowMenuForPlayer(test,playerid);  
         }  

При нажатии на "кнопку" Armour игроку будет установлена броня в размере 100.
Code
case 2:  
         {  
         SetPlayerHealth(playerid, 100);  
         SendClientMessage(playerid, 0xFFFFFF, "Вы были вылечены");  
         ShowMenuForPlayer(test,playerid);  
         }  

При нажатии на "кнопку" HP, игроку будет установлено ХП, в размере 100.
Code
case 4:  
         {  
         OnPlayerExitedMenu(playerid);  
         TogglePlayerControllable(playerid, 1);  
         }  

Закрываем меню и размораживаем игрока. Стандартная функция.
Вот и все меню создано. Ах да, чуть не забыл, команда, для вызова меню:
Code
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.

Ну и напоследок скрин того что мы сделали:
[CM]Elcin Дата: Пятница, 17.08.2012, 08:46 | Сообщение # 2
Новичок
Сообщений: 28
Статус: Offline
Не торт
Okroshka Дата: Пятница, 17.08.2012, 09:15 | Сообщение # 3
Боец
Сообщений: 59
Статус: Offline
Молодец +

Добавлено (17.08.2012, 09:15)
---------------------------------------------
[CM]Elcin,Надоел ты везде посты набиваешь!

PonCHik Дата: Суббота, 25.08.2012, 08:41 | Сообщение # 4
Новичок
Сообщений: 26
Статус: Offline
А для чего это? =\

Мой скайп: dimanever
Делаю графику на заказ.
  • Страница 1 из 1
  • 1
Поиск: