所有战役中的起始状态都有其保存的地方,根据本游戏文件系统的设计,我们研究发现,游戏所受文件限制的优先级有一定的顺序,最基本也是最低级的文件规范为原始数据,其上有可调节自定义约束文件,最后还有具体到每张地图的实用性调整文件。我们会在近期分别根据这三类文件作出分析。现在先来谈一谈对于战役起始状态的修改。
其实很简单,所有战役的起始状态存放于data.pak\Campaigns\下面,C1.xdb C2.xdb C3.xdb C4.xdb C5.xdb C6.xdb这六个文件分别对应六个战役,打开任意一个,我们可以看到下面这样的标签们(以C1为例):
<?xml version="1.0" encoding="UTF-8"?> ///文件开头
<Campaign ObjectRecordID="1000011"> ///ObjectRecord编号
<InternalName>C1</InternalName> ///内部名称
<NameFileRef href="C1/Name.txt"/>
<FullNameFileRef href="C1/FullName.txt"/>
<NameCommentFileRef href="C1/NameComment.txt"/> ///战役说明名称等文档位置
<DependentCampaigns/> ///要求先完成哪个战役才可以进行本战役,比如C2中这里写的就是C1,通过修改这个可以提前玩儿后面战役
<Missions>
<Item> ///战役第一张地图
<NameFileRef href="C1/C1M1/Name.txt"/>
<NameCommentFileRef href="C1/C1M1/NameComment.txt"/>
<MissionMap href="/Maps/Scenario/C1M1/C1M1.xdb#xpointer(/AdvMapDesc)"/> ///地图的文本信息和位置
<Bonuses/> ///这里写的将是战役开始的奖励,稍后在下面会有分析
<HeroesPool>
<Count>1</Count> ///战役中我方起始英雄数量
<Heroes>
<Item>
<HeroScriptName>Isabell</HeroScriptName>
<TargetCampaign/>
<TargetMission>1</TargetMission>
</Item>
</Heroes>
</HeroesPool>
</Item>
<Item> ///战役第二张地图,下同。 首先了解了这样的写法,我们就能看懂这种文件了,下面开始解析<Bonuses/>标签(接上文件,以第二张地图为例,请大家对照来看): <Bonuses>
<Item> ///第一项奖励
<Target> ///奖励是否有针对性,也就是说比如宝物,比如有两个英雄,到底给谁?
<Hero/>
</Target>
<Type>E_BONUS_RESOURCE</Type> ///奖励类型,宝物,资源,法术,建筑还是兵
<BonusArmy> ///如果是兵,什么兵?多少?
<Creature>CREATURE_UNKNOWN</Creature>
<Count>0</Count>
</BonusArmy>
<BonusArtifactID>ARTIFACT_NONE</BonusArtifactID> ///如果是宝物,是什么?
<BonusResources> ///如果是资源,多少?
<Wood>0</Wood>
<Ore>0</Ore>
<Mercury>0</Mercury>
<Crystal>0</Crystal>
<Sulfur>0</Sulfur>
<Gem>0</Gem>
<Gold>900</Gold>
</BonusResources>
<BonusSpellID>SPELL_NONE</BonusSpellID> ///如果是法术,什么法术?
<Building>TB_TOWN_HALL</Building> ///如果是建筑,什么建筑?
</Item>
<Item> ///第二项奖励开始,下同 我们如果想要修改初始的奖励,首先要修改奖励的类型,一共五种:
<Type>E_BONUS_NONE</Type> ///无奖励
<Type>E_BONUS_ARTIFACT</Type> ///宝物
<Type>E_BONUS_CREATURE</Type> ///士兵
<Type>E_BONUS_RESOURCE</Type> ///资源
<Type>E_BONUS_SPELL</Type> ///魔法
<Type>E_BONUS_BUILDING</Type> ///建筑
然后修改相应的项目,宝物的格式就把宝物的名字直接写进<BonusArtifactID>ARTIFACT_NONE</BonusArtifactID>去就好了,士兵和数量也一样,资源只要修改数量就好了,法术建筑等也类似,所有这些需要填写的内容,都可以到data.pak\types.xml这个文件中去查
<Campaign ObjectRecordID="1000011"> ///ObjectRecord编号
<InternalName>C1</InternalName> ///内部名称
<NameFileRef href="C1/Name.txt"/>
<FullNameFileRef href="C1/FullName.txt"/>
<NameCommentFileRef href="C1/NameComment.txt"/> ///战役说明名称等文档位置
<DependentCampaigns/> ///要求先完成哪个战役才可以进行本战役,比如C2中这里写的就是C1,通过修改这个可以提前玩儿后面战役
<Missions>
<Item> ///战役第一张地图
<NameFileRef href="C1/C1M1/Name.txt"/>
<NameCommentFileRef href="C1/C1M1/NameComment.txt"/>
<MissionMap href="/Maps/Scenario/C1M1/C1M1.xdb#xpointer(/AdvMapDesc)"/> ///地图的文本信息和位置
<Bonuses/> ///这里写的将是战役开始的奖励,稍后在下面会有分析
<HeroesPool>
<Count>1</Count> ///战役中我方起始英雄数量
<Heroes>
<Item>
<HeroScriptName>Isabell</HeroScriptName>
<TargetCampaign/>
<TargetMission>1</TargetMission>
</Item>
</Heroes>
</HeroesPool>
</Item>
<Item> ///战役第二张地图,下同。 首先了解了这样的写法,我们就能看懂这种文件了,下面开始解析<Bonuses/>标签(接上文件,以第二张地图为例,请大家对照来看): <Bonuses>
<Item> ///第一项奖励
<Target> ///奖励是否有针对性,也就是说比如宝物,比如有两个英雄,到底给谁?
<Hero/>
</Target>
<Type>E_BONUS_RESOURCE</Type> ///奖励类型,宝物,资源,法术,建筑还是兵
<BonusArmy> ///如果是兵,什么兵?多少?
<Creature>CREATURE_UNKNOWN</Creature>
<Count>0</Count>
</BonusArmy>
<BonusArtifactID>ARTIFACT_NONE</BonusArtifactID> ///如果是宝物,是什么?
<BonusResources> ///如果是资源,多少?
<Wood>0</Wood>
<Ore>0</Ore>
<Mercury>0</Mercury>
<Crystal>0</Crystal>
<Sulfur>0</Sulfur>
<Gem>0</Gem>
<Gold>900</Gold>
</BonusResources>
<BonusSpellID>SPELL_NONE</BonusSpellID> ///如果是法术,什么法术?
<Building>TB_TOWN_HALL</Building> ///如果是建筑,什么建筑?
</Item>
<Item> ///第二项奖励开始,下同 我们如果想要修改初始的奖励,首先要修改奖励的类型,一共五种:
<Type>E_BONUS_NONE</Type> ///无奖励
<Type>E_BONUS_ARTIFACT</Type> ///宝物
<Type>E_BONUS_CREATURE</Type> ///士兵
<Type>E_BONUS_RESOURCE</Type> ///资源
<Type>E_BONUS_SPELL</Type> ///魔法
<Type>E_BONUS_BUILDING</Type> ///建筑
然后修改相应的项目,宝物的格式就把宝物的名字直接写进<BonusArtifactID>ARTIFACT_NONE</BonusArtifactID>去就好了,士兵和数量也一样,资源只要修改数量就好了,法术建筑等也类似,所有这些需要填写的内容,都可以到data.pak\types.xml这个文件中去查