Lin-JN 發表於 2024-4-4 00:20

部分版本刷怪问题的解决方案(怪越来越少)

问题一般出现在伊薇版,日版即使有这种问题也不严重。


首先说日版,日版出现怪物越来越少可能是因为线程处理失败,线程被销毁,导致任务异常结束,所以对应要刷的这只怪就不会出现了,本质上怪物的出现、死亡、消失、延迟后重新出现是一个环,中间任何地方断了都会导致怪少。
如果日版出现这种情况,建议是重新调整线程的处理方法,推荐使用 netty 线程池,当然,也可能有更好的,但我没接触过。

其次,说伊薇版,在伊薇版里面,这种问题非常严重,多次测试中,700+怪的地图,在连续运行超过36小时后,怪物数量仅余200不到。
具体表现为,直接使用指令清除某一地图的大量怪物,在数分钟后,doSpawn 全部跑完,怪物数量会减少1-10只不等,循环时间越长减少越多。

伊薇版的问题在于L1Spawn的逻辑错误,因为加入了BossSpawn的现实时间限制,然后在 doSpawn 方法中对相关的逻辑没有处理好,会导致很严重的后果,即使线程没有任何问题,怪物数量也会逐渐减少,具体表面为 doSpawn 完全执行了,但是怪物没有出现,代码的执行过程中你看不到任何异常的地方(除非你每一行代码都做一个debug),没有仔细去查看过线程的执行过程,猜测是因为BossSpawn的原因导致部分任务对象重复。

所以,伊薇版的问题处理,需要一定的JAVA功力,借鉴日版写法的同时,还要兼顾BossSpawn的时间线控制。

在此,提示一下方向,在L1Spawn的 doSpawn 方法中,修改1个变(常)量,然后额外加入 BossSpawn 的时间控制即可,当然,前面具体的刷怪坐标判断,建议也重新整理一下,确实是挺乱的,同样,线程池也建议换API。

以下为测试结果:

yuhjye7777 發表於 2024-4-4 07:04

尤其是象牙塔的踩點怪物,踩沒幾次就沒怪出現了,超明顯的

Lin-JN 發表於 2024-4-4 16:40

yuhjye7777 發表於 2024-4-4 07:04
尤其是象牙塔的踩點怪物,踩沒幾次就沒怪出現了,超明顯的

不一样,踩怪是陷阱触发,CD时间另行设定的。

CClineage45 發表於 2024-4-5 09:16

感謝分享

keiggoo 發表於 2024-4-5 10:06

新手學習
感謝大大分享
路過看看
謝謝您

v54088 發表於 2024-4-12 22:17

可惡,有難度...不然也好想學習
頁: [1]
查看完整版本: 部分版本刷怪问题的解决方案(怪越来越少)