450922873 发表于 2022-1-27 15:04:28

求助源码修改等级上限

1.游戏中到了199级后就没法升级了 ,经验卡在了99.982.下面是源码,没找到修改的地方

求大佬指点!levelUp()方法

if (GameConstants.isKOC(job)) {
            if (level <= 70) {
                remainingAp += 6;
            } else {
                remainingAp += 5;
            }
      } else {
            remainingAp += 5;
      }
      int maxhp = stats.getMaxHp();
      int maxmp = stats.getMaxMp();

      if (job == 0 || job == 1000 || job == 2000 || job == 2001 || job == 3000) { // Beginner
            maxhp += Randomizer.rand(12, 16);
            maxmp += Randomizer.rand(10, 12);
      } else if (job >= 100 && job <= 132) { // Warrior
            final ISkill improvingMaxHP = SkillFactory.getSkill(1000001);
            final int slevel = getSkillLevel(improvingMaxHP);
            if (slevel > 0) {
                maxhp += improvingMaxHP.getEffect(slevel).getX();
            }
            maxhp += Randomizer.rand(24, 28);
            maxmp += Randomizer.rand(4, 6);
      } else if (job >= 200 && job <= 232) { // Magician
            final ISkill improvingMaxMP = SkillFactory.getSkill(2000001);
            final int slevel = getSkillLevel(improvingMaxMP);
            if (slevel > 0) {
                maxmp += improvingMaxMP.getEffect(slevel).getX() * 2;
            }
            maxhp += Randomizer.rand(10, 14);
            maxmp += Randomizer.rand(22, 24);
      } else if (job >= 3200 && job <= 3212) { //battle mages get their own little neat thing
            maxhp += Randomizer.rand(20, 24);
            maxmp += Randomizer.rand(42, 44);
      } else if ((job >= 300 && job <= 322) || (job >= 400 && job <= 434) || (job >= 1300 && job <= 1311) || (job >= 1400 && job <= 1411) || (job >= 3300 && job <= 3312)) { // Bowman, Thief, Wind Breaker and Night Walker
            maxhp += Randomizer.rand(20, 24);
            maxmp += Randomizer.rand(14, 16);
      } else if ((job >= 500 && job <= 522) || (job >= 3500 && job <= 3512)) { // Pirate
            final ISkill improvingMaxHP = SkillFactory.getSkill(5100000);
            final int slevel = getSkillLevel(improvingMaxHP);
            if (slevel > 0) {
                maxhp += improvingMaxHP.getEffect(slevel).getX();
            }
            maxhp += Randomizer.rand(22, 26);
            maxmp += Randomizer.rand(18, 22);
      } else if (job >= 1100 && job <= 1111) { // Soul Master
            final ISkill improvingMaxHP = SkillFactory.getSkill(11000000);
            final int slevel = getSkillLevel(improvingMaxHP);
            if (slevel > 0) {
                maxhp += improvingMaxHP.getEffect(slevel).getX();
            }
            maxhp += Randomizer.rand(24, 28);
            maxmp += Randomizer.rand(4, 6);
      } else if (job >= 1200 && job <= 1211) { // Flame Wizard
            final ISkill improvingMaxMP = SkillFactory.getSkill(12000000);
            final int slevel = getSkillLevel(improvingMaxMP);
            if (slevel > 0) {
                maxmp += improvingMaxMP.getEffect(slevel).getX() * 2;
            }
            maxhp += Randomizer.rand(10, 14);
            maxmp += Randomizer.rand(22, 24);
      } else if (job >= 1500 && job <= 1512) { // Pirate
            final ISkill improvingMaxHP = SkillFactory.getSkill(15100000);
            final int slevel = getSkillLevel(improvingMaxHP);
            if (slevel > 0) {
                maxhp += improvingMaxHP.getEffect(slevel).getX();
            }
            maxhp += Randomizer.rand(22, 26);
            maxmp += Randomizer.rand(18, 22);
      } else if (job >= 2100 && job <= 2112) { // Aran
            maxhp += Randomizer.rand(50, 52);
            maxmp += Randomizer.rand(4, 6);
      } else if (job >= 2200 && job <= 2218) { // Evan
            maxhp += Randomizer.rand(12, 16);
            maxmp += Randomizer.rand(50, 52);
      } else { // GameMaster
            maxhp += Randomizer.rand(50, 100);
            maxmp += Randomizer.rand(50, 100);
      }
      maxmp += stats.getTotalInt() / 10;


      while (exp > GameConstants.getExpNeededForLevel(level)) {
            exp -= GameConstants.getExpNeededForLevel(level);
            level += 1;
            int level = getLevel();
      }

      // 成就系統
      /*
         * if (level == 30) { finishAchievement(2); } if (level == 70) {
         * finishAchievement(3); } if (level == 120) { finishAchievement(4); }
         * if (level == 200) { finishAchievement(5); }
         */
      if (!isGM()) {
            if (level == 10 || level == 30 || level == 70 || level == 120 || level == 200) {
                final StringBuilder sb = new StringBuilder("[恭喜] ");
                final IItem medal = getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -26);
                if (medal != null) { // Medal
                  sb.append("<");
                  sb.append(MapleItemInformationProvider.getInstance().getName(medal.getItemId()));
                  sb.append("> ");
                }
                sb.append(getName());
                sb.append(" 达到了 " + level + " 级,让我们一起恭喜他/她吧!");
                World.Broadcast.broadcastMessage(MaplePacketCreator.serverNotice(6, sb.toString()).getBytes());
            }
      }
      // maxhp = (short) Math.min(30000, Math.abs(maxhp));
      //maxmp = (short) Math.min(30000, Math.abs(maxmp));

      maxhp = Math.min(30000, maxhp);
      maxmp = Math.min(30000, maxmp);
      final List<Pair<MapleStat, Integer>> statup = new ArrayList<Pair<MapleStat, Integer>>(8);

      statup.add(new Pair(MapleStat.AVAILABLEAP, Integer.valueOf(this.remainingAp)));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.MAXHP, maxhp));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.MAXMP, maxmp));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.HP, maxhp));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.MP, maxmp));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.EXP, exp));
      statup.add(new Pair<MapleStat, Integer>(MapleStat.LEVEL, (int) level));

      if (isGM() || (job != 0 && job != 1000 && job != 2000 && job != 2001 && job != 3000)) { // Not Beginner, Nobless and Legend
            remainingSp += 3;
            client.getSession().write(MaplePacketCreator.updateSp(this, false));
      } else if (level <= 10) {
            stats.setStr((short) (stats.getStr() + remainingAp));
            remainingAp = 0;

            statup.add(new Pair<MapleStat, Integer>(MapleStat.STR, (int) stats.getStr()));
      }

      statup.add(new Pair<MapleStat, Integer>(MapleStat.AVAILABLEAP, (int) remainingAp));

      stats.setMaxHp((short) maxhp);
      stats.setMaxMp((short) maxmp);
      stats.setHp((short) maxhp);
      stats.setMp((short) maxmp);
      client.getSession().write(MaplePacketCreator.updatePlayerStats(statup, getJob()));
      map.broadcastMessage(this, MaplePacketCreator.showForeignEffect(getId(), 0), false);
      stats.recalcLocalStats();
      silentPartyUpdate();
      guildUpdate();
      familyUpdate();

123386569 发表于 2022-1-27 23:30:58

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶- -

fall 发表于 2022-2-26 00:37:21

改也不是改这里啊
页: [1]
查看完整版本: 求助源码修改等级上限