open2245 發表於 2025-4-18 15:37

關於傷害顯示

引用了這位大大的文章https://lineage45.com/forum.php?mod=viewthread&tid=105001&highlight=%E5%82%B7%E5%AE%B3%E9%A1%AF%E7%A4%BA

複製貼上之後         /* ■■■■■■■■■■■■■■■ 計算結果反映 ■■■■■■■■■■■■■■■ */

        public void commit() {
      if (_isHit) {
                if (_calcType == PC_PC || _calcType == NPC_PC) {
                        commitPc();
                } else if (_calcType == PC_NPC || _calcType == NPC_NPC) {
                        commitNpc();
                }
      }

      // 傷害顯示特效開關
      if (!Config.ALT_ATKMSG) {
                return;
      }

      final String srcatk = _pc.getName();// 攻擊者
      String tgatk = "";// 被攻擊者
      String hitinfo = "";// 資訊
      String dmginfo = "";// 傷害
      String atkinfo = "";// 最終資訊
      int i = (int) ((_damage/Math.pow(10,0)) % 10) + 8000;//個位0-9
      int k = (int) ((_damage/Math.pow(10,1)) % 10) + 8010;//十位0-9
      int h = (int) ((_damage/Math.pow(10,2)) % 10) + 8020;//百位0-9
      int s = (int) ((_damage/Math.pow(10,3)) % 10) + 8030;//千位0-9
      int m = (int) ((_damage/Math.pow(10,4)) % 10) + 8040;//萬位0-9

      switch (this._calcType) {
                case PC_PC:
                        tgatk = _targetPc.getName();
                        hitinfo = " 命中率 " + _hitRate + "% 剩餘 HP" + _targetPc.getCurrentHp();
                        dmginfo = _isHit ? _damage + " 傷害" : "攻擊失敗";
                        atkinfo = srcatk + " > " + tgatk + " " + dmginfo + hitinfo;

                        _pc.sendPackets(new S_ServerMessage(166, atkinfo));

                        if ( _damage <= 0 ){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , 8050));//Miss數特效
                        }
                        else if ( _damage > 0 && _damage < 10 ){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
                        }
                        else if ( _damage >= 10 && _damage < 100){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
                        }
                        else if ( _damage >= 100 && _damage < 1000){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
                        }
                        else if ( _damage >= 1000 && _damage < 10000){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , s));//千位數特效
                        }
                        else if ( _damage >= 10000){
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , h));//百位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , s));//千位數特效
                              _pc.sendPackets(new S_SkillSound(_targetPc.getId() , m));//萬位數特效
                        }
                        break;
                case PC_NPC:
                        tgatk = _targetNpc.getName();
                        hitinfo = " 命中率 " + _hitRate + "% 剩餘 HP " + _targetNpc.getCurrentHp();
                        dmginfo = _isHit ? _damage + " 傷害" : "攻擊失敗";
                        atkinfo = srcatk + " > " + tgatk + " " + dmginfo + hitinfo;

                        _pc.sendPackets(new S_ServerMessage(166, atkinfo));

                        if ( _damage <= 0 ){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , 8050));//Miss數特效
                        }
                        else if ( _damage > 0 && _damage < 10 ){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
                        }
                        else if ( _damage >= 10 && _damage < 100){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
                        }
                        else if ( _damage >= 100 && _damage < 1000){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
                        }
                        else if ( _damage >= 1000 && _damage < 10000){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , s));//千位數特效
                        }
                        else if ( _damage >= 10000){
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , i));//個位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , k));//十位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , h));//百位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , s));//千位數特效
                              _pc.sendPackets(new S_SkillSound(_targetNpc.getId() , m));//萬位數特效
                        }
                     break;

      }

#8000 1
    0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8001 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8002 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8003 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8004 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8005 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8006 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8007 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8008 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8009 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8010 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8011 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8012 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8013 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8014 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8015 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8016 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8017 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8018 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8019 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8020 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8021 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8022 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8023 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8024 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8025 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8026 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8027 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8028 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8029 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8030 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8031 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8032 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8033 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8034 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8035 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8036 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8037 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8038 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8039 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8040 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8041 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8042 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8043 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8044 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8045 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8046 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8047 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8048 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8049 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8
#8050 1
        0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
        102 0
        104 8

"S_SkillSound"的字樣 一直顯示紅色XX 表示沒有修改成功 是否是我語法的位置錯誤 懇請各位大大指導

open2245 發表於 2025-4-18 15:41

