快快登录说出你的故事吧~!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 K大叔 于 2022-1-8 00:46 编辑
系列课程索引: 如何编写Zerbu's MOD Constructor(V4)脚本系列课程(三)——条件判断、广播控件 ==========================================================================================
本贴主要介绍条件判断Test Condition Set及其应用思路,然后会顺带说下广播Broadcaster控件的机制。
一、条件判断Test Condition Set
条件判定的应用非常广泛,能灵活运用是成为高手的关键 添加/删除Buff、执行Loot、对话Social Interaction等过程中都可以进行条件判定
下图是条件判定中常用类别的含义: 条件组件中大部分参数项应该是比较好懂的,对游戏比较了解的话,应该会知道意思和如何应用。 这里主要把一些重点概念、坑点做下说明: 1.1首先是“并且”跟“或”的逻辑
先以Buff Test为例: 这个条件的含义是:当前角色(拥有Buff1 或 Buff2)且 不拥有Buff3 且 不拥有Buff4 Whitelist中列出的多个Buff是“或”的关系,只要拥有其中一个就通过; Blacklist中列出的多个Buff需要都不可以拥有,条件才通过; Whitelist和Blacklist之间是“且”的关系,需要Whitelist通过且Blacklist通过,这一项Buff Test才通过。 如果你希望Buff1和Buff2都需要拥有才通过(即“且”的关系),有两种方式:
方式一:
可以添加两个Buff Test,同一个TestCondition Set下多个Component之间是“且”的关系,如下图
方式二:
你也可以用Merged Test Conditions来实现“且”的关系: 其中,Test Condition Set1和Test Condition Set2提前在
中进行添加 Test Condition Set1内容: Test Condition Set2内容:
这两种方式等效,方式二主要是当某些子条件比较通用,可以多次被调用的情况
1.2 Interaction Running Test的坑点 在模拟人生中游玩,几乎就是各种Interaction的组合,通过对角色正在进行的Interaction进行判定,理论上可以实现很多想法。
你可以从这里调用原版游戏中已有的Interaction: 你会发现类别非常丰富。 但是,非常不幸,这里边大部分Interaction Running Test好像都不太好用,至少我在做MOD的过程中没能成功,如果有大佬能找到其中原因,请一定不吝赐教~ 所以当你有很好的想法,在Interaction Test中也找到了对应的条件判定,满心欢喜,但发现没有成功触发,那怎么办? 有一些行为可能可以通过其他方式来实现。 比方说你要做个恋爱365天MOD,经过364天的苦心刁难,小人终于迎来了第365天的终极羞羞挑战:“邀请你的ta一起泡三温暖,趁ta不注意,推倒、XXOO……”
这个挑战的判定条件是“在大浴缸里嘿咻”,在Interaction Running Test中确实可以找到对应行为判定,如图: 但是,如前所述,我没有测试成功
不过这个行为其实在游戏中会产生一个独特的结果,就是 所以通过Buff Test判断是否拥有这个Buff也可以实现效果,在Game Reference搜索你觉着可能的关键词:
这里就抛砖引玉,大家可以继续挖掘风骚的实现方式
1.3 Sim info中is NPC的判定反了,我们在第一课里有说过
==========================================================================================
二、广播Broadcaster
广播Broadcaster的作用是:广播者每间隔Pulse Frequency的游戏时间,向半径Circle Constraint格子范围内的其他SIMS发送指令,广播者将获得BUFF或执行LOOT。 需要注意的点: - Broadcaster是通过Buff调用的;
- 角色1的BUFF1通过Broadcaster广播给角色2添加BUFF2,此时,BUFF2自己的Duration(持续时间)组件不再有效,BUFF2的存亡,取决于BUFF1是否持续对角色2进行广播。我的理解是,假如角色2一直在角色1广播范围内,角色1会每间隔PulseFrequency对角色2进行一次广播,角色2的BUFF2也会获得Pulse Frequency这么长时间的续命,如果这个时候角色2离开了角色1的广播范围,在续命时间结束后,BUFF2就消失了,或者如果角色1的BUFF1被移除,角色2的BUFF2也会相应被移除;
- 如果你希望让被广播者获得的BUFF走自己的Duration(持续时间),不受广播者BUFF影响,那就通过添加LOOT的方式,让LOOT去调用BUFF;
- Circle Constraint的数值不可以过大,默认的6格在有些情况不太够用,有些情景下你甚至可能希望全图的SIMS都能被你广播到,但注意这个数值添过大后会导致广播失效,我用过20是可以的,999是失效的;
- BUFF和LOOT的条件(Test Condition Sets)中,Participant默认留空的情况下,测试的角色主体都是指被广播者,不是广播者;
==========================================================================================
关于SIMS的功能脚本,本人也还在持续学习中,有志同道合的小伙伴可以加我的 QQ:231726237 ,一起学习、一起讨论、有机会一起合作~~
==========================================================================================
|