Minor Cash Shop + cash items fixes
Fixed minor issues regarding the Cash Shop not selling items and usable cash items.
This commit is contained in:
@@ -1331,6 +1331,19 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
|||||||
return inventory[MapleItemInformationProvider.getInstance().getInventoryType(itemid).ordinal()].countById(itemid);
|
return inventory[MapleItemInformationProvider.getInstance().getInventoryType(itemid).ordinal()].countById(itemid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean canHold(int itemid) {
|
||||||
|
return canHold(itemid, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canHold(int itemid, int quantity) {
|
||||||
|
if(haveItem(itemid)) {
|
||||||
|
if(getItemQuantity(itemid, false) + quantity <= MapleItemInformationProvider.getInstance().getSlotMax(client, itemid))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).getNextFreeSlot() > -1;
|
||||||
|
}
|
||||||
|
|
||||||
public void decreaseBattleshipHp(int decrease) {
|
public void decreaseBattleshipHp(int decrease) {
|
||||||
this.battleshipHp -= decrease;
|
this.battleshipHp -= decrease;
|
||||||
if (battleshipHp <= 0) {
|
if (battleshipHp <= 0) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import server.CashShop.CashItem;
|
|||||||
import server.CashShop.CashItemFactory;
|
import server.CashShop.CashItemFactory;
|
||||||
import server.MapleInventoryManipulator;
|
import server.MapleInventoryManipulator;
|
||||||
import server.MapleItemInformationProvider;
|
import server.MapleItemInformationProvider;
|
||||||
|
import tools.FilePrinter;
|
||||||
import tools.MaplePacketCreator;
|
import tools.MaplePacketCreator;
|
||||||
import tools.data.input.SeekableLittleEndianAccessor;
|
import tools.data.input.SeekableLittleEndianAccessor;
|
||||||
|
|
||||||
@@ -53,12 +54,14 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final int action = slea.readByte();
|
final int action = slea.readByte();
|
||||||
|
|
||||||
if (action == 0x03 || action == 0x1E) {
|
if (action == 0x03 || action == 0x1E) {
|
||||||
slea.readByte();
|
slea.readByte();
|
||||||
final int useNX = slea.readInt();
|
final int useNX = slea.readInt();
|
||||||
final int snCS = slea.readInt();
|
final int snCS = slea.readInt();
|
||||||
CashItem cItem = CashItemFactory.getItem(snCS);
|
CashItem cItem = CashItemFactory.getItem(snCS);
|
||||||
if (cItem == null || !cItem.isOnSale() || cs.getCash(useNX) < cItem.getPrice()) {
|
if (cItem == null || !cItem.isOnSale() || cs.getCash(useNX) < cItem.getPrice()) {
|
||||||
|
FilePrinter.printError(FilePrinter.ITEM, "Denied to sell cash item with SN " + cItem.getSN());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (action == 0x03) { // Item
|
if (action == 0x03) { // Item
|
||||||
@@ -185,6 +188,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
|||||||
if (chr.getInventory(MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId())).addItem(item) != -1) {
|
if (chr.getInventory(MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId())).addItem(item) != -1) {
|
||||||
cs.removeFromInventory(item);
|
cs.removeFromInventory(item);
|
||||||
c.announce(MaplePacketCreator.takeFromCashInventory(item));
|
c.announce(MaplePacketCreator.takeFromCashInventory(item));
|
||||||
|
|
||||||
if(item instanceof Equip) {
|
if(item instanceof Equip) {
|
||||||
Equip equip = (Equip) item;
|
Equip equip = (Equip) item;
|
||||||
if(equip.getRingId() >= 0) {
|
if(equip.getRingId() >= 0) {
|
||||||
@@ -250,8 +254,9 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
|||||||
c.announce(MaplePacketCreator.showCash(c.getPlayer()));
|
c.announce(MaplePacketCreator.showCash(c.getPlayer()));
|
||||||
} else if (action == 0x20) { // everything is 1 meso...
|
} else if (action == 0x20) { // everything is 1 meso...
|
||||||
int itemId = CashItemFactory.getItem(slea.readInt()).getItemId();
|
int itemId = CashItemFactory.getItem(slea.readInt()).getItemId();
|
||||||
|
|
||||||
if (chr.getMeso() > 0) {
|
if (chr.getMeso() > 0) {
|
||||||
if (itemId == 4031180 || itemId == 4031192 || itemId == 4031191) {
|
if (chr.canHold(itemId)) {
|
||||||
chr.gainMeso(-1, false);
|
chr.gainMeso(-1, false);
|
||||||
MapleInventoryManipulator.addById(c, itemId, (short) 1);
|
MapleInventoryManipulator.addById(c, itemId, (short) 1);
|
||||||
c.announce(MaplePacketCreator.showBoughtQuestItem(itemId));
|
c.announce(MaplePacketCreator.showBoughtQuestItem(itemId));
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
|
|||||||
if (skill.getId() != Priest.MYSTIC_DOOR || chr.canDoor()) {
|
if (skill.getId() != Priest.MYSTIC_DOOR || chr.canDoor()) {
|
||||||
skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos);
|
skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos);
|
||||||
} else {
|
} else {
|
||||||
chr.message("Please wait 5 seconds before casting Mystic Door again");
|
chr.message("Please wait 5 seconds before casting Mystic Door again.");
|
||||||
c.announce(MaplePacketCreator.enableActions());
|
c.announce(MaplePacketCreator.enableActions());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
|
|||||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||||
MapleCharacter player = c.getPlayer();
|
MapleCharacter player = c.getPlayer();
|
||||||
if (System.currentTimeMillis() - player.getLastUsedCashItem() < 3000) {
|
if (System.currentTimeMillis() - player.getLastUsedCashItem() < 3000) {
|
||||||
|
player.dropMessage(1, "You have used a cash item recently. Wait a moment and try again.");
|
||||||
|
c.announce(MaplePacketCreator.enableActions());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
player.setLastUsedCashItem(System.currentTimeMillis());
|
player.setLastUsedCashItem(System.currentTimeMillis());
|
||||||
|
|||||||
@@ -192,12 +192,7 @@ public class AbstractPlayerInteraction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean canHold(int itemid, int quantity) {
|
public boolean canHold(int itemid, int quantity) {
|
||||||
if(haveItem(itemid)) {
|
return getPlayer().canHold(itemid, quantity);
|
||||||
if(getPlayer().getItemQuantity(itemid, false) + quantity <= MapleItemInformationProvider.getInstance().getSlotMax(c, itemid))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).getNextFreeSlot() > -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ----
|
//---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ----
|
||||||
|
|||||||
@@ -6200,7 +6200,7 @@
|
|||||||
<int name="Period" value="90"/>
|
<int name="Period" value="90"/>
|
||||||
<int name="Priority" value="9"/>
|
<int name="Priority" value="9"/>
|
||||||
<int name="Gender" value="2"/>
|
<int name="Gender" value="2"/>
|
||||||
<int name="OnSale" value="0"/>
|
<int name="OnSale" value="1"/>
|
||||||
<int name="Class" value="2"/>
|
<int name="Class" value="2"/>
|
||||||
</imgdir>
|
</imgdir>
|
||||||
<imgdir name="616">
|
<imgdir name="616">
|
||||||
|
|||||||
Reference in New Issue
Block a user