advokat48 |
Дата: Пятница, 17.08.2012, 01:41 | Сообщение # 1
|
Новичок
Сообщений: 12
Статус: Offline
|
Итак, сейчас я расскажу, как же создать меню. Пример меню: Ну что ж, начнем. Для начала ко всем new добавим: Тем самым, мы говорим, что будем использовать меню с название 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 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.
Ну и напоследок скрин того что мы сделали:
|
|
|
|
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 Делаю графику на заказ.
|
|
|
|