搜档网
当前位置:搜档网 › 最全的中世纪2-教你添加新兵种

最全的中世纪2-教你添加新兵种

游侠会员:sagius<原创>

声明:
1. 这篇帖子的内容将涉及一些未经格式化的文件,对此的修改将十分繁琐。对修改兴趣不大的朋友,请参阅jyh4nt的相关论题:
https://www.sodocs.net/doc/0d3292995.html,/thread-1324097-1-1.html
2. 后面涉及的内容并非我的原创。国外的论坛上对此已有很深入的讨论。这里只是一些归纳和自己的感想。下面列出本文所参考的国外论坛里的帖子:
https://www.sodocs.net/doc/0d3292995.html,/vb/showthread.php?t=75706
https://www.sodocs.net/doc/0d3292995.html,/forums/showthread.php?t=77323
3. 所有将提到的修改,都作了测试并通过。在本文的最后,有测试修改后的文件下载,可供参考
4. 因为不会贴图,所以在最后附加了所有内容的Word档可以下载,更加清晰明了

好了,我想,现在留下的都是有足够耐心,喜爱修改,甚至多过玩游戏本身的家伙们了。修改本身就是创造,所以,有一些东西,不弄清楚是不行的。中2发行已经很久了,但对于怎样添加新的部队,还是没有统一的解决方法。这里要讨论和实现的,是以下几点:
1. 添加新的部队
2. 为新加的部队挑选一个兵种贴图,可以是游戏里的任意一种,或是自己做的贴图
3. 为这个部队挑选游戏中显示的兵牌,和部队介绍中显示的图案
4. 为这个部队取一个名字,并且定义其兵种介绍(分为简单介绍和详细介绍)
5. 修改建筑文件,使新部队可以在战役任务中被生产

之前在“添加兵种并显示其正常贴图”一文中,用了哥特下马骑士的例子。后来发现,这并不是一个很好的例子,因为把马的因素忽略了。东方国家是没有披甲马的,所以如果有人把Lancers改给土耳其,马就看不见了。所以,在这个帖子里用的是Lancers的例子——不是一般的Lancers,而是骑着骆驼的Lancers。并且把这个部队给了葡萄牙(既没有骆驼兵,也没有Lancers)。下面是效果图:

好,现在就开始一步一步修改..

1.添加新的部队
这个是老生常谈,用任何一种文本编辑器打开游戏目录 data\export_descr_unit.txt 这个文件,搜索Lancers一词,找到其兵种描述的一段,复制下来。紧接着这一段,空两行,在每个空行上打两个空格,粘贴刚才复制的文字。修改其中的type, dictionary 和 ownship 这三项,最后的结果如下:

type Camel Lancers
dictionary Camel_Lancers ; Lancers
category cavalry
class heavy
voice_type Heavy
banner faction main_cavalry
banner holy crusade_cavalry
soldier Lancers, 32, 0, 1
mount camel
mount_effect elephant -4, camel -4
attributes sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge, knight
formation 2, 4.4, 3, 6, 2, square, wedge
stat_health 1, 0
stat_pri 13, 4, no, 0, 0, melee, melee_blade, piercing, spear, 0, 0.7
;stat_pri_ex 0, 0, 0
stat_pri_attr no
stat_se

c 14, 0, no, 0, 0, melee, melee_blade, piercing, sword, 0, 0.7
;stat_sec_ex 0, 0, 0
stat_sec_attr no
stat_pri_armour 10, 6, 0, metal
;stat_armour_ex 10, 11, 12, 0, 6, 0, 0, metal
stat_sec_armour 0, 0, flesh
stat_heat 6
stat_ground 0, -2, -4, 0
stat_mental 11, impetuous, trained
stat_charge_dist 45
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 1130, 410, 130, 100, 1130, 4, 230
armour_ug_levels 5, 6, 6
armour_ug_models Lancers, Lancers, Lancers
ownership portugal
era 2 portugal
;unit_info 13, 0, 16

保存并退出
2.贴图部分
这里可能是最难的部分了。对于这部分我还会专门写帖子来讨论。
游戏目录下data\unit_models\battle_models.modeldb 这个文件是用来指定贴图的,可以用文本编辑器打开。因为没有格式化的关系,很多人看到眼花,改了一下,不成功就放弃了。让我们再来看一看这个让人头痛的文件吧,这次或许有收获。
我们搜索Lancers这个兵种,可以看到以下一段:

