查看: 344|回复: 0

修复商店购买负数 - 小灰灰

[复制链接]
  • TA的每日心情
    擦汗
    2022-11-20 17:39
  • 签到天数: 2 天

    [LV.1]初来乍到

    14

    主题

    9

    回帖

    164

    积分

    版主

    小灰灰

    Rank: 7Rank: 7Rank: 7

    积分
    164
    QQ
    发表于 2024-7-11 05:41:33 | 显示全部楼层 |阅读模式
    此修复方法是防止使用负数进行购买商店物品,并且购买金额不减反增的问题



    首先,先找到源码内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);

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表