puenhan 發表於 2018-3-13 13:10

請問攻擊顯示

請問有人可以分享 攻擊顯示的語法嗎
我的版本 伊薇板363 感謝

flyht 發表於 2018-3-14 16:52

#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
#14861 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
#14862 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
#14863 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
#14864 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
#14865 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
#14866 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
#14867 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
#14868 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
#14869 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
#14870 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
#14871 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
#14872 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
#14873 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
#14874 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
#14875 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
#14876 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
#14877 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
#14878 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
#14879 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
#14880 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
#14881 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
#14882 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
#14883 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       
#14884 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
#14885 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
#14886 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
#14887 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
#14888 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
#14889 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
#14890 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
#14891 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
#14892 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
#14893 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
#14894 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
#14895 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 4
#14896 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
#14897 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
#14898 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
#14899 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
#14900 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
#14901 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
#14902 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
#14903 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
#14904 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
#14905 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
#14906 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
#14907 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
#14908 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
#14909 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

king0727 發表於 2018-3-13 15:28

這個不錯哦...想知道+1

flyht 發表於 2018-3-14 16:49

本帖最後由 flyht 於 2018-3-14 16:51 編輯

這是原始版本寫法 我直接複製別人寫好的 主要是抓顯示圖檔
樓下是伊薇版的寫法 自己修改圖檔編號和編號對應的編碼 對到即可

L1Attack.java
public void commit() 內
                /*
                if ((_calcType == PC_PC || _calcType == NPC_PC && !_targetPc.getAttackLog()) {
                        return;
                }
                */
                上面這段改成
                if (_calcType == NPC_PC) {
                        return;
                }

                下面再加上

                /**
               * 傷害顯示系統
               */
      if (_calcType == PC_NPC || _calcType == PC_PC) { // 傷害顯示開關
                int units = _damage % 10;
                int tens = (_damage / 10) % 10;
                int hundreads = (_damage / 100) % 10;
                int thousands = (_damage / 1000) % 10;
                int tenthousands = (_damage / 10000) % 10;
                if ((units > 0) || (tens > 0) || (hundreads > 0)
                              || (thousands > 0) || (tenthousands > 0)) {
                        units += 2000;
                        _pc.sendPackets(new S_SkillSound(_target.getId(), units));
                }
                if ((tens > 0) || (hundreads > 0) || (thousands > 0)
                              || (tenthousands > 0)) {
                        tens += 2010;
                        _pc.sendPackets(new S_SkillSound(_target.getId(), tens));
                }
                if ((hundreads > 0) || (thousands > 0) || (tenthousands > 0)) {
                        hundreads += 2020;
                        _pc.sendPackets(new S_SkillSound(_target.getId(), hundreads));
                }
                if ((thousands > 0) || (tenthousands > 0)) {
                        thousands += 2030;
                        _pc.sendPackets(new S_SkillSound(_target.getId(), thousands));
                }
                if (tenthousands > 0) {
                        tenthousands += 2040;
                        _pc.sendPackets(new S_SkillSound(_target.getId(), tenthousands));
                }
                if (_damage == 0) {
                        _pc.sendPackets(new S_SkillSound(_target.getId(), 2050));
                }
      }

      如果不想顯示訊息就把他註解了或改成gm顯示

L1Magic.java
public void commit(int damage, int drainMana) 內
跟L1Attack.java一樣

不過_damage要改成damage

最後C_Chat.java
if (chatType == 0) 內加上簡易開關

                /**
               * 傷害顯示系統
               */
               
                if(chatText.matches("atkmsg")) {
                        try {
                              if(!pc.getAttackLog()) {
                                        pc.setAttackLog(true);
                                        pc.sendPackets(new S_SystemMessage("開啟傷害顯示系統"));
                              } else {
                                        pc.setAttackLog(false);
                                        pc.sendPackets(new S_SystemMessage("關閉傷害顯示系統"));
                              }
                        } catch (Exception e) {
                        }
                }

最後是圖檔編碼
這是整體動畫
#10570      51 攻擊傷害特效
      0.eff(0 51,0.0:2 1.0:2 2.0:2 3.0:2 4.0:2 5.0:2 6.0:2 7.0:2 8.0:2 9.0:2 10.0:2 11.0:2 12.0:2 13.0:2 14.0:2 15.0:2 16.0:2 17.0:2 18.0:2 19.0:2 20.0:2 21.0:2 22.0:2 23.0:2 24.0:2 25.0:2 26.0:2 27.0:2 28.0:2 29.0:2 30.0:2 31.0:2 32.0:2 33.0:2 34.0:2 35.0:2 36.0:2 37.0:2 38.0:2 39.0:2 40.0:2 41.0:2 42.0:2 43.0:2 44.0:2 45.0:2 46.0:2 47.0:2 48.0:2 49.0:2 50.0:2)
      102.type(0)
            104.attr(8)

再來是個別的數字
#2000      51=10570 攻擊傷害特效
      0.eff(0 51,0.50:2 0.0:2 0.1:2 0.2:2 0.3:2 0.4:2 0.5:2 0.6:2 0.7:2 0.8:2 0.9:2 0.10:2 0.11:2 0.12:2 0.13:2 0.14:2 0.15:2 0.16:2 0.17:2 0.18:2 0.19:2 0.20:2 0.21:2 0.22:2 0.23:2 0.24:2 0.25:2 0.26:2 0.27:2 0.28:2 0.29:2 0.30:2 0.31:2 0.32:2 0.33:2 0.34:2 0.35:2 0.36:2 0.37:2 0.38:2 0.39:2 0.40:2 0.41:2 0.42:2 0.43:2 0.44:2 0.45:2 0.46:2 0.47:2 0.48:2 0.49:2)
      102.type(0)
            104.attr(4)
