From 19dc4a2b0f65d54e2ca5fee41d5b7ac60bdc80c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E9=A3=8E?= <1213457484@qq.com> Date: Sat, 15 Mar 2025 17:12:04 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=90=8E=E5=8F=B0=E5=A2=9E=E5=8A=A0=20=20?= =?UTF-8?q?=E6=80=AA=E7=89=A9=E8=A1=80=E9=87=8F=E8=AE=BE=E7=BD=AE=20=20?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A1=A8=20=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=B8=80=E7=9B=B4=E6=B7=BB=E5=8A=A0=20=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=98=AF=E5=89=8D=E4=B8=AA=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E7=9A=841=E4=B8=87=E5=80=8D=202.=20=E6=80=AA=E7=89=A9=E8=A1=80?= =?UTF-8?q?=E9=87=8F=E6=98=BE=E7=A4=BA=20=20=E5=8F=AA=E6=98=BE=E7=A4=BA=20?= =?UTF-8?q?BOSS=20=E4=B8=94=E4=B8=8D=E6=98=AF=E4=B8=80=E5=87=BB=E5=BF=85?= =?UTF-8?q?=E6=9D=80=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=203.=20=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E5=8A=A0=E6=88=90=20=E5=92=8C=20=E9=A2=9D=E5=A4=96?= =?UTF-8?q?=E6=AE=B5=E4=BC=A4=20=E5=A4=B4=E9=A1=B6=E5=92=8C=E8=A7=A3?= =?UTF-8?q?=E5=8D=A1=20=E6=98=BE=E7=A4=BA=20=E4=BB=A5=E4=B8=87=E4=B8=BA?= =?UTF-8?q?=E8=BF=9B=E5=88=B6=E5=8D=95=E4=BD=8D=204.=20=E5=80=8D=E6=94=BB?= =?UTF-8?q?=20=E6=AE=B5=E4=BC=A4=20=E5=88=87=E5=89=B2=20=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=AE=BE=E7=BD=AE=E6=97=A0=E9=99=90=E5=A4=A7?= =?UTF-8?q?=20=20=E4=BC=A4=E5=AE=B3=E5=8F=AF=E4=BB=A5=E6=89=93=E5=88=B0?= =?UTF-8?q?=E6=97=A0=E9=99=90=E5=A4=A7=205.=20=E8=BD=AC=E7=94=9F=E8=BD=AC?= =?UTF-8?q?=E7=9A=84=E6=98=AF=E8=B4=A6=E5=8F=B7=E3=80=82=E3=80=82=E6=94=B9?= =?UTF-8?q?=E6=88=90=E5=8D=95=E4=B8=80=E8=A7=92=E8=89=B2=E8=BD=AC=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这个新的6. setLevel 这个函数脚本调整了等级之后不会立即生效,需要改成立即生效 比如:cm.getPlayer().setLevel(120); --- src/client/MapleCharacter.java | 61 +++++++++++------ src/client/inventory/Equip.java | 35 +++++----- src/client/inventory/IEquip.java | 4 +- src/client/inventory/ItemLoader.java | 9 +-- src/gui/Start.java | 3 +- src/handling/channel/handler/DamageParse.java | 67 ++++++++++--------- .../channel/handler/PlayersHandler.java | 10 +-- 7 files changed, 109 insertions(+), 80 deletions(-) diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 6f8470c..2e5af3c 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -4029,7 +4029,13 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se } return ret.masterlevel; } - + public void setLevelex(final short level) { + this.level = level; + final Map statup = new EnumMap(MapleStat.class); + statup.put(MapleStat.EXP, exp); + statup.put(MapleStat.LEVEL, (long) level); + this.client.sendPacket(MaplePacketCreator.updatePlayerStats(statup, this)); + } public void levelUp() { if (this.getLevel() >= this.maxLevel) { return; @@ -11870,21 +11876,24 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se return 限制等级; } - public int getDD() { - int Magnification = 0; + public BigInteger getDD() { + BigInteger re = BigInteger.ZERO; + + if (Start.ConfigValuesJson.getInteger("isdd") == 0) return null; + JSONObject dd = Start.ConfigValuesJson.getJSONObject("ddbb"); JSONObject ddzb = Start.ConfigValuesJson.getJSONObject("ddzb"); - if ((dd == null && ddzb == null) || Start.ConfigValuesJson.getInteger("isdd") == 0) return 0; - - if (dd != null) { Set strings = dd.keySet(); for (String string : strings) { boolean b = this.haveItem(Integer.parseInt(string)); if (b) { int itemNum = getItemNum(Integer.parseInt(string)); - Magnification += (dd.getInteger(string))*itemNum; + + BigInteger qgbbValue = new BigInteger(dd.getString(string)); + BigInteger itemNumBigInt = new BigInteger(Integer.toString(itemNum)); + re = re.add(qgbbValue.multiply(itemNumBigInt)); } } } @@ -11893,24 +11902,30 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se for (String string : strings) { boolean b = this.hasEquipped(Integer.parseInt(string)); if (b) { - Magnification += ddzb.getInteger(string); - + BigInteger qgbbValue = new BigInteger(ddzb.getString(string)); + re = re.add(qgbbValue); } } } List equList = this.getEquList(); for (Equip equip : equList) { - Magnification += equip.getdd(); + re = re.add(new BigInteger(equip.getdd())); } - return Magnification; + + if (re.compareTo(BigInteger.ZERO)<=0) return null; + + return re; } - public int getDB() { - int re = 0; + public BigInteger getDB() { + + if (Start.ConfigValuesJson.getInteger("isdb") == 0) return null; + + BigInteger re = BigInteger.ZERO; + JSONObject dbbb = Start.ConfigValuesJson.getJSONObject("dbbb"); JSONObject dbzb = Start.ConfigValuesJson.getJSONObject("dbzb"); - if ((dbbb == null && dbzb == null) || Start.ConfigValuesJson.getInteger("isdb") == 0) return 0; if (dbbb != null) { @@ -11919,7 +11934,10 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se boolean b = this.haveItem(Integer.parseInt(string)); if (b) { int itemNum = getItemNum(Integer.parseInt(string)); - re += (dbbb.getInteger(string))*itemNum; + + BigInteger qgbbValue = new BigInteger(dbbb.getString(string)); + BigInteger itemNumBigInt = new BigInteger(Integer.toString(itemNum)); + re = re.add(qgbbValue.multiply(itemNumBigInt)); } } } @@ -11928,16 +11946,20 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se for (String string : strings) { boolean b = this.hasEquipped(Integer.parseInt(string)); if (b) { - re += dbzb.getInteger(string); + BigInteger qgbbValue = new BigInteger(dbzb.getString(string)); + re = re.add(qgbbValue); } } } List equList = this.getEquList(); for (Equip equip : equList) { - re += equip.getdb(); + re = re.add( new BigInteger(equip.getdb())); } + if (re.compareTo(BigInteger.ZERO)<=0) return null; + + return re; } @@ -11947,8 +11969,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se JSONObject qgbb = Start.ConfigValuesJson.getJSONObject("qgbb"); JSONObject qgzb = Start.ConfigValuesJson.getJSONObject("qgzb"); - if ((qgbb == null && qgzb == null) || Start.ConfigValuesJson.getInteger("isqg") == 0) { - return BigInteger.ZERO; + if (Start.ConfigValuesJson.getInteger("isqg") == 0) { + return null; } if (qgbb != null) { @@ -11980,6 +12002,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se BigInteger equipQG = new BigInteger(equip.getqg()); re = re.add(equipQG); } + if ( re.compareTo(BigInteger.ZERO)<=0) return null; return re; } diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index 5d2fe40..82edcbe 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -36,8 +36,8 @@ public class Equip extends Item implements IEquip, Serializable { private long itemEXP; private int durability; private int incSkill; - private int dd; - private int db; + private String dd; + private String db; private String qg; public Equip(final int id, final short position, final byte flag) { @@ -71,8 +71,8 @@ public class Equip extends Item implements IEquip, Serializable { this.itemEXP = 0; this.durability = -1; this.incSkill = -1; - this.dd = 0; - this.db = 0; + this.dd = "0"; + this.db = "0"; this.qg = "0"; } @@ -107,8 +107,8 @@ public class Equip extends Item implements IEquip, Serializable { this.itemEXP = 0; this.durability = -1; this.incSkill = -1; - this.dd = 0; - this.db = 0; + this.dd = "0"; + this.db = "0"; this.qg = "0"; } @@ -143,8 +143,8 @@ public class Equip extends Item implements IEquip, Serializable { this.itemEXP = 0; this.durability = -1; this.incSkill = -1; - this.dd = 0; - this.db = 0; + this.dd = "0"; + this.db = "0"; this.qg = "0"; } @@ -384,16 +384,18 @@ public class Equip extends Item implements IEquip, Serializable { } - public void setdd(int dd) { - if (dd < 0) { - dd = 0; + public void setdd(String dd) { + BigInteger bigInteger = new BigInteger(dd); + if (bigInteger.compareTo(BigInteger.ZERO) < 0) { + dd = "0"; } this.dd = dd; } - public void setdb(int db) { - if (db < 0) { - db = 0; + public void setdb(String db) { + BigInteger bigInteger = new BigInteger(db); + if (bigInteger.compareTo(BigInteger.ZERO) < 0) { + db = "0"; } this.db = db; } @@ -420,6 +422,7 @@ public class Equip extends Item implements IEquip, Serializable { this.level = level; } + @Override public byte getViciousHammer() { return this.vicioushammer; @@ -605,12 +608,12 @@ public class Equip extends Item implements IEquip, Serializable { } @Override - public int getdd() { + public String getdd() { return this.dd; } @Override - public int getdb() { + public String getdb() { return this.db; } diff --git a/src/client/inventory/IEquip.java b/src/client/inventory/IEquip.java index dfac49f..102e9cf 100644 --- a/src/client/inventory/IEquip.java +++ b/src/client/inventory/IEquip.java @@ -68,9 +68,9 @@ public interface IEquip extends IItem { short getMpR(); - int getdd(); + String getdd(); - int getdb(); + String getdb(); String getqg(); diff --git a/src/client/inventory/ItemLoader.java b/src/client/inventory/ItemLoader.java index 4250720..7f1bd70 100644 --- a/src/client/inventory/ItemLoader.java +++ b/src/client/inventory/ItemLoader.java @@ -114,8 +114,8 @@ public enum ItemLoader { equip.setPotential3(rs.getShort("potential3")); equip.setHpR(rs.getShort("hpR")); equip.setMpR(rs.getShort("mpR")); - equip.setdd(rs.getInt("dd")); - equip.setdb(rs.getInt("db")); + equip.setdd(rs.getString("dd")); + equip.setdb(rs.getString("db")); equip.setqg(rs.getString("qg")); equip.setGiftFrom(rs.getString("sender")); if (equip.getUniqueId() > -1 && GameConstants.isEffectRing(rs.getInt("itemid"))) { @@ -266,12 +266,13 @@ public enum ItemLoader { pse.setInt(25, (int) equip.getPotential3()); pse.setInt(26, (int) equip.getHpR()); pse.setInt(27, (int) equip.getMpR()); - pse.setInt(28, (int) equip.getdd()); - pse.setInt(29, (int) equip.getdb()); + pse.setString(28, equip.getdd()); + pse.setString(29, equip.getdb()); pse.setString(30, equip.getqg()); pse.executeUpdate(); } } + pse.close(); ps.close(); } catch (SQLException ex) { diff --git a/src/gui/Start.java b/src/gui/Start.java index 34d82ea..9b193b9 100644 --- a/src/gui/Start.java +++ b/src/gui/Start.java @@ -111,7 +111,8 @@ public class Start { public static List zlConfigs = new ArrayList<>(); public static int zlkg = 0; - + public static String[] shxs= {"万", "亿", "兆", "京", "垓","秭", "穰", "沟", "涧", "正", "载", "极","恒河沙", "阿僧祇", "那由他", "不可思议", "无量", "古戈尔","频菠萝", "矜羯罗","不可说不可说转","超限数", + "绝对无限","绝对无量","绝对小数","绝对大数","绝对超限数"}; public static ArrayList 公告列表; public static List> exptable; diff --git a/src/handling/channel/handler/DamageParse.java b/src/handling/channel/handler/DamageParse.java index 60d554a..fed7585 100644 --- a/src/handling/channel/handler/DamageParse.java +++ b/src/handling/channel/handler/DamageParse.java @@ -439,7 +439,7 @@ public class DamageParse { BigInteger bigInteger1 = TWgetNewtotDamageToOneMonster(attack, player, newtotDamageToOneMonster, monster); monster.damage(player, bigInteger1, true, attack.skill); - if (monster.getHp() > 0 ) { + if (monster.getHp() > 0 && monster.getStats().isBoss()) { BigInteger bigInteger = monster.getbigHp(); BigInteger mobMaxHp = monster.getMaxHP(); @@ -652,8 +652,8 @@ public class DamageParse { private static BigInteger TWgetNewtotDamageToOneMonster(AttackInfo attack, MapleCharacter player, long newtotDamageToOneMonster, MapleMonster monster) { newtotDamageToOneMonster = 伤害减伤(monster.getId(), newtotDamageToOneMonster); - double[] ewds = ewds(player, monster, true, attack.skill); - double[] ewbl = ewbl(player, monster, true, attack.skill); + BigInteger[] ewds = ewds(player, monster, true, attack.skill); + BigInteger[] ewbl = ewbl(player, monster, true, attack.skill); String a = ""; String b = ""; String c = ""; @@ -665,9 +665,9 @@ public class DamageParse { BigInteger newtotDamage = BigInteger.valueOf(newtotDamageToOneMonster); BigInteger v = BigInteger.ZERO; - if (ewds[0] > 0.0) { - BigDecimal ewds0 = BigDecimal.valueOf(ewds[0]); - BigDecimal ewds1 = BigDecimal.valueOf(ewds[1]); + if (ewds!=null) { + BigDecimal ewds0 = new BigDecimal(ewds[0]); + BigDecimal ewds1 = new BigDecimal(ewds[1]); BigDecimal product = ewds0.multiply(ewds1); BigDecimal newtotDamageBD = new BigDecimal(newtotDamage); BigDecimal result = newtotDamageBD.multiply(product); @@ -676,14 +676,14 @@ public class DamageParse { newtotDamage = newtotDamage.add(v); } - if (ewbl[0] > 0.0) { - BigInteger damageIncrease = newtotDamage.multiply(BigInteger.valueOf((long) (ewbl[0] * 100))).divide(BigInteger.valueOf(100)); + if (ewbl!=null) { + BigInteger damageIncrease = newtotDamage.multiply((ewbl[0].multiply(ewbl[1]))).divide(BigInteger.valueOf(100)); newtotDamage = newtotDamage.add(damageIncrease); - a = "伤害加成 #b" + (int) ewbl[0] + "%#k"; + a = "伤害加成 #b" + ewbl[0] + "%#k"; } - if (ewds[0] > 0.0) { - b = "额外段伤 #b" + (int) ewds[0] + "段#k"; + if (ewds != null) { + b = "额外段伤 #b" + process(ewds[0].toString()) + "段#k"; String s = process(v.toString()); c = "段伤伤害 #b" + s + "#k"; } @@ -1011,7 +1011,7 @@ public class DamageParse { BigInteger bigInteger1 = TWgetNewtotDamageToOneMonster(attack, player, newtotDamageToOneMonster, monster); monster.damage(player, bigInteger1, true, attack.skill); - if (monster.getHp() > 0 ) { + if (monster.getHp() > 0 &&monster.getStats().isBoss() ) { BigInteger bigInteger = monster.getbigHp(); BigInteger mobMaxHp = monster.getMaxHP(); @@ -1734,37 +1734,36 @@ public class DamageParse { return 数值; } - public static double[] ewds(final MapleCharacter play, final MapleMonster monster, boolean mag, int skillId) { - double Magnification = 0.0; - if (Start.ConfigValuesJson == null) return new double[]{0.0, 0.0}; + public static BigInteger[] ewds(final MapleCharacter play, final MapleMonster monster, boolean mag, int skillId) { - Magnification = play.getDD(); + BigInteger Magnification = play.getDD(); + if (Magnification == null) { + return null; + } - Integer ddxs = Start.ConfigValuesJson.getJSONObject("ddxs").getInteger(String.valueOf(skillId)); + String ddxs = Start.ConfigValuesJson.getJSONObject("ddxs").getString(String.valueOf(skillId)); if (ddxs == null) { - return new double[]{0.0, 0.0}; - } - if (Magnification == 0) { - return new double[]{0.0, 0.0}; + return null; } - return new double[]{Magnification, ddxs/100.0}; + + return new BigInteger[]{Magnification, new BigInteger(ddxs).divide(BigInteger.valueOf(100))}; } - public static double[] ewbl(final MapleCharacter play, final MapleMonster monster, boolean mag, int skillId) { - double Magnification = 0.0; + public static BigInteger[] ewbl(final MapleCharacter play, final MapleMonster monster, boolean mag, int skillId) { - Magnification = play.getDB(); + BigInteger Magnification = play.getDB(); + if (Magnification == null)return null; - Integer dbxs = Start.ConfigValuesJson.getJSONObject("dbxs").getInteger(String.valueOf(skillId)); + String dbxs = Start.ConfigValuesJson.getJSONObject("dbxs").getString(String.valueOf(skillId)); if (dbxs == null) { - return new double[]{0.0, 0.0}; + return null; } - return new double[]{Magnification, dbxs/100.0}; + return new BigInteger[]{Magnification,new BigInteger(dbxs).divide(BigInteger.valueOf(100))}; } @@ -1773,13 +1772,13 @@ public class DamageParse { Magnification = play.getQG(); - Integer qgxs = Start.ConfigValuesJson.getJSONObject("qgxs").getInteger(String.valueOf(skillId)); + String qgxs = Start.ConfigValuesJson.getJSONObject("qgxs").getString(String.valueOf(skillId)); if (qgxs == null) { return null; } - if (Magnification.compareTo(BigInteger.ZERO) > 0) { - BigInteger qgxsBigInt = new BigInteger(qgxs.toString()); + if (Magnification!=null) { + BigInteger qgxsBigInt = new BigInteger(qgxs); BigInteger result = Magnification.multiply(qgxsBigInt).divide(BigInteger.valueOf(100)); return result; @@ -1929,8 +1928,10 @@ public class DamageParse { public static String process( String b) { - String[] a = {"万", "亿", "兆", "京", "垓","秭", "穰", "沟", "涧", "正", "载", "极","恒河沙", "阿僧祇", "那由他", "不可思议", "无量", "古戈尔","频菠萝", "矜羯罗","不可说不可说转","超限数", - "绝对无限","绝对无量","绝对小数","绝对大数","绝对超限数"}; + + + + String[] a = Start.shxs; int len = b.length(); diff --git a/src/handling/channel/handler/PlayersHandler.java b/src/handling/channel/handler/PlayersHandler.java index 20367db..82bc8cc 100644 --- a/src/handling/channel/handler/PlayersHandler.java +++ b/src/handling/channel/handler/PlayersHandler.java @@ -146,17 +146,17 @@ public class PlayersHandler { string += "#b个人倍率\r\n"; string += "经验 " + (long) (Math.round((float) c.getPlayer().getEXPMod()) * 100) * Math.round(c.getPlayer().getStat().expBuff / 100.0) + "%, 爆率 " + (long) (Math.round((float) c.getPlayer().getDropMod()) * 100) * Math.round(c.getPlayer().getStat().dropBuff / 100.0) + "%, 金币 " +(long) (Math.round((float) c.getPlayer().getCashMod()) * 100) * Math.round(c.getPlayer().getStat().mesoBuff / 100.0) + "%\r\n"; - if (Start.ConfigValuesJson.getInteger("isdb") ==1){ - string += "伤害加成"+player.getDB()+" " ; + if (Start.ConfigValuesJson.getInteger("isdb") ==1 &&player.getDB()!=null){ + string += "伤害加成"+DamageParse.process(player.getDB().toString())+" " ; } - if (Start.ConfigValuesJson.getInteger("isdd") ==1){ - string += "多段次数 " +player.getDD() + "次\r\n" ; + if (Start.ConfigValuesJson.getInteger("isdd") ==1 &&player.getDD()!=null){ + string += "多段次数 " +DamageParse.process(player.getDD().toString()) + "次\r\n" ; }else { string += "\r\n" ; } - if (Start.ConfigValuesJson.getInteger("isqg") ==1){ + if (Start.ConfigValuesJson.getInteger("isqg") ==1 &&player.getQG()!=null ){ string += "切割伤害"+DamageParse.process(player.getQG().toString())+" "; } if (Start.bskg == 1) {