- UID
- 5872
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2007-9-18 00:46:46
|
显示全部楼层
四. 设置新船的数据.
上面我们得到了船的模型文件,然而这艘船的性能如何,有何武器,还要进一步的设置.这部分主要在X3 editor
以及scene.bod设置.
1 用TXT Editor打开types\tship.txt.
图1.
这里我们在Argon Centaur M6的基础上修改以得到新船的数据.
找到 Argon Centaur M6 copy它,并paste,在右边的Info把ID改为H_BC(随各人喜欢了),把Description改为
73000 然后点Text Res,打开 t\440001.xml,选左边的17 Boardcomp.objects,然后在右边新增加一个条目 73000,内容
是 Hgn BC. 存盘后退出Text Res.回到 Txt Editor,选回新增加的船,在右边Model里,ship scene改为
ships\h_bc_scene,Cockpits的第一行改为ships\h_bc.bob.保存这个Tship.txt文件.
2.scene.bod文件的最终设置.
scene.bod主要是设置各个Path idx, Camera idx以及各个Path Idx调用的是哪个模型.Path idx相当于定义一些点,然后
程序可以根据这些点来做很多东西,比如放某个模型,定义武器,或者当触发一定条件后显示相应的特效. 这个点常常被称作hardpoint,
中文也有称作"挂点"的.
Tship.txt里也有相应的数据,它的设置要与scene.bod里设置相一致.本例是h_bc_scene.bod这个文件.由于是copy M6的数
据,所以在argon_M6_scene.bod的基础上修改即可得到我们想要的h_bc_scene.bod: 将argon_M6_scene.bod里的
P 0; B ships\argon\argon_M6; C 1; N Bships\argon\argon_M6_1b; b
改为:
P 0; B ships\h_bc; C 1; N Bships\h_bc_1b; b
这就把原来显示M6模型改成了显示上面得到的h_bc模型.
这艘新船的炮塔,炮的位置不可能和M6一样,所以还要进一步修改h_bc_scene.bod.在这之前,要明白座舱(Cockpit)炮
塔(turrets),炮(gun),之间的关系:
game里,我们在某个视点的时候,能控制一定数量的炮,当处于初始视点的时候,我们控制的是船的方向,而在其它
视点的时候,我们控制的是部分炮的射击方向.视点就相当于Cockpits(座舱),也就相当于我们处于turrets时的
Cockpits.turrets和Cockpits是一个东西2个层面的解释,turret可以定义有多个Gun,而且可以是离得比较远的多个Gun,可以理
解为飞船某部分的所有炮.而Cockpit相当于处于turret时的视点.
先在Txt editor里看一下 Cockpits,Guns的数据,会注意到Path Idx(P Idx)这个数字,在Cockpits这项里,能
看到Position下会有 right(4),left(3)这类数字.Path Idx是路径索引,用来定义某个位置,当你在txt editor
里增加新的gun的时候,也会看到要你输入Path Idx.而right,left后面的数字是Camera Idx(相机(视点)索引)
.Camera Idx用来表示某个相机(视点.也就相当于Cockpit).
下面解释scene.bod的意思.用记事本打开h_bc_scene.bod,可以看到下面的语句:
P 0; B ships\h_bc; C 1; N Bships\h_bc_1b; b
{ 0x2002; 0; 0; 0; 0.000000; 0.000000; 0.000000; 0.000000; 3333; 1; } // 1
{ 0x2002; 0; 0; 0; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // -1
这句是定义显示船体的,第2行可以去掉. P就是Path Idx(路径索引), B 表示调用的Body文件(bob文件),
"C 1"这里C即 Camera Idx, C 1表示1号相机(Cockpit,炮塔),
N Bships\h_bc_1b; b Bships\h_bc表是调用 h_bc.bob 后面的_1的 1表示 Camera Idx 1.
.
P 10; B ships\props\cameradummy; C 2; N Bships\props\cameradummy_2b; b
{ 0x2002; -0; 9097; -21535; 0.500000; 0.000000; 1.000000; -0.000000; -1; -1; } // -1
这行是定义相机(视点)2的,也就是Cockpit,turret(炮塔)
下面这行数字 2,3,4位是坐标,相当于3dsmax里的 x z y (注意, y与z是换了位置的,这"得益"于3dsmax的与行
业习惯不一样的坐标系)如果3dsmax里的单位是mm的话,那3dsmax里的坐标X100就是这里的数.
5,6,7表示方位,其中1=180度.
P 1; B ships\props\invisible_weapon; C 1; N Bships\props\invisible_weapon_1a; b
{ 0x2002; -3301; -2388; 30075; 0.000000; 0.000000; 0.000000; 0.000000; 3333; 1; } // 1
{ 0x2002; -3301; -2388; 30075; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // -1
在P 1--P 8这些行里,定义了8个炮,这里的 C 1,表示这些炮是在cockpit 1的时候可以由玩家控制的,而
Bships\props\invisible_weapon_1a----Bships\props\invisible_weapon_1g的 a-g的字母可以随便换,只是为
了区分不同的炮而已.
P 9; B ships\props\turretdummy; C 2; N Bships\props\turretdummy_2b; b
{ 0x2002; -10; 6523; -25865; 0.500000; 0.000000; 1.000000; 0.000000; -1; -1; } // -1
这是定义的另一个炮,ships\props\turretdummy是炮的模型,可以用moder view打开看看.pop下面的东西喜欢哪
个就换哪个吧. C 2 表示当玩家在 2号 Cockpit的时候,这些炮由玩家控制.
现在可以在3dsmax里定好位置,再在scene文件里修改它就可以得到自已想要的位置了.以及可以决定哪个视点
(cockipt或turret)控制哪个炮了.如果想再增加炮(gun),那在3dsmax定好位置后,增加新的语句就行了.需要注
意的是,Path Idx(P值)要与txt editor里的设置要一致,以及这个炮的 C 值--由哪个视点(cockpit或turret))控制.
最后.用mod manager把所有的文件打包进10.cat文件吧,注意进10.cat后要保持原有的路径.在game里可以用
论坛里介绍的作弊脚本create ship,选新船,race选你自己就行了.
做新船的话,建议找一条已有的类似的船,以它为出发点修改,这样会比较快而省事.最主要的是cockpit或炮塔
的数量要一样,其它的数据都容易改.增加gun的数量也比较容易.
如果想在copy一艘已有的船的基础上增加炮塔(或cockpit),特别是想从0开始去设置一艘新船的数据的话,工
作量会很大,因为要必须保证tship.txt和scene.bod里的定义要一致.对于炮很多的船这是个很繁琐而又需要耐
心的工作. 还有一个很重要的原因,以笔者的理解,新炮塔(cockpit)是components(见 三 2 (6)),你必须要导出到
components.txt文件里,重新编排components.txt,好象还要让系统重新生成components.txt才能让它正常工
作.笔者对这部分目前也是有些疑问. 试过成功增加新的炮塔(cockpit),但后来改动了数据后又失效了. 弄了些时间
也没弄出来就放弃了. 还不如直接在现成的基础上改来得简单快捷.
另外,实际上可以直接在3dsmax设置好后,就能导出完整的scene.bod文件,但因为tship.txt文件里也有部分数据
与这里的定义是重复的---同样的功能却在两个地方定义,昏----X3要求它们的数据要相一致.这点非常不方便,为啥
Tship.txt相应数据不能直接从scene.bod里调用相关数据,而要增加了手工去一一对应这道工序?否则可以直接在
3dsmax里设置好,导出完整的scene.bod文件就行了.如果有人对在3dsmax里scene的导出感兴趣的话,下次再写篇教
程介绍一下吧.
[ 本帖最后由 bigcat 于 2007-9-20 20:47 编辑 ] |
评分
-
查看全部评分
|