diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index 39cef58..08cb455 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -11796,6 +11796,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se this.吸怪状态 = xx; } + + public enum FameStatus { OK, NOT_TODAY, @@ -11907,7 +11909,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se boolean b = this.haveItem(Integer.parseInt(string)); if (b) { int itemNum = getItemNum(Integer.parseInt(string)); - BigInteger qgbbValue = new BigInteger(qgbb.getInteger(string).toString()); + BigInteger qgbbValue = new BigInteger(qgbb.getString(string)); BigInteger itemNumBigInt = new BigInteger(Integer.toString(itemNum)); re = re.add(qgbbValue.multiply(itemNumBigInt)); } @@ -11919,7 +11921,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se for (String string : strings) { boolean b = this.hasEquipped(Integer.parseInt(string)); if (b) { - BigInteger qgzbValue = new BigInteger(qgzb.getInteger(string).toString()); + BigInteger qgzbValue = new BigInteger(qgzb.getString(string)); re = re.add(qgzbValue); } } @@ -11927,10 +11929,23 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject implements Se List equList = this.getEquList(); for (Equip equip : equList) { - BigInteger equipQG = new BigInteger(Integer.toString(equip.getqg())); - re = re.add(equipQG); + BigInteger equipQG = new BigInteger(equip.getqg()); + re = re.add(equipQG); } return re; } + + public int getBSJL() { + int re = 0; + if (Start.bskg == 0) { + return 0; + } + boolean b = this.haveItem(Start.bsConfig.getItem_id()); + if (b) { + re = getItemNum(Start.bsConfig.getItem_id()) * Start.bsConfig.getRate(); + } + if (re >10000)re = 10000; + return re; + } } diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java index edc2edf..5d2fe40 100644 --- a/src/client/inventory/Equip.java +++ b/src/client/inventory/Equip.java @@ -4,6 +4,7 @@ import server.Randomizer; import constants.GameConstants; import java.io.Serializable; +import java.math.BigInteger; public class Equip extends Item implements IEquip, Serializable { private byte upgradeSlots; @@ -37,7 +38,7 @@ public class Equip extends Item implements IEquip, Serializable { private int incSkill; private int dd; private int db; - private int qg; + private String qg; public Equip(final int id, final short position, final byte flag) { super(id, position, (short) 1, flag); @@ -72,7 +73,7 @@ public class Equip extends Item implements IEquip, Serializable { this.incSkill = -1; this.dd = 0; this.db = 0; - this.qg = 0; + this.qg = "0"; } public Equip(final int id, final short position) { @@ -108,7 +109,7 @@ public class Equip extends Item implements IEquip, Serializable { this.incSkill = -1; this.dd = 0; this.db = 0; - this.qg = 0; + this.qg = "0"; } public Equip(final int id, final short position, final int uniqueid, final byte flag) { @@ -144,7 +145,7 @@ public class Equip extends Item implements IEquip, Serializable { this.incSkill = -1; this.dd = 0; this.db = 0; - this.qg = 0; + this.qg = "0"; } @Override @@ -397,9 +398,10 @@ public class Equip extends Item implements IEquip, Serializable { this.db = db; } - public void setqg(int qg) { - if (qg < 0) { - qg = 0; + public void setqg(String qg) { + BigInteger bigInteger = new BigInteger(qg); + if (bigInteger.compareTo(BigInteger.ZERO) < 0) { + qg = "0"; } this.qg = qg; } @@ -613,7 +615,7 @@ public class Equip extends Item implements IEquip, Serializable { } @Override - public int getqg() { + public String getqg() { return this.qg; } diff --git a/src/client/inventory/IEquip.java b/src/client/inventory/IEquip.java index fa34936..dfac49f 100644 --- a/src/client/inventory/IEquip.java +++ b/src/client/inventory/IEquip.java @@ -72,7 +72,7 @@ public interface IEquip extends IItem { int getdb(); - int getqg(); + String getqg(); public enum ScrollResult { SUCCESS, diff --git a/src/client/inventory/ItemLoader.java b/src/client/inventory/ItemLoader.java index 6b30185..4250720 100644 --- a/src/client/inventory/ItemLoader.java +++ b/src/client/inventory/ItemLoader.java @@ -116,7 +116,7 @@ public enum ItemLoader { equip.setMpR(rs.getShort("mpR")); equip.setdd(rs.getInt("dd")); equip.setdb(rs.getInt("db")); - equip.setqg(rs.getInt("qg")); + equip.setqg(rs.getString("qg")); equip.setGiftFrom(rs.getString("sender")); if (equip.getUniqueId() > -1 && GameConstants.isEffectRing(rs.getInt("itemid"))) { final MapleRing ring = MapleRing.loadFromDb(equip.getUniqueId(), mit.equals(MapleInventoryType.EQUIPPED)); @@ -268,7 +268,7 @@ public enum ItemLoader { pse.setInt(27, (int) equip.getMpR()); pse.setInt(28, (int) equip.getdd()); pse.setInt(29, (int) equip.getdb()); - pse.setInt(30, (int) equip.getqg()); + pse.setString(30, equip.getqg()); pse.executeUpdate(); } } diff --git a/src/gui/Start.java b/src/gui/Start.java index 2698988..c188b44 100644 --- a/src/gui/Start.java +++ b/src/gui/Start.java @@ -11,6 +11,8 @@ import cn.hutool.core.io.file.FileReader; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import gui.tw.BlConfig; +import gui.tw.BsConfig; +import gui.tw.ZLConfig; import server.MapleInventoryManipulator; import client.inventory.Equip; import handling.world.World.Broadcast; @@ -97,10 +99,17 @@ public class Start { public static JSONObject ConfigValuesJson; public static Map> ConfigItemJson = new HashMap<>(); + public static int bossxw = 1; public static List BLlist = new ArrayList<>(); public static int blkg = 0; public static int bldj = 0; + public static int bskg = 0; + public static int bsdj = 0; + public static BsConfig bsConfig = null; + + public static List zlConfigs = new ArrayList<>(); + diff --git a/src/gui/tw/BsConfig.java b/src/gui/tw/BsConfig.java new file mode 100644 index 0000000..b1cd315 --- /dev/null +++ b/src/gui/tw/BsConfig.java @@ -0,0 +1,24 @@ +package gui.tw; + +public class BsConfig { + + int item_id; + + int rate; + + public int getItem_id() { + return item_id; + } + + public void setItem_id(int item_id) { + this.item_id = item_id; + } + + public int getRate() { + return rate; + } + + public void setRate(int rate) { + this.rate = rate; + } +} diff --git a/src/gui/tw/ZLConfig.java b/src/gui/tw/ZLConfig.java new file mode 100644 index 0000000..e7cb187 --- /dev/null +++ b/src/gui/tw/ZLConfig.java @@ -0,0 +1,33 @@ +package gui.tw; + +public class ZLConfig { + + int num; + String name; + + String name2; + + public int getNum() { + return num; + } + + public String getName2() { + return name2; + } + + public void setName2(String name2) { + this.name2 = name2; + } + + public void setNum(int num) { + this.num = num; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/gui/特殊控制台.java b/src/gui/特殊控制台.java index 2507296..cd92081 100644 --- a/src/gui/特殊控制台.java +++ b/src/gui/特殊控制台.java @@ -30,6 +30,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import gui.tw.BlConfig; +import gui.tw.BsConfig; +import gui.tw.ZLConfig; import org.netbeans.lib.awtextra.AbsoluteConstraints; import java.awt.Component; @@ -69,7 +71,9 @@ import javax.swing.JPanel; import javax.swing.JLabel; import java.lang.management.MemoryMXBean; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import client.inventory.IItem; @@ -1032,6 +1036,19 @@ public class 特殊控制台 extends JFrame { Start.bldj = jsonObject1.getInteger("stackable"); Start.BLlist = jsonObject1.getJSONArray("gold_and_item_drop_rates").toJavaList(BlConfig.class); + Start.bskg = jsonObject1.getInteger("bskg"); + Start.bsConfig = jsonObject1.getObject("bsitem",BsConfig.class); + try { + + + fileReader = new FileReader(property + "\\配置文件\\战力显示.ini"); + String result4 = fileReader.readString(); + JSONObject jsonObject2 = JSONObject.parseObject(result4); + Start.zlConfigs = jsonObject2 .getJSONArray("zl").toJavaList(ZLConfig.class).stream().sorted(Comparator.comparing(ZLConfig::getNum)).collect(Collectors.toList()); + + }catch (Exception e){ + e.printStackTrace(); + } } diff --git a/src/handling/channel/handler/InventoryHandler.java b/src/handling/channel/handler/InventoryHandler.java index 7f62df1..c24998f 100644 --- a/src/handling/channel/handler/InventoryHandler.java +++ b/src/handling/channel/handler/InventoryHandler.java @@ -1,5 +1,6 @@ package handling.channel.handler; +import tools.packet.FamilyPacket; import tools.packet.PlayerShopPacket; import server.shops.IMaplePlayerShop; @@ -102,13 +103,21 @@ public class InventoryHandler { final short quantity = slea.readShort(); if (src < 0 && dst > 0) { MapleInventoryManipulator.unequip(c, src, dst);//脱装备时 + c.getSession().write(MaplePacketCreator.fuckGuildInfo(c.getPlayer()));//自定义的显示名字 + c.sendPacket(FamilyPacket.getFamilyInfo(c.getPlayer())); } else if (dst < 0) { MapleInventoryManipulator.equip(c, src, dst);//穿装备时 + c.getSession().write(MaplePacketCreator.fuckGuildInfo(c.getPlayer()));//自定义的显示名字 + c.sendPacket(FamilyPacket.getFamilyInfo(c.getPlayer())); } else if (dst == 0) { MapleInventoryManipulator.drop(c, type, src, quantity); } else { MapleInventoryManipulator.move(c, type, src, dst); } + + + System.out.println(1); + } public static final void ItemSort(final LittleEndianAccessor slea, final MapleClient c) { diff --git a/src/handling/channel/handler/PlayersHandler.java b/src/handling/channel/handler/PlayersHandler.java index 2c6196a..f4b3c19 100644 --- a/src/handling/channel/handler/PlayersHandler.java +++ b/src/handling/channel/handler/PlayersHandler.java @@ -138,11 +138,13 @@ public class PlayersHandler { NPCScriptManager.getInstance().dispose(c); c.getSession().write(MaplePacketCreator.enableActions()); String string = "#d解卡完毕\r\n\r\n"; + MapleCharacter player = c.getPlayer(); //string += "时间 "+ FileoutputUtil.CurrentReadable_Time() + "\r\n"; string += "#d贪玩冒险岛\r\n"; string += "经验 " + Math.round((float) 人物经验) * MapleParty.活动经验倍率 + "倍,物品 " + Math.round((float) 人物物品爆率) + "倍, 金币 " + Math.round((float) 人物金币爆率) + "倍,\r\n\r\n"; 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) * 100L + "%\r\n\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"; + string += "伤害加成"+player.getDB()+"% 多段次数 " +player.getDD() + "次 切割伤害"+DamageParse.process(player.getQG().toString())+" 鞭尸几率" + player.getBSJL()/100+"%\r\n\r\n"; string += "#r个人资产\r\n"; string += "拥有:" + c.getPlayer().getCSPoints(1) + " 点劵\r\n\r\n"; string += "延迟 " + c.getPlayer().getClient().getLatency() + " 毫秒\r\n"; diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index e9f456b..7236770 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -1035,6 +1035,16 @@ public final class MapleMap { } } this.dropFromMonster(drop, monster); + + //贪玩鞭尸 + int bsjl = chr.getBSJL(); + int bsjl2 = Randomizer.rand(0, 10000); + if (bsjl2 < bsjl) { + String mapName1 = chr.getMap().getMapName(); + Broadcast.broadcastMessage(MaplePacketCreator.serverNotice(5, "恭喜[" + chr.getName() + "]在"+mapName1+"击杀怪物后触发鞭尸,怪物二次大爆!")); + this.dropFromMonster(drop, monster); + } + int bs = chr.getBs(); @@ -2344,7 +2354,7 @@ public final class MapleMap { } } } - if (吸物状态 && mob.getStats().isBoss() && Start.ConfigValuesMap.get("boss吸物品开关") !=1){ + if (吸物状态 && mob.getStats().isBoss() && Start.bossxw != 1){ 吸物状态 = false; } diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 958e91f..880b69b 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -1,5 +1,6 @@ package tools; +import gui.tw.ZLConfig; import server.ServerProperties; import client.inventory.Equip; import gui.Start; @@ -2871,7 +2872,15 @@ public class MaplePacketCreator { xl = "[☆超级王者☆]"; else if (c.getCombat() > 1100000) xl = "[☆宇宙王者☆]"; - mplew.writeMapleAsciiString("战力:" + c.getCombat()); + int 转生次数 = c.getAccountidLog("飞升"); + int cs = 转生次数; + String name = "转生次数" + cs +"层"; + for (ZLConfig zlConfig : Start.zlConfigs) { + if (zlConfig.getNum() <转生次数){ + name = zlConfig.getName() +(转生次数 -zlConfig.getNum())+ zlConfig.getName2(); + } + } + mplew.writeMapleAsciiString("战力:" + c.getCombat()+" "+name); mplew.write(0); mplew.writeInt(0); mplew.writeInt(0);