![]() |
|
Register | Forum Rules | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
![]() |
|
Thread Tools |
![]() |
#1 | ||
~GOLEM~
Join Date: Nov 2005
Posts: 73
|
![]() На другом форуме была эта тема но там немного кого из вас небыло.
Работка не сложная главное понять что там происходит с фалами. ![]() Все есть ПРОБЛЕМА только с ДОСТУПОМ к РАЗРАБОТКЕ И ПОСТРОЙКЕ технологий и кораблей. http://www.homeworld-rus.ru/forum/showthread.php?t=166 ![]() ![]() ![]() По сути кампания останется таже только ха ВАЙГРОВ. Аналогично как в первом корочь. |
||
![]() |
![]() |
![]() |
#2 | ||
Ten
Faction: Стражи Садов Кадеша Join Date: Feb 2004
Location: Great Nebula
Posts: 2,551
|
Re: Кампания за ВЭЙГР
Чтобы сделать кампанию за Вэйгр (не называйте их вайграми, это очень обидно звучит
![]() ![]() Это краткая вводная ![]() teamcolour.lua – задаёт цвета кораблей, инверсионных следов и бэджи всех участвующих в миссии сторон. Что с ним делать я вчерась рассказывалПоследний файл – самый главный из всех перечисленных, поэтому остановимся на нём поподробнее. Скрипт миссии представляет собой конечный автомат, т.е. набор состояний и условия перехода между ними. Очень наглядный пример – спустя некоторое время к нам прибывает Макаан и начинает околачиваться по карте. Если мы ему нальём, он, довольный, удалится праздновать. Это и есть переход, его условие - «если у Флагшипа осталось меньше 20% брони, стать неуязвимым и быстренько слинять в гипер». Или выпрыгивает наш флот близ Кароса, всё спокойно и тихо, разве что материнка неуправляема. Проходит время, и к нам ломятся гости. Это тоже переход, в данном случае условие - «прошло N-ное кол-во времени». Более наглядный пример – сражались мы, сражались, а тут бац – и разнесли (или захватили, что тоже в сингле бывает ![]() И так далее. Перечислять можно долго, но общий принцип, думаю, понятен. Пишется этот конечный автомат, как и все скрипты ХВ2, на Lua, и крайне желательно хорошо знать этот язык, иначе вся затея теряет смысл и дальше мечты не продвинется. Приведу простой пример скрипта миссии из SCAR-документации к RDN Tools: Code:
-- импортировать библиотечные файлы, которые содержат вспомогательные функции dofilepath("data:scripts/SCAR/SCAR_Util.lua") -- переменные могут быть определен вне процедур/функций, что делает их глобальными obj_prim_newobj_id = 0 -- определение точки входа (OnInit), с которой и начинается выполнение function OnInit() -- добавить правило Rule_Init: Rule_Add("Rule_Init") -- поскольку OnInit не является правилом, нам не нужно его удалять end -- для стандартизации мы всегда определяем Rule_Init, с которого начинается ход миссии function Rule_Init() -- здесь мы определяем первое событие Разведотдела флота (англ. Intelevent) Event_Start("intelevent_intro") -- добавляем правила, которые определяют ход миссии Rule_Add("Rule_PlayerLoses") Rule_Add("Rule_PlayerWins") -- не забыть удалить правило Rule_Init Rule_Remove("Rule_Init") end -- это правило проверяет, уничтожен ли Mothership игрока function Rule_PlayerLoses() if ( SobGroup_Empty("Player_Mothership") == 1 ) then -- провал нашего задания: Objective_SetState(obj_prim_newobj_id, OS_Failed) -- игрок проигрывает в этой миссии: setMissionComplete(0) Rule_Remove("Rule_PlayerLoses") end end -- это правило проверяет, уничтожен ли Носитель противника function Rule_PlayerWins() if ( SobGroup_Empty("AI1_Carrier") == 1 ) then [i]-- успешное завершение нашего задания: Objective_SetState(obj_prim_newobj_id, OS_Complete) -- игрок одерживает победу в этой миссии: setMissionComplete(1) Rule_Remove("Rule_PlayerWins") end end -- ! Не забываем создать таблицу Events, в которой будут храниться события Events = {} -- это вводное событие Разведотдела флота Events.intelevent_intro = { { {"Sound_EnableAllSpeech(1)", ""}, {"Sound_EnterIntelEvent()", "" }, {"Universe_EnableSkip(1)", "" }, HW2_LocationCardEvent("Postmortem Tutorial", 5), }, { HW2_Letterbox(1), HW2_Wait(2), }, { HW2_SubTitleEvent(Actor_FleetCommand, "This is a tutorial script", 5), }, { HW2_Wait(1), }, { {"obj_prim_newobj_id = Objective_Add("A new Objective", OT_Primary)", ""}, {"Objective_AddDescription(obj_prim_startresourcing_id, 'Description')", ""}, HW2_SubTitleEvent(Actor_FleetIntel, "Ive just issued a new objective", 4), }, { HW2_Wait(1), }, { HW2_Letterbox(0), HW2_Wait(2), {"Universe_EnableSkip(0)", ""}, {"Sound_ExitIntelEvent()",""}, }, } ![]() Пример очень прост, скрипты миссий в ХВ2 намного длиннее, так как в реальных миссиях состояний обычно больше, спичей тоже, и чтобы обслужить всю эту махину требуется внушительное кол-во правил. Правила обеспечивают запуск NIS-видеовставок, разблокируют технологии и подсистемы, объединяют разрозненные воягрские группировки в альянс, включают/выключают кнопки управления кораблей (например, начисто лишают материнку нашего управления в 6ой миссии) и делают много чего ещё ![]() Думаю, после этой небольшой заметки становится понятно, почему разработчики не стали делать отдельную компанию за Вэйгр. В ХВ1 обе противоборствующие расы были практически идентичны, а в ХВ2 они серьёзно различаются кораблями и технологиями. Необходимо как минимум взять все миссии за хиигарян и переделать их с учётом особенностей кочевников. Хорошо, что перехватчики/бомберы, эсминцы/крейсера и верфи/материнки есть у обеих рас, а как быть с ланс-файтерами, командными корветами и фрегатами силового поля? ![]() ![]() Если после этого у тебя не пропало желание создавать кампанию за воягров, предлагаю сначала всем кораблям хиигарян сопоставить их воягрские аналоги, за каждым составить список технологий, а потом нудно и упорно, в нескольких файлах каждой миссии заменять корабли и технологии хиигарян на воягров. А чтобы Макаан не вызывал опасение иными частотными характеристиками своего голоса, из файла EnglishSpeech.Big речи Каран необходимо вырезать. Дерзай! ![]() Last edited by Ten : 01-01-2008 at 07:15 PM. |
||
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
|
|