1 游戏: 给【怪物血量】和【服务端计算伤害】突破long的限制(9223372036854775807)目前最高922京,可以用测试伤害那个脚本测试,脚本里面改怪物血量

(万 、亿 、兆、 京 、垓、秭、穰、沟、涧、正、载、极、恒河沙、阿僧祗、那由他、不可思议、无量、大数、古戈尔、频菠萝、矜羯罗、不可说不可说转、超限数、绝对无限、绝对无量、绝对小数、绝对大数、绝对超限数) 总共28个单位,每个单位是前一个单位的1万倍

同时人物头顶的信息显示也要显示,每达到一万的倍数就显示下级,比如9999万、9999亿、9999兆、1京以此类推
怪物血量显示也改成: 怪物血量剩余:9999万(00.00%)、9999亿(00.00%)、1兆(00.00%) 以此类推
//1200

2.  游戏: 点击游戏商城旁边的【解卡】按钮,让解卡功能可以生效,屏蔽掉弹出的聊天室
               然后解卡的头顶信息显示加上人物的  伤害加成:、段伤次数:、切割伤害:、鞭尸几率:
               切割伤害:    以万为进制单位  9999万   1亿   9999亿   1兆   和上面的血量一个概念的显示

//显示能做 150

3.  游戏: 游戏中攻击状态或者受伤状态人物会弯腰,这导致不能换装备不能丢道具进商城等一系列的限制,而且还弹窗恶心人
               直接把这些限制禁止去掉,战斗状态或受伤的情况下可以进行所有操作
//服务端无法解决

4. 控制台:游戏设置-宠吸功能,在  功能开关  这里的  特殊全宠物吸物开关下面  增加一个开关 【boss支持吸金吸物开关】
                就是说打死boss宠物也可以吸金吸物,目前boss是不吸的,同时哪怕打开了这个功能,如果地图代码是在不支持吸金吸物的表中,那肯定也不能吸
//功能150  开关你来

5. 控制台:定制功能里增加:1.多倍金币爆率表  2.多倍物品爆率表  3.金币+爆物双支持表,能支持写时间段和不限制时间段触发、不同道具是否支持叠加效果,可以用0/1区分,不需要道具数量叠加效果
                源码搜索:5360018 看一下,原来的是写死在源码里的,如果同时拥有多个不同倍率的,增加个开关【不同倍率是否叠加】,不叠加就取最大值生效

//功能400

6. 控制台:定制功能里增加:鞭尸功能。。  就是传奇的鞭尸功能,玩家背包拥有某道具,道具数量越多几率越高,击杀怪物后,能让他再爆一遍,支持生效多倍爆率
                这个功能在订制栏里面,增加个功能开关,增加个小一点的表,填道具 数量 几率    几率就按 1/10000  算吧 10000等于100%
                触发鞭尸后,聊天框全服能看到的喇叭消息提示:恭喜[玩家名]在地图名字击杀怪物后触发鞭尸,怪物二次大爆!
                这个功能需要能让js调用到函数,我可以显示在NPC上面,比如:   鞭尸几率:0.01%
//功能400

7. 服务端: 启动工具的cmd不要呼出来 ,关闭服务端不需要重新打开,直接可以点击启动服务端

//你来研究下看看 我之前没弄出来

8.  服务端:服务端控制台-玩家控制台-后台工具-爆物管理
                  这里搞得人性化一点  归类到我自己的栏目里  之前的删掉或者屏蔽掉
                  可以点击上方的序号 怪物 名字 id 爆率  进行升降排序
                  显示出怪物ID对应的是什么怪物名字、能模糊搜怪物名、道具名,全部显示出来直接进行操作
                  可以直接在表上选取进行操作,能全部选取或者ctrl针对选取进行批量操作
                  添加爆率能直接搞个编辑框,按格式导入;同时能按导入格式导出
//ui 你来把

9.  游戏: 战力后面带 转生等级 显示  目前只显示战力   需要做成:    战力:123456   [转生次数0次]
     这个   转生次数*次    自己可以在后台定义  比如给他改成    筑基*层     多少次转生显示什么在后台设置
     比如转生100次= 金丹0层     那101次肯定不需要设置了对吧  直接显示  金丹1层      200次= 元婴0层   后面没增加新的话  就元婴1层 2层以此类推了
     功能有开关,关闭的状态下只显示战力!打开的情况下显示在战力后面,我有其他端的截图,需要的时候给你看图
     ★同时给战力修一下  玩家在脱穿装备的时候就即时更新战力,目前是需要切换频道的时候才能更新战力
//不知道转生功能是否已经有了 有了的话200    切换频道不知道麻不麻烦 不麻烦的话100

11. 游戏里有个偷学NPC,学了技能要切换频道才能显示,能不能改成学了技能就能显示
//估计是没办法的
This commit is contained in:
雪风 2025-03-11 17:39:50 +08:00
parent 8eae6db2ca
commit 2d02b4d124
12 changed files with 148 additions and 18 deletions

View File

@ -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<Equip> 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;
}
}

View File

@ -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;
}

View File

@ -72,7 +72,7 @@ public interface IEquip extends IItem {
int getdb();
int getqg();
String getqg();
public enum ScrollResult {
SUCCESS,

View File

@ -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();
}
}

View File

@ -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<String, List<Integer>> ConfigItemJson = new HashMap<>();
public static int bossxw = 1;
public static List<BlConfig> 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<ZLConfig> zlConfigs = new ArrayList<>();

24
src/gui/tw/BsConfig.java Normal file
View File

@ -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;
}
}

33
src/gui/tw/ZLConfig.java Normal file
View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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) {

View File

@ -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";

View File

@ -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;
}

View File

@ -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);