懇求個位大大指導小弟~

3116629409 發表於 2025-4-18 18:13

• 关于伤害显示

yasioukon 發表於 2025-4-19 08:47

一般來說 先檢查最上方有沒有 import

要告訴他這個檔案的路徑

open2245 發表於 2025-4-19 22:37

yasioukon 發表於 2025-4-19 08:47
一般來說 先檢查最上方有沒有 import

要告訴他這個檔案的路徑

假如沒有的話 有辦法自己寫一個這樣嗎?

繁華攏是夢 發表於 2025-4-19 22:44

open2245 發表於 2025-4-19 22:37
假如沒有的話 有辦法自己寫一個這樣嗎?

我會建議你把該類的java檔放出來給各位大神看看
不然隔空抓藥無法保證藥到病除QQ

yasioukon 發表於 2025-4-20 13:01

open2245 發表於 2025-4-19 22:37
假如沒有的話 有辦法自己寫一個這樣嗎?

EC的話 紅叉那會提示你錯誤原因

甚至可以選擇自動修正
選補import

不然就是拉到最上方 自己照檔案路徑輸入

open2245 發表於 2025-4-20 19:33

yasioukon 發表於 2025-4-20 13:01
EC的話 紅叉那會提示你錯誤原因

甚至可以選擇自動修正


好的 大大 我在看看如何修改

open2245 發表於 2025-4-20 19:40

繁華攏是夢 發表於 2025-4-19 22:44
我會建議你把該類的java檔放出來給各位大神看看
不然隔空抓藥無法保證藥到病除QQ
...

目前是L1Attack 這個Java的語法的問題 我照著之前一些大大方式做 我的卻是錯誤 我認為是缺少某些語法 來問這裡的大神

open2245 發表於 2025-4-21 12:13

本帖最後由 open2245 於 2025-4-21 12:14 編輯

yasioukon 發表於 2025-4-20 13:01
EC的話 紅叉那會提示你錯誤原因

甚至可以選擇自動修正

大大好 照您的方法EC可自動修正 核心OK了 再來我編碼也改好了 也對應圖檔 沒有重複對應 但是攻擊怪物時會閃退


想問BIN檔是否也要跟著改 但是版上好像也沒有BIN轉TXT

yasioukon 發表於 2025-4-21 12:25

就是你的SPR圖 要跟變身檔編碼 對應

沒對應 特效一出來 就是斷線

open2245 發表於 2025-4-21 13:44

yasioukon 發表於 2025-4-21 12:25
就是你的SPR圖 要跟變身檔編碼 對應

沒對應 特效一出來 就是斷線

假設我的圖檔是


14910-0.spr

變身碼

#14910 6
0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
102 0
104 8


這樣是對的嗎 我是下載別人設定好的 每一個圖檔我都一一對應 也有用抽出禿檔的方式在檢查有無重複 也確認是沒有 但是像大大說的 似乎沒對應到 而閃退

yasioukon 發表於 2025-4-21 14:13

你可以直接用GM看圖指令測試
從個位數0~9 十位數 百位數這樣測

你就知道哪些圖沒弄好

open2245 發表於 2025-4-21 14:15

感恩大大的解答 這就去試試看

open2245 發表於 2025-4-21 15:00

本帖最後由 open2245 於 2025-4-21 15:04 編輯

yasioukon 發表於 2025-4-21 14:13
你可以直接用GM看圖指令測試
從個位數0~9 十位數 百位數這樣測


大大好 我整個被整矇了 "測試每一個顯示傷害的圖檔 全部都閃退"

我想釐清一下 我是否有做錯什麼步驟

核心除錯後沒問題 一開始有重疊圖檔 圖有跑出1跟2 還有重疊圖檔[本來是8001-8050]

我的變身檔是TW13081901.txt 我把SPR圖檔改成14860-14910
我直接在變身檔 直接新增編碼
核心部分也跟著修正成14860以此類推


#14860 6
0 0 6 0 0 2 0 1 2 0 2 2 0 3 2 0 4 2 0 5 2
102 0
104 8


以此類推 測試到現在全部閃退 大大覺得我有甚麼地方出錯

open2245 發表於 2025-4-21 15:19

yasioukon 發表於 2025-4-21 14:13
你可以直接用GM看圖指令測試
從個位數0~9 十位數 百位數這樣測



大大好 我似乎爬到問題 可能跟圖檔編號太後面有關係 我試著找前面的看看
頁: [1]
查看完整版本: 關於傷害顯示