#2001      51=10570 攻擊傷害特效
      0.eff(0 51,1.50:2 1.0:2 1.1:2 1.2:2 1.3:2 1.4:2 1.5:2 1.6:2 1.7:2 1.8:2 1.9:2 1.10:2 1.11:2 1.12:2 1.13:2 1.14:2 1.15:2 1.16:2 1.17:2 1.18:2 1.19:2 1.20:2 1.21:2 1.22:2 1.23:2 1.24:2 1.25:2 1.26:2 1.27:2 1.28:2 1.29:2 1.30:2 1.31:2 1.32:2 1.33:2 1.34:2 1.35:2 1.36:2 1.37:2 1.38:2 1.39:2 1.40:2 1.41:2 1.42:2 1.43:2 1.44:2 1.45:2 1.46:2 1.47:2 1.48:2 1.49:2)
      102.type(0)
            104.attr(4)
#2002      51=10570 攻擊傷害特效
      0.eff(0 51,2.50:2 2.0:2 2.1:2 2.2:2 2.3:2 2.4:2 2.5:2 2.6:2 2.7:2 2.8:2 2.9:2 2.10:2 2.11:2 2.12:2 2.13:2 2.14:2 2.15:2 2.16:2 2.17:2 2.18:2 2.19:2 2.20:2 2.21:2 2.22:2 2.23:2 2.24:2 2.25:2 2.26:2 2.27:2 2.28:2 2.29:2 2.30:2 2.31:2 2.32:2 2.33:2 2.34:2 2.35:2 2.36:2 2.37:2 2.38:2 2.39:2 2.40:2 2.41:2 2.42:2 2.43:2 2.44:2 2.45:2 2.46:2 2.47:2 2.48:2 2.49:2)
      102.type(0)
            104.attr(4)
舉3個例子 剩下自己編了 編碼號碼自己找地方改 要對應核心

圖檔載點https://goo.gl/dnpnaZ

flyht 發表於 2018-3-14 16:49

        /**
       * 計算結果
       */
        @Override
        public void commit() {
                if (_isHit) {
                        if (_pc.dice_hp() != 0) {
                                if ((_random.nextInt(1000) + 1) <= _pc.dice_hp()) {
                                        _drainHp = _pc.sucking_hp();
                                }
                        }
                        if (_pc.dice_mp() != 0) {
                                if ((_random.nextInt(1000) + 1) <= _pc.dice_mp()) {
                                        _drainMana = _pc.sucking_mp();
                                }
                        }
                        switch (_calcType) {
                        case PC_PC:
                                if (_pc.lift() != 0) {
                                        if ((_random.nextInt(1000) + 1) <= _pc.lift()) {
                                                L1ItemInstance armor = _targetPc.getInventory().getItemEquipped(2, 1);// 頭盔
                                                if (armor != null) {
                                                        _targetPc.getInventory().setEquipped(armor, false);
                                                        // 1,356:盔甲的連接部分被破壞了。
                                                        _targetPc.sendPackets(new S_ServerMessage(1356));
                                                }
                                        }
                                }
                                commitPc();
                                break;

                        case PC_NPC:
                                commitNpc();
                                break;
                        }
                }
               
                if (!ConfigAlt.ALT_ATKMSG) { // 傷害顯示特效開關
                        return;
                }

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

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

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

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

jjen0206 發表於 2018-3-15 06:24

感謝大大無私的分享

puenhan 發表於 2018-3-15 22:10

flyht 發表於 2018-3-14 16:52
#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


感謝大大教學 有點難懂 大大有LINE可以加嗎 我最近才在學習如何修改原碼 感謝您的分享 謝謝

ikk963 發表於 2019-7-26 20:22

感謝大大無私的分享

camper0830 發表於 2020-1-29 22:36

本帖最後由 camper0830 於 2020-1-29 22:38 編輯

flyht 發表於 2018-3-14 16:49
這是原始版本寫法 我直接複製別人寫好的 主要是抓顯示圖檔
樓下是伊薇版的寫法 自己修改圖檔編號和編號對應 ...
請問flyht大大 我用的是2.70c版可以用嗎?? 我不確定自己用的是原始版還是伊薇版...有方法區分嗎??
這是我的截圖
沒辦法區分也沒關係,我可以兩種方法都是試試看...

主要問題是...1.圖檔要放哪???   2.編碼怎麼弄???


感謝大大,祝您新年快樂!

nienyung 發表於 2020-1-30 10:17

       
這個不錯哦...想知道+1

michaeljordan18 發表於 2020-5-2 11:07

這功能很想要
但我的天堂沒含原始碼(v14太陽神)
只能靠外掛來弄
想問大大們有以前的外掛嗎
3.5版的~感恩

zo22 發表於 2020-6-27 19:22

超棒的喔感謝大大分享

想開服 發表於 2020-6-27 19:51

我也有興趣了解..............

youpinpeng 發表於 2020-7-1 22:22

       
感謝大大無私的分享

52天堂啦 發表於 2020-9-28 00:23

謝謝囉~

bennyst 發表於 2021-7-18 09:09

test1234 發表於 2021-9-26 13:12

flyht 發表於 2018-3-14 16:52
#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


感謝大大的教學

malk315 發表於 2021-9-30 14:38

請問編碼要編進哪裡呢? 謝謝大大分享

qqcloudqq 發表於 2021-9-30 15:12

.想知道+1

焰雨天 發表於 2021-10-6 23:45

請問可以只把顯示在對話欄的文字隱藏
只讓GM看到嗎
頁: [1] 2
查看完整版本: 請問攻擊顯示