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
东西千万不要去抄,你抄的越久,你理解的越低
date: 2022-06-04
editor: Phoenix fight!