微信扫一扫 分享朋友圈

已有 1103 人浏览分享

[服務器疑問] 部分技能及功能異常【我為了不要發太多類似的貼,將跟帖】

[複製鏈接]

集團新軍

Rank: 1

144

威望

361

金錢

4

A幣
主題
4
帖子
59
精華
0
綜合社群主題發文量
0
電玩社群主題發文量
0
娛樂社群主題發文量
0
技術社群主題發文量
4
閱讀權限
10
註冊時間
2021-12-24
  • TA的每日心情
    慵懶
    2022-5-20 01:00
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    小日番 發表於  2023-5-6 04:54:23 | 顯示全部樓層 | 閱讀模式
    hi,大家好啊

    之前的bug我已經修復一些些了,但是又發現了新的bug

    請問這些是哪一個包或是哪個Java函數出了問題?

    關於發包的部分,我已經有找到了,也有比對了一下,沒看出有什麼不一樣

    1)冰雷跟火毒、狂狼冰的技能,還有聖騎士都有屬性的技能,似乎都沒有相剋的效果

    已知:冰凍術釋放之後怪物會結凍,不會給怪物扣血


    2)擴充倉庫時一直按購買+ENTER到最後,打開倉庫會造成客戶端停止回應

    共收到 0 A幣
    打賞榜
    暫無
    暫無
    暫無
    暫無
    ----
    暫無
    ----
    暫無
    ----
    暫無
    ----

    初窺門道

    Rank: 2

    230

    威望

    732

    金錢

    338

    A幣
    主題
    32
    帖子
    64
    精華
    1
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    32
    閱讀權限
    20
    註冊時間
    2021-11-15
  • TA的每日心情
    奮鬥
    2024-1-28 13:17
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    chenhui540 發表於 2023-5-6 19:38:03 | 顯示全部樓層
    自动扣血类的实际伤害效果

    搜索:

            duration += from.getStat().dotTime * 1000;
            long aniTime = duration;
            if (skilz != null) {
                aniTime += skilz.getAnimationTime();
            }
            status.setCancelTask(aniTime);
            if (poison && getHp() > 1) {
                status.setValue(status.getStati(), Integer.valueOf((int) ((eff.getDOT() + from.getStat().dot + from.getStat().getDamageIncrease(eff.getSourceId())) * from.getStat().getCurrentMaxBaseDamage() / 100.0)));
                int dam = Integer.valueOf((int)(aniTime / 1000 * status.getX() / 2));
                status.setPoisonSchedule(dam, from);
                if (dam > 0) {
                    if (dam >= hp) {
                        dam = (int)(hp - 1);
                    }
                    damage(from, dam, false);
                }
            } else if (statusSkill == 4111003 || statusSkill == 14111001) { // shadow web

    替換:


            duration += from.getStat().dotTime * 1000;
            long aniTime = duration;
            /*if (skilz != null) {
                aniTime += skilz.getAnimationTime();
            }*/

            status.setCancelTask(aniTime);
            if (poison && getHp() > 1) {
                //if (getStats().isBoss()) {
                //    return;
                //}
                if (status.getchr() != null) {
                    return;
                }
                status.setDotTime(duration);
                int poisonDot = from.getStat().dot;
                int damageIncrease = from.getStat().getDamageIncrease(eff.getSourceId());
                if (damageIncrease > eff.getDOT()) {
                    poisonDot += damageIncrease;
                } else {
                    poisonDot += eff.getDOT();
                }
                if (from.isAdmin()) {
                    from.dropMessage(6, "[持續傷害] 開始處理效果 - 技能ID:" + eff.getSourceId());
                    from.dropMessage(6, "[持續傷害] 加成 - 技能ID:" + eff.getDOT() + " 被動: " + from.getStat().dot + " 被動加成: " + damageIncrease + " 最終加成:" + poisonDot);
                }
                int poisonDamage = (int) (aniTime / 1000 * ((int) (poisonDot * from.getStat().getCurrentMaxBaseDamage() / 100.0D) / 1));
                int damagex = (int) (((getHp() > poisonDamage) ? poisonDamage : (getHp() - 1)) / (aniTime / 1000));
                status.setValue(status.getStati(), damagex);

                if (from.isAdmin()) {
                    from.dropMessage(6, "[持續傷害] 持續傷害: " + ((getHp() > poisonDamage) ? poisonDamage : (getHp() - 1)) + " 持續時間:" + aniTime + " 持續掉血:" + status.getX());
                }
                status.setPoisonSchedule(status.getX(), from);
            } else if (statusSkill == 4111003 || statusSkill == 14111001) { // shadow web




    搜索:

                poisonsLock.writeLock().lock();
                try {
                    poisons.add(status);
                    if (con != null) {
                        map.broadcastMessage(con, MobPacket.applyMonsterStatus(this, poisons), getTruePosition());
                        con.getClient().getSession().write(MobPacket.applyMonsterStatus(this, poisons));
                    } else {
                        map.broadcastMessage(MobPacket.applyMonsterStatus(this, poisons), getTruePosition());
                    }

    替換:

                poisonsLock.writeLock().lock();
                try {
                    poisons.add(status);
                    status.scheduledoPoison(this);//持續掉血
                    if (con != null) {
                        map.broadcastMessage(con, MobPacket.applyMonsterStatus(this, poisons), getTruePosition());
                        con.getClient().getSession().write(MobPacket.applyMonsterStatus(this, poisons));
                    } else {
                        map.broadcastMessage(MobPacket.applyMonsterStatus(this, poisons), getTruePosition());
                    }




    搜索:

        private boolean reflect = false;
        private long cancelTime = 0;


    替換:

        private boolean reflect = false;
        private long cancelTime = 0;
        private long dotTime = 0;
        private boolean newpoison = true;





    搜索:

        public final void cancelPoisonSchedule(MapleMonster mm) {
            mm.doPoison(this, weakChr);
            this.poisonSchedule = 0;
            this.weakChr = null;
        }


    替換:

        public final void cancelPoisonSchedule(MapleMonster mm) {
            mm.doPoison(this, weakChr);
            this.poisonSchedule = 0;
            this.weakChr = null;
        }

        public WeakReference<MapleCharacter> getchr() {
            return this.weakChr;
        }

        public void setDotTime(long duration) {
            this.dotTime = duration;
        }

        public long getDotTime() {
            return this.dotTime;
        }

        public void setnewpoison(boolean s) {
            this.newpoison = s;
        }

        public void scheduledoPoison(final MapleMonster mon) {
            final java.util.Timer timer = new java.util.Timer(true);
            final long time = System.currentTimeMillis();
            final MonsterStatusEffect eff = this;
            if (newpoison) {
                TimerTask task = new TimerTask() {
                    @Override
                    public void run() {
                    if (time + getDotTime() > System.currentTimeMillis() && mon.isAlive()) {
                            //每次需要執行的代碼放到這裡面  
                            //if (weakChr.get().isAdmin()) {
                            //      weakChr.get().dropMessage(6, "[持續傷害] 持續傷害");
                            //}
                            setnewpoison(false);
                            mon.doPoison(eff, weakChr);
                        } else {
                            setnewpoison(true);
                            //cancelPoisonSchedule(mon);
                            timer.cancel();
                        }
                    }
                };
                timer.schedule(task, 0, 1000);
            }
        }


    頁首:

    import java.util.TimerTask;

    區域版主

    Rank: 10Rank: 10Rank: 10

    1032

    威望

    548

    金錢

    176

    A幣
    主題
    154
    帖子
    323
    精華
    0
    綜合社群主題發文量
    138
    電玩社群主題發文量
    10
    娛樂社群主題發文量
    6
    技術社群主題發文量
    12
    閱讀權限
    100
    註冊時間
    2018-1-6

    社群建設勳章傑出貢獻勳章

  • TA的每日心情

    2021-6-17 14:24
  • 簽到天數: 322 天

    連續簽到: 0 天

    [LV.8]以壇為家I

    利金顫 發表於 2023-5-8 10:01:21 | 顯示全部樓層
    chenhui540 發表於 2023-5-6 19:38
    自动扣血类的实际伤害效果

    搜索:

    優質的回文,請收下我的膝蓋
    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    59

    發文

    361

    金錢

    4

    A幣

    ----------榮譽勳章----------

    熱門推薦
    圖文推薦
    • 聯繫我們

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-11-22 16:07 , 網路刷新 0.109885 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322