pili88185 發表於 2024-4-27 21:03

傷害顯示類別問題請教

小弟最近自己開單機版想弄傷害顯示,請問有一種類別顯示如下:


EX:(23)455   ~數字我隨便打的

想請問有大神願意分享嗎?感激不盡

yasioukon 發表於 2024-4-27 23:09

你說的應該是登入器的功能

pili88185 發表於 2024-4-28 06:23

yasioukon 發表於 2024-4-27 23:09
你說的應該是登入器的功能

感謝回復

xcopl 發表於 2024-4-28 08:41

改核心,网上很多地方有教程。结束。

Lin-JN 發表於 2024-5-2 03:44




    /**
   * 输入伤害显示数值<br>
   * 动画显示或纯数字<br>
   * 开关未在此设定
   *
   * @param attack   显示(发起攻击的)对象
   * @param damage 伤害值
   */
    public void sendDamageEffect(final L1PcInstance attack, final int damage) {
      int a;
      int b;
      int c;
      int d;
      int e;
      if (attack.isVip()) { // 暂时这样
            a = 17800;
            b = 17810;
            c = 17820;
            d = 17830;
            e = 17840;
      } else {
            a = 17860;
            b = 17870;
            c = 17880;
            d = 17830;
            e = 17890;
      }
      int i = (int) ((damage / Math.pow(10, 0)) % 10) + a;//个位0-9
      int k = (int) ((damage / Math.pow(10, 1)) % 10) + b;//十位0-9
      int h = (int) ((damage / Math.pow(10, 2)) % 10) + c;//百位0-9
      int s = (int) ((damage / Math.pow(10, 3)) % 10) + d;//千位0-9
      int m = (int) ((damage / Math.pow(10, 4)) % 10) + e;//万位0-9

      String color = "                               \\f3(\\f2"; // 数字移到一边去

      switch (Config.OTHER_ATKMSG_MOD) { // 显示模式
            case 1: // 使用动画效果
                final List<Integer> effectList = new ArrayList<>();
                if (damage <= 0) {
                  attack.sendPackets(new S_EffectLocation(getLocation(), 13418));//Miss特效 17910
                } else if (damage < 10) {
                  effectList.add(i);
                } else if (damage < 100) {
                  effectList.add(i);
                  effectList.add(k);
                } else if (damage < 1000) {
                  effectList.add(i);
                  effectList.add(k);
                  effectList.add(h);
                } else if (damage < 10000) {
                  effectList.add(i);
                  effectList.add(k);
                  effectList.add(h);
                  effectList.add(s);
                } else if (damage < 100000) {
                  effectList.add(i);
                  effectList.add(k);
                  effectList.add(h);
                  effectList.add(s);
                  effectList.add(m);
                } else { // 超出10万 不使用特效
                  attack.sendPackets(new S_ColorMessage(color + damage + "\\f3)"));
                }
                if (!effectList.isEmpty()) {
                  try {
                        for (Integer gfx : effectList) {
                            attack.sendPackets(new S_EffectLocation(getLocation(), gfx));
                        }
                  } finally {
                        effectList.clear();
                  }
                }
                break;
            case 2: // 使用纯数字显示
                attack.sendPackets(new S_ColorMessage(color + damage + "\\f3)"));
                break;
      }
    }

spr编号改成你的动画对应编号
然后在怪物受伤那里写上 mob.sendDamageEffect(attackPc, damage); 就可以了

17986649 發表於 2024-5-2 09:35

其實我覺得你可以自己寫,我可以說個理論架構,如果本身client版本沒有支援。你可以做成特效檔測試會出現後再來你就必須寫出計算方式可以比對出現特效檔的數值跟座標~這個工程其實算有一定的程度。我自玩都很懶得用~

pili88185 發表於 2024-5-2 10:11

17986649 發表於 2024-5-2 09:35
其實我覺得你可以自己寫,我可以說個理論架構,如果本身client版本沒有支援。你可以做成特效檔測試會出現後 ...

感謝回復 :)

pili88185 發表於 2024-5-2 10:12

Lin-JN 發表於 2024-5-2 03:44
spr编号改成你的动画对应编号
然后在怪物受伤那里写上 mob.sendDamageEffect(attackPc, damage); 就可以 ...

謝謝回覆,我去試試看

nismo0303 發表於 2024-5-4 14:54

感謝分享

CClineage45 發表於 2024-5-5 00:22

感謝分享

JCLee 發表於 2024-5-6 16:59

謝謝分享謝謝分享

win777 發表於 2024-5-6 17:52

謝分享謝謝分享

finalwolf 發表於 2024-5-11 00:34

Lin-JN 發表於 2024-5-2 03:44
spr编号改成你的动画对应编号
然后在怪物受伤那里写上 mob.sendDamageEffect(attackPc, damage); 就可以 ...

感謝大大分享教學~又學了一個新玩意兒

a82108751 發表於 2025-2-4 09:42

感謝分享 感謝分享

azdd 發表於 2025-2-8 18:40

傷害顯示很有趣,自己摸索出來有成就感

baby216034 發表於 2025-2-15 13:31

66666666666666666666666666666

ggyynba 發表於 2025-2-18 14:37

我要賺金幣 金幣

Harvey 發表於 2025-2-21 21:10

我寫想要分享, 找看看

a2ojirugl 發表於 2025-3-6 17:54

感謝無私分享,很棒棒
頁: [1]
查看完整版本: 傷害顯示類別問題請教