可以參考以下文章 ( 複製自翔鷹論壇、劇情狂注)
如有侵權, 請即通知。
================================
新单位制作教程作者:剧情狂
(译者注:在制作新单位之前,需要先下载GeniEd1 0.2 beta,这个版本是剧情狂兄和MasterJoab共同改进原来的GeniEd1,使其支持读取帝国时代Ⅱ-征服者的数据库的版本。
Beta GeniEd1:
或
Beta版 帮助文件:
或
- 红色文字是基本的步骤。
- 蓝色文字是参考例子中应该进行的动作。
为了准备制作完全的新单位,你必须先用GeniEd 将游戏数据库解码(执行“Decompress genie”)、读取数据(执行“Read data”)并转换成文本(执行“Convert data to text”)。(译者注:此时记得最好不要马上关掉GeniEd!!)
1. 要制作完全的新单位,第一步是选择一个已经存在的单位作为基础,并获取它的单位编号。例如,如果我选择复制民兵并深入地修改,来制作完全的新单位,我要找到它的单位编号: 74。
2. 知道了单位编号之后,你就可以打开“ged_data”目录中、“text”文件夹下的“units.txt”文件(由GeniEd中的“Convert data to text”命令创建)。然后,你要把所有以“unit_[基础单位的单位编号]_”开头的行复制到“patches.txt”中。继续上面的例子,以下是当你使用民兵作为基础单位时,必须复制的行:
unit_74_exists: 1
unit_74_count: 7
unit_74_0_unknown01: 1
unit_74_0_unknown02: 0 0 0 7 0
unit_74_0_unknown03: -1 -1 -1 -1 -1 -1 -1
unit_74_0_unknown04: 0 0
unit_74_0_unknown05: 0
unit_74_0_unknown06: 1
unit_74_0_unknown07: 3
unit_74_0_unknown08: 1 1 1 0 0 0 5 0 0
unit_74_0_graphics: -1 -1 -1 -1 -1 -1
...
unit_74_6_unknown01: 1
unit_74_6_unknown02: 6 0 0 3 0
unit_74_6_unknown03: 13 -1 -1 -1 -1 -1 -1
unit_74_6_unknown04: 0 0
unit_74_6_unknown05: 1
unit_74_6_unknown06: 0
unit_74_6_unknown07: 0
unit_74_6_unknown08: 0 0 0 0 0 0 1 0 0
unit_74_6_graphics: -1 -1 -1 -1 -1 -1
3. 现在,你应该关闭“units.txt”并打开“text”文件夹下另一个文件-“civ0units.txt”。在此文件中,你必须再次复制另外一些行到“patches.txt”,这时它们是以“civ_0_unit_[基础单位的单位编号]_”开头的。在这个例子中,你需要的行如下:
civ_0_unit_74_type: 70
civ_0_unit_74_name_length: 6
civ_0_unit_74_id1: 74
civ_0_unit_74_name_language: 5079
civ_0_unit_74_command_language: 6079
civ_0_unit_74_class: 6
civ_0_unit_74_graphic_stand01: 1102
civ_0_unit_74_graphic_stand02: -1
civ_0_unit_74_graphic_die01: 1099
civ_0_unit_74_graphic_die02: -1
...
civ_0_unit_74_attack_missile_duplication_amount01: 1
civ_0_unit_74_attack_missile_duplication_amount02: 1
civ_0_unit_74_attack_missile_duplication_unknown01: 1 1 1
civ_0_unit_74_attack_missile_duplication_unit: -1
civ_0_unit_74_attack_missile_duplication_graphic: -1
civ_0_unit_74_unknown35_12: 0
civ_0_unit_74_displayed_pierce_armour: 1
如你所见,这些也是单位不同的能力的数据。如果不想仅仅复制一个现有的单位,而是创建一个新单位,你应该修改它们。你可以参考帝国时代Ⅱ-征服者的单位结构的最新研究文章来了解如何修改这些数据,或者使用GeniEd2在稍后做这项工作。(译者注:使用GeniEd2修改时,不要忘记使用“复制到所有文明”功能,否则其他文明的此单位能力跟原来的单位能力仍然一样)
4. 在所有复制工作结束之后,你应该做的是回到“patches.txt”的顶端,然后有两种方法:
第一种方法--将所有的“civ_0_”改成“civ_*_”。这会使得包含文字的行变成变量形式的补丁。(译者注:亦即程序会自动以相同的数据覆盖从“civ_0_”到“civ_18_”为止的部份,相当于GeniEd2的“复制到所有文明”功能,可惜此功能还未完善,如果这样操作,会使得下面的第8步进行的速度变得非常慢。所以推荐还是辛苦一点,用第二种方法,虽较麻烦,但之后的速度会快很多。)
第二种方法--如果你不想使用变量形式的补丁,复制所有以“civ_0_”开头的行18次,然后将其每一个副本的“civ_0_”分别一一改成从“civ_1_”到“civ_18_”。(译者推荐:先将所有的“civ_0_”改成“civ_*_”,然后复制,再粘贴时,每粘贴一次副本就用替换功能将“civ_*_”替换成对应的数字(从“civ_1_”到“civ_18_”)。这样就不需要一一改,也不容易出错。)
5. 此外,你需要知道你的新单位的单位编号是多少。既然在默认的游戏数据库中,只有866个单位,最先的新单位应该是第867个,于是它的单位编号就是866。随后,回到“patches.txt”的顶端,将所有的“_[基础单位的编号]_”替换成“[新单位的编号]_”。在民兵的例子中,这将需要把所有的“_74_”替换成“_866_”。(译者注:除此之外,要查找“id1:”、“id2: ” 、“id3: ”将后面的数字也改成新单位的编号。)
6. 之后,开始要做复制、编辑和替换之外的事了。你必须将以下几行输入“patches.txt”之中:
unit_count: [866 + 新单位的数量]
civ_*_unit_count: [866 +新单位的数量]
civ_*_pointer_[第1个新单位的单位编号]: 37822640(或任意比0大的数)
civ_*_pointer_[第2个新单位的单位编号(如果有的话)]: 37822640(或任意比0大的数)
...
如果你只想加入一种新单位,以下是你应该插入“patches.txt” 的内容(37822640可替换成任意比0大的数):
unit_count: 867
civ_*_unit_count: 867
civ_*_pointer_866: 37822640
如果你想加入两种新单位,以下是你应该插入“patches.txt” 的内容(37822640可替换成任意比0大的数):
unit_count: 868
civ_*_unit_count: 868
civ_*_pointer_866: 37822640
civ_*_pointer_867: 37822640
……等等。
7. 这是一个可选的步骤,只是为了使得新单位能够在建筑中被训练。为了能够如此,你需要通过在“patches.txt”中插入下面几行,建立新的科技作用效果部份和新的科技研究部份:
techage_count: [514 + 可被训练的新单位的数量]
research_count: [460 +可被训练的新单位的数量]
techage_[513 + 1(代表第一个可被训练的新单位)]_name: CHUN4
techage_[513 + 1(代表第一个可被训练的新单位)]_count: 1
techage_[513 + 1(代表第一个可被训练的新单位)]_0_type: 2
techage_[513 + 1(代表第一个可被训练的新单位)]_0_unit: _[第一个可被训练的新单位的单位编号]
techage_[513 + 1(代表第一个可被训练的新单位)]_0_class: 1
techage_[513 + 1(代表第一个可被训练的新单位)]_0_attribute: -1
techage_[513 + 1(代表第一个可被训练的新单位)]_0_amount: 0
research_[459 + 1(代表第一个可被训练的新单位)]_required_tech: -1 -1 -1 -1 -1 -1
research_[459 + 1(代表第一个可被训练的新单位)]_cost1_type: -1
research_[459 + 1(代表第一个可被训练的新单位)]_cost1_amount: 0
research_[459 + 1(代表第一个可被训练的新单位)]_cost1_used: 0
research_[459 + 1(代表第一个可被训练的新单位)]_cost2_type: -1
research_[459 + 1(代表第一个可被训练的新单位)]_cost2_amount: 0
research_[459 + 1(代表第一个可被训练的新单位)]_cost2_used: 0
research_[459 + 1(代表第一个可被训练的新单位)]_cost3_type: -1
research_[459 + 1(代表第一个可被训练的新单位)]_cost3_amount: 0
research_[459 + 1(代表第一个可被训练的新单位)]_cost3_used: 0
research_[459 + 1(代表第一个可被训练的新单位)]_required_tech_amount: 0
research_[459 + 1(代表第一个可被训练的新单位)]_civ: -1 0
research_[459 + 1(代表第一个可被训练的新单位)]_location: -1
research_[459 + 1(代表第一个可被训练的新单位)]_description: 7000
research_[459 + 1(代表第一个可被训练的新单位)]_help: 8000
research_[459 + 1(代表第一个可被训练的新单位)]_time: 0
research_[459 + 1(代表第一个可被训练的新单位)]_effect: [513 + 1(代表第一个可被训练的单位)]
research_[459 + 1(代表第一个可被训练的新单位)]_unknown01: 0
research_[459 + 1(代表第一个可被训练的新单位)]_icon: -1
research_[459 + 1(代表第一个可被训练的新单位)]_button: 0
research_[459 + 1(代表第一个可被训练的新单位)]_pointer: 107000 157000 -1
research_[459 + 1(代表第一个可被训练的新单位)]_name1_length: 0
research_[459 + 1(代表第一个可被训练的新单位)]_name1:
techage_[513 + 2(代表第二个可被训练的新单位)]_name: CHUN4
...
继续上面的例子,需要添加的内容是:
techage_count: 515
research_count: 461
techage_514_name: CHUN4
techage_514_count: 1
techage_514_0_type: 2
techage_514_0_unit: 866
techage_514_0_class: 1
techage_514_0_attribute: -1
techage_514_0_amount: 0
research_460_required_tech: -1 -1 -1 -1 -1 -1
research_460_cost1_type: -1
research_460_cost1_amount: 0
research_460_cost1_used: 0
research_460_cost2_type: -1
research_460_cost2_amount: 0
research_460_cost2_used: 0
research_460_cost3_type: -1
research_460_cost3_amount: 0
research_460_cost3_used: 0
research_460_required_tech_amount: 0
research_460_civ: -1 0
research_460_location: -1
research_460_description: 7000
research_460_help: 8000
research_460_time: 0
research_460_effect: 514
research_460_unknown01: 0
research_460_icon: -1
research_460_button: 0
research_460_pointer: 107000 157000 -1
research_460_name1_length: 0
research_460_name1:
你也可以参考其他文章来学习如何修改科技作用效果部份和科技研究部份,例如“Altering a Techage Slot”、“Modifying a Research Slot”以及“Adding a Technology”。
8. 最后一个步骤是回到GeniEd,让程序重新读取数据(执行“Read data”)(译者注:如果你刚才照指示没有关闭GeniEd的话,那么就不用再重读了),然后让它使用“patches.txt”中的内容建立新的数据文件(执行“Create new genie file”)。
(译者注:如果刚才是用“_*_”形式的变量补丁,那么此时速度会非常慢,再建议一次用第二种方法修改;生成的文件名一般是ged_data文件夹下的newgenie.dat。最后,别忘了用GeniEd2打开新的数据库,修改单位能力后再改名覆盖原来游戏的数据库!) 翻译--小霖 |