Project1

标题: 关于YEP的伤害公式设置报错 [打印本页]

作者: 负零    时间: 2018-3-4 20:47
标题: 关于YEP的伤害公式设置报错
我在攻击技能的备注处备注如下
获取随机数,当随机数大于某值时,伤害增加,攻击时会报错。谢谢各位了,求解。
<Damage Formula>
int ran = (int)(Math.random() * 100)
    if (ran > 7) {
      value = a.mat * 7;
    } else if (element > 8) {
      value = a.mat * 20;
    } else if (element > 9) {
      value = a.mat * 100;
    }
  }
</Damage Formula>

作者: 负零    时间: 2018-3-4 21:12
我测试了,是随机数的问题,加了这下面一截就会报错
int ran = (int)(Math.random() * 100)
那么如何实现在攻击时判定随机数呢?
作者: 百里_飞柳    时间: 2018-3-4 21:33
本帖最后由 百里_飞柳 于 2018-3-4 21:36 编辑

……js里有int类型的吗?
你后面都是大于小于判定不需要严格变更为整数呀
后面来了个 element 又是啥
而且你确定你的判定写对了吗?先判定大于7,再判定大于8……?在浮动范围为0-100时……??

以及总觉得需要一个 return
  1. <Damage Formula>
  2. var ran = Math.random() * 10;
  3. if (ran >= 7 && ran < 8) {
  4.    value = a.mat * 7;
  5. } else if (ran >= 8 && ran < 9) {
  6.    value = a.mat * 20;
  7. } else if (ran >= 9) {
  8.     value = a.mat * 100;
  9. }
  10. return value;
  11. </Damage Formula>
复制代码


作者: ekmomo    时间: 2018-3-6 22:28
本帖最后由 ekmomo 于 2018-3-6 22:47 编辑

var ran = Math.floor(Math.random() * 100)  //0 - 99 随机
Math.random() 取 0-1 开区间小数
Math.floor()向下取整
不论是从优化还是JS本身BUG角度考虑,一定要做取整。
另外千万不要return,eval + return 即使不报错也会非常非常非常影响效率。

要用element 还要var element = $dataSkills[this._item._itemId].damage.elementId;
//我知道你其实可能不想用…




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