klsljfsljf 發表於 2024-10-25 00:35

關於3.50版本怪物有攻擊時突然加速的問題

我用的版本是L1J 3.50c乾淨的源碼
主程式登入是使用3.52c
登入器是


發現妖魔弓箭手似乎有攻擊間速度變很快的問題
嘗試了一下變身檔編碼似乎沒有解決

是否是需要從源碼下手?

yasioukon 發表於 2024-10-25 09:27

35的話 攻速基本上是變身檔管的

所以要看你是普通攻擊就超快

還是要有什麼條件

例如 邊打邊放技能 一直被打 跑打 之類的原因

weiqiang1983 發表於 2024-10-25 12:53

感谢分享

klsljfsljf 發表於 2024-10-25 15:37

yasioukon 發表於 2024-10-25 09:27
35的話 攻速基本上是變身檔管的

所以要看你是普通攻擊就超快


是從登入器變身檔編碼出來的那個spr的sql資料庫檔案嗎?
因為我目前看到很多模擬器根源碼,有些同樣的資料設定,有些版本卻是由db管理有些則是要改源碼

yasioukon 發表於 2024-10-25 17:44

klsljfsljf 發表於 2024-10-25 15:37
是從登入器變身檔編碼出來的那個spr的sql資料庫檔案嗎?
因為我目前看到很多模擬器根源碼,有些同樣的資料 ...

DB裡面那個不是叫變身編碼

所以你改那邊當然沒有用

是登入器編碼 打勾變身檔的那個pak檔

SPR那個SQL用途只有簡易防加速

klsljfsljf 發表於 2024-10-25 23:18

yasioukon 發表於 2024-10-25 17:44
DB裡面那個不是叫變身編碼

所以你改那邊當然沒有用


我懂你的意思了,我一開始就找錯地方



但妖魔弓箭手很奇怪,一開始攻擊玩家角色攻速正常
射兩箭開始馬上攻速變超快,而且走的速度也變超快
角色跑給妖魔弓箭手追出畫面之後妖魔弓箭手圖案就定格在畫面上
角色依舊受到妖魔弓箭手攻擊
感覺很像server跟client不同步的樣子
不知道要怎麼著手解決這個問題?

b0600181 發表於 2024-10-25 23:31





感谢分享


yasioukon 發表於 2024-10-26 00:05

如果人物變身妖魔弓箭手速度正常

怪物的妖魔弓箭手才會加速

那有可能你版本的怪物攻擊延遲有抓SPR DB

不然一般來說 是看怪DB那邊的攻速設定

klsljfsljf 發表於 2024-10-26 15:17

yasioukon 發表於 2024-10-26 00:05
如果人物變身妖魔弓箭手速度正常

怪物的妖魔弓箭手才會加速



對,人物變身測試是正常的
只有怪物才會
那是DB裡的spr_action這一項嗎?

yasioukon 發表於 2024-10-26 20:29

klsljfsljf 發表於 2024-10-26 15:17
對,人物變身測試是正常的
只有怪物才會
那是DB裡的spr_action這一項嗎?


如果是以前舊版 核心也有可能

如果遠攻卻送出近戰動作 那速度就會是0

klsljfsljf 發表於 2024-10-28 05:43

yasioukon 發表於 2024-10-26 20:29
如果是以前舊版 核心也有可能

如果遠攻卻送出近戰動作 那速度就會是0


感謝大老,似乎已經抓到處理方向

嘗試中

Lin-JN 發表於 2024-11-5 00:24

理论上,有可能是NpcAI方面的问题,而且可能性超大,因为这是某个版本的通病,被一路升级后延续下来了。
有可能AI重复执行,就会产生Npc暴走现象,但是若只是AI重复执行,所有怪物都有可能产生暴走现象。
解决方法很简单,添加一个isAiRuning的判断就可以了。
如果仅仅只是妖魔弓箭手的问题,那么请将妖魔弓箭手的tempGfx单独例出来,然后把这个gfx的bow攻击动作单独设定一下,设定为21,还有几个可能要设定成30或者31的。因为这部分的spr可能没有攻击动作1,或者动作1的速度不正常,而怪物的默认攻击动作全部是1,没有的话读到的速度就是0,就会产生问题。
一个个修改编码挺麻烦,所以我解决此类问题的办法,是先判断一次spr_action中有没有这个动作的速度设定,如果没有,就转到使用21.

