m1n9 发表于 2024-11-10 20:24:34

冒险岛修复商店购买负数

此修复方法是防止使用负数进行购买商店物品,并且购买金额不减反增的问题



首先,先找到源码内MapleShop.java


找到buy这个函数


在一个判断内有个一变量
final int price = GameConstants.isRechargable(itemId) ? item.getPrice() : (item.getPrice() * quantity);

首先要把int型改成一个long型
就变成以下
final long price = GameConstants.isRechargable(itemId) ? item.getPrice() : (long) item.getPrice() * quantity;

同时还需要加一个判断在下面

if(price <= 0 || price >= Integer.MAX_VALUE){
            c.sendPacket(MaplePacketCreator.confirmShopTransaction((byte)0));
            c.sendPacket(MaplePacketCreator.enableActions());
            return;
      }

然后会发现以下-price会变成红色
c.getPlayer().gainMeso(-price, false);

毕竟gainMeso是给金币,里面定义的是int型,其实给值强转回int型就可以了
c.getPlayer().gainMeso((int)-price, false);

还有不严谨的,请各位多多提意见!

925379231 发表于 2024-11-10 20:36:45

赞赞赞

586455530 发表于 2024-11-10 21:17:28

挺不错

912036378 发表于 2024-11-10 22:25:27

学习交流

357549188 发表于 2024-11-11 00:23:44

挺不错

854001549 发表于 2024-11-11 00:49:46

学习交流

575033369 发表于 2024-11-11 06:54:28

路过,支持一下啦

922144760 发表于 2024-11-11 07:25:02

顶顶

093049418 发表于 2024-11-11 07:28:23

有空来试试,支持下

016333299 发表于 2024-11-11 08:26:24

顶顶多好

000091100 发表于 2024-11-11 10:34:29

好样的

217315020 发表于 2024-11-11 10:51:19

支持支持

510171500 发表于 2024-11-11 11:38:24

难得一见的好帖

463518630 发表于 2024-11-11 12:32:25

过来看看

017304359 发表于 2024-11-11 12:42:31

学习交流
页: [1] 2
查看完整版本: 冒险岛修复商店购买负数