7 lancers 1 4 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500 55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400 1 6 france 80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture 80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture 40 unit_sprites/france_Gendarmes_sprite.spr 1 6 france 59 unit_models/AttachmentSets/Final Heater_france_diff.texture 59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0 1 5 Horse 13 MTW2_HR_Lance 18 MTW2_HR_Non_Shield 1 21 MTW2_HR_Lance_Primary 1 18 MTW2_Sword_Primary 16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002

这个属于比较短的,应为只有法国可以造Lancers。根本没有办法看,不是吗。其实,这个不是给人看的,而是给机器看的。每次载入游戏的时候,都要读这个文件,因此格式至关重要。那么,有没有办法让机器和人都看得清楚呢?嗯,是有的,不过先要有几个原则:

1.所有代表字符长度的数字,必须和其后的字符在同一行中
2.所有格式中的空格,都要保留
3.否则,你连开始画面都没有看到,就会跳出(这个倒方便了测试)

好,我们试着格式化一下上面的这段文字:

[动画部分]
(字符长度 ->)7 lancers(<- 模型名称)
(字符长度 ->)1 4(<- 接下来.mesh文件的个数)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400(<- .m

esh文件名称)
[贴图部分]
(可以用这个盔甲模型的国家数 ->)1
(字符长度 ->)6 france(法国)
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture
(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr(<- 脚本文件名称)
(可以用这个附件模型的国家数 ->)1
(字符长度 ->)6 france(法国)
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0
[武器部分]
(下面关于坐骑描述的行数 ->)1
(坐骑为马 ->)Horse
(字符长度 ->)13 MTW2_HR_Lance(<- 长枪)
(字符长度 ->)18 MTW2_HR_Non_Shield(<- 无盾)
(下面关于武器描述的行数 ->)1
(字符长度 ->)21 MTW2_HR_Lance_Primary(<- 主武器为长枪)
(下面关于武器描述的行数 ->)1
(字符长度 ->)18 MTW2_Sword_Primary(<- 副武器为骑士剑)
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002(<- 位置。作用不明)

这样的格式是不是清楚一点了呢?关键是,这样的格式,电脑也看得懂!!当然,所有原格式中的空格都要保留。如果谁有毅力把battle_models.modeldb整个文件都转成这样的格式,绝对是大功一件。
现在的任务是,让葡萄牙也可以使用Lancers模型。红色是经过变更的地方,蓝色是经过添加的地方,修改如下:

[动画部分]
(字符长度 ->)7 lancers(<- 模型名称)
(字符长度 ->)1 4(<- 接下来.mesh文件的个数)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod0.mesh 121(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod1.mesh 900(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod2.mesh 2500(<- .mesh文件名称)
(字符长度 ->)55 unit_models/_Units/LN_Gothic_RN_Plate/lancers_lod3.mesh 6400(<- .mesh文件名称)
[贴图部分]
(可以用这个盔甲模型的国家数 ->)2
(字符长度 ->)8 portugal(法国)
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture
(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr(<- 脚本文件名称)
(字符长度 ->)6 france(法国)
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_france.texture
(字符长度 ->)80 unit_models/_Units/LN_Gothic_RN_Plate/textures/LN_gothic_RN_plate_normal.texture
(字符长度 ->)40 unit_sprites/france_Gendarmes_sprite.spr(<- 脚本文件名称)
(可以用这个附

件模型的国家数 ->)2
(字符长度 ->)8 portugal(法国)
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0
(字符长度 ->)6 france(法国)
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_diff.texture
(字符长度 ->)59 unit_models/AttachmentSets/Final Heater_france_norm.texture 0
[武器部分]
(下面关于坐骑描述的行数 ->)1
(坐骑为马 ->)Horse
(字符长度 ->)13 MTW2_HR_Lance(<- 长枪)
(字符长度 ->)18 MTW2_HR_Non_Shield(<- 无盾)
(下面关于武器描述的行数 ->)1
(字符长度 ->)21 MTW2_HR_Lance_Primary(<- 主武器为长枪)
(下面关于武器描述的行数 ->)1
(字符长度 ->)18 MTW2_Sword_Primary(<- 副武器为骑士剑)
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002(<- 位置。作用不明)





以上是一整段人马模型引用,每个引用都有相应文件夹,
比如 13 english_knights(自定战役模式兵种模型名称)
60 unit_models/_Units/EN_Pplate_Plate/english_knights_lod0.(自定战役模式兵种采用皮肤),你就得在data/unit_models/EN_Pplate_Plate文件夹里有english_knights_lod0文件.意思是每个引用不能是空的.如果空的,就复制这个文件粘贴到空的里面,文件名要改成自己国家的.格式按空格键,原来2格就2格,一格就一个,仔细点.改好后先进去下游戏看跳不跳,不跳的话可以进行下步,免得等下不知道自己错误在哪.

游戏目录/mods/teutonic/data/export_descr_unit文件.找到你想要更改的兵种.做如下更改:
armour_ug_models English_Knights, English_Knights_ug1(这2个单词眼熟吗?就是前面提起的两个模型名称)
如果你前面成功的话,现在进游戏就可以看见自己势力的兵模了(但是兵牌是农民伯伯),顺便把自己这个兵种属性技能改改.高兴的话按我前面方法可以独家使用.

游戏目录/mods/crusades/data/ui/unit_info/jerusalem/你需要的兵种大图片
游戏目录/mods/crusades/data/ui/units/jerusalem/你需要的兵种小图片

游戏目录/mods/teutonic/data/ui/unit_info/相应国家里
游戏目录/mods/teutonic/data/ui/units/相应国家里
如果你对自己要求很高的话,用软件更改图片颜色为自己势力色.软件推荐:Photoshop CS 8.01




如果理解了以上内容,那么,接下来让葡萄牙可以使用骆驼就成为依样画葫芦了。坐骑的描述在同一文件的一开始。我们搜索camel,得到下面这段:

11 mount_camel
1 4
46 unit_models/Mounts/Camel/mount_camel_lod0.mesh 121
46 unit_models/Mounts/Camel/mount_camel_lod1.mesh 900
46 unit_models/Mounts/Camel/mount_camel_lod2.mesh 2500
46 unit_models/Mounts/Camel/mount_camel_lod3.mesh 10000
4
5 moors
47 unit_model

s/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/moors_Mount_Camel_sprite.spr
5 egypt
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/egypt_Mount_Camel_sprite.spr
5 slave
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/slave_Mount_Camel_sprite.spr
4 merc
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
40 unit_sprites/merc_Mount_Camel_sprite.spr 0
1
5 Horse
8 fs_camel
0 0 0 -1 0 0 0 0 0 0

把它改成:

11 mount_camel
1 4
46 unit_models/Mounts/Camel/mount_camel_lod0.mesh 121
46 unit_models/Mounts/Camel/mount_camel_lod1.mesh 900
46 unit_models/Mounts/Camel/mount_camel_lod2.mesh 2500
46 unit_models/Mounts/Camel/mount_camel_lod3.mesh 10000
5
8 portugal
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/moors_Mount_Camel_sprite.spr
5 moors
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/moors_Mount_Camel_sprite.spr
5 egypt
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/egypt_Mount_Camel_sprite.spr
5 slave
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
41 unit_sprites/slave_Mount_Camel_sprite.spr
4 merc
47 unit_models/Mounts/Camel/textures/camel.texture
54 unit_models/Mounts/Camel/textures/camel_normal.texture
40 unit_sprites/merc_Mount_Camel_sprite.spr 0
1
5 Horse
8 fs_camel
0 0 0 -1 0 0 0 0 0 0

这样,葡萄牙就有骆驼骑了!

注意:
1.建议添加在所有已有国家的前面(这里是把葡萄牙加在法国的前面),这样可以避免出错
2.如果有盔甲升级,也要为所有盔甲等级作如此的添加,否则升级后的部队无法显示。升级后的模型名称是原名称加级别名,如lancers的升级模型是lancers_ug1,lancers_ug2等等(只是举个例子,实际上lancers的盔甲不能升级)
3.不要简单复制上面的代码。要严格按照原格式的空格数,否则游戏跳出

3.兵牌
如果你能坚持看到这里,那么恭喜你,最烦人的操作已经过去,接下来的内容,对你来说绝对是小儿科。
一个兵种拥有两个图片文件,我们以葡萄牙为例:

1.存放在data\ui\units\portugal下的tga文件,是在打仗时列于屏幕底部该兵种的兵牌,文件名和export_descr_unit.txt中该兵种的dictionary要一致
2.存放在data\ui\unit_info\portugal下的tga文件,是当鼠标右击该兵种兵牌所显示的详细信息中的图片,要比兵牌图片

大不少
现在的工作就很简单了。偷懒的话,找到法国文件夹里Lancers的图片,复制到葡萄牙的文件夹里,再把名字分别改为camel_lancers.tga和camel_lancers_info.tga就好了。有特殊爱好的人可以自己修改图片,或者加上一只骆驼会更合适一点…


4.兵种介绍
到现在为止,如果一切顺利的话,我们已经可以看到骑着骆驼的Lancers在自定义战役里一颠一颠的了(我真的一点不觉得他们骑骆驼的样子很好看)。不过当你的鼠标放在他的兵牌上,或者查看他的详细信息的时候,都不会有文字显示。这是应为我们还没有给我们的新兵命名。
这里我们可以不去修改data\export_descr_unit_enums.txt文件,不会有任何问题。我们要关心的实际上是data\text\export_units.txt.strings.bin这个文件。不过,你可能已经猜到了,这又是一个未经格式化的文件(可恶的CA)。为了修改它,你需要strings.bin converter这个程序,你可以在本文的末尾看到他的下载链接。使用它很简单,把文件复制到data\text下,然后执行convert_all.bat。一些未格式化的文件会被转成格式化好的内容,其中就包括export_units.txt.strings.bin转化而成的export_units.txt。我们的目标就是export_units.txt,打开他,在一开始(第二行)插入以下几行:

{Camel_lancers}Camel Lancers
{Camel_lancers_descr}This is the lang introduce text about it
{Camel_lancers_descr_short}This is the short one about it

你可以用任何其他的字段替换{}以后的文字,然后储存退出。你可以再进入游戏看看。

5.修改建筑文件
还差一步就完美了。现在我们要把刚做好的骆驼Lancers放到战役任务中去,使它可以被葡萄要生产出来。这次要修改的文件是export_descr_buildings.txt。搜索找到building core_building,这个是城市的城墙。我们在每一级城墙的capability里面插入:
recruit_pool "Camel Lancers" 4 0.5 4 0 requires factions { Normans, }
四个数字分别代表招募数,补充速度,招募上限,士兵经验值(0到9)。
这样,只要你有城市,这个城市就有“骆驼Lancers”可供招募了。

好了,现在你可以对自己说,“我差不多知道该怎么添加新兵种了。说不定以后可以试着做自己的MOD”。
恭喜你!

最后的注意:
或许是我多嘴了,因为能看到这里的人,应该不会犯这样的错误:你要确认你的修改会起作用。到底是该修改原版data下的文件,还是mod里data下的文件,或者两个data下的文件都有一部分要修改。这要你自己决定。不管如何,你要让你的修改起作用。
















1、type Mamluk Archers
类型 兵种的内部名称,不会在游戏界面显示
2、dictionary Mamluk_Archers ; Mamluk Archers
名称 游戏界面上显示的名字
3、category

cavalry
种类:可分为infantry步兵,cavalry骑兵,siege机械,handler训兽者,ship船只和non_combatant其他人员。
4、class missile
等级:轻装light,重装heavy,投射missile和长矛兵spearmen。
5、voice_type Heavy
兵种使用的声音文件
6、soldier Mamluk_Archers, 32, 0, 1
士兵模式 依次为:
士兵模型使用的名字;
士兵的标准数量;
士兵携带其他物体的数量(猪,狗,大象,两轮战车,机械等);
士兵的碰撞质量,正常为1.0,只限于步兵。
7、mount heavy horse
兵种所携带的物体 战马
此项根据不同的兵种还可以分为:
officer 军官 某些步兵由军官带领,一支部队最多可以有3名军官
ship 海军
engine 机械
animal 不能骑的动物(狗和猪)
mount 坐骑(包括马,骆驼,大象)和战车
8、mount_effect elephant -4, camel -4
战斗中对抗敌人的特殊坐骑时对战斗力的影响。战马对大象时攻击-4,骆驼-4
9、attributes sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge属性 兵种单位所具有的能力,可以有多个,用逗号隔开,具体分为:
sea_faring = can board ships 能上船
hide_forest, hide_improved_forest, hide_long_grass, hide_anywhere = defines where the unit can hide 单位能隐藏的地方:树林,森林,长的草地,任何地方



1、stat_health 1, 0依次为
生命,人的生命值为1,坐骑的生命值为0,0表明要么没有坐骑,要么就是坐骑是马,并不计算生命,像大象,生命值就为15
2、 stat_pri 8, 3, cav_composite_arrow, 120, 25, missile, missile_mechanical,
士兵的主要武器, 如果是远程兵种,远程武器就是主要的 依次为:
攻击力;
冲锋时的攻击加成(突击力);
远程武器类型;
远程武器射击距离;
士兵携带的远程武器数量;
武器类型:melee肉搏, thrown投掷, missile远程(弓箭),siege_missile机械;
技术类型:simple简单,other其他,blade刀刃,archery弓箭或siege机械;
伤害类型:piercing穿刺,blunt钝武器,slashing猛击,fire火烧;
武器撞击的声音:none无,knife小刀,mace铁锤,axe斧头,sword刀剑,spear长矛;
攻击的最小时间间隔;




3、stat_pri_attr no
主要武器属性 依次为:
ap 破甲,只有目标有甲时才计算
bp 穿透身体,指远程武器在上穿第一个人后,是否还对后面的人造成伤害
spear 长矛,对骑兵有加成,对步兵有扣除
long_pike 长枪,只有能组成方阵的步兵使用
short_pike 短枪,只有能组成方阵的步兵使用
prec 只在冲锋前投掷武器
thrown 投掷,指距离比较短的武器
launching 射击,能在空中飞行一段距离
area = 成片攻击,不只是一个人
4、stat_sec 8, 4, no, 0, 0, melee, melee_blade, blunt, mace, 25, 1次要武器:如果是骑兵

、动物、战车,这就是他们的攻击力;如果是远程兵种,这就是他们的肉搏能力;如果是一些特殊的肉搏兵种(长武器的),这就是他们短武器的攻击力,具体同stat_pri
5、stat_sec_attr area, launching, ap
具体同stat_pri_attr
很显然,马穆鲁克弓骑的是破甲属性喽
6、stat_pri_armour 5, 7, 3, metal主要防御 依次为
防御力;防御技巧加成(被射击时无用);盾牌加成(只对来自左边的攻击有效);被撞击发出的声音:身体,皮革,金属
7、stat_sec_armour 0, 0, flesh
次要防御:指动物或战车的防御(骑马的另外计算),具体同stat_pri_armour
8、stat_heat 1
在炎热天气作战时,体力的额外损失(正的越多表示损失越大)
9、stat_ground 0, 1, -6, -1
在不同地形作战的加成(对于攻击力而言): 灌木,沙漠,森林,雪地
10、stat_mental 9, normal, highly_trained
依次为:基本的士气,纪律和训练。纪律分为正常,低纪律,有纪律和狂暴,狂暴的部队有可能不下令就突击。训练决定阵型的整齐程度




11、stat_charge_dist 45
士兵开始突击敌人的距离
12、stat_fire_delay 0
这个没用
13、stat_food 60, 300
同样没用
14stat_cost 1, 900, 210, 120, 95, 900, 4, 220
依次为:招募所需回合数;帝国战役的招募费用;平时的维护费用;升级武器的费用;升级盔甲的费用;自定义战役的招募费用
25、ownership carthage
哪个国家可以使用此单位





中世纪2兵种手册
再去mods/teutonic/data/export_descr_unit文件里,找到Dismounted Ritterbruder 步行精英条顿骑士,把整段兵种属性描述复制在粘贴到原版的data/export_descr_unit里

意思就是 把 条顿悲歌里面的 条顿骑士数据复制在原版 export_descr_unit 里

可是 进游戏直接跳出 我出去 把这段删了 又能进游戏了

所以是 这里出问题

把recruit_priority_offset那一段给删了(无论从四资料片里移植什么兵种到原版,删除此行).


相关主题