Project1

标题: 关于公共事件分歧条件的问题 [打印本页]

作者: 阿步abu    时间: 2021-1-10 19:37
标题: 关于公共事件分歧条件的问题
一个技能、触发公共事件
公共事件是判断变量是否满足,希望达到的效果是,如果变量ABC>1,则触发技能A,如果变量AB&BC>1,则触发技能B,如果变量A&B&C只有一种>1,则触发技能C,都<1,则触发技能D
现在的写法是:
如果变量A>0
如果变量B>0
  如果变量C>0
   强制战斗行动:主角,技能A
  结束
结束
否则
如果变量B>0
  如果变量A>0
   强制战斗行动:主角,技能B
  否则
   强制战斗行动:主角,技能C
  结束
否则
  如果变量A>0
   如果变量C>0
    强制战斗行动:主角,技能B
   否则
    强制战斗行动:主角,技能C
   结束
  否则
   如果变量C>0
    如果变量B>0
     强制战斗行动:主角,技能B
    否则
     强制战斗行动:主角,技能C
    结束
   否则
  强制战斗行动:主角,技能D
  结束
结束
结束
现在的情况是,什么都不会发生……

作者: soulsaga    时间: 2021-1-10 19:45
本帖最后由 soulsaga 于 2021-1-10 20:23 编辑

看了一下.好像逻辑没理对呢

一个技能、触发公共事件
公共事件是判断变量是否满足,希望达到的效果是,如果变量ABC>1,则触发技能A,如果变量AB&BC>1,则触发技能B,如果变量A&B&C只有一种>1,则触发技能C,都<1,则触发技能D
如果变量A>0
如果变量B>0
  如果变量C>0
   强制战斗行动:主角,技能A
中断事件
  结束
结束
结束
如果变量B>0
  如果变量A>0
   强制战斗行动:主角,技能B
  中断事件
  结束
结束
  如果变量B>0
   如果变量C>0
    强制战斗行动:主角,技能B
   中断事件
   结束
  结束
如果变量A>0
如果变量B==0
  如果变量C==0
   强制战斗行动:主角,技能C
中断事件
  结束
结束
结束
如果变量A==0
如果变量B>0
  如果变量C==0
   强制战斗行动:主角,技能C
中断事件
  结束
结束
结束
如果变量A==0
如果变量B==0
  如果变量C>0
   强制战斗行动:主角,技能C
中断事件
  结束
结束
结束
  强制战斗行动:主角,技能D

还有..>1跟>0是不同的..别搞到我这么混乱..
作者: soulsaga    时间: 2021-1-10 19:53
不小心连帖.求删
作者: 阿步abu    时间: 2021-1-11 09:33
soulsaga 发表于 2021-1-10 19:45
看了一下.好像逻辑没理对呢

一个技能、触发公共事件

那个==0是啥意思?>1和>0不同我知道啊,然后你写的我也没看明白啊……
你的意思是单单量判断时,需要先判断另两个变量为0?
那在逻辑里不做另外2个的判断不是一样的吗?
作者: soulsaga    时间: 2021-1-11 12:14
阿步abu 发表于 2021-1-11 09:33
那个==0是啥意思?>1和>0不同我知道啊,然后你写的我也没看明白啊……
你的意思是单单量判断时,需要先 ...

你不做另外两个的判断那不管是0还是1都符合了..
作者: tseyik    时间: 2021-1-11 14:21
本帖最后由 tseyik 于 2021-1-11 14:38 编辑


X=0
X=X+(A>0)*1
X=X+(B>0)*2
X=X+(C>0)*3
如果变量ABC都是>1,那X會6
若如果变量A&B&C只有一种>1,那X是1/2/3
都<1,那X會是0
但变量AB&BC>1,X會3或5,AB>1會和C>0一様
為了避免這樣把X=X+(C>0)*3改成X=X+(C>0)*2.5

X=0
X=X+(A>0)*1
X=X+(B>0)*2
X=X+(C>0)*2.5
如果变量ABC都是>1,那X會5.5
若如果变量A&B&C只有一种>1,那X是1/2/2.5
都<1,那X會是0
变量AB&BC>1,X會3或4.5
最後就可用X判断
X=0,ABC都不成立,
X>0&X<3就是变量ABC只有一种成立
X=3&X<4.5,变量AB&BC其中一种成立(AC成立是3.5,也包括了)
X=5.5,变量ABC都成立
作者: 阿步abu    时间: 2021-1-11 18:46
soulsaga 发表于 2021-1-11 12:14
你不做另外两个的判断那不管是0还是1都符合了..

