From 1a457f3bfa43f832eb930d764e4e170c3b82ce14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E9=A3=8E?= <1213457484@qq.com> Date: Wed, 5 Mar 2025 14:24:27 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=80=AA=E7=89=A9=E8=A1=80=E9=87=8F=20?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E6=80=AA=E7=89=A9=E9=83=BD=E6=98=AF=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=9A=84=EF=BC=8C=E4=BB=96=E7=9A=84=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E7=94=9F=E5=91=BD=E5=80=BC=E5=92=8C=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E7=94=9F=E5=91=BD=E5=80=BC=E5=8F=AF=E8=83=BD=E6=98=AF=20=20100?= =?UTF-8?q?0000/1000=20=EF=BC=8C=E6=8B=8D=E5=8D=96=E6=9C=89=E4=B8=AA?= =?UTF-8?q?=E4=BC=A4=E5=AE=B3=E6=B5=8B=E8=AF=95=E6=89=93=E6=9C=A8=E6=A1=A9?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=94=A8=E8=BF=99=E4=B8=AA=E8=B0=83?= =?UTF-8?q?=E8=AF=95=EF=BC=8C=E8=BF=98=E6=9C=89=E7=9B=AE=E5=89=8D=E5=B0=8F?= =?UTF-8?q?=E6=80=AA=E4=B8=8D=E8=83=BD1=E4=B8=8B=E6=89=93=E6=AD=BB?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E9=83=BD=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=A1=80=E9=87=8F=E3=80=82=E3=80=82=E8=9C=97=E7=89=9B=E4=B9=9F?= =?UTF-8?q?=E8=83=BD=E6=98=BE=E7=A4=BA=E3=80=82=E3=80=82=20=20=E8=A6=81?= =?UTF-8?q?=E4=B9=88=E5=B9=B2=E8=84=86=E6=90=9E=E6=88=90=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E5=8F=AA=E6=98=BE=E7=A4=BABOSS=EF=BC=8C=E4=B8=94=E4=B8=8D?= =?UTF-8?q?=E6=98=AF=E4=B8=80=E5=87=BB=E5=BF=85=E6=9D=80=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2. 自动扣除道具金币给物品 道具或者金币 数量 兑换道具或者金币 数量 比如 -1 2100000001 4002000 21 21亿零1的金币 兑换成 21个 4002000 3. 给自己发装备,跳跃jump的属性自动变成段伤属性 4. 多倍 段伤 切割 全部只读背包1个数量 数量没有叠加算 修复 --- src/client/MapleCharacter.java | 40 ++++++++++++++----- src/handling/channel/handler/DamageParse.java | 7 ++-- src/server/MapleInventoryManipulator.java | 8 ++-- src/server/life/MapleMonster.java | 9 +++++ src/server/maps/MapleMap.java | 1 + 5 files changed, 46 insertions(+), 19 deletions(-) diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index b8bb687..a9bb44c 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -5679,6 +5679,21 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se return possesed; } + + + public final int getItemNum(final int itemid) { + final MapleInventoryType type = GameConstants.getInventoryType(itemid); + if (type == MapleInventoryType.EQUIP) { + return this.inventory[MapleInventoryType.EQUIPPED.ordinal()].countById(itemid); + } + final IItem findById = this.inventory[type.ordinal()].findById(itemid); + short quantity = findById.getQuantity(); + + return quantity; + } + + + public void dropNPC(final String message) { this.client.sendPacket(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, message, "00 00", (byte) 0)); } @@ -11812,7 +11827,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se for (String string : strings) { boolean b = this.haveItem(Integer.parseInt(string)); if (b) { - Magnification += dd.getInteger(string); + int itemNum = getItemNum(Integer.parseInt(string)); + Magnification += (dd.getInteger(string))*itemNum; } } } @@ -11835,27 +11851,28 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se public int getDB() { int re = 0; - JSONObject dd = Start.ConfigValuesJson.getJSONObject("dbbb"); - JSONObject ddzb = Start.ConfigValuesJson.getJSONObject("dbzb"); + JSONObject dbbb = Start.ConfigValuesJson.getJSONObject("dbbb"); + JSONObject dbzb = Start.ConfigValuesJson.getJSONObject("dbzb"); - if ((dd == null && ddzb == null) || Start.ConfigValuesJson.getInteger("isdb") == 0) return 0; + if ((dbbb == null && dbzb == null) || Start.ConfigValuesJson.getInteger("isdb") == 0) return 0; - if (dd != null) { - Set strings = dd.keySet(); + if (dbbb != null) { + Set strings = dbbb.keySet(); for (String string : strings) { boolean b = this.haveItem(Integer.parseInt(string)); if (b) { - re += dd.getInteger(string); + int itemNum = getItemNum(Integer.parseInt(string)); + re += (dbbb.getInteger(string))*itemNum; } } } - if (ddzb != null) { - Set strings = ddzb.keySet(); + if (dbzb != null) { + Set strings = dbzb.keySet(); for (String string : strings) { boolean b = this.hasEquipped(Integer.parseInt(string)); if (b) { - re += ddzb.getInteger(string); + re += dbzb.getInteger(string); } } } @@ -11880,7 +11897,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se for (String string : strings) { boolean b = this.haveItem(Integer.parseInt(string)); if (b) { - re += qgbb.getInteger(string); + int itemNum = getItemNum(Integer.parseInt(string)); + re += (qgbb.getInteger(string))*itemNum; } } } diff --git a/src/handling/channel/handler/DamageParse.java b/src/handling/channel/handler/DamageParse.java index 355b961..92925f1 100644 --- a/src/handling/channel/handler/DamageParse.java +++ b/src/handling/channel/handler/DamageParse.java @@ -439,10 +439,9 @@ public class DamageParse { if (monster.getHp() > 0) { long hp = monster.getHp(); - long mobMaxHp = monster.getMobMaxHp(); - if (mobMaxHp >Integer.MAX_VALUE){ - hp = hp/100; - mobMaxHp = mobMaxHp/100; + long mobMaxHp = monster.getMaxHP(); + if (mobMaxHp == 0){ + monster.getMobMaxHp(); } double percentage = ((double) hp / mobMaxHp) * 100; // 显式转换为浮点数并计算百分比‌:ml-citation{ref="1,3" data="citationList"} diff --git a/src/server/MapleInventoryManipulator.java b/src/server/MapleInventoryManipulator.java index 0beccbc..2a60b6e 100644 --- a/src/server/MapleInventoryManipulator.java +++ b/src/server/MapleInventoryManipulator.java @@ -176,7 +176,7 @@ public class MapleInventoryManipulator { if (integers != null) { if (eItem.getQuantity() >= integers.get(0)) { int i2 = eItem.getQuantity() / integers.get(0); - c.getPlayer().gainItem(integers.get(1), i2); + c.getPlayer().gainItem(integers.get(1), i2*integers.get(2)); short quantity1 = eItem.getQuantity(); eItem.setQuantity((short) (quantity1 - integers.get(0) * i2)); if (eItem.getQuantity() <= 0) { @@ -230,7 +230,7 @@ public class MapleInventoryManipulator { if (integers != null) { if (nItem.getQuantity() >= integers.get(0)) { int i2 = nItem.getQuantity() / integers.get(0); - c.getPlayer().gainItem(integers.get(1), i2); + c.getPlayer().gainItem(integers.get(1), i2*integers.get(2)); short quantity1 = nItem.getQuantity(); nItem.setQuantity((short) (quantity1 - integers.get(0) * i2)); if (nItem.getQuantity() <= 0) { @@ -669,7 +669,7 @@ public class MapleInventoryManipulator { if (integers != null) { if (eItem.getQuantity() >= integers.get(0)) { int i2 = eItem.getQuantity() / integers.get(0); - c.getPlayer().gainItem(integers.get(1), i2); + c.getPlayer().gainItem(integers.get(1), i2*integers.get(2)); short quantity1 = eItem.getQuantity(); eItem.setQuantity((short) (quantity1 - integers.get(0) * i2)); if (eItem.getQuantity() <= 0) { @@ -703,7 +703,7 @@ public class MapleInventoryManipulator { if (integers != null) { if (nItem.getQuantity() >= integers.get(0)) { int i2 = nItem.getQuantity() / integers.get(0); - c.getPlayer().gainItem(integers.get(1), i2); + c.getPlayer().gainItem(integers.get(1), i2*integers.get(2)); short quantity1 = nItem.getQuantity(); nItem.setQuantity((short) (quantity1 - integers.get(0) * i2)); if (nItem.getQuantity() <= 0) { diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java index b9cd205..6b4a9c9 100644 --- a/src/server/life/MapleMonster.java +++ b/src/server/life/MapleMonster.java @@ -65,6 +65,8 @@ public class MapleMonster extends AbstractLoadedMapleLife { private MapleMonsterStats stats; private OverrideMonsterStats ostats; private long hp; + + private long hpmax ; private long nextKill; private int mp; private byte venom_counter; @@ -189,6 +191,13 @@ public class MapleMonster extends AbstractLoadedMapleLife { public final void setHp(final long hp) { this.hp = hp; } + public final void setmaxHp(final long maxhp) { + this.hpmax = maxhp; + } + public final long getMaxHP() { + return this.hpmax; + } + public final long getHp() { return this.hp; diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 3543043..a0bf231 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -1900,6 +1900,7 @@ public final class MapleMap { final Point spos = this.calcPointBelow(new Point(pos.x, pos.y - 1)); mob.setPosition(spos); mob.setHp(hp); + mob.setmaxHp(hp); this.spawnMonster(mob, spawnType); }