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

Project1

 找回密码
 注册会员
搜索
查看: 103|回复: 3
打印 上一主题 下一主题

[有事请教] 如何实现在战斗中检测玩家一次攻击造成的伤害值

[复制链接]

Lv1.梦旅人

梦石
0
星屑
69
在线时间
11 小时
注册时间
2025-6-22
帖子
4
跳转到指定楼层
1
发表于 7 天前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
已善用搜索


目的:
想在检测到玩家一次性对BOSS造成了超出预想的伤害时(或者BOSS一次性受到超出预想的伤害时),触发事件。
可看可不看的为啥要达成这个目的:说白了就是想检测玩家有没有开作弊打BOSS,BOSS是Meta角色,感觉加上这个的话演出效果会好一点

目前已经尝试:
在战斗事件页加入条件分歧,脚本:$gameTroop.members()[0].result().hpDamage >= (触发事件的伤害值)
是G老师教的,但是触发不了,不知道是不是G老师写的有问题

也尝试了:
使用YEP Battle Engine Core,技能进行备注,也触发不了

自己用过修改器,知道可以直接秒BOSS。但是原本BOSS就有个战败台词,所以不能用血量百分比作为事件触发条件,而是想将一次性造成/受到的伤害作为触发条件

感谢解惑!

Lv1.梦旅人

梦石
0
星屑
69
在线时间
11 小时
注册时间
2025-6-22
帖子
4
3
 楼主| 发表于 6 天前 | 只看该作者
百里_飞柳 发表于 2025-6-29 23:53
为什么触发不了,是因为调用战斗事件是有固定的时间点的(战斗开始、回合开始、回合结束)。

在默认战斗中 ...

非常感谢!目前用您的脚本成功做到开启这个开关了
不过确实有下面的问题,而且关于第一点还有一个问题,就是如果把移除免疫死亡状态写在了超额伤害事件结束后,玩家在正常打(不触发超额伤害)的情况下就无法移除免疫死亡状态,打不死敌人。这种情况下,要在何时移除免疫死亡状态也不太好判断(因为不知道会不会有打到中途才超额的情况)。
感觉过于追求这个演出效果可能还是太苛刻了,目前退而求其次把事件写在了战斗结束后,由开关追加。再次感谢!

点评

rm的战斗事件限制太大了,并行执行都没有,很多东西都只能放到地图上去处理,还是不要过于折磨战斗事件了hhhh  发表于 6 天前
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
35514
在线时间
6792 小时
注册时间
2012-5-26
帖子
3271

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 7 天前 | 只看该作者
本帖最后由 百里_飞柳 于 2025-6-30 18:32 编辑

为什么触发不了,是因为调用战斗事件是有固定的时间点的(战斗开始、回合开始、回合结束)。

在默认战斗中,如果是回合结束执行的事件,那要等全部角色使用完技能后,才判定战斗事件符不符合执行时机。
所以在判定战斗事件执行前,所有角色的result()中存储的伤害值都已经被清零了,也就没法达到你想要的效果。

这里给出一个简单的实现方式:
战斗者的 onDamage() 方法是受到技能伤害后调用的,其中 value 是受到的伤害值(正数)
你可以在其中增加一个判定
  1. Game_Battler.prototype.onDamage = function(value) {
  2.     this.removeStatesByDamage();
  3.     this.chargeTpByDamage(value / this.mhp);
  4.     // 如果本角色是敌人 且 敌人的数据库ID为 1 且 伤害值大于50%最大生命值
  5.     if( this.isEnemy() && this.enemyId() == 1 && value > this.mhp * 0.5 )
  6.     { // 将1号开关打开
  7.         $gameSwitches.setValue( 1, true );
  8.     }
  9. };
复制代码

之后你再利用其中的 1 号开关(具体哪个开关你可以自己改)去做战斗事件的判定。

但这里也有几个问题:
1. 敌人如果直接死亡了,那会优先处理死亡,所以你可以在战斗开始时给敌人附加一个 免疫死亡 的状态,之后在你的战败事件中再移除这个状态,避免事件执行前就死了然后判定战斗胜利。
2. 如果你想既处理单次受伤超过指定值的事件,又想再继续处理战败的事件,可能不太行,因为一次只会处理一个战斗事件,而且是从序号小的开始一个个判定是否满足执行条件,遇到一个满足的就执行了,之后的不再判定。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-6 15:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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