写错了,都>0就好……
作者: 阿步abu    时间: 2021-1-11 18:52
tseyik 发表于 2021-1-11 14:21

X=0
X=X+(A>0)*1

大佬……那个……
公共事件里怎么写公式……?
而且公式成立之后……技能的触发要怎么挂啊……?
=。。= 我需要在游戏进程中通过操作来叠加ABC这3种变量……当变量>0时有效,但>0并不是要=1呃……也可能在变量等于100之后再触发该技能……
作者: 阿步abu    时间: 2021-1-15 18:27
……OK,还是我自己搞定了……遇到多分歧的时候,拿出纸笔就好了……
这个问题中,涉及到3种变量,共8种不同的分歧结果,变量分别为ABC
如果A>0——No.1
  如果B>0——No.2
    如果C>0——No.3
      强制发生战斗(或所需效果)//这里=ABC同时生效的技能或情况——结果1
    否则//(这里=AB>0,但C≯0)——No.3
      强制发生战斗(或所需效果)//这里=AB同时生效的技能或情况——结果2
    结束——No.3
  否则//这里=(A>0,但BC≯0)——No.2
    强制强制发生战斗(或所需效果)//这里=A生效的技能或情况——结果3
  结束——No.2
否则——No.1
  如果B>0——No.4
    如果C>0——No.5
      强制强制发生战斗(或所需效果)//这里=BC同时生效的技能或情况——结果4
    否则//这里=(B>0,但C≯0)——No.5
      强制发生战斗(或所需效果)//这里=B生效的技能或情况——结果5
    结束——No.5
  否则//这里=(B≯0)——No.4
    如果C>0——No.6
      如果A>0——No.7
        强制强制发生战斗(或所需效果)//这里=AC同时生效的技能或情况——结果6
      否则//这里=C>0,但A≯0)——No.7
        强制强制发生战斗(或所需效果)//这里=C生效的技能或情况——结果7
      结束——No.7
    否则//这里=(C≯0)——No.6
      强制强制发生战斗(或所需效果)//这里=ABC都不生效时触发的技能或情况——结果8
    结束——No.6
  结束——No.4
结束——No.1
这样标一下数字来梳理不同变量的对应关系就可以轻松的控制触发方向和条件了

希望对做多分歧的小伙伴有所帮助
作者: KB.Driver    时间: 2021-1-15 20:43
本帖最后由 KB.Driver 于 2021-1-15 20:45 编辑
阿步abu 发表于 2021-1-15 18:27
……OK,还是我自己搞定了……遇到多分歧的时候,拿出纸笔就好了……
这个问题中,涉及到3种变量,共8种不 ...


这样虽然你现在理清楚了,后续维护的人可就头疼了。
条件复杂的情况下,尽量做到扁平化

用脚本的话方法就很多了,但是对于纯事件,一个技巧就是“合理控制流程、减少条件嵌套”


如果 A > 0
  如果 B > 0
    如果C > 0
      // 结果1 必要时可在里面最后一句加上"中止事件处理"用于防止后面的代码被误触发
    结束
  结束
结束

如果 A > 0
  如果 B > 0
    如果C < 0
      // 结果2
    结束
  结束
结束

像这样罗列,虽然总体长度增加,但是每一种结果都能看得很清楚。
作者: 阿步abu    时间: 2021-1-16 08:50
KB.Driver 发表于 2021-1-15 20:43
这样虽然你现在理清楚了,后续维护的人可就头疼了。
条件复杂的情况下,尽量做到扁平化

逐条罗列是可以依序判定触发的吗?我等会试一下再回来回复你……
然后就是为了不使用脚本才这样的……
作者: 阿步abu    时间: 2021-1-16 10:58
KB.Driver 发表于 2021-1-15 20:43
这样虽然你现在理清楚了,后续维护的人可就头疼了。
条件复杂的情况下,尽量做到扁平化

确实有效呃……
算是学习到了……
不过在写代码逻辑的时候,你这样会显得很笨……会增加后台读取时间……如果你之后从事程序开发行业的话,会明白的……
作者: KB.Driver    时间: 2021-1-16 13:24
阿步abu 发表于 2021-1-16 10:58
确实有效呃……
算是学习到了……
不过在写代码逻辑的时候,你这样会显得很笨……会增加后台读 ...

对于一个多人合作的项目来说,读代码的时间往往是写代码的2倍以上。
怎么写得让读的人容易看懂,比写得效率高但不易看懂要更重要。
人不是神,写的越多错的越多,如果错了回头排查的时候看不懂,会消耗更多的时间。
相比之下,一两条指令带来的读取时间可以忽略不计。
做RM游戏又不需要高并发,不用在乎这几微秒的优化。





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