Project1

标题: 避免套娃!使用事件系统“条件分歧”指令的小技巧 [打印本页]

作者: SailCat    时间: 2020-6-13 17:15
标题: 避免套娃!使用事件系统“条件分歧”指令的小技巧
本帖最后由 SailCat 于 2020-6-13 17:30 编辑

其实一直想写一下这个FAQ,自己遇到过这样的问题,也被提问过这样的问题,昨天看R叔的考场7解说有感而发,就整理一下吧。

RM的“条件分歧”指令(Conditional branch)是所有RM通用的基础指令,也是非常重要的一个。因为只有有了这个指令,我们才可以在事件执行列表中避开顺序结构,实现分支结构。当然,自带分支结构的指令如“显示选择项”“战斗处理”就不多说了。
但是这个指令的局限性很大,主要原因是,除非使用条件分歧里的脚本,否则一个“条件分歧”指令只能判定一项内容,并且对于除了金钱、步数、计时器以外的其他游戏对象数值性的判断,没有直接接口,只有“变量”这一个选择。
这就要求在使用条件分歧时,不得不用临时变量代入要判断的数值,然后再去判断,本来这也没什么。
但是如果是两个游戏对象数值相比较呢?(用两个变量就是了)
但是如果是两组游戏对象数值相比较呢?比如角色的X、Y,事件的X、Y(用四个变量就是了)
但是如果有多个条件要同时满足呢?
但是如果有多个条件要满足一个呢?
但是如果有多个条件对应多个分支呢?
这些要求都是挺常见的吧,但是如果没有技巧,就很容易写出套娃指令。
套娃指令一个是逻辑不好管理,另一个是套的层数多了以后,缩进多了,在编辑器里显示不完整了,这非常要命。

诚然变量5K个是用不完的,但是变量太多不利用工程管理,而且一个变量用完就扔也很浪费。
因此在这里,介绍一个使用“条件分歧”指令的技巧。说是使用这个指令的技巧,但是其实大部分技巧性内容和“条件分歧”这条指令本身没有任何关系,是使用其他相关指令的技巧为“条件分歧”来服务。
用到的指令主要有:变量操作、标签、标签跳转、中断事件处理
我自己在R7考场中使用了下面技巧中的部分,逐一解说一下:

1. 利用“加法原理”实现多重判断

2. 利用“乘法原理”实现多重判断(多个满足所有)

3. 利用变量复用技巧减少变量的使用数目

4. 卫语句处理,减少缩进

5. 多标签实现switch-case型判断(多分支)


好了,以上就是给大家分享的事件系统中使用“条件分歧”指令的小技巧,希望有用。

作者: 阵颜    时间: 2020-6-13 18:05
来学习了
作者: 喵呜喵5    时间: 2020-6-13 23:44


我直接写了个脚本来处理嵌套地狱……

https://rpg.blue/home.php?mod=sp ... o=blog&id=13466
作者: 89444640    时间: 2020-6-14 08:51
1、2加朝向那个,现在是明白,撂爪就忘ORZ
3判断坐标我还真是4个一起ORZ,不过由于xp是先有坐标变化后有位移,模拟动作游戏的感觉极差,敌人没碰到就掉血,按照周围坐标来判断,敌人大小又不是矩形,无法做像素级别判断,所以放弃了。
4的住宿就是,分歧套很长,每次找都麻烦,以后换这个方法了,写好的就不折腾了。
5的那个根据变量去分歧,确实是好方法,菜刀给我的也是这个方法,把以前很多一两句话的公用事件,放在一起了。这样所有的道具调用公用事件全在这里,找起来方便多了

作者: Six_Fish    时间: 2020-6-14 11:31
使用条件分歧避免套娃是怎么回事?条件分歧相信大家都很熟悉了,但是使用条件分歧避免套娃是怎么回事?下面就让小编带大家了解一下吧。使用条件分歧避免套娃,其实就是利用“加法”“乘法”原理实现多重判断、变量复用减少变量数目、卫语句减少缩进、多标签实现switch-case型判断的技巧,大家可能很惊讶,小编也非常惊讶呢。这就是关于使用条件分歧避免套娃的事情了,大家有什么想法呢,欢迎和小编一起讨论哦!
-
咳咳,开个玩笑
其实现在一看到,发现技巧都是会的,在很多地方看过,甚至标签跳转大法还是自己无师自通的
然鹅一转头这些都给忘了,一看就会一做就废好像就是用来形容我的
果然基本功不行,用得多不至于忘的,是自己过于怠惰了
总之赞美猫姐,然后对自己说声加油吧…
作者: enghao_lim    时间: 2020-6-14 14:06
虽然自个儿用不上不过这个对很多新手中新手帮助很大,顶上去。
作者: MCCF    时间: 2020-6-14 15:16
是真大佬!
(虽然我坑麻烦的流程都丢给脚本了23333
作者: 涅炎    时间: 2020-6-14 21:31
感谢分享!这是通过做工程的积累才能获得的可贵经验了。
作者: miantouchi    时间: 2020-6-14 22:44
哈哈,新手的想法是,眼睁睁看着大家套娃,看着也不得劲的样子,确无力反抗,只能用这套娃,因为不会别的!
这下好了,列出了这么多办法,如果以后遇到类似情况,应定要试试上面的方法!
作者: 939034448    时间: 2021-7-20 22:51
判断某人和npc是否在一起那里为啥要乘512呀,如果判断标准是x,y坐标都相同的话,那不乘不是也可以得到相同的结果嘛
作者: enghao_lim    时间: 2021-7-22 00:08
939034448 发表于 2021-7-20 22:51
判断某人和npc是否在一起那里为啥要乘512呀,如果判断标准是x,y坐标都相同的话,那不乘不是也可以得到相同 ...


XY是二维,所以必须区分,如果角色在0,1而事件在1,0,由于没有维度纯加减会导致0-1+1-0=0,判定为同坐标而实际不同。而乘与任意大过500(LZ写了地图最大500*500)数目都能够区分。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1