前言准备

这次主要运用SQL语言写MOD,只需要掌握SQL添加数据库的方法即可,只有三个英文单词INSERT INTO VALUES

写法示例:

image-20240717135327976

假设这样一个成绩表,要往里面添加学生信息,可以这么写:

1
2
3
INSERT INTO 成绩表 (学号, 姓名, 分数) VALUES
(03, 小华, 95),
(04, 小黑, 100);

以上代码成绩表后面括号是表头用逗号加一个空格隔开,下面括号内是添加的信息,多个信息用逗号隔开,结束这条语句用分号

文明6修改器结结构

比如金字塔可以修改建造者使用次数,那么这个修改器发起者就是金字塔(BUILDING_PYRAMIDS),修改类型是调节建造者的使用次数(MODIFIER_PLAYER_UNITS_ADJUSTER_BUILDER_CHARGES),修改的参数是次数Amount = 1

总结:修改器三步骤:

1.谁要改(谁拥有的修改器)

2.改什么

3.改多少

每一步都对应一个特定的表,只有第二三步是确定的,第一步的表取决于发起者

image-20240717140312939

第一步表中每一个对应修改器:

以纪念碑为例,若要给它加上金字塔的功能

  • 第一步:由于纪念碑是建筑,建筑拥有的修改器要添加到表BuildingModifiers中,这个表的表头分别是BuildingType和ModifierId,前者对应纪念碑本身(BUILDING_MONUMENT),后者是修改器的名字(可以随便取)

  • 第二步:给这个修改器指定一个修改类型,这个表的表头主要是ModifierId和ModifierType,前者是刚刚给修改器取的名字,后者是游戏自带的修改类型

  • 第三步:这个表有三个表头,分别是ModifierId、Name、Value,分别是修改器的名字、修改的参数名、修改的参数值

具体如下:

总结如下:

image-20240717141142459

查找参数以及推荐软件

为了做出更多功能,有必要熟悉游戏中各种自带的修改器,推荐以下软件:

  • https://sqlitestudio.pl 用于查看游戏数据库中的数据,具体操作如下:

    点击工具栏上的Add a database,数据类型选择SQLite 3,文件选择文档\My Games\Sid Meier’s Civilization VI\Cache\DebugGameplay.sqlite,然后点ok

    然后右键选择connect to the database,就有了游戏数据库中的内容

    表头也在其中

    在数据里可以查看到参数名,具体如下(这是刚刚金字塔的参数AMOUNT)

    image-20240717142213801

  • https://www.bilibili.com/read/cv1743674/ B站大佬的MOD辅助工具

    进入自定义修改器

    上面那个纪念碑的例子可以这样用,点击生成即可一键生成代码

    其中的RunOnce等三个选项具体作用如下:

添加约束条件

下图一个是对所有者的约束,一个是对被影响者的约束

修改器的生效条件如下,即一个或以上的子条件必须包含在条件集中才能被传到Modifiers里生效

image-20240717143521118
  • 接下来举例说明

    根据上面的结构图,一个单独的条件有两个步骤

    ①先往Requirements这个表中添加两个内容,其中RequirementId是自己取的名字,RequirementType是游戏自带的的(可以用辅助工具)

    ②第二个表RequirementArguments里面填相对应的参数,同样包含参数名和参数值

    实例的子条件代码如下:

    1
    2
    3
    4
    5
    6
    INSERT INTO Requirements (RequirementId, RequirementType) VALUES
    ("Has_Tech", "REQUIREMENT_PLAYER_HAS_TECHNOLOGY"),
    ("Is_Human", "REQUIREMENT_PLAYER_IS_HUMAN");

    INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES
    ("Has_Tech", "TechnologyType", "TECH_POTTERY")

    接下来打包这两个子条件

    先在RequirementSets表里面创建一个条件集

    1
    2
    INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES
    ("ReqSet", "REQUIREMENTSET_TEST_ALL");

    其中第二项是决定两个子条件是全都符合还是全不符合,具体数值如下:

    然后在RequirementSetRequirements这个表中往里面加入条件集和子条件的名字,把所有子条件集合起来,有多少个子条件就写多少行:

    1
    2
    3
    INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES
    ("ReqSet", "Has_Tech"),
    ("ReqSet", "Is_Human");

    总结代码如下:

    image-20240717145310973

    用B站大佬的工具能节省难度和时间

    先设置条件集的名称

    再加入两个子条件:

    每个条件都取名字、设置类型、设置参数即可

    做好后建议放在Components或者InGame Actions里面,开始游玩后才加载