十字军之王3(CK3)——MOD教程第一期(从开始到放弃)
红凤高飞
2022年06月04日 01:25

十字军之王(CK3)

--MOD教程第一期

(从开始到放弃)

1.简单了解游戏文件

  • 制作mod常用的几个文件夹

02:13 常用的文件夹

..\common\scripted_effects

..\common\scripted_triggers

..\common\script_values

  • 变量看不懂,可以看这个文件夹里面的代码

02:50

common\effect_localization

这里面都有很多的词条

03:04 add_gold举例

add_gold = 1000 #加一千的金钱

03:39 词条的含义

复制等号右侧的字符串去翻译,

右侧的内容没有被任何文件引用,就是解释内容

first_past = I_GAINED_GOLD_EFFECT=

=我获得了黄金效果(机翻)

词语去搜索汉化文本

2.如何制作mod

04:26 mod怎么去做

要去思考整个mod要怎么做?

这个mod是怎么去生成的?

触发器,他怎么触发来的?

05:04 官方触发器解释文件

..\common\on_action\_on_actions.info

05:51 从头开始讲解文件

UP主:这个.info文件可以直接不用看,它写的再多,对你也不重要了

讲解几个常用的词条

06:20

on_birthday = {

on_actions = {

}

}

这个是绑定在角色上的,是每个人的出生日期,到了ta生日时会触发一次

一年只触发一次,只会在生日那年触发

07:47

on_game_start_after_lobby{

on_actions = {

delay = {}

}

}

开启游戏之后,它会再触发,只触发一次,而且他没有任何的域名,没有关联到任何的东西,他读取的资源是整个游戏的资源,就是后台资源

08:33

on_birthday = {

on_actions = {

A1111

}

}

如果已经关联到了人物character就可以直接写这个 on_actions的意思是说再执行一个的触发方式

比如写个A1111

下面也必须写个A1111

A1111 = {

trigger = { #触发条件 }

effect = { #触发的效果 }

}

09:41

effect={}这里面可以随便写什么效果,如果这个效果不想写在这个里面,要写到common\scripted_effects里面的话

09:55

可以这样写:

effect = {

A2222 = yes

}

10:10

然后在到common\scripted_effects文件里面写上

A2222={

add_gold = 10000

}

10:45 运行原理

它会自动导入到触发器里面,一到生日就会触发A1111

A1111条件满足后,就会触发这个效果,效果A2222就在scripted_effects文件里面

以实现加一万的金钱,这个效果只针对一个人

关于effect里面想写什么内容,可以写if之类的,自己去构思有什么条件

11:35 问题1Q:比如说,我在那个条件我就是想效果写一大堆东西的话,那都是在这个on_actions里面可以顺利执行吗?那我可以全部写在这个里面吗?

A:可以,你如果全部写在这里面直接用A1111这一块就行了

11:52 问题2

Q:那我这一个mod,就这一个on_actions里面也可以吗?

A:只需要这个文件(on_actions)就行

12:11

A:那么你这个A1111想怎么写也可以,包括你A1111下面写个A2345,在A1111={}下面写个A2345={}。都要这样写一次

A2345 = {

trigger = { #触发条件 }

effect = { #触发的效果 }

}

它最终目标都会导入scripted_effects文件里面

你会建立很多文件,怎么连接它,就是靠这个KEY(这里指A1111)关键词,就是说连接到这个on_actions文件来了

13:15

当然你会看到很多人是这样写的

A1111 = {

trigger = { #触发条件 }

effect = {

A2222 = { VALUE = 2 }

}

}

这个属于进阶版内容

13:27

可以看一下这种写法它是怎么生成的

A2222={

add_gold = $VALUE$

}

这个意思就是说,我在A2222里面定义了一个VALUE是等于2,所以这个add_gold获取的是VALUE的数值

14:35

on_actions = {

delay = {}

}

这里面还有一个东西,这个delay意思就是说延迟触发

比如说

A11

delay = { days=30 } # 30天后会触发,

15:00

触发什么呢,在delay前面写个A11

on_actions = {

A11

delay = { days = 30 } # 30天后会触发}

A22

}

也就是说这个A11触发了之后隔了30天,它会触发A22

如果没有delay={}的话,A11和A22会同时触发的,瞬间会把A11和A22都处理掉

15:42

Q:那如果我要A11每隔30天触发一次呢?

A:可以这样写

A11

delay = { monts = 1 }

A11

…………

delay ={ monts = 11 }

A11

这就是一年中每个月都会触发,要写到on_birthday里面

建议大家不要这么写

后面会讲解到循环的

17:48

on_birthday还有一个写法

on_birthday = {

effect = { #可以写条件 }

}

effect这里面可以直接写if条件,直接触发

18:48

然后给大家详细讲下on_game_start_after_lobby={}

它是什么意思,它就是我游戏开局触发,没有人物的情况下,没有人物就要获取人物

如何获取人物:

在common\effect_localization

文件里面搜索一下,这个词条在功能文件里面只用了一次

例如

A11 = {

effect = {

every_living_charactor = {

add_gold = 1000

}

}

}

这个意思是说全局活着的人物加1000的金钱

如果只想给玩家加的话

A11 = {

effect = {

every_living_charactor = {

limit = { is_ai = no }

add_gold = 1000

}

}

}

这样只会影响到玩家一个人

21:33

random_on_actions = {}

这个意思是随机的触发

比如:

random_on_actions = {

100 = A11

200 = A22

}

它的计算方式是:100/(100+200)=0.33333

也就是:

100 = A11 # 有0.33333的概率触发A11

200 = A22 # 有1-0.33333的概率触发A22

它的公式就是A/(A+B)

22:46

如果你要做一个控制的话,比如说

1 = { } #有0.5的概率不触发

1 = A11 #有0.5的概率触发

23:16

first_valid_on_action = { }

比如说

first_valid_on_action = {

A11

A22

A33

}

意思是只触发A11,只触发一个

23:43

用法如下:

在A11处定义

A11 = {

trigger = { age <16 }

}

如果你现在18岁,会触发哪个?

会触发第二个A22

只会执行满足条件后的第一个生效的

可以用来做多种判断效果

(笔者认为有点像编程的switch语句结构)

25:52

总结:

1.介绍下mod应该要怎么做

要有自己的思路

2.认识游戏里面一些重要的常用的文件

比较重要的是

on_actions

effect(已飞衣耶特)

trigger

判断和执行

今天学的是后台触发

尽量不要用原文件的内容,会有冲突的

33:20

官方的文件用的越少,mod兼容性越高,官方的更新与你的mod无关36:26

东西千万不要去抄,你抄的越久,你理解的越低

The end!!!

date: 2022-06-04

editor: Phoenix fight!