TA的每日心情![](source/plugin/dsu_paulsign/img/emot/ch.gif) | 擦汗 2022-11-20 17:39 |
---|
签到天数: 2 天 [LV.1]初来乍到
版主
小灰灰
![Rank: 7](static/image/common/star_level3.gif) ![Rank: 7](static/image/common/star_level2.gif) ![Rank: 7](static/image/common/star_level1.gif)
- 积分
- 164
![QQ](static//image/common/qq_big.gif)
|
此修复方法是防止使用负数进行购买商店物品,并且购买金额不减反增的问题
首先,先找到源码内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);
还有不严谨的,请各位多多提意见!
|
|