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

Project1

 找回密码
 注册会员
搜索

菜鸟试图实现【普攻恢复MP】时出错(已解决)

查看数: 597 | 评论数: 7 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-8-14 06:04

正文摘要:

本帖最后由 catxiaolang 于 2023-8-14 07:43 编辑 设想普攻能恢复25点MP, 当把原本的伤害公式 a.atk * ( 100 / ( 100 + b.def ) ) 写成 a.atk * ( 100 / ( 100 + b.def ) ); a.gainMp(25) 后 普攻时MP能够恢 ...

回复

catxiaolang 发表于 2023-8-14 20:08:45
在RPG Maker MZ中,伤害公式只会返回和计算最后一个表达式的结果,而前面的表达式虽然会被执行,但是并不会参与伤害计算。

所以当你使用公式 a.atk * ( 100 / ( 100 + b.def ) ); a.gainMP(25),实际上系统只会计算和返回 a.gainMP(25) 的结果,也就是恢复MP的数量,但不会计算前面的 a.atk * ( 100 / ( 100 + b.def ) ), 这就是为什么你会看到造成的伤害变成了0。 因为 a.gainMP(25) 实际上并没有返回伤害值,伤害就被认为是0。

反过来,如果你写成 a.gainMP(25); a.atk * ( 100 / ( 100 + b.def ) ) 的形式,那么就会首先执行 a.gainMP(25) 恢复MP,然后执行并返回 a.atk * ( 100 / ( 100 + b.def ) ) 的伤害值,最终伤害值就是这个公式的计算结果。

综上所述,你需要确保伤害公式是最后一个表达式,这样才能正确地计算和返回伤害值。

——来自GPT4的解释
catxiaolang 发表于 2023-8-14 18:34:54
本帖最后由 catxiaolang 于 2023-8-14 18:54 编辑
千寒-YuukakeID 发表于 2023-8-14 17:21
看到一个大佬发的,实测有效,伤害公式里这么写即可:
a.gainMp(25); a.atk * ( 100 / ( 100 + b.def ) ) ...


我在用这个公式后出现了一次卡死的BUG,但目前也只出现了一次,后来没有复现成功。
因为我装了Visu战斗核心插件,而它改写了一些MZ原生的逻辑,不知道是不是两者存在冲突,暂且存疑待更多测试。
还是要谢谢你和大佬。
千寒-YuukakeID 发表于 2023-8-14 17:21:22
看到一个大佬发的,实测有效,伤害公式里这么写即可:
a.gainMp(25); a.atk * ( 100 / ( 100 + b.def ) )
catxiaolang 发表于 2023-8-14 07:03:00
暴走的露露 发表于 2023-8-14 06:40
dmg = XXX; dmg

X 代入你那段公式。

这个测试没效果,控制台跳出一长串文字但是游戏也还在运行下去。
我装了一堆Visu系列插件,不知道是不是插件的原因。
我怀疑Visu插件里面有办法实现只是我没找到,还在研究。
控制台报错如下:
2VisuMZ_1_BattleCore.js:19469 SyntaxError: Invalid or unexpected token
    at Game_Action.eval (eval at VisuMZ.<computed> (VisuMZ_1_BattleCore.js:1), <anonymous>:23:27)
    at Game_Action.<computed> [as evalDamageFormulaBattleCore] (VisuMZ_1_BattleCore.js:19469)
    at Game_Action.<computed>.evalDamageFormula (VisuMZ_1_BattleCore.js:19469)
    at Game_Action.eval (eval at VisuMZ.<computed> (VisuMZ_1_BattleCore.js:1), <anonymous>:9:24)
    at Game_Action.<computed>.<computed> (VisuMZ_1_BattleCore.js:19469)
    at Game_Action.<computed>.<computed> [as makeDamageValue] (VisuMZ_1_BattleCore.js:19469)
    at Game_Action.apply (rmmz_objects.js:1918)
    at Game_Action.<computed>.<computed> [as apply] (VisuMZ_1_BattleCore.js:19469)
    at Function.BattleManager.invokeNormalAction (rmmz_managers.js:2788)
    at Function.BattleManager.invokeAction (rmmz_managers.js:2780)
暴走的露露 发表于 2023-8-14 06:48:52
还有一个办法,我汉化了一个吸收技能的插件,可以指定吸血吸蓝吸TP的值
暴走的露露 发表于 2023-8-14 06:40:44
本帖最后由 暴走的露露 于 2023-8-13 15:46 编辑

dmg = XXX; dmg

X 代入你那段公式。

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

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

GMT+8, 2025-2-17 04:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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