设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 阿步abu
打印 上一主题 下一主题

[交流讨论] 关于伤害公式插入多变量的问题

[复制链接]

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

1
发表于 2021-1-21 20:24:10 | 显示全部楼层
盲猜你的伤害公式有错误

根据MV源码,伤害公式计算出错就会返回0。

可能的错误:
1、括号没有使用英文半角字符
2、变量的写法不对,假设是1号和2号变量,应该是 100 + (v[1] + v[2]) * 0.5 这样吧。

顺便,MV的提示似乎没有说可以写v,但是VA支持这样写,而且从源码来看也应该是支持的。
用头画头像,用脚写脚本
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

2
发表于 2021-1-22 23:26:47 | 显示全部楼层
阿步abu 发表于 2021-1-22 08:57
0 0 为啥你可以打开源码……
MV是支持[v1]这种变量写法的,F1里就有提示……
括号啥的肯定没用错啊……

1、源码就在游戏目录下的js文件夹里,只要用文本编辑器打开就可以看。

2、我用steam版的MV没看到这样的提示,但是从源码推断是可以这样写的。


3、经过测试,确定是变量未初始化导致的。
简单而言,某个变量没有设置过值的情况下,它是undefined。
undefined是什么你不用管,你只要知道它出现在算式里会出错。
为了消除这种情况,需要你把每一个可能用到变量的地方写成这样,以1号变量为例:
(v[1] || 0)
这样做的目的很明显,如果1号变量已经被赋值,括号的结果就是v[1],
如果1号变量是undefined,括号的结果就是0.
当然,你也可以把这里的0换成其他数值,这样当对应变量没有被赋值过时,会被这个值替代。

修改后的公式有这样的形式:
100 +  ((v[1] || 0) + (v[2] || 0)) * 0.5
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

3
发表于 2021-1-23 22:41:29 | 显示全部楼层
本帖最后由 KB.Driver 于 2021-1-23 22:43 编辑
阿步abu 发表于 2021-1-23 15:46
笔……笔误……嗯……
=。。= 不过……
v[x||0]这种写法在变量不等于0时,确实可以触发,也是很奇妙的一 ...


无言以对……
自己不懂的话请不要玩小聪明,直接把别人写的复制粘贴一下不好吗?
另外,结果为0的原因我前面说过了,算不出来(输入有误)的式子就会得到0。

||的|是回车键上面的符号没错,或运算是需要两条竖线的,或运算的用途我在前面也举了例子。
如果真的不会的话可以自学一下js,百度搜索javascript菜鸟教程,自己先看一下会比瞎猜要有用。
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

4
发表于 2021-1-24 12:51:47 | 显示全部楼层
阿步abu 发表于 2021-1-24 09:01
没有耍小聪明啊,看到这个问题后已经更改了呢
然后确实是可以触发出非0的结果,很微妙的咧 ...

我前面的回复就说过了……变量未初始化的问题
直接写v[x]的话,当变量的值已经存在时,是没问题的
但是一旦变量没被赋值过,就会触发错误,代码就会算不出,直接返回0

但是你很难保证每个变量都被事先赋值,除非在游戏一开始就批量赋值。
所以还是要用这个或运算来保证它正常工作
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

5
发表于 2021-1-25 09:50:37 | 显示全部楼层
阿步abu 发表于 2021-1-24 20:56
大佬大佬,来拓展一下吧~
||←这个东西啊
它的运作原理是啥?

或运算取的是“真值”(true),JS的真假判断比较复杂,你查一下Javascript的if判断条件就有了
至于取最大,用Math.max(b.def, b.mdf),最小用Math.min(b.def, b.mdf)

实际上这些学会了都是可以举一反三的,自己多看些资料会比一个一个问要快

点评

【例1】undefined||null=null【例2】false||undefined=undefined【例3】0||null=null【例4】0||""=""  发表于 2021-1-25 21:32
开控制台试了一下,只要或运算的左边是"假值",结果都是或运算右边的值。  发表于 2021-1-25 21:31
或运算如果两边都是假值会如仃..  发表于 2021-1-25 14:13
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-2 16:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表