AndrewN
| Вице-адмирал |
Faction: Таииданская Империя
Join Date: Mar 2007
Location: Имперские Верфи
Posts: 786
|
Re: Как создать новую рассу в хомеворлд2
Итак.
После трех часов т***а со скриптами удалось добавить новую расу в ХВ2 практически с нуля...
Итак. Согласие соавтора по моду получено, поэтому...
Тобари.
1. Предположим, что мы хотим добавить расу Тобари в игру. Дружно вспоминаем, какие у них есть корабли. Карриер, ганшип, фрегат.
Подумав, решаем, что нужны еще коллектор и пробка.
Подсистемы к чертям))
2. Для начала откапываем /берем из декомпиленной даты, декомпиллим сами/ файл Race.lua, и прописываем туда новую расу, собственно Тобарей.
Тобарям прописываем зеленые форточки). Зеленые форточки есть круто)
Многаскрипта
Code:
NotPlayable=0
Playable=1
races = {
{
"Invalid",
"Invalid",
"",
"",
0,
NotPlayable,
"",
},
{
"Hiigaran",
"$1100",
"hyperspace_gate",
"etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",
9.5,
Playable,
"HGN_",
},
{
"Vaygr",
"$1101",
"hyperspace_gate_vgr",
"etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",
9.5,
Playable,
"VGR_",
},
{
"Tobari",
"Tobari",
"hyperspace_gate_Vgr",
"etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",
9.5,
Playable,
"Tbr_",
},
{ "Random", "$3226", "", "", 0, Playable, "", },
}
3. Тобари вроде как есть.) Можно попробовать заглянуть в игру и убедиться, что теперь доступны три расы, плюс Св. РандомЪ.
4. Открываем Familylist.lua и прописываем там фамилии... семейства кораблей для Тобари...
Code:
{
name = "Corvette_Tbr", },
{
name = "Frigate_Tbr", },
{
name = "Carrier_Tbr", },
{
name = "Utility_Tbr", },
{
name = "Probe_Tbr", },
{
name = "SubSystem_Tbr", },
Не спрашивайте, почему так. Просто))
5. Естественно, моделей кораблей у нас нету) Поэтому подберем мало-мальски подходящее...
Именно:
Hgn_carrier
Hgn_assaultcorvette
Hgn_Assaultfrigate
Hgn_resoursecollector
Vgr_Probe.
6. Естественно, в готовом виде модели нас не устраивают...
Быстро переименовываем их в...:
Hgn_carrier..................Tbr_Carrier
Hgn_assaultcorvette......Tbr_Gunship
Hgn_Assaultfrigate........Tbr_Frigate
Hgn_resoursecollector....Tbr_Harvester
Vgr_Probe....................Tbr_Probe
Харвестер -- это для прикола)))
7. Вспоминаем, что нас не интересуют подсистемы.
Вспоминаем, что карриер -- единственный крупный корабль у Тобари.
Стало быть, ресерч модуль есть изначально.
Идем в Tbr_Carrier.ship, оставляем там от:
Еще больше несъедобного скрипта)
Code:
StartShipHardPointConfig(NewShipType, "Production 1", "HardpointProduction1", "System", "Production", "Destroyable", "", "Hgn_C_Production_Fighter", "", "", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Production 2", "HardpointProduction2", "System", "Production", "Destroyable", "", "Hgn_C_Production_Corvette", "", "", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Production 3", "HardpointProduction3", "System", "Production", "Destroyable", "", "Hgn_C_Production_Frigate", "Hgn_C_Production_FrigateAdvanced", "", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Generic 1", "HardpointGeneric1", "System", "Generic", "Destroyable", "", "Hgn_C_Module_Research", "Hgn_C_Module_Hyperspace", "Hgn_C_Module_PlatformControl", "Hgn_C_Module_CloakGenerator", "Hgn_C_Module_HyperspaceInhibitor", "Hgn_C_Module_FireControl", "Hgn_C_Module_ResearchAdvanced", "Hgn_C_Module_BuildSpeed")
StartShipHardPointConfig(NewShipType, "Generic 2", "HardpointGeneric2", "System", "Generic", "Destroyable", "", "Hgn_C_Module_Research", "Hgn_C_Module_Hyperspace", "Hgn_C_Module_PlatformControl", "Hgn_C_Module_CloakGenerator", "Hgn_C_Module_HyperspaceInhibitor", "Hgn_C_Module_FireControl", "Hgn_C_Module_ResearchAdvanced", "Hgn_C_Module_BuildSpeed")
StartShipHardPointConfig(NewShipType, "Sensors 1", "HardpointSensors1", "System", "Sensors", "Destroyable", "", "Hgn_C_Sensors_DetectHyperspace", "Hgn_C_Sensors_AdvancedArray", "Hgn_C_Sensors_DetectCloaked", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Engine", "Hardpoint_Engine", "System", "Innate", "Damageable", "Hgn_C_Engine", "", "", "", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Resource", "Hardpoint_Resource", "System", "Innate", "Damageable", "Hgn_C_Innate_Resource", "", "", "", "", "", "", "", "")
...
только строки..:
Code:
StartShipHardPointConfig(NewShipType, "Generic 1", "HardpointGeneric1", "System", "Innate", "Damageable", "tbr_module_research", "")
StartShipHardPointConfig(NewShipType, "Engine", "Hardpoint_Engine", "System", "Innate", "Damageable", "Hgn_C_Engine", "", "", "", "", "", "", "", "")
StartShipHardPointConfig(NewShipType, "Resource", "Hardpoint_Resource", "System", "Innate", "Damageable", "Hgn_C_Innate_Resource", "", "", "", "", "", "", "", "")
Т.е. мы в первый же слот проставляем ресерч модуль, и делаем его вечным и неубиваемым)).
8. А-а-ах, у нас нет тобари ресерч модуля...Что же.. Выпотрашиваем Vgr_c_Module_research, кидаем его в Subsystems, и переименовываем все три файла в Tbr_Module_Research.
9. Теперь вспоминаем про семейства. Все тот же Tbr_Carrier.ship мы ковыряем дальше:
Code:
addAbility(NewShipType, "CanBuildShips", 1, "Corvette_Tbr, Frigate_Tbr, Carrier_Tbr, Utility_Tbr, Probe_Tbr", "Utility, Corvette, Frigate, SubSystemModule, Capital")
То есть строить он может все, в т.ч. и само себя)
Ах нет, пока не может..))
10.
Меняем
Code:
NewShipType.BuildFamily = "Carrier_Hgn"
на
Code:
NewShipType.BuildFamily = "Carrier_Tbr"
Точно так же выправляем во всех остальных шип-файлах все
Code:
NewShipType.BuildFamily
с Hgn или Vgr на Tbr.
...
Теперь начинается самое веселое.
11. Создаем, или кидаем скрипты Building and Research в Scripts.
Нас интересует минимум кораблей и минимум ресерчей, посему клонируем Вайгровский пакет билдресерчей и переименовываем его Tobari. Однако build.lua лучше взять хиигарский.
Далее думаем, или опять же вспоминаем, как мы хотели построить дерево ресерчей...
Посколько подсистем нету, то открываем Build.lua, и удаляем все упоминания о подсистемах вообще, а так же из
Code:
RequiredShipSubSystems = "",
.
Оставляем хиигарский карриер, ассолтфрегат, ассолткорвет, ресурсколлектор и пробку. Быстро их переименовываем так, как было указано выше.
12. Параллельно открываем research.lua. Что мы хотим? Подсистем нету, ergo, делаем активацией. Значит, оставляем родные вайгровские "CorvetteTech" и "FrigateTech".
12.1. "FrigateTech" дублируем, переименовываем в "CarrierSummon", исправляем все описания, меняем
Code:
TargetType = Family,
TargetName = "Frigate",
на
Code:
TargetType = Ship,
TargetName = "Tbr_Carrier",
12.2. Едем дальше. Дальше нам встречается "SuperCapHealthUpgrade1", "SuperCapHealthUpgrade2", "SuperCapSpeedUpgrade1" и "SuperCapSpeedUpgrade2"
Аналогично исправляем на
Code:
TargetType = Ship,
TargetName = "Tbr_Carrier",
...т.к. у нас только карриер и других крупных кораблей не предвидится.
12.3. Остальное выправляем по аналогии.
Однако.
Допустим, ганшипам мы хоти сделать апгрейд на огневую мощь.
Копируем любую пару конфигов, например, "CorvetteHealthUpgrade1" и "CorvetteHealthUpgrade2", переименовываем их в "CorvetteDamageUpgrade1" и "CorvetteDamageUpgrade2", и меняем
Code:
UpgradeName = "MAXHEALTH",
UpgradeValue = 1.6,
Icon = Icon_Health,
на
Code:
UpgradeName = "WeaponDamage",
UpgradeValue = 1.4,
Icon = Icon_Ability,
12.4. Подсистем у нас нет. Поэтому все упоминания о необходимых подсистемах исправляем на
Code:
RequiredSubSystems = "Research",
С этим вроде понятно.
Итого, что мы имеем? Расу Тобарей...)
Стоп.
Мы забыли прописать им Startinfleet.
13. Копируем любой стартингфлит-конфиг, переименовываем в Tobari00, и прописываем там карриер и шесть харвестеров.
Снова скрипты
Code:
PersistantData =
{
StrikeGroups = {},
Squadrons =
{
{
type = "tbr_Carrier",
subsystems = {},
shiphold = {},
name = "",
size = 1,
number = 1, },
{
type = "Tbr_Harvester",
subsystems = {},
shiphold = {},
name = "",
size = 1,
number = 6, },
},
Research = {}, }
Вроде как теперь точно все.
Что мы имеем? Почти безподсистемный карриер, ганшип, фрегат, коллектор и пробку. Карриер покупается только после ресерча, ганшипы и фрегаты спокойно апгрейдятся.
Жалко, они не летают в гипере, но как сделать гиперпрыжок без модулей, только после ресерча -- я пока не представляю...
А вот результат.
Другой совершенно несъедобный архив, весом в 1,69 мб.
Я вас предупредил.))
Code:
Created by AndrewN.
Last edited by AndrewN : 11-07-2008 at 12:14 PM.
Reason: Забыл подсистемы вложить.
|