今天跟大家介绍一下scripted_effects、scripted_guis、scripted_localisation、scripted_triggers这四个文件夹。
以上四个文件夹在游戏中具有重要的作用,一些大型mod通常是依靠他们来加入游戏本身没有的机制和系统。
首先介绍scripted_effects。
scripted_triggers字面意义上是脚本效果,但我一般称呼他为动态效果。此文件的作用是将大量的效果代码综合到一句代码中,在游戏中只需调用一句代码便可完成大量的效果。就如开发程序时,将一部分代码打包设置成子函数,再在主函数中调用。
下面我们以USA大萧条民族精神的更替为例子向大家解析。
USA在游戏开始时会自带一个大萧条的民族精神,而这个民族精神是可以通过国策削弱或移除。
但是当我们打开这个国策的代码时,我们会发现,他的国策代码中并没有替换民族精神的代码(remove_ideas或add_ideas)
那么他是如何做到民族精神的更替呢?很明显,USA_great_depression_level_down的字面意思是大萧条等级下降,而USA_great_depression_level_down = yes这些代码,便是今天所要介绍的scripted_effects。
像USA_great_depression_level_down = yes这种形式的,基本就是属于scripted_effects的。
USA_great_depression_level_down是调用的id,在国策、决议、事件的效果中写上USA_great_depression_level_down= yes就代表着会触发一次USA_great_depression_level_down里面包含的所有代码。
那么USA_great_depression_level_down包含了什么代码吗?我们可以打开scripted_effects看看。
在国策中调用USA_great_depression_level_down= yes语句时,就相当于触发了图片中所有的代码。而这些代码都使用if-limit式语句限制了条件,这段代码意思就是当国家有民族精神great_depression时,触发后用great_depression_2将其替换;有民族精神great_depression_2时,触发后用great_depression_3将其替换;有民族精神great_depression_3时,触发后移除great_depression_3。
custom_effect_tooltip = USA_great_depression_down_tt这一句代码是一个效果文本提示,本地化后显示“降低大萧条的效果”这段文本,实际上无其他效果。
若该国家一个满足条件的民族精神都没有(great_depression_3、great_depression_2、great_depression_1都没有),那么此时触发USA_great_depression_level_down= yes是没有任何效果的。
我们只需要在国策效果中加上USA_great_depression_level_down= yes,便可以得到民族精神替换的效果,而不需每次使用都将图片中一大段代码加上。
使用scripted_effects打包代码可以大大减少开发mod时的工作量,特别是想要实现民族精神更替时(jap军种对立决议中民族精神的变化也是这样设置的)。
当然,笔者这只是用一个简单的例子来介绍原理,scripted_effects在各个mod中仍有更加复杂的运用(配合on_action),但是其原理是不变的。
scripted_triggers。
scripted_triggers的功能与scripted_effects类似,都是打包代码的。不同的是,scripted_effects是将效果代码集合,而scripted_triggers是将条件代码集合,且scripted_triggers是用在visible、allowed、available、if-limit这些地方,用来作条件的。
我们可以直接看代码。
这是fra一个scripted_trigger的代码的截图。其id是FRA_controls_indochina,调用是直接写FRA_controls_indochina= yes 。这个scripted_trigger的意思便是判断671、670、286、741这四个省份是否 都 满足控制者是ROOT 或 控制者是否是ROOT的附庸。(注意都和或的范围。)我们再看看他是怎样调用的。
上图是嵌套在了一个not里面,说明需要判断的条件是与FRA_controls_indochina相反。
今天就介绍到此,明日介绍scripted_guis、scripted_localisation。