- 声望
- 点
- 金币
- 枚
- 银币
- 枚
- 铜币
- 枚
- 注册时间
- 2008-8-29
- 最后登录
- 1970-1-1
|
[综合]初级进阶-如何整合MODS
转自:9ccn
关键字:[舰徽]、[种族设置]、[科技树]、[语言包]、[类别family]
首先,提醒一下此教程适合那些对于data文件包[福音包(好老的名词了,不得不用一下)]有一定了解和修改能力,已经熟读了9ccn有关于脚本修改方面的大部分教程,而想进一步提高的朋友们交流和学习。如果您是一位连data包是什么还不知道的门外汉,我在这里推荐你去
咳--~ 下面开始进入正文。
整合MOD,由于整合对象的不同,整合方案也是多种多样的。本文仅以整合"seed1.0beta"和"fx1.72"这两个mod为例。
seed1.0beta 和 fx1.72 系出同门,两者对于一些单位的定义相近,这为MOD的整合提供了方便。
--~ ---------- 准备单元 ----------
1、fx1.72 和 seed1.0beta 的文档都压缩进了big 文件中,所以我们需要一个解包工具,最方便使用的一个工具是 RDN 自带的 "ModPackager",推荐大家翻翻置顶帖找找看。也可以用下面的链接直接下载 http://pickup.mofile.com/7617593813627948
2、fx 解包出来的文件可以放在 你的工作目录\fxmod\data\
它的语言文件解包后应该放在 fxmod\data\locale\english\ 没有目录自己建
seed1.0beta 解包出来可以放在 你的工作目录\seed\data\
它的语言文件解包后应该放在 seed\data\locale\english\
3、建立一个新的工作目录 如 seed&fx\data\
4、删除所有已经安装好的mod
--~ ----------- 实战单元 -----------
--~ ----------- 第一节 可以复制的东西 ----------
这些可以复制的文件夹我们把它们统一复制到 你的家园2游戏文件夹,如X:\homeworld2\data\
可以复制的东西是一些非脚本文件,或者与合并后两个MOD的世纪运作无关的一些文件,合并seed和fx的时候我们可以复制的文件夹有 ai,art,badges,missile,sound,subsystem,ui,weapon这些文件夹以及这些它们包含的所有文件。
注意:会出现替换文件的对话框,你选是就可以了,这个没关系的。
大部分可以复制,但是需要少许修改的文件夹有 leveldata 和 ship;leveldata文件夹我们可以先复制好;而ship文件夹里,我们可以把除了icons文件夹以外的文件夹全部复制好。
注意:复制文件夹的时候要一一对应,会出现替换文件的对话框,你选是就可以了。
--~ ----------- 第二节 脚本语言的修改 ----------
照着第一节的步骤做好后,大家可能已经注意到了,被列为无法复制的文件夹似乎只有 scripts 一个。对,这个文件夹里包含了使游戏有效运行的大部分主要脚本,我们需要对它进行细细得修改。
1、把fxmod的scripts文件夹现行复制到seed&fx\data\ 下
把seed\data\scripts\ 的weaponfire 文件下也复制到 seed&fx\data\scripts\
把seed\data\scripts\ 的startingfleets文件夹复制到seed&fx\data\scripts\ ,这个文件夹里的文件定义了对战时z.a.f.t.方最初具有的单位,岗瓦那1,纳斯卡1,矿船6。
如果要在fxmod现有6族的基础上添加z.a.f.t.,显然就要加入z.a.f.t.的所有建造序列和科研任务
2、把seed\data\scripts\building and research\ 的 z.a.f.t文件夹复制到seed&fx\data\scripts\building and research\ 下,还可以
--~ ----------- 修改race.lua ------------------
这样我们就把z.a.f.t.的单位添加到研究和建造列表中去了,但是这并不意味着我们就能玩了,如果此时进入游戏,我们并不能看到种族选择里有z.a.f.t.的出现。这是因为我们还没有修改一个定义了可以参赛种族的文件 race.lua。
3、把文件夹定为在 seed&fx\data\scripts\ ,在这里我们能找到 race.lua 文件。打开后可以看到有
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",12.5,Playable,"VGR_",},
{"Keeper","$1102","hyperspace_gate_kpr","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"KPR_",},
{"Kadeshi","$1104","hyperspace_gate_kad","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"KAD_",},
{"Turani","$1105","hyperspace_gate_vgr","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"TUR_",},
{"Taiidan","$1106","hyperspace_gate","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,Playable,"TAI_",},
{"Random","$1109","","",9.5,NotPlayable,"",},
}
这个是fxmod的race文件的内容,依次我们可以发现“海格拉”,“维格”,“先祖”,“卡德什”,“图拉尼海盗”和“泰坦帝国”6个种族都参与到了游戏中来,没有发现z.a.f.t.的身影。
这时候我们可以回过头来看一下seedmod的race文件
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",12.5,Playable,"VGR_",},
{"O.R.B","$1104","hyperspace_gate_orb","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,NotPlayable,"ORB_",},
{"Z.A.F.T","Z.A.F.T","","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,Playable,"ZAFT_",},
{"Random","$1109","","",9.5,NotPlayable,"",},
{"O.M.N.I","$1106","hyperspace_gate_omni","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,NotPlayable,"OMNI_",},
{"Bentusi","$1103","hyperspace_gate_bentusi","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",18.5,NotPlayable,"BEN_",},
}
在这个文件里我们就发现了z.a.f.t.的身影了,那么解决的方案就是把z.a.f.t.的参赛代码
{"Z.A.F.T","Z.A.F.T","","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,Playable,"ZAFT_",},
复制进去。形成新的race.lua文件
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",12.5,Playable,"VGR_",},
{"Z.A.F.T","Z.A.F.T","","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,Playable,"ZAFT_",},
{"Keeper","$1102","hyperspace_gate_kpr","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"KPR_",},
{"Kadeshi","$1104","hyperspace_gate_kad","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"KAD_",},
{"Turani","$1105","hyperspace_gate_vgr","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",12.5,Playable,"TUR_",},
{"Taiidan","$1106","hyperspace_gate","etg/special/SPECIAL_ABILITIES_HYPERSPACE_IN",9.5,Playable,"TAI_",},
{"Random","$1109","","",9.5,NotPlayable,"",},
--~ ----------- familylist.lua 的修改 --------------
这下,至少我们可以在参赛列表里可以看见z.a.f.t.了。但是这时候运行游戏仍然会报错,弹回到桌面,这时候我们可以看一下错误说明文件 X:\Homeworld2\bin\release\hw2.lua,文件的最后一般会有一个Eeeor:表示的代码行,你会发现里面涉及到一个名称 familylist 。
我们同样可以在seed&fx\data\scripts\发现这个名叫 familylist.lua的文件,这是一个分类的集合文件。比如说拦截机是战机级,捕捉舰是护卫舰级,驱逐舰是主力舰级,这些分类都在这个familylist.lua文件中下了定义,游戏绝对不承认没有在familylist中定义的单位在游戏中出现的。所以我们要将还确少的类补上。
同样,我们可以比较fxmod的familylist.lua,和seedmod的familylist.lua。通过比较我们发现,只要在现有文件的基础上添加一些小类就可以把整个类文件补充完整了。
1、在“buildFamily”大类中添加小类
{ name = "Fighter_Zaft", },
{ name = "Corvette_Zaft", },
{ name = "Frigate_Zaft", },
{ name = "SuperCap_Zaft", },
{ name = "Shipyard_Zaft", },
{ name = "Battlecruiser_Zaft", },
{ name = "Flagship_Zaft", },
{ name = "Utility_Zaft", },
{ name = "Probe_Zaft", },
{ name = "Platform_Zaft", },
{ name = "SubSystem_Zaft", },
{ name = "SubSystemLarge_Zaft", },
2、在“displayFamily”大类中添加小类
{ name = "Freedom", stringParam = "高达", numParam = 13, },
{ name = "new", stringParam = "新型战舰", numParam = 14, },
3、在“attackFamily”大类中添加小类
{ name = "capurer", numParam = 1, },
{ name = "bigship", numParam = 1, },
4、在“avoidanceFamily”大类中添加小类
{ name = "new", numParam = 12, },
5、在“unitcapsFamily”大类中添加小类
{
name = "Freedom",
numParam = 101,
stringParam = "高达", },
{
name = "new",
numParam = 110,
stringParam = "新型战舰", },
6、在“unitcapsShipType”大类中添加小类
{ name = "MikaelGinn", numParam = 101, stringParam = "$7926", },
{ name = "HaineZaku", numParam = 102, stringParam = "$7934", },
{ name = "LunaZaku", numParam = 103, stringParam = "$7932", },
{ name = "RayZaku", numParam = 104, stringParam = "$7928", },
{ name = "YzakZaku", numParam = 105, stringParam = "$7930", },
{ name = "Duel", numParam = 106, stringParam = "$7946", },
{ name = "Buster", numParam = 107, stringParam = "$7948", },
{ name = "Blitz", numParam = 108, stringParam = "$7950", },
{ name = "Aegis", numParam = 109, stringParam = "$7952", },
{ name = "Providence", numParam = 110, stringParam = "$7954", },
{ name = "Genesis", numParam = 111, stringParam = "$7956", },
{ name = "Minerva", numParam = 112, stringParam = "$7942", },
通过上面两个文件修改的演练,我们先是通过比较两个不同mod中同名文件的区别,然后进行修改的,通常我们把这种方法称为比较修改法
整合两个mod一般就是应用比较修改法的。
--~ ------------ unitcaps 文件夹的修改 ----------
unitcaps文件夹里面一共有5个文件,fxmod,这些文件规定了各个种族可以在对战中建造的各种单位的数量我们来简单得解释一下,如
UC_Family("Fighter",14) --~战斗机可以建造14组
UC_FamilyOverride("Vaygr","Fighter",18) --~特许维格族建造18组战斗机
UC_FamilyOverride("Kadeshi","Fighter",18) --~特许卡德什建造18组战斗机
UC_FamilyOverride("Turani","Fighter",18) --~特许图拉尼海盗建造18组战斗机
了解了这些之后,我们可以着手进行修改了,还是用“比较修改法”举个例子,我把其中的normal.lua改成了
UC_Family("Fighter",14)
UC_FamilyOverride("Vaygr","Fighter",18)
UC_FamilyOverride("Kadeshi","Fighter",18)
UC_FamilyOverride("Turani","Fighter",18)
UC_FamilyOverride("Z.A.F.T", "Fighter", 25)
UC_ShipType("Drone",6)
UC_ShipType("Azrael",6)
UC_Family("Corvette",12)
UC_FamilyOverride("Z.A.F.T", "Corvette", 5)
UC_FamilyOverride("Kadeshi","Corvette",16)
UC_FamilyOverride("Turani","Corvette",16)
UC_FamilyOverride("Taiidan","Corvette",14)
UC_ShipType("multiguncorvette",6)
UC_ShipType("MinelayerCorvette",5)
UC_ShipType("CaptureMover",6)
UC_ShipType("Swarmerelite",4)
UC_ShipType("salcapcorvette",6)
UC_ShipTypeOverride("Turani","salcapcorvette",8)
UC_Family("Frigate",21)
UC_FamilyOverride("Keeper","Frigate",26)
UC_FamilyOverride("Kadeshi","Frigate",16)
UC_FamilyOverride("Taiidan","Frigate",25)
UC_FamilyOverride("Turani","Frigate",18)
UC_ShipType("DefenseFieldFrigate",2)
UC_ShipType("CaptureFrigate",6)
UC_ShipType("militaryCapture",6)
UC_ShipType("Minesweeperfrigate",4)
UC_ShipTypeOverride("Hiigaran","CaptureFrigate",4)
UC_Family("Capital",13)
UC_FamilyOverride("Z.A.F.T", "Capital", 12)
UC_FamilyOverride("Vaygr","Capital",15)
UC_FamilyOverride("Turani","Capital",12)
UC_FamilyOverride("Taiidan","Capital",15)
UC_FamilyOverride("Kadeshi","Capital",12)
UC_ShipType("AttackMothership",3)
UC_ShipType("Destroyer",5)
UC_ShipTypeOverride("Taiidan","Destroyer",6)
UC_ShipType("Keeper",3)
UC_ShipType("Carrier",4)
UC_ShipTypeOverride("Vaygr","Carrier",6)
UC_ShipTypeOverride("Kadeshi","Carrier",3)
UC_ShipTypeOverride("Taiidan","Carrier",3)
UC_ShipType("kCarrier",4)
UC_ShipType("turCarrier",4)
UC_ShipType("missilecruiser",4)
UC_ShipType("Arsenal",3)
UC_ShipType("Battlecruiser",2)
UC_ShipType("Heavycruiser",4)
UC_ShipTypeOverride("Turani","Heavycruiser",2)
UC_ShipType("kadBattlecruiser",6)
UC_ShipType("Dreadnaught",2)
UC_ShipType("Shipyard",1)
UC_ShipType("turShipyard",2)
UC_ShipType("balcoragate",1)
UC_ShipType("sajuuk",1)
UC_ShipType("TAIMothership",2)
UC_Family("Utility",50)
UC_FamilyOverride("Kadeshi","Utility",46)
UC_FamilyOverride("Turani","Utility",28)
UC_FamilyOverride("Taiidan","Utility",40)
UC_ShipType("ResourceCollector",20)
UC_ShipType("ResourceCollectorkad",30)
UC_ShipType("ResourceCollectortur",16)
UC_ShipTypeOverride("Taiidan","ResourceCollector",16)
UC_ShipType("ResourceController",4)
UC_ShipTypeOverride("Turani","ResourceController",2)
UC_ShipType("ResourceControllerkad",6)
UC_ShipType("Probe",10)
UC_ShipType("ECMProbe",10)
UC_ShipType("ProximitySensor",10)
UC_Family("Platform",20)
UC_FamilyOverride("Z.A.F.T", "Platform", 3)
UC_FamilyOverride("Taiidan","Platform",25)
UC_FamilyOverride("Turani","Platform",25)
UC_ShipType("Researchship",6)
UC_ShipType("DefenseFieldFighter",4)
UC_ShipType("HyperspacePlatform",4)
UC_ShipType("AdvancedSensorsArray",1)
UC_Family("Mothership",6)
UC_Family("Mobilesuit", 10)
UC_ShipType("MikaelGinn", 1)
UC_ShipType("HaineZaku", 1)
UC_ShipType("LunaZaku", 1)
UC_ShipType("RayZaku", 1)
UC_ShipType("YzakZaku", 1)
UC_ShipType("Duel", 1)
UC_ShipType("Buster", 1)
UC_ShipType("Blitz", 1)
UC_ShipType("Aegis", 1)
UC_ShipType("Providence", 1)
UC_Family("SinglePlayerMisc",100)
写到这里,如果大家能够边理解贯通,边修改的话,应该能够顺利进入游戏了,(但还有隐患,别去菜单里选最后一个族)。
今天就写到这里,明天继续写如何把合并MOD加以完善。
2007/05/14 夜 by : kenius@9CCN
好了,现在我们可以进入游戏了。同时,问题也出现了:如果选择z.a.f.t进行游戏的话,会发现不但它们的图标没显示出来而且文字说明也是一塌糊涂,所以我们还得继续改图标和文字说明。
--~ ------------ 第三节 图标文件的修改 ---------------------
--~ ------------ shipicons.lua文件的修改 -------------------------
对于图标文件的修改可以继续使用“比较修改法”,可以先把fxmod的data\ship\ 的icons文件夹复制到游戏目录下,打开icons文件夹,再打开“shipicons.lua”这个文件,我们也可以接着打开seedmod同名目录下的同名文件作下比较,可以发现有一些代码是fxmod的shipicons所不具备的,比如说
Zaft_MS_Fighter_Ginn_Assault = {
LargeIcon = { texture = "DATA:\\Ship\\Icons\\icon_ships1.mres",
textureUV_TL = { 0, 132, },
textureUV_WH = { 150, 64, },
stretchOnDraw = 1,
},
}
Zaft_MS_Fighter_Ginn_AntAir = {
LargeIcon = {
texture = "DATA:\\Ship\\Icons\\icon_ships1.mres",
textureUV_TL = { 0, 68, },
textureUV_WH = { 150, 64, },
stretchOnDraw = 1,
},
}
这段代码
LargeIcon = { texture = "DATA:\\Ship\\Icons\\icon_ships1.mres",这行表示引用的图标库文件的存放位置和文件名。"data\ship\icons\icon_ships1.mres" 而当我们打开 icon_ships1.mres文件的时候,看到了如下一段代码:
res1600 = "DATA:/Ship/Icons/icon_ships_1600_seed.dds"
它说明了我们使用的图标文件是icon_ships_1600_seed.dds。可以用photoshop或者IrfanView打开这个DDS文件看一下,正是我们需要寻找的seed单位的图标,赶紧把它复制到游戏目录的同名目录下吧。同时我们也发现了在游戏目录下也存在着一个icon_ships1.mres的文件,这个文件指向的是fxmod新增单位的图标。显然,两个MOD的图标指向文件必须共存,所以可行的解决方法是把seedmod的icon_ships1.mres文件改名成icon_ships2.mres然后复制到游戏目录的同名目录下。
接下来便是把shipicons.lua文件代码补全。这里放出一个参考方案:
Zaft_MS_Fighter_Ginn_Assault = {
LargeIcon = { texture = "DATA:\\Ship\\Icons\\icon_ships2.mres", 这行里,把原来的icon_ships1.mres改成了icon_ship2.mres,是为了防止错误的引用。
textureUV_TL = { 0, 132, },
textureUV_WH = { 150, 64, },
stretchOnDraw = 1,
},}
Zaft_MS_Fighter_Ginn_AntAir = {
LargeIcon = { texture = "DATA:\\Ship\\Icons\\icon_ships2.mres",
textureUV_TL = { 0, 68, },
textureUV_WH = { 150, 64, },
stretchOnDraw = 1,
},}
还有一些模块的代码
Zaft_Duel_Armour = Icon_Subsystem_Engine
Zaft_Duel_Dun = Icon_Subsystem_Engine
Zaft_Duel_Sizhi = Icon_Subsystem_Engine
Zaft_Ginn_Mikael_Dun = Icon_Subsystem_Engine
Zaft_Module_C_FireControl = Icon_Subsystem_FireControl
Zaft_Module_C_Research = Icon_Subsystem_Research
Zaft_Module_S_FireControl = Icon_Subsystem_FireControl
Zaft_Module_S_Research = Icon_Subsystem_Research
Zaft_Module_S_ResearchAdvanced = Icon_Subsystem_ResearchAdvanced
Zaft_Production_C_Corvette = Icon_Subsystem_Corvette
...........
注意,这里是举的例子,大家应该把所有单位的图标代码复制进去,进行适当的修改。
--~ ---------------------------------------------
--~ ------------ 第四节 文字说明文件的修改 -------------
文字说明文件的修改也是一个难点。首先说明一下文字说明文件的位置,
即data\locale\english\ 这里的所有文件全部是文字说明相关的文件,先把fxmod的locale目录整体复制到游戏目录的data\。
在这个文件夹中,我们需要修改的是涉及到舰船和模块的名称和说明以及建造和研究的名称和说明的文件从字面意思上理解,即buildresearch.ucs和ships.ucs两个文件,打开其中一个文件可以看到如下代码:
--~ ------------ ships.ucs文件以及相关文件的修改 --------------
1500 侦察机
1501 侦察机中队
1502 拦截机
1503 反战机中队
1504 攻击轰炸机
1505 反主力舰战机中队
1506 炮艇
1507 护航艇级 - 反战机
1508 脉冲炮艇
1509 护航艇级 - 反护航艇
1510 布雷艇
1511 放置和清除空雷
1512 炮台
1513 静态反战机武器平台
1514 离子束炮台
而侦察机前面的数字1500,侦察机中队前面的数字1501的意义,我们可以打开data\ship\hgn_scout.lua文件进行观察,在最开始看到如下代码:
NewShipType = StartShipConfig()
NewShipType["displayedName"] = "$1500" --~引用代码1500,即“侦察机”
NewShipType["sobDescription"] = "$1501" --~引用代码1501,即“侦察机中队”
分别打开fxmod的ships.ucs,和seedmod的ships.ucs文件可以发现下列有趣的代码段:
2410 星之云母
2411 战斗母舰
2412 卡托巴
2413 生产飞船
2414 光束巡洋舰
2415 大型主力舰
2416 游动细胞
2417 基本群集战斗中队
2418 突击细胞
2419 战机级 - 反护卫舰
2420 巨噬细胞
------------ fxmod
2410 初级反MS/MA机体
2411 吉恩 D装备
2412 初级反舰MS,无防空能力
2413 吉恩火箭炮装
2414 侦察突击型机体
2415 扎古勇士
2416 高级反MS/MA机体
2417 扎古炮手
2418 高级反舰MS,空战能力薄弱
2419 米凯尔专用吉恩
2420 可以装备盾牌抵消体部分攻击
---------------seedmod
相同的数字指向了不同的说明文字,所以这里有必要进行修改,但是ships.ucs文件的最高代码不能高于2499,因为在resource.ucs文件中可以找到代码:
2500 尘埃
2501 一片尘埃。
2502 微型小行星
2503 一颗微型小行星。
2504 小型小行星
2505 一颗小型小行星。
2506 中型小行星
2507 一颗中型小行星。
2508 大型小行星
2509 一颗大型小行星。
2510 巨型小行星
2511 一颗巨型小行星。
2512 尘云
2513 一片尘云。
2520 集装箱
2521 一个集装箱,里面可能有些货物。
2522 超空间核心
2523 来自希格拉母舰。
这些数字代码已经被使用了。
所以说,只能从已经使用的代码段里寻找空间,见缝插针了。这里同样给出一个方案,大家可以随自己的判断和喜好去修改。
1950 MS生产设施
1951 用于生产量产MS
1952 支援舰生产设施
1953 用于生产支援舰只
1954 战斗舰生产设施
1955 用于生产战斗舰
1956 Gundam生产设施
1957 用于生产高达机体
1958 反隐形感应器阵列
1959 120MM集束火线炮
1960 纳斯卡级主炮
修改了指向代码,别忘了修改引用这些代码的文件,比如说这里的 1950 MS生产设施很显然是表示生产机动战士的模块,那么可以找到文件data\subsystem\zaft_production_c_fighter.subs文件,将里面的代码由
NewSubSystemType = StartSubSystemConfig()
NewSubSystemType.displayedName = "$2450"
NewSubSystemType.sobDescription = "$2451"
改为:
NewSubSystemType = StartSubSystemConfig()
NewSubSystemType.displayedName = "$1950" ---~此处修改
NewSubSystemType.sobDescription = "$1951" ---~此处修改
2007/05/15 夜 by:kenius@9CCN
--~ ------------ buildresearch.ucs以及相关文件的修改 ------------------------
在data\locale\english\ 我们同样可以看到buildresearch.ucs这个文件,就如字面道理一样,这个文件里的内容被前文提到过的data\scripts\building and research\ 的各个种族的 build.lua和research.lua 这两个文件的引用。打开这个文件,可以看到类似的代码为:
7000 战机生产设施
7001 <b>介绍:</b> 可进行战机生产。 \n\n<b>类型:</b> 生产设施 (占用1个生产插槽)。 \n\n<b>必要条件:</b> 无。
7002 护航艇生产设施
7003 <b>介绍:</b> 可进行护航艇生产。 \n\n<b>类型:</b> 生产设施 (占用1个生产插槽)。 \n\n<b>必要条件:</b> 研究模块。
...
...
9754 提高生产效率
9755 <b>介绍:</b> 使旗舰建造速度提高30%。 \n\n<b>必要条件:</b> 研究船。
--------------- fxmod
7000 战机生产设施
7001 <b>介绍:</b> 可进行战机生产。 \n\n<b>类型:</b> 生产设施 (占用1个生产插槽)。 \n\n<b>必要条件:</b> 无。
7002 护航艇生产设施
7003 <b>介绍:</b> 可进行护航艇生产。 \n\n<b>类型:</b> 生产设施 (占用1个生产插槽)。 \n\n<b>必要条件:</b> 研究模块。
...
...
8188 改进那斯卡级生产效率
8189 吉恩改进型瞄准器
8190 扎古战士改进型瞄准器
----------------- seedmod
通过比较可以发现,还是在fxmod的buildresearch.ucs文件为基础上添加seedmod的相关研究和说明文字,添加的时候注意不同说明文字的序号是不能重复的。
在这里举一个例子:
现在要将下面这段代码添加
7916 吉恩
7917 <b>介绍:</b> ZGMF-1017“吉恩”是扎夫特为了弥补与地球联合军方面的巨大差距而设计出的的泛用型量产主力MS,装备有MMI-M8A3 76MM重突击枪,能有效对抗敌方MS/MA,但对战舰威力不足。 \n\n<b>装甲:</b> 无甲 \n<b>克制:</b> 无甲单位 \n<b>惧怕:</b> 反无甲单位 \n\n<b>必要条件:MS生产设施</b>
发现文件中原有的代码是
7916 <b>介绍:</b> 轻型巡洋舰。配备2个模块插槽和1个武器插槽。\n\n<b>克制:</b> 护卫舰, 驱逐舰\n<b>惧怕:</b> 轰炸机 \n\n<b>必要条件:</b> 主力舰生产设施和战术巡洋舰机架。
7917 战术巡洋舰机架
根据不同说明文字序号不能重复的原则。我们可以找一段序号,比如说从9800开始的序号没有被使用过,所以可以作如下修改:
9816 吉恩
--~把使用过的序号7916改成未使用过的序号,9816
9817 <b>介绍:</b> ZGMF-1017“吉恩”是扎夫特为了弥补与地球联合军方面的巨大差距而设计出的的泛用型量产主力MS,装备有MMI-M8A3 76MM重突击枪,能有效对抗敌方MS/MA,但对战舰威力不足。 \n\n<b>装甲:</b> 无甲 \n<b>克制:</b> 无甲单位 \n<b>惧怕:</b> 反无甲单位 \n\n<b>必要条件:MS生产设施</b>
--~把使用过的序号7917改成未使用过的序号,9817
改完之后要注意打开 data\scripts\building and research\z.a.f.t\build.lua 文件,修改如下代码段:
{
Type = Ship,
ThingToBuild = "Zaft_MS_Fighter_Ginn_AntAir",
RequiredResearch = "",
RequiredShipSubSystems = "FighterProduction",
DisplayPriority = 161,
DisplayedName = "$7916", --~7916改成9816
Description = "$7917", }, --~7917改成9817
这样的修改方法主要修改buildresearch.ucs,buile.lua,research.lua这3个文件。
--~ ----------- 优化单元 ------------------------
这个单元主要涉及到如何做MOD合并的收尾工作。
主要是在对合并后的MOD进行测试的时候发现一些问题,并及时加以解决。
--~ ----------- 最后一个种族无法进入游戏的问题 ------------
一旦选则最后一个种族进入游戏,则出现跳回桌面的现象。
这是因为在fxmod原有6族的前提下添加了第7族z.a.f.t.,游戏的内容发生了变化而游戏规则却没有被修改的缘故,这时候我们就要修改游戏规则。
由于合并两个mod后,出现了“死亡模式”,“家园模式”,“seed模式”和“效果增强模式”,4个不同的游戏模式,所以游戏规则也有4个了。在这里对“死亡模式”的游戏规则的修改进行说明:
打开文件data\leveldata\multiplayer\deathmatch.lua,看到如下这段代码:
Events = {}
Events.endGame =
{
{
{ "wID = Wait_Start(5)", "Wait_End(wID)", },
},
}
注意上面代码中的这行
{ "wID = Wait_Start(5)", "Wait_End(wID)", }, 其中5这个数字表示可以参与游戏的种族序号是0~5一共6个,所以第7个种族就自然无法进入游戏了,如果要使第7个种族进入游戏,只要将5改成6就可以了。
--~ ----------- 选择游戏模式的时候发现有两个“家园模式” --------------------
这是因为在语言文件data\locale\english\ships.ucs中的代码:
2300 《家园》模式
2301 以《家园》的对战模式进行游戏
fxmod
2300 SEED模式
2301 以SEED的对战模式进行游戏
seedmod
且“家园模式”的规则文件中有代码:
GameRulesName = "$2300" --Homeworld Classic
Description = "$2301" --The same multiplayer options from Homeworld 1
“seed模式”的规则文件中有代码:
GameRulesName = "$2300"
Description = "$2301"
出现了序号重复的现象,而我们是以fxmod的文件为原型的,所以会出现两个“家园模式”也就不奇怪了。可以对它们进行修改:
2298 SEED模式
2299 以SEED的对战模式进行游戏
2300 《家园》模式
2301 以《家园》的对战模式进行游戏
ships.ucs文件
GameRulesName = "$2298" --seed模式
Description = "$2299" --以SEED的对战模式进行游戏
--~ ----------- 进入seed模式游戏的时候,有些体图名称无法显示 --------------
显然问题也出现在语言文件上,将seedmod的语言文件leveldesc.ucs替换原有的同名文件就可以了。
--~ z.a.f.t.的单位不会分类列队 -----------------
这个显然是因为没有做z.a.f.t.的队列文件的缘故。可以自己动手做。
这里需要两个队列文件,一个是纳斯卡的,一个是岗瓦那的。
队列文件的存放位置是 data\script\formations\
接下来放出两个队列文件的参考方案,大家可以根据自己的需要进行修改。
1、zaft_carrier_parade.lua --纳斯卡的队列文件:
--~ left
paradeSlot("Zaft_MSAdv_Corvette_Ginn_Mikael", {-1063, -150, 625}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Haine", {-1213, -150, 625}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Luna", {-1363, -150, 625}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Ray", {-1513, -150, 625}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Yzak", {-1663, -150, 625}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_Gundam_Platform_Duel", {-1310, -240, 957}, {0,0,1}, {-1,0,0}, 0);
--~ right
paradeSlot("zaft_ms_fighter_ginn_assault", {987, -575, 1625}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_ginn_antair", {1037, -550, 1325}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_ginn_antship", {1087, -525, 1025}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_zaku_fighter", {1137, -500, 725}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_zaku_gunner", {1187, -475, 425}, {0,0,1}, {1,0,0}, 0);
--~ utilitys
paradeSlot("zaft_resourceCollector", {-927, 133, -739}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("zaft_resourceController", {-927, 133, -939}, {0,0,1}, {-1,0,0}, 0);
--~ REQUIRED "misc" slot
paradeSlot("misc", {1254, 0, -659}, {0,0,1}, {1,0,0}, 0); -- grows right
2、zaft_shipyard_parade.lua 岗瓦那的队列文件:
--~ left
paradeSlot("Zaft_MSAdv_Corvette_Ginn_Mikael", {-1063, 2050, 125}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Haine", {-1163, 2050, 125}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Luna", {-1263, 2050, 125}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Ray", {-1363, 2050, 125}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_MSAdv_Corvette_Zaku_Yzak", {-1463, 2050, 125}, {0,0,1}, {-1,0,0}, 0);
paradeSlot("Zaft_Gundam_Platform_Duel", {-1310, 2000, 457}, {0,0,1}, {-1,0,0}, 0);
--~ right
paradeSlot("zaft_ms_fighter_ginn_assault", {987, 1975, 1625}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_ginn_antair", {1037, 2025, 1325}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_ginn_antship", {1087, 2125, 1025}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_zaku_fighter", {1137, 2225, 725}, {0,0,1}, {1,0,0}, 0);
paradeSlot("zaft_ms_fighter_zaku_gunner", {1187, 2325, 425}, {0,0,1}, {1,0,0}, 0);
--~ front
paradeSlot("zaft_ship_frigate_destroyer", {1737, -1500, 5325}, {0,0,1}, {-1,0,0}, 800);
--~ up
paradeSlot("zaft_ship_capital_carrier", {4109, -858, -3823}, {0,0,1}, {0,1,0}, 1250);
--~ utilitys
paradeSlot("zaft_resourceCollector", {-2927, -86, -739}, {0,0,1}, {-1,0,0}, 150);
paradeSlot("zaft_resourceController", {-2927, -86, -939}, {0,0,1}, {-1,0,0}, 0);
-- REQUIRED "misc" slot
paradeSlot("misc", {2254, 0, -1659}, {0,0,1}, {1,0,0}, 0); -- grows right
同时不要忘记修改ship文件对队列文件的引用。例如:zaft_ship_capital_shipyard.ship中有如下代码:
NewShipType.paradeData = "hgn_mothership_parade"
应该改成
NewShipType.paradeData = "zaft_shipyard_parade"
纳斯卡的ship文件也同样要改。
--~ ----------- 结语 -----------------
希望本教程对于大家在合并MOD有所帮助,有什么欠缺和不足之处也请大家多多指教。 |
|