Project1

标题: 请教一个RGSS里关于计算的简单脚本问题 [打印本页]

作者: 大葱有营养    时间: 2018-11-28 00:17
标题: 请教一个RGSS里关于计算的简单脚本问题
本帖最后由 大葱有营养 于 2018-11-28 00:26 编辑

在做游戏时发现,当角色中了命中率降低的debuff后,普攻命中会相应降低,但是技能完全不会命中了,
于是查了一下这块的脚本,在技能时命中率判定有这样一段脚本
RUBY 代码复制
  1. # 有効フラグをクリア
  2. effective = false
  3. # コモンイベント ID が有効の場合は有効フラグをセット
  4. effective |= skill.common_event_id > 0
  5. # 第一命中判定
  6. hit = skill.hit
  7. if skill.atk_f > 0
  8. hit *= user.hit / 100
  9. end
  10. hit_result = (rand(100) < hit)
  11. # 不確実なスキルの場合は有効フラグをセット
  12. effective |= hit < 100
  13. # 命中の場合
  14. if hit_result == true
  15. ……

然后……我把hit *= user.hit / 100 这一句改成了 hit *= user.hit / 100.0 就可以了,估计ruby的“/”对于两个整型数运算结果仍为整型
而且我又试着把这句话写成了 hit = hit * user.hit / 100,似乎也可以
但是我又有地方不明白了,ruby的变量似乎没有分整型实型,而且也没看到有变量类型声明,
那这句话hit *= user.hit / 100 到底是怎么判断user.hit是浮点数还是整数的?
为何hit = hit * user.hit / 100 就又对了?(我查了上下文,似乎hit也是整型数啊)
是否是对变量初始化的时候就决定了变量的类型呢?
希望能向大大们为我请教,谢谢,脚本渣渣在学习中还有很多不懂想向各位请教QwQ
作者: 张咚咚    时间: 2018-11-28 00:57
本帖最后由 张咚咚 于 2018-11-28 01:01 编辑

弱类型语言变量不需要声明类型。
a = 1
a = a.to_f # 1.0
a = a.to_i #1
5 / 3 = 1
5 / 3.0 = 1.66666667
可以用to_i和to_f进行整、小数转换。
作者: guoxiaomi    时间: 2018-11-28 20:40
默认脚本里,user.hit 一直都是整数。关于此bug,https://rpg.blue/thread-404592-1-1.html里有提到




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