klsljfsljf 發表於 2024-11-5 00:54

Lin-JN 發表於 2024-11-5 00:24
理论上,有可能是NpcAI方面的问题,而且可能性超大,因为这是某个版本的通病,被一路升级后延续下来了。
有 ...

您說的isAiRunning可以詳細一點說明嗎?
目前我還算是個JAVA新手,純粹因為興趣才開始碰私服源碼自學JAVA


不過妖魔弓箭手的攻速問題我已經抓到處理方向了
在L1NPCDefaultAction裡的defaultAttack
之前嘗試過將它改成0變成妖魔弓箭手不會攻擊,但也不會有走速突然變很快的問題

如您所說將它改成21就完全恢復正常了

Lin-JN 發表於 2024-11-6 21:15

klsljfsljf 發表於 2024-11-5 00:54
您說的isAiRunning可以詳細一點說明嗎?
目前我還算是個JAVA新手,純粹因為興趣才開始碰私服源碼自學JAVA ...

你可以检查一下你的变身档list文件,有相当一部分的编号是没有编号1的,这些要么自己在变身档增加攻击动作1的数据,要么在核心把这些变身全部挑出来设定默认的攻击动作。

当然,个人建议是检测spr_action,查找当前外观是否具备动作1,没有的话就跳别的动作编号,比如远程21,近战30,如果再没有,就跳18、19,如果都没有,很好,这个变身不要用了……

至于AIRuning的判断,就是在Npc执行AI的时候增加一项 _aiRuning = true,然后在onNpcAI方法中增加一项,if (_aiRuning) retrun;
这样可以避免AI重复执行导致暴走的问题,解决的办法不止一个,这样比较简单,最好的办法是根据怪物的外观来决定速度,这样看起来会更流畅,不会出现怪物走路瞬移、卡顿(走几步停一下)的现象,也就是让怪物动作的帧数尽量符合这个spr档案的设定,而且用spr锁定速度后,即使AI重复执行,也不用担心会出现暴走。

klsljfsljf 發表於 2024-11-15 21:39

Lin-JN 發表於 2024-11-6 21:15
你可以检查一下你的变身档list文件,有相当一部分的编号是没有编号1的,这些要么自己在变身档增加攻击动 ...

感謝指點,目前我都是朝向修正NPC action的方向處理

大部分爆衝都是弓箭手類型的怪物,目前逐步修正

Lin-JN 發表於 2024-11-18 22:27

klsljfsljf 發表於 2024-11-15 21:39
感謝指點,目前我都是朝向修正NPC action的方向處理

大部分爆衝都是弓箭手類型的怪物,目前逐步修正


真造孽,前段时间一直没法访问这边,内地的墙太厚了……


关于这点方法,建议是从spr_action入手,加入一个spr的动作检测,比如 spr.actionId.put(sprId, actId)之类。
然后在默认动作那边检测该spr是否存在此actId,如果没有就跳到下一个actId,这样循环检测几个主要的动作编号。

或者在npc资料库中设定固定的攻击速度,不要去读取spr_action的速度,如果对应actId不存在,也只会是看起来比较别扭,但不会出现暴走现象。

一个个去手动检查spr编码的话,这个工作实在是有点伤眼睛的。

Lin-JN 發表於 2024-11-18 22:32

https://www.bilibili.com/video/BV19cUTYKECt/?vd_source=31d649ff43fbe0975ec63788ba4b313d#reply113475921711828

如果能看到的话,可以参考一下。

klsljfsljf 發表於 2024-11-20 01:20

Lin-JN 發表於 2024-11-18 22:27
真造孽,前段时间一直没法访问这边,内地的墙太厚了……




台灣這邊也是連不上,可能是站方問題吧?
感謝你的回答參考
頁: [1]
查看完整版本: 關於3.50版本怪物有攻擊時突然加速的問題