新手上路 發表於 2024-5-16 23:37

請版主移除

本帖最後由 新手上路 於 2024-5-20 16:05 編輯

請版主移除

新手上路 發表於 2024-5-17 06:34

懇請前輩

yasioukon 發表於 2024-5-17 08:59

你的語法來源 沒附

你的錯誤截圖 沒貼

沒有人知道你把語法貼哪

沒有人看得到你語法錯哪

傷害顯示 圖檔的部分

傷害破千 就會有四組0~9
傷害破萬 就會有五組0~9
以此類推

假設打出來傷害是123

那就是個位數3 顯示第一組0~9中的3
那就是十位數2 顯示第二組0~9中的2
那就是百位數1 顯示第三組0~9中的1

只要了解原理 應該就很好新增了

先找到你版本傷害 寫在哪邊 叫什麼名

假設你版本傷害 叫做 a

那你就是把 a 拆成 個位數 十位數 百位數 ...以此類推

然後分別顯示對應圖檔 在攻擊對象身上

這樣就完成了

新手上路 發表於 2024-5-17 09:18

本帖最後由 新手上路 於 2024-5-17 09:29 編輯

yasioukon 發表於 2024-5-17 08:59
你的語法來源 沒附

你的錯誤截圖 沒貼

前輩你好,
我是看這篇文章
https://lineage45.com/forum.php?mod=viewthread&tid=105001&highlight=傷害

他教學是這樣

核心修改
編輯 L1Attack.java


[*]收尋 public void commit() {
[*]將以下程式碼取代原 commit() Function

請依照個人圖檔編碼調整以下程式內容


public void commit() {      /** 程式說明:
      * 首先取得 _damage(傷害)的個位 十位 百位 ... 數值
      * 假設傷害為171,則以下變數為:
      * i = 1 + 8000 // 8001為個位數"1"特效編號
      * k = 7 + 8010 // 8017為個十數"7"特效編號
      * h = 1 + 8020 // 8021為個百數"1"特效編號
      * s = 0 + 8030
      * m = 0 + 8040
      **/
      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;

      }


}———————————————我的L1Attack.java
public void commit() {    if (_isHit) {       if ((_calcType == PC_PC) || (_calcType == NPC_PC)) {          commitPc();       } else if ((_calcType == PC_NPC) || (_calcType == NPC_NPC)) {          commitNpc();       }    }
請問是以上這段覆蓋上面代碼嗎?還是要在往下延伸呢?
我的傷害數字圖檔編碼都已經改好了。


新手上路 發表於 2024-5-17 09:34

求教學,
小弟完全新手
用380完全底版
源碼核心慢慢學習這,

可能好幾年前的簡單概念
根本如喝水簡單的問題
小弟還是一知半

yasioukon 發表於 2024-5-17 11:22

你看的教學 有寫取代喔

新手上路 發表於 2024-5-17 17:41

...................
頁: [1]
查看完整版本: 請版主移除