找回密码
 注册
X系列官方授权正版
搜索
楼主: frankwq1981

[原创] x3mod 制作教程----摘译----连载

[复制链接]
发表于 2007-9-2 13:46:38 | 显示全部楼层
楼主把前面我帮你编辑进1楼的帖子清空,等再聚多点后帮你再编辑到2楼如何?
回复

使用道具 举报

 楼主| 发表于 2007-9-2 14:00:20 | 显示全部楼层
多谢多谢!!!!:lol

[ 本帖最后由 frankwq1981 于 2007-9-2 18:48 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-2 15:53:38 | 显示全部楼层
把星系与星门连接起来


enter1=数字小键盘enter   enter2=主键盘enter

连接星系星门不难,但是一定要保证自己的星系星门按照正确的规律连接。比如,北门进,就从另一个星系的南门出,东门进,就从另一个星系的西门出。不然就会出现wormhole效果。每个星门属性里都定义了一组变量,规定了飞船进出星门的规律。分类如下:

Gate ID 0=N,1=S,2=W,3=E  这是说一个门的身份,0北门,1南门,2西门,3东门
Target sector    这是定义从这个门进入后从哪个星系出
Target gate ID    这是定义从目标星系哪个门出

所以连接星门星系时,0(北门)一定会对应1(南门)。如果哪位高人搞出了1对1或1对2可就麻烦了。Galaxy editor 有个内置检验程序,可以挑出连接不当的星门星系:enter1---debug----gate system validation。在上面enter2就可以了。显示“no errors found”,好了,没有问题。如果报错,那么就需要删掉id不对的星门重新来过了。



我们可以在星系里任意添加星门。方法:enter1---debug---create gate。在命令上enter2,然后会要求我们填上上面的一系列信息。

想要添加新的星系时稍微有点复杂,因为必须对原有的星系坐标分配规律很熟悉。这样才能避免新添加的星系坐标与原有的某个星系冲突。所以建议mod的创造者手边有一份最新版的已有星系坐标地图。(译注:这个星系sector的坐标在精华区的地图上有标出。)可以从http://www.xperiment.co.uk/files/X3ModMap.xls下载。星系的坐标还不能够从.txt文件里查,因为那里的数值和实际游戏里的数值有出入。

下面我们会讲解怎样使用Doubleshadow的外置galaxy editor。这个工具也很方便,我们能更快捷的创造新的星系和星门。

使用Doubleshadow的galaxy editor


运行x3 editor, 运行galaxy editor, 点菜单栏的“open”,打开“C:\Program Files\DeepSilver\X3 Reunion\maps\northstar.xml”。(如果没有显示,就读取v200_patch的地图。)

Doubleshadow的galaxy editor简洁而功能强大,能够很方便地完成对星系的各种操作。但是我个人发现如果想处理星系内部的元素,比如添加飞船、物品和空间站,用游戏内置的galaxy editor会更顺手。不过现在还是说Doubleshadow的galaxy editor。用这个编辑器添加星系星门,然后连接起来,中间都有程序在帮我们就错,所以不会出现匹配方面的错误,可以一次到位。大家可以对比一下两种galaxy editor,更好的利用它们来制作自己的mod。

浏览Doubleshadow的外置galaxy editor




在编辑器左栏列出了所有星系的名称。在显示模式上,可以选择只显示name,显示name和class,还有name,class以及id。选择某个星系后,点击前面的“+”可以打开这个星系,然后会显示里面所有的元素。比如,背景种类background type,行星planets,太阳sun,陨石asteroid,星门gates,以及其它元素objects。

点选太阳元素,可以看到以16进制hex显示的次级类别subtype,颜色color等信息。双击任意一个数值后都可以修改。不过要注意原始编码的进制。16进制的00 00 00代表黑色,而ff ff ff代表白色。16进制的数字排序从0-9a-f,0最小,f最大。在显示中,每组颜色数值分3个字节,第1字节代表红色,第2字节代表绿色,第3字节代表蓝色。如果自己懂三原色原理会配色,可以自由设定。我提供一个例子,ff ff 00,这组颜色的含义是纯红,纯绿,没有蓝色,所以显示的是纯黄。用同一个数字表示的颜色值反映了灰度grey scale。比如,00 00 00纯黑到1111 11暗灰到ff ff ff纯白。绘图高手和网络编辑高手对这些一点也不陌生,不过如果大家还不是很熟悉,想给自己的星系设定合适的背景颜色,可要花点功夫了。

有100种以上的太阳sun和行星planet背景元素可以供我们选择,后面会附表格说明。想象一下,我们可以制作无限的有各种背景的星系啊!

如果没记住陨石asteroid的矿产分类,那么这个galaxy editor会告诉你。双击某个asteroid,在右面找到asteroid-type,后面有菜单可以调整。

Galaxy editor的许多选项一看就明白,不需多说。编辑时如果不点save,那么数值不会被写入。如果对某些选项的效果还不是很清楚,先备份一幅地图好了。

译注: 选项卡基本条目翻译:

点选某个对象后,右边选项卡的信息,从左往右从上往下翻译:

Raw data----原始数据,没有分类,可以忽略
Xxxx info----某某对象的信息,包括:
Type----种类
Subtype----次级类别
Color----颜色
Sector-fog distant/close----星系迷雾浓度,只对部分行星有效
Rotation alpha/belta/gamma----角度,只对陨石、空间站、飞船有效
X,y,z----该物体的位置坐标
Asteroid resource amount----对象矿产含量,只对asteroid,space debirs有效
Asteroid type----对象矿产种类,只对asteroid,space debirs有效

Xxxx info右边是该对象的3d模型路径,id等信息。

继续教程:

点击最上面菜单栏的sector图标,会显示所有元素在该星系的地图。



鼠标滚轮放大缩小。虽然看这个图不如用游戏内置的galaxy editor调整来的方便,但是在创造新星系的时候,用用这个工具也不错。另外,如果觉得某个星系有太多asteroid,行动不便,也可以用外置的galaxy editor来清除,点击sector图标,右键选中想清除的对象,delete就好了。当然,为了矿工团体的利益,最好还是留几个asteroid。

点击最上面菜单栏的universe图标,会显示全星系图以及星系之间的关联。



在图上按住鼠标左键可以拖动。单独选中某个星系后,会在全图右下方显示该星系的坐标,全图左下方的x,y值显示的是鼠标指针的坐标。在这个界面,我们可以右击然后添加删除复制星系,非常方便。在图中空格上右击才能add sector。

给sector起名字

关闭sector,universe窗口,点击最上面菜单栏的Text Res图标,打开Text Resource Editor。我们在制作飞船mod时也用到过。和那时一样,用Text Resource Editor打开northstar\cats\t\440001.xml。在左栏选中id为7的Boardcomp.sectornames,在右栏就会显示所有的星系的名字,这是x2里面的星系名称。此外,左栏id为300007的Boardcomp.sectornames里面有x3的星系名称。(译注:我的x3星系名称放在了id3000的Boardcomp.sectornames里,没有教程说的300007,不知道为什么。)在300007里面大家可能会看到一些星系的名称,这些星系还没有用在x3里面,这大概是给x4预留的吧!!!

现在大家应该都会给sector改名字或起名字了吧。和ships与wares不太一样,sectors的描述description放在id19和id300009的条目里,可以随便修改,当然也可以copy其它sector的说明。(译注:我的第二个description也是在3000找到的。)接下来我会示范添加一个sector。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:33 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-2 21:58:02 | 显示全部楼层
enter1=小键盘enter,enter2等于主键盘enter。

给sector起名字


关闭sector,universe窗口,点击最上面菜单栏的Text Res图标,打开Text Resource Editor。我们在制作飞船mod时也用到过。和那时一样,用Text Resource Editor打开northstar\cats\t\440001.xml。在左栏选中id为7的Boardcomp.sectornames,在右栏就会显示所有的星系的名字,这是x2里面的星系名称。此外,左栏id为300007的Boardcomp.sectornames里面有x3的星系名称。(译注:我的x3星系名称放在了id3000的Boardcomp.sectornames里,没有教程说的300007,不知道为什么。)在300007里面大家可能会看到一些星系的名称,这些星系还没有用在x3里面,这大概是给x4预留的吧!!!

现在大家应该都会给sector改名字或起名字了吧。和ships与wares不太一样,sectors的描述description放在id19和id300009的条目里,可以随便修改,当然也可以copy其它sector的说明。(译注:我的第二个description也是在3000找到的。)接下来我会示范添加一个sector。

添加一个新的sector


回到外置的galaxy editor,点击universe图标,找到Patriarch’s Retreat星系,坐标是x9,y2在上面x9,y1的空格里右击,add。现在全图里面已经多了一个argon星系,名称是:[string 7:1020210]。程序默认新添加的星系都是argon星系,不过所属势力可以在后面调整。至于[string 7:1020210],就是这个星系说明条目的id,不过还没有添加到t\440001.xml文件里。我们马上要进行这个操作。

每个星系都有一组数据,这个数据和该星系的说明条目的id相关联。[string 7:1020210]里面的“7:”是指440001.xml里面星系名称条目的id,刚刚我们还编辑过id 7和id 19,原理是一样的。“102”是txt文件的导向数据,“0210”是坐标值。之前我提到过,galaxy editor用的坐标值和txt editor用的坐标值有出入。比如,kingdom’s end的坐标在galaxy editor里是0,0,在txt editor里面却是1,1。当然差别很细微,不过还是不方便。http://www.xperiment.co.uk/files/X3ModMap.xls提供了一个版本的地图,把两套坐标都标出来了。如果有需要,请自己去查阅一下。“0210”的意思是Y02,X10。这就是我们在Patriarch’s Retreat上面新建的星系。

在universe全图里选中这个星系,然后关闭全图。现在在galaxy editor左面分栏里面的这个星系就被选中了。点击星系前面的+,打开这个星系。看看右边,我们会注意到这个星系的背景background还没有定义次级类别subtype的值。在右边分栏里双击subtype,输入31,选ok。如果你喜欢某个星系的背景效果,可以去查查那个星系的background subtype的值是多少,抄过来就行了。最好有个高人整理一张星系背景表出来,最好再附上图,我到现在也还没见过有哪位大大肯花这个功夫,遗憾啊。

现在左键点击这个新星系的名称[string 7:1020210],在右面把种族race的值改成split。在同一个窗口也显示了这个sector的坐标,x9,y1。另外,在Doubleshadow这个galaxy editor里,玩家player自己的势力名称是ufo,而在游戏内置的galaxy editor显示的是Julian。

如果你喜欢某个星系背景里的sun,在左栏的目录里找到这个sector,点+,然后选中sun,复制粘贴过来。其它所有的元素都能这样处理:asteroids,gates,stations等等。但是现在把sun和planets 复制过来就行了。大家也可以试试混搭效果,这样做出来的sector才会有更高的原创度。

点击上面菜单栏的Text Res图标,打开Text Resource Editor。确保我们编辑的是northstar\cats\t\440001.xml。不要用Text Resource Editor刚打开的默认位置,手动选到id7的Boardcomp sector在右边栏目里102开头的系列文件处右击,选“add text”,把新增说明条目的id写成1020210。然后可以在下面的文本text区给这个星系起个名字,比如Thuruks Wig什么的。

现在在左栏找到id19 的sector description,在右栏右击,添加id为1030210的条目。然后我们可以在文本区给这个星系添加些更详细的说明。大家应该已经注意到,在说明条目里,sector名称是102开头的系列,而星系说明是103开头的系列。游戏里数据读取的顺序就是先读102xxxx里某个sector的名称,然后到103xxxx里去找相匹配的具体描述。

好了,保存440001.xml并退出Text Resource Editor。然后保存northstar map,一会我们去看看实际效果。运行x3 mod manager,打开X3 Reunion/mods里的northstar.cat,
右击t\440001,delete。点击菜单栏里的add,把路径指向上一步刚编辑好的新northstar\cats\t \440001.xml。注意添加时一定保留t\这个路径。现在我们的mod里面应该有types\tships.pck, types\jobwings.northstar.pck, types\jobs.northstar.pck and t\440001.xml这几个文件。.txt的文件添加到.cat里面以后,存放格式就自动变成.pck了,所以如果在mod manager里看到文件后缀是.pck不要感到奇怪。

把新sector和原有sector连接起来


在开始游戏前选上我们的northstar mod,进入游戏后,选new game,进入galaxy editor。作弊把自己的nova“武装”一下,然后跳跃到Patriarch’s Retreat。因为新的sector里面还没有gate,所以肯定是直接跳不过去。

“,”打开星系全图,我们会发现那个新的sector竟然还没显示。别着急,在下一小节我会解释原因。如果把鼠标指针移到Patriarch’s Retreat上面,能看到新sector的名字显示出来了。按esc退出星系全图,按enter1----debug----connect sectors with gates。首先程序会让选从哪个星系开始,因为我们就在 Patriarch’s Retreat,所以直接enter2。下面会让我们选连到哪,所以把光标移到Patriarch’s Retreat上面,直到我们新编辑的sector的名字显示出来,然后enter2。现在程序自动在Patriarch’s Retreat生成了一个北门,我们可以通过这个门去到新的星系了。

到达新sector后,我们可能会对里面的sun和planet的位置不太满意。按“,”打开sector map,在右面的信息栏部分选all, 把菜单拉到最下面,“sun subtypexxxx”是背景太阳,“planetxxxx”是背景行星,选中想调整的那个,用小键盘的“2,4,6,8”可以移动对象的位置。如果不喜欢某个背景,在debug里面可以任意添加和删除。我们也可以添加一些星云nebula背景,摆上几个station或factory。星系的势力归属也可以随意调整。做个goner sector或许不错,谁让他们人烟稀少呢。这样玩家在这个sector杀死海盗后就能增加和goner的关系。如果自己想有个星系,那么就把势力名称改成“Julian”。另外,如果想更好的调整某个对象的摆放,小键盘的“/,*,-,+,0,.”键可以向各个方向滚动对象。

通过这部分练习后,大家应该了解内置和外置galaxy editor的优缺点了。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:39 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-2 21:58:13 | 显示全部楼层
让新sector显示在星系全图galaxy map里


我们的新sector之所以不出现在galaxy map里,是因为还有一个文件需要修改。Galaxy map是以.bod文件的格式存放的,相关信息保存在northstar\cats\objects\cuts\00749.bod里面。这一类的文件可以用Doubleshadow另外的编辑器解压缩,然后用3DS来编辑。但不是所有的朋友都熟悉3ds max,所以我们可以尝试用txt文本编辑器来做这个工作。(译注:原文是“不是所有朋友都买得起一套3ds max工具”……可见国外盗版还是少啊…)

建议大家用wordpad写字板打开.bod文件。因为还能保留写格式。用记事本notepad打开就太乱了一点。现在主要的问题是怎样“破译”.bod文件里数据排列的规律,在x2的.bod里面这还算是简单的。

用wordpad打开northstar\cats\objects\cuts\00749.bod。

/===============================================================
/ 3D Scene Information file X:\objects\cut\00749.BOD
/ Automatically generated from X:\objects\effects\menugfx\GUI\gui_galaxymap749_v3.max
/===============================================================
/ EGOSOFT Bodyfile exporter version Apr 5 2005 19:09:19
VER: 3;
/ >> Mon Sep 26 20:53:40 2005
/ Animation time interval: 0..16000
/ >> Mon Sep 26 20:53:40 2005
/ Staring Biped Key Reading/ >> Mon Sep 26 20:53:40 2005
/ finished Biped Key Reading
/ Mon Sep 26 20:53:40 2005
/ Node Camera01 Class [SimpleCamera, CAMERA_CLASS_ID]
/ Target Node: Camera01.Target!
P 0; B -1; N Camera01; c
{ 0x0808; 0; 0; -19818; 0; 0; 32; 0.000000; 1.570796; -1; -1; } // 0
/ Mon Sep 26 20:53:40 2005
/ Node Camera01.Target Class [Target, GEOMOBJECT_CLASS_ID]
/ Lookat Node: Camera01, skipping this target node!
/ Mon Sep 26 20:53:40 2005
/ Node 0904 Class [Box, GEOMOBJECT_CLASS_ID]
P 2; B 904; N 0904;
{ 0x2002; 50548; 6941; 2010; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


正文开头几行应该就是这样。我们要关注的是红色部分的数据,这是Tharka’s Sun
星系的数据。其他所有带有“[Box, GEOMOBJECT_CLASS_ID]”的数据是其他星系的数据。这些数据的规律是:

凡是以“/”开头的行都是说明文字,并不会被程序执行。我们自己编辑以后最好也添加一些这样的说明,比如写上星系的名称和位置等等,方便隔段时间以后回头查阅。当然也可以干脆删掉这些说明,不过我建议还是保留他们。这是开发者的语法。这段语句里的核心在于[Box, GEOMOBJECT_CLASS_ID]定义的数值,意思是在galaxy map里面定义一个小方块图标来表示某个星系。

p 2”:代表行数。每一段完整的定义都算作一行,赋予一个行数。所以每一个p x都代表了galaxy map里的一个星系。

B 904”:代表某个sector的x,y坐标。需要注意的是,如果是连写的xy坐标以0开头,那么这个“0”会被省略掉。比如,Kingdom’s End 的坐标是 x01y01,应该显示成0101,但实际上我们会看到101。按照这个规律,201就是Rolk’s Drift。

N 0904”:意思和前面的“B 904”一样,不过现在把“0”补上了。(译注:不知道为什么同一个值要定义两次。而且这个坐标似乎只是代表了星系的一个身份,就像一组id,而下面讲到的x,y,z坐标才是是sector图标在galaxy map里的真实坐标。但在原文里,这两组值都叫做“coordinates”。

{ 0x2002; 50548; 6941; 2010; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0”:这段数字里面我们需要编辑的只有“50548; 6941; 2010”。这3个数值分别是代表新sector的方块图标显示在全星系图里面的位置坐标x,y,z。x是从东到西,y是从北到南,z是上部或下部。如果我们不改这段数据,那么我们的新sector图标就不会显示,因为它和Tharka’s Sun图标重叠了。我们的新sector图标应该显示在Patriarch’s Retreat上面才对。一般而言,所有星系的图标在galaxy map里都沿x轴以12,000左右的间距分布,沿y轴以8,000左右的间距分布,z轴方面一般不改动。正值指向东或北,负值指向西或南。

我们随便拷贝一段完整的sector位置定义,然后粘贴到这个文件的最后。记得把前面的p x改成比最后一行大1。比如,原来有697行,现在我们添加的是第698行。而改动后的数据如下:

/ This is my new sector Thuruk’s Wig
/ Node 1002 Class [Box, GEOMOBJECT_CLASS_ID]
P 698; B 1002; N 1002;
{ 0x2002; 62248; 21950; 7729; 0.000000; 0.000000; 0.000000; 0.000000; -1; -1; } // 0


现在大家可以看到,我编辑的数据里,行数是“p 698”,坐标(身份坐标)是“1002,1002”。接下来,我在x轴上加了12000,让我们的sector图标往东移,在y轴上加了15000让sector图标往北移,在z轴方面加了5500让图标向上浮起一点。现在可以保存这个.bod文件了。

如果我们只是想让sector图标显示在galaxy map里,那么目的已经达到了。


但是,在galaxy map里,sector与sector之间有星门相通的方向不是还能显示一些白线,表示这两个星区是相连的么?想要显示这些白线,还需要修改一点数据:

/ Mon Sep 26 20:53:40 2005
/ Node 08040904 Class [Editable Mesh, GEOMOBJECT_CLASS_ID]
P 32; B 8040904; N 08040904;
{ 0x2002; 43706; 8208; 1952; 0.034601; -0.380136; 0.068352; -0.922402; -1; -1; } // 0

在“node”这一行里设定了“[Editalbe Mesh, GEOMOBJECT_CLASS_ID]”,下面的语法和刚才看到的比较像。“P 32”是行数,“B 8040904”指从哪个sector来到哪个sector去,8040904就是从Rhonkar’s Coulds去Tharka’s Sun。同样的,B系列里省掉的0在N系列里补回来了。所以有“N (0)8040904”。接下来的3个x,y,z值就是白线中心的坐标值。后面的0.034601等等数值是白线围绕中心旋转的角度。在我自己的mod里,不添加这些白线也没有问题。大家能看到新sector的图标就好了,不过追求完美的朋友可能想把白线也添加上,我要提醒的是,像argon prime这类sector可是有4条白线连到其他sector上,所以要添加白线其实是挺麻烦的。具体做法大家参照修改sector图标的做法改就好了。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:39 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-3 15:49:34 | 显示全部楼层
把编辑好的.bod文件添加到.cat里面


按上面的说明编辑好地图后,现在可以保存了。我个人喜欢单独保存在新的文件夹里,下次还可以在这个基础上编辑新的sector。如果别人喜欢每次从x3的原始galaxy map改起也可以。好了,现在把这个00749.bod添加到我们自己的mod里,注意要保留原始的路径“objects\cut\”。添加完成后,在northstar.cat里面,应该显示为objects\cut\00749.pbd。正如.txt放到.cat里面后,格式会变成.pck,.bod放到.cat里面格式就是.pbd。所以看到新的后缀不要感到奇怪。

选上我们的mod,运行游戏,去看看新sector吧。

关于sector的背景background我还想啰嗦两句。如果大家对实际background效果不是很满意,还可以在游戏里调整。我个人喜欢几个红色主调和绿色主调的background。在一个海岛星系放上血红色主调的背景能烘托气氛。如果不喜欢某个行星背景planet,打开sector map,(大家应该是进入了galaxy editor,不然不能在游戏里编辑。),选all,然后找到planet,用左右键调整。直到满意为止。剩下的应该不用多说了。

Play我们自己的mod



玩我们的mod很简单,不过先来回顾一下我们的成果。

在c:\Program Files\Deepsilver\X3 Reunion\maps里有个northstar.xml。
在c:\Program Files\Deepsilver\X3 Reunion\mods里有个northstar.cat。
在c:\Program Files\Deepsilver\X3 Reunion\mods里有个northstar.dat。


在解释一下,.cat文件就像.zip文件一样。里面存放着怎样调用.dat文件里面数据的信息。.cat和.dat的关系有点像数据库程序和库里存的数据。我们的northstar.cat到现在为止应该包括:
types\tships.pck
types\jobwings.northstar.pck
types\jobs.northstar.pck
t\440001.xml
objects\cut\00749.pbd

上面的文件有什么作用大家应该已经都清楚了。

运行游戏的时候一定要选上northstar mod,然后new game---custom game---northstar map
我们在x3 reunion\mods里添加一个.cat并激活后,游戏会优先读取这个.cat的资料。但是如果我们没有把tships.txt添加到这个.cat里面,新编辑的船就不会出现在游戏里。同样的,如果添加tships.txt到.cat里时没有保留types\路径,那么新编辑的船也不会出现。因此,细心操作十分重要。多试几次就好了。

另外,如果在custom game里选择了别的地图,或者直接进入了主线游戏,那么我们新添加的sector是不会出现的,那里只有我们编辑过的飞船,任务,空间站等元素。载入northstar map后,玩家会默认出现在argon prime。接下来我们会探讨怎样设定一个mod里玩家的初始状态。要做到这些,我们需要编写几个小脚本scripts。不过如果不懂复杂的XML, Javascript, PHP编程也没关系。因为egosoft已经给游戏附加了一个很好用的script editor。我们可以用它达到目的。

最后还要说明的是,作为mod开发人员,我们应该熟悉mod的运作原理,这样以后推广我们的mod时,就能同时附上详细的说明文档。自娱自乐比较简单,但是对于陌生的玩家,我们有义务帮助他们正确安装并使用我们的mod,当然,也包括怎样卸载。为了达到这些目的,我们应该编写安装说明,把mod做成自解压的.zip或能够通过专门安装器安装的文件。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:41 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-3 22:08:07 | 显示全部楼层
enter1=小键盘enter,enter2=主键盘enter。

编写初始状态script


我们可以用script editor给我们的mod设置玩家的初始状况,比如位置。举个例子,我们新添加了一个goner sector,我们可以让player出生在那里,然后也可以调整一下和各种势力的关系,比如只让player和goner与argon关系好。下面我来示范怎样编辑。

开始游戏,随便停到太空某个地方,shift+c----s,打开script editor。如果还没有激活script editor的朋友请参照前面相关的部分操作。(2,3楼吧)选择菜单里的script editor,enter2

Script editor 操作简介:

上下左右键控制光标在脚本里定位。
Insert在当前script里创建新的命令行。
Delete在在当前script里删除选中命令行。
C键拷贝当前script里选中的命令行。
V键在当前script里粘贴拷贝的命令行。
Enter2(主键盘enter)用来修改光标选中位置的值。
R键运行当前script。


往下拖动菜单,找到“galaxy.Example.initplayer script”命令,在上面enter2。接下来会显示这个script的内容:





001 * Select Couldbase North West as start sector
002 $sec= get sector from universe index: x= 0, y= 2
003 * create my in start sector, equip it properly and return it
004 $plship= create ship: type= Unknown Ship owner= Player addto= $sec x= 0 y= 0 z= 0
005 $plship-> add default items to ship
006 $tmp= $plship-> add 1 units of Singularity Engine Time Accelerator
007 $tmp= $plship-> add 1 units of Boost Extension
008 * create an externally docked ship
009 $newship= create ship: type= Hydra owner= Player addto= $plship x= 0 y= 0 z= 0
010 $tmp= $newship-> install 2 units of 1MJ shield
011$tmp= $newship-> install 2 units of Wasp Missle
012* Account at the beginning 1000 cr
013 add money to player: 1000
014 return $plship

上述程序内容解析如下:

001 本行是说明(*行都是说明),提示下一行程序的作用。
002 定义x,和y的值,是玩家出生sector的坐标。
003 另一个说明行。
004 定义了初始飞船的种类type,归谁所有,以及出生地的x,y,z坐标。
005 给初始飞船添加所有默认物品的命令。
006 给飞船添加一个SETA。
007 给飞船添加一个Boost Extension
008 说明行。
009 在出生地同一坐标生成另一艘小点的船,停靠在玩家船的内部。
010 给新的小船添加2个1mj 护盾。
011 给新的小船添加2个wasp导弹。
012 说明行。
013 给玩家加1000cr。
014 script 终结。
译注:本教程里没有十分详细的介绍每一类script怎样编辑,请大家参照例子,熟悉脚本的语法,自己摸索。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:42 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-3 23:04:39 | 显示全部楼层
enter2=主键盘enter.enter1=小键盘enter.

因为我们希望玩家开始时只开一艘船,所以先把8-14行都删除。



001 * Select Couldbase North West as start sector
002 $sec= get sector from universe index: x= 0, y= 2
003 * create my in start sector, equip it properly and return it
004 $plship= create ship: type= Unknown Ship owner= Player addto= $sec x= 0 y= 0 z= 0
005 $plship-> add default items to ship
006 $tmp= $plship-> add 1 units of Singularity Engine Time Accelerator
007 $tmp= $plship-> add 1 units of Boost Extension
008

接下来我们要编辑玩家的初始所在sector以及船的种类type。把光标移到第002行,找到x=0, 在0上enter2。接下来,卷动类别菜单到“Script Input----<Number>”,然后enter2,把数值改成9。用同样的操作把y的值改成1。



把光标移到第004行,找到Create ship: type = Unknown Ship,在这上面enter2。接下来,卷动类别菜单到“Script Input----<Select Ship Type>”,继续卷动菜单,(上面3个选项中filter ship type是按船的类别分类,race是按船的所属分类)找到我们编的新船“Northstar special hauler”,enter2

   

在007行上按“C”,复制这一行的内容。然后移到008行,按“V”,粘贴过来。



把光标移到1上enter2,卷动类别菜单到“Script Input----<Number>”,输入2。然后把光标移到Boost Extension上enter2,卷动类别菜单到“Script Input----Seclet Ware”,然后找到Hurricane Missle,enter2

   

现在我们的script应该是:



001 * Select Couldbase North West as start sector
002 $sec= get sector from universe index: x= 0, y= 2
003 * create my in start sector, equip it properly and return it
004 $plship= create ship: type= Unknown Ship owner= Player addto= $sec x= 0 y= 0 z= 0
005 $plship-> add default items to ship
006 $tmp= $plship-> add 1 units of Singularity Engine Time Accelerator
007 $tmp= $plship-> add 1 units of Boost Extension
008 $tmp= $plship-> add 2 units of Hurricane Missle


现在我们来编辑玩家开始时的种族声望。目的是让玩家和argon关系铁,和split的关系差。

新建个009行,复制003行的内容,然后粘贴过来。在这行写点说明文字:Change Notoriety up for Argon, down for Split。(意思是增加玩家在argon的声望,降低在split的声望)。

用insert键添加两个新的命令行。在010行上enter2,然后会出现“Select Ship Command”菜单。移动光标到“>> >> General Commands”上,enter 2



向下卷动菜单,找到“,Var/Race> add notoriety: race=<var/Race> value=<Var/Number>”命令行,enter2。



把光标移动到“add notoriety”前面的种族上enter2,然后选择改成Argon。把光标移动到“race”后面的种族上enter2,然后选择改成Player



接下来把最后的数量值改成500。第011行重复上面的操作,第一个种族改成Split,第二个种族改成Player,最后的数量值改成-500

好了,编辑好的脚本内容如下:



001 * Select Couldbase North West as start sector
002 $sec= get sector from universe index: x= 0, y= 2
003 * create my in start sector, equip it properly and return it
004 $plship= create ship: type= Unknown Ship owner= Player addto= $sec x= 0 y= 0 z= 0
005 $plship-> add default items to ship
006 $tmp= $plship-> add 1 units of Singularity Engine Time Accelerator
007 $tmp= $plship-> add 1 units of Boost Extension
008 $tmp= $plship-> add 2 units of Hurricane Missle
009 * Change the notoriety up for Argon and down for Split
010 Argon add notoriety: race= Player value= 500
011 Split add notoriety: race= Player value= -500
012 return $plship

好了,按esc,选yes保存。千万别选no,因为no的选项在上面。有朋友手快,连点两下enter2,然后就得重头再来一遍。那么script的编写先说到这里。



把script添加到我们的mod里面


保存script,退出游戏,定位到:C:\Program Files\DeepSilver\X3 reunion\scripts\。大多数脚本都是以压缩文档.pck的格式存放的。大家可以从官方网站论坛下载一个script manager的工具,这个工具能够压缩解压缩.pck文件,让我们进行编辑。在上述文件夹里,应该能找到一个galaxy.Example.initplayership.xml的.xml文件。有个同名的默认脚本,编辑后会生成一个新的同名文件,就是我们先前改写的脚本了。双击这个galaxy.Example.initplayership.xml,然后在打开方式里选择notepad。在文件的开头,找到“<name>galaxy.Example.initplayership</name>”,然后改成:“<name>galaxy.northstar.initplayership</name>”。然后把这个文件另存为:galaxy.northstar.initplayership.xml。

现在进入游戏,选择我们的mod,在custom game里选我们的地图,就会以我们在script里设定的方式开始游戏。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:45 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-4 15:07:03 | 显示全部楼层
编辑炮塔文件cockpits,主炮guns,炮塔turrets


这一部分主要探讨怎样编辑飞船的武器部分。比如,增加主炮的可用laser范围,添加删除炮位等等。

1.编辑炮塔文件cockpits增加主炮的可用laser种类:

按照前面教程的介绍,用argon mercury为原型,创造一艘新船。打开txt editor里的“cockpits (turrets)”选项卡。记录下这艘飞船装备的cockpit炮塔模型id:“[color=Magenta]SS_COCKPIT_A_ALL_TS”,保存tships.txt。



打开northstar\cats\types\ Tcockpits.txt文件,在左栏拖动菜单,找到并选择SS_COCKPIT_A_ALL_TS。现在右栏会显示这组炮的可用(compatible laser)和全部的可选laser(available laser)。



好了,可以随意添加删除laser的种类了。完成编辑后,保存Tcockpits.txt,然后用mod manager把它添加到northstar.cat的mod里,注意要保留路径:types\ Tcockpits.txt。所有飞船的炮火武器种类均可以这样修改,找到相应位置炮塔的id后,编辑Tcockpits.txt文件就可以了。

2.给飞船主炮添加可用的炮位:

这一部分比较复杂,大家需要通过练习来熟悉过程。这次我们用Split Scorpion Raider作示范。用txt editor打开Tships.txt文件,在左栏定位到Split Scorpion Raider。在右栏打开“guns”选项卡。我们会看到scorpion有6门炮,6个炮位。我们要增加2门炮,让scorpion有8门炮,8个炮位。



点击“add gun”。



分别在每个栏目填入如下信息:Count 1, Body ID ships\props\weapondummy, Path index 7。然后点ok,现在可以看到scorpion已经有7门炮了。Scorpion只有前方front laser一组火炮,双击其中任何一个条目,会打开属性窗口。我们可以看到,secondarybody id没有内容,而相应的path index都是-1。需要说明的是,secondary body id通常只用在大型舰m1,m2和tl上。现在仿照上面的步骤,给scorpion添加第8门火炮:Count 1, Body ID ships\props\weapondummy, Path index 8。接下来保存tships.txt。

现在我们的scorpion已经有8个炮位了。但如果进入游戏,大家会发现,虽然可以往scorpion的新炮位上装备laser,但是新的2个炮位却不会开火。这是因为我们还要修改飞船主体模型文件的定义。飞船主体模型文件是以.bod格式存放的,可以用wordpad编辑,和先前编辑galaxy map一样。

飞船主体模型文件名称和路径可以在txt editor里的model选项卡里查到。



对于scorpion来说,是Split_M4_var1_scene.bod,存放在cats\objects\ships\split\里面。在Split_M4_var1_scene.bod边上,还有一个同名的.bob文件。这个文件是压缩过的,必须先解压成.bod才能编辑。如果大家想用GMAX 或3DS max直接编辑飞船模型,
可以在官方论坛下载一个x2bc.exe的解压工具。同时,为了把解压后的模型文件导入3ds max,大家还需要下载DBOX工具。在本教程里,我们不涉及3ds max编辑。通过修改已经是.bod的Split_M4_var1_scene.bod就可以达到目的了。双击这个文件,然后在wordpad打开。我已经标出了关键部分,这段程序应该是文件开始的第二行。

/ Sat Oct 01 15:37:32 2005
/ Node Bships\props\weapondummy_1f Class [Editable Mesh, GEOMOBJECT_CLASS_ID]
P 3; B ships\props\weapondummy; C 1; N Bships\props\weapondummy_1f; b
{ 0x2002; -244; -1684; 536; 0.305556; -0.000680; -0.000476; 1.000000; 3333; 1; } // 1
{ 0x2002; -244; -1684; 536; 0.305556; -0.000680; -0.000476; 1.000000; -1; -1; } // -1
/ Sat Oct 01 15:37:32 2005
/ Node Bships\props\weapondummy_1e Class [Editable Mesh, GEOMOBJECT_CLASS_ID]
P 4; B ships\props\weapondummy; C 1; N Bships\props\weapondummy_1e; b
{ 0x2002; -87; -2050; 233; 0.305556; -0.000680; -0.000476; 1.000000; 3333; 1; } // 1
{ 0x2002; -87; -2050; 233; 0.305556; -0.000680; -0.000476; 1.000000; -1; -1; } // -1


红色的语段定义了scropion的前两个炮位,类似的语段还有4组。我们只要复制添加两个炮位就可以了。下面我来分析一下语段的规律:

以/开头的语段是说明文字,不会被程序执行。

P 3; B ships\props\weapondummy; C 1; N Bships\props\weapondummy_1f; b
{ 0x2002; -244; -1684; 536; 0.305556; -0.000680; -0.000476; 1.000000; 3333; 1; } // 1
{ 0x2002; -244; -1684; 536; 0.305556; -0.000680; -0.000476; 1.000000; -1; -1; } // -1


在这一段语句里,

P 3 是行数(和编辑galaxy map时一样,我把有一个独立的编号,有一组完整定义的一段语句叫做一行。)后面是武器3d模型的路径。大家应该注意到“weapondummy_1f”。在P4 行里,是“weapondummy_1e”。实际上每个炮位都有一个唯一的字母标志。它们不一定按照字母顺序来排列,因为scorpion的炮位以船体为中心,环形分布。这些字母标志和最初创建船体模型时的定位是相关联的。对于我们来说,这点并不重要。因为我们的目的只是让新添加的炮位火炮可以开火。

-244; -1684; 536定义了炮位在飞船模型上位置的x,y,z坐标。基本的规律如下图:



0.305556; -0.000680; -0.000476; 1.000000是另外我们还需要注意的部分。这组数据定义了炮塔模型的旋转角度。要是不想让火炮可以360度旋转,不修改就可以了。不管怎样,如果哪位高人让尾炮朝前开火,游戏效果会比较奇怪吧。如果大家想搞清楚火炮坐标的分布,然后把炮位均匀安排在船体四周,我建议可以先微调数据,然后到
Galaxy  editor里去检验实际效果,自己试验出最合适的摆放方式。不过,据说也有朋友一边搞脚本一边就被海盗给打下来了。在游戏里按f1键可以循环切换不同炮位的视角,然后用小键盘的2,4,6,8方向键可以检查跑位旋转的情况。

复制p3 行的数据,粘贴到p8行后面,粘贴2次,然后把行号改成p9,p10。记得把后面的行号也顺延改过来。如果有重复的行号,程序只执行后一行。每个船体模型文件里一般只有30行左右的定义,所以应该还不算太麻烦。如果直接粘贴到最后也可以,不过隔断时间回来可能会搞不清之前做过什么修改。接下来给新的两行炮位重新设定两个标志a和h。形式是:C 1; N Bships\props\weapondummy_1a, C 1; N Bships\props\weapondummy_1h

现在还需要修改一下炮位坐标值,让它们和已有炮位错开一点。我会先调整y的坐标,从-244; -1684; 536改成-244; -1784; 536

保存文件前,务必确定没有重复的行号。然后把升级后的文件用mod manager添加到northstar.cat里,注意保留路径:types\objects\ships\split\ Split_M4_var1_scene.bod

最后还有一个步骤,用mod manager打开x3根目录下的04,05,06.cat文件,删除里面的types\components.pck。因为要让新炮位起作用,还必须让程序自动生成新的types\components.pck文件。现在如果进入游戏,大家会发现读盘的时间比以前要长一些,这是因为程序在生成新的types\components.pck。具体的时间长短和机器配置有关系。我的p43.0上,添加2个炮位,花了1分半左右。改动越多,第一次进游戏读盘的时间就越长。现在新添加的2个炮位应该可以正常工作了。炮塔的编辑基本是一个路子,我就不具体举例子了。

译注:这里可能有个版本的问题。在我的2.0版,删掉040506.cat里的types\components.pck后,第2次就无法进入游戏,必须重装,不知道为什么。可能生成新types\components.pck的过程有问题。我会在本教程结束后提供自己的变通修改方法:利用原有模型添加炮位而不修改模型文件定义。

另外,关于炮塔还要强调一下:给飞船添加新炮塔组非常困难。这里对模型的改变比修改主炮组里个别的炮位难很多。我自己试了几十次没有一次成功,所以还是建议想添加炮位的朋友通过3ds max一类的工具来做吧。

[ 本帖最后由 frankwq1981 于 2007-9-4 18:57 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-9-4 15:16:09 | 显示全部楼层
修改游戏音轨sound track和音效sound effect


游戏的背景音乐存放在X3 Reunion\soundtracks下面,都是mp3格式的。大家想把自己喜欢的音乐换过来,只要直接把mp3考到上面的目录里,把名字改成你想替换对象的名字就行了。记得把原文件改名或移到别的地方去。同时最好留个原文件备份,以便日后恢复。游戏的音效文件存放在cats\s,改动的方法同上。

用Doubleshadow的x2bc把.bob解压成.bod


下载Doubleshadow的x2bc。(http://www.doubleshadow.wz.cz/x3e/)解压到C:\x2bc。所有的文件应该包括:– x2bc.exe, mcvcr71.dll, libx2bc.dll, x2bc.ini, Readme_compiler.txt 和 etrabob_data.txt,然后进行安装。X2bc的默认操作目录是c:\cats,所以可以建个c:\cats目录,把我们要编辑的.cat拷贝过来。

运行程序打开对话框,如果想把Argon Nova M3 bob解压成.bod文件,输入c:\x2bc\x2bc –d “C:\cats\objects\ships\argon\argon_M3.bob。不用标后半截引号。当然,有朋友想同时重命名文件,就标上后半截引号,然后另开一段,比如把解压后的文件改成c:\cats\mynov:c:\x2bc\x2bc –d “C:\cats\objects\ships\argon\argon_M3.bob” “C:\cats\mynova。好了,这个mynova.bod文件可以用dbox导入3ds max。

[ 本帖最后由 frankwq1981 于 2007-9-5 00:52 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站