|
| |||
|
| |||
| |
Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология. |
|
Coded lock
автор: FACH | 30 Ноября 2009 | Просмотров: 5439
Автор: FACH Необходимые знания: Базовые знания по строительству (комната, освещение, добавление различных мешей) IU Scene Kismet UScript Matinee Начнем с простого кода Нам нужен собственный класс сцены, тут Object->UIRoot->UIScreenObject->UIScene->UTUIScene->UTUIFrontEnd->UTUIFrontEnd_BasicMenu. (путь разве такой??) Чтобы его создать, нам нужно написать простенький, для начала, скрипт. Откройте Блокнот и впишите туда такие строки: // Tipo script class CodeMenu extends UTUIFrontEnd_BasicMenu; DefaultProperties { } Сохраните данный документ с расширением ".uc" (например CodeLock.uc). Теперь нам нужно его "откомпилить". Для этого поместите этот файл в папку My DocumentsMy GamesUnreal Tournament 3UTGameSrcCodeLockClasses, затем в конфигах, откройте файл UTEditor.ini, найдите раздел [ModPackages], в конце впишите ModPackages=CodeLock, сохраните, закройте. Далее запустите редактор. Запустится компиляция, а не редактор, так что не пугаться при виде такого окошка (нажать на "Да"): Если ошибок нет, то в папке My DocumentsMy GamesUnreal Tournament 3UTGameUnpublishedCookedPCScript, будет файл CodeLock.u. Все! Теперь откроем редактор. В ActorClasses нажмем File-Open и загрузим наш свежеиспеченный скрипт. В своем паке, в главном браузере, создаем новую IU сцену и настраиваем ее как на картинке ниже: ![]() Создаем панель управления замком, например такую: Необходимо назначить Таги кнопкам, чтобы потом мы могли их описать в скрипте (на примере кнопка "0" с тагом Button_0). Теперь самое интересное СКРИПТ. Все, что будет влиять на геймплаей от сцены мы должны соответственно описать в скрипте кодом (как в Delphi, т.к. я не работал с Си, у меня ассоциации только с Паскалем). Итак у меня 12 кнопок. Скрипт для них будет выглядеть так: // Za takimi chertochkami pishetsia kommentariy // on He uchitivaetsia kodom //--------------------------------- // CodeLock class CodeMenu extends UTUIScene; var transient UTUIPressButton But_0; var transient UTUIPressButton But_1; var transient UTUIPressButton But_2; var transient UTUIPressButton But_3; var transient UTUIPressButton But_4; var transient UTUIPressButton But_5; var transient UTUIPressButton But_6; var transient UTUIPressButton But_7; var transient UTUIPressButton But_8; var transient UTUIPressButton But_9; var transient UTUIPressButton But_OK; var transient UTUIPressButton But_HE_OK; //Imia peremennoi luboe Event PostInitialize() { //Nahodim knopki Super.PostInitialize(); But_0 = UTUIPressButton( FindChild('Button_0',true)); //Eto est Tag But_0.OnClicked = Vvod_0; // Vizov funtion But_1 = UTUIPressButton( FindChild('Button_1',true)); But_1.OnClicked = Vvod_1; But_2 = UTUIPressButton( FindChild('Button_2',true)); But_2.OnClicked = Vvod_2; But_3 = UTUIPressButton( FindChild('Button_3',true)); But_3.OnClicked = Vvod_3; But_4 = UTUIPressButton( FindChild('Button_4',true)); But_4.OnClicked = Vvod_4; But_5 = UTUIPressButton( FindChild('Button_5',true)); But_5.OnClicked = Vvod_5; But_6 = UTUIPressButton( FindChild('Button_6',true)); But_6.OnClicked = Vvod_6; But_7 = UTUIPressButton( FindChild('Button_7',true)); But_7.OnClicked = Vvod_7; But_8 = UTUIPressButton( FindChild('Button_8',true)); But_8.OnClicked = Vvod_8; But_9 = UTUIPressButton( FindChild('Button_9',true)); But_9.OnClicked = Vvod_9; But_OK = UTUIPressButton( FindChild('Button_OK',true)); But_OK.OnClicked = Vvod_OK; But_HE_OK = UTUIPressButton( FindChild('Button_He_OK',true)); But_HE_OK.OnClicked = Vvod_Cancel; } function bool Vvod_0(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_0'); //Aktiviruet Remote event v Kismet return true; } function bool Vvod_1(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_1'); return true; } function bool Vvod_2(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_2'); return true; } function bool Vvod_3(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_3'); return true; } function bool Vvod_4(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_4'); return true; } function bool Vvod_5(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_5'); return true; } function bool Vvod_6(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_6'); return true; } function bool Vvod_7(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_7'); return true; } function bool Vvod_8(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_8'); return true; } function bool Vvod_9(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_9'); return true; } function bool Vvod_OK(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_OK'); return true; } function bool Vvod_Cancel(UIScreenObject InObject, INT InPlayerIndex) { ActivateLevelEvent('n_Cancel'); return true; } DefaultProperties { } Вот скрипт, для простенькой UI-шки. А теперь Кизмет! Открываем Кизмет. Там (так, тут надо скрипт воткнуть перед этим? вроде да, посмотрим) ставим Remote Even и вписываем в строку EventName n_0. Этот блок будет выдавать сигнал при нажатии на сцене кнопки 0. Чтобы UI сцена открылась, я сделал триггер в панели, на который нужно нажать кнопкой "E", но чтобы не могли одновременно нажать несколько игроков, я дописал некий контроль с триггерной зоной. Когда игрок войдет (это для многопользовательской игры) в зону триггер волюма, триггер панели будет доступен только этому игроку, т.е. еще кто-то нажать не сможет, но и если этого игрока убьет кто-нибудь, то живому игроку нужно будет выйти, сначала, из триггер волюма, чтобы контролировался другой игрок. В итоге сцена у пульта такая: У меня будет случайный четырехзначный код, у которого, вроде, 1 048 576 комбинаций в десятичной системе счисления. Так что, где-то надо будет сказать пароль. Чтобы особо не заморачиваться на этот счет, я создам триггер, при активации которого, код будет выведен на экран. Итак мой мини Кизмет скрипт: Сохраняю, раздаю, делайте, сверяйтесь, глупости на форуме не пишите, аахриневайте, чет я задолбался... cookedpc.zip - 2.11 Мб (Скачиваний: 340). В примере ScorpyX, ввод цифр преобразуется в одно четырехзначное число, что намного сокращает код. Рекомендую ознакомится. Также в конце сцены, небольшая интересная сценка (машинима). dm-code.zip - 7.24 Мб (Скачиваний: 411). #1 написал: ScorpyX 28 Ноября 2009 19:02 | ICQ: 333879808 |
#2 написал: Droid1995 28 Ноября 2009 19:10 | ICQ: Не Указано |
#3 написал: aizekg 28 Ноября 2009 21:22 | ICQ: Не Указано |
#4 написал: FACH 28 Ноября 2009 22:48 | ICQ: 562039160 |
#5 написал: ScorpyX 30 Ноября 2009 15:23 | ICQ: 333879808 |
#6 написал: FACH 30 Ноября 2009 16:26 | ICQ: 562039160 |
#7 написал: Collide 30 Ноября 2009 23:05 | ICQ: Не Указано |
#8 написал: FACH 30 Ноября 2009 23:24 | ICQ: 562039160 |
#9 написал: Collide 30 Ноября 2009 23:30 | ICQ: Не Указано |
#10 написал: FACH 30 Ноября 2009 23:34 | ICQ: 562039160 |
#11 написал: ScorpyX 1 Декабря 2009 02:18 | ICQ: 333879808 |
#12 написал: FACH 1 Декабря 2009 05:11 | ICQ: 562039160 |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...
|
|
|
При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна! © 2008—2012, UNREAL-LEVEL.RU. Все права защищены. |