文明6mod笔记-1.0
关于mod存放路径:
官方mod存在于dlc目录:F:\steam\steamapps\common\Sid Meier's Civilization VI\DLC
新手教程mod存在于场景目录:F:\steam\steamapps\common\Sid Meier's Civilization VI\Base\Assets\Scenarios\Tutorial
玩家mod存在于我的文档My Games:C:\Users\lh\Documents\My Games\Sid Meier's Civilization VI\Mods
订阅的mod:F:\steam\steamapps\workshop\content\289070
关于基础游戏相关信息存放在:F:\steam\steamapps\common\Sid Meier's Civilization VI\Base\Assets\Gameplay\Data
mod的组成:
以阿兹特克为例:
----Aztec_Montezuma
|
|-----Aztec_Montezuma.modinfo
|-----data
|
|----Aztec_Montezuma_ConfigData
|----Aztec_Montezuma_Expansion1.xml
|----Aztec_Montezuma_GameplayData.xml
|----Building_Huey_Teocalli.xml
一个modinfo、4个xml文件
在F:\steam\steamapps\common\Sid Meier's Civilization VI\Base\Assets\Gameplay\Data\Schema\01_GameplaySchema.sql。
文件中定义 了游戏的数据库的各种表,包括有建筑、文明、科技等等,这张表在制作Mod的时 候需要经常查询。
sql的insert用row标签来实现:
<Row Type="BUILDING_AIRPORT" Kind="KING_BUILDING"/>
或者
<Row>
<Type>BUILDING_PUBLIC_SCHOOL</Type>
<Kind>KIND_BUILDING</Kind>
</Row>
小结
以resouces.xml为例,结合01_GameplaySchema.sql进行分析
开始是Types标签,对应sql文件中创建Types这张表,这张表中其中hash字段Integer类型、唯一性字段、默认值为0、并且不能为空


由此可知,一个大标签就是一个建表语句,比如Types。
<Row/>标签相当于insert操作,Row标签中的属性就是对应的字段,属性值就是字段值。
修改update操作:
以小麦为例,小麦资源的值是<Row ResourceType="RESOURCE_WHEAT" YieldType="YIELD_FOOD" YieldChange="1"/>

那么接下来我们查看sql建表语句:

得知我们需要类似这样where ResourceType = “RESOURCE_WHEAT” set YieldChange = "1"的语法
于是我们最好有个例子来借鉴,于是找到阿兹特克文明的Aztec_Montezuma_Expansion1.xml文件,里面有官方的where语句

由于可能一种资源对应两种YieldChange,例如下面,皮毛资源对应了食物和金钱,那么我们在where的时候最好加上YieldType

于是就有了
<where ResourceType="RESOURCE_WHEAT" YieldType="YIELD_FOOD"/> <set> <YieldChange>1</YieldChange> </set>
也可以这样写
<Where ResourceType="RESOURCE_WHEAT" YieldType="YIELD_FOOD"/ > <Set YieldChange="2"/>
删除:
<Delete CivilizationType="CIVILIZATION_AMERICA"/>
或者
<Delete> <CivilizationType>CIVILIZATION_AMERICA</CivilizationType > </Delete>
今天就记到这边
浙公网安备 33010602011771号