Project1

标题: 请问下在伤害公式里更改变量如何完成 [打印本页]

作者: llkrm    时间: 2022-2-18 10:10
标题: 请问下在伤害公式里更改变量如何完成
v[1]>3?(v[1]=0;1000):(v[1]++;100)

想完成一个这样效果的技能,会造成五次伤害,前面四次100伤害,最后一次1000伤害。
问题在于伤害公式中好像不能直接使用 v[1]=0,v[1]++这种运算。
作者: 任小雪    时间: 2022-2-18 10:29
v[1]>4?v[1]=0;1000:v[1]=v[1]+1;100

作者: 中华国哥    时间: 2022-2-18 10:37
用yep战斗序列语句控制变量1的值
CHANGE VARIABLE 1 = 0

作者: llkrm    时间: 2022-2-18 12:17
任小雪 发表于 2022-2-18 10:29
v[1]>4?v[1]=0;1000:v[1]=v[1]+1;100

if语句也是不行,它问题出在战斗公式如何赋值。
以VA为例,a.hp+=1就能恢复1点生命。但是MV的赋值代码是a.gainHp(1)。
所以同理我认为变量赋值也不能单纯的 v[1]+=1。。而是有特殊的运算代码。论坛里mv伤害公式那个我看了没有写变量的运算。
作者: soulsaga    时间: 2022-2-18 13:18
可以直接运算的..
不过..MV的V变量默认值不是0 这点跟VA不同
所以你1号变量没有预先赋值不能运算
作者: llkrm    时间: 2022-2-18 13:30
soulsaga 发表于 2022-2-18 13:18
可以直接运算的..
不过..MV的V变量默认值不是0 这点跟VA不同
所以你1号变量没有预先赋值不能运算 ...

刚刚试了下在游戏里先赋值了101变量为0,然后还是报错来着。。

公式。  v[101]>3?(v[101]=0;1000):(v[101]++;100)


作者: soulsaga    时间: 2022-2-18 13:31
本帖最后由 soulsaga 于 2022-2-18 13:36 编辑
llkrm 发表于 2022-2-18 13:30
刚刚试了下在游戏里先赋值了101变量为0,然后还是报错来着。。

公式。  v[101]>3?(v[101]=0;1000):(v[10 ...


你可以先试一下就写一个运算
我觉得是你公式写错了..
不过我也不肯定
作者: llkrm    时间: 2022-2-18 13:36
soulsaga 发表于 2022-2-18 13:31
你可以先试一下就写一个运算

v[101]>3?1000:100

这样是能通过。甚至测试不用赋值也能通过。。
加了运算就不能通过。
作者: soulsaga    时间: 2022-2-18 13:36
本帖最后由 soulsaga 于 2022-2-18 13:38 编辑
llkrm 发表于 2022-2-18 13:36
v[101]>3?1000:100

这样是能通过。甚至测试不用赋值也能通过。。


我测试过公式里V可以运算的
作者: llkrm    时间: 2022-2-18 13:42
soulsaga 发表于 2022-2-18 13:36
我测试过公式里V可以运算的

大佬可以发个你的公式吗。我参考找下问题。
作者: soulsaga    时间: 2022-2-18 14:33
本帖最后由 soulsaga 于 2022-2-18 18:21 编辑
llkrm 发表于 2022-2-18 13:42
大佬可以发个你的公式吗。我参考找下问题。


JAVASCRIPT 代码复制
  1. v[1]++;v[1]=v[1]>1? 0:v[1];v[1]==0?1000:100


你的公式改成这样就通过了..
作者: llkrm    时间: 2022-2-18 17:48
任小雪 发表于 2022-2-18 10:29
v[1]>4?v[1]=0;1000:v[1]=v[1]+1;100

解决了,还了个写法就通过了。我也看不出之前问题在哪。。
作者: fux2    时间: 2022-2-18 18:10
楼上已经解决了问题,我来补充一点说明
极其不建议在伤害公式里对变量做修改,即使这样可以满足你目前的需求
建议做法是在技能效果里加公共事件,在公共事件里修改

公式只用来做伤害计算,而不是技能效果的执行,如果有其他插件脚本使用了【伤害计算】这个过程,你的
变量就会因此而变化一次,产生意料之外的后果。
作者: 任小雪    时间: 2022-2-18 19:19
本帖最后由 任小雪 于 2022-2-18 19:52 编辑

分支里可以赋值,


if(v[1]){if(v[1]==2){v[1]=0;1000;}else{v[1]+=1;100;};}else{v[1]=1;100;}

总结,过于复杂的伤害公式,要用if else语句;并且,变量是需要赋值才能用的(起码伤害公式这里是这样)

这里是真的实测了,说法应该没毛病了,啧




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