Proper coupon packet. (DB) coupon_items type 0 = mesos. (#491)
This commit is contained in:
@@ -31,6 +31,7 @@ import java.sql.Connection;
|
|||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -63,7 +64,6 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
|||||||
ResultSet rs = ps.executeQuery();
|
ResultSet rs = ps.executeQuery();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
int type = rs.getInt("type"), quantity = rs.getInt("quantity");
|
int type = rs.getInt("type"), quantity = rs.getInt("quantity");
|
||||||
|
|
||||||
if (type < 5) {
|
if (type < 5) {
|
||||||
Integer i = couponPoints.get(type);
|
Integer i = couponPoints.get(type);
|
||||||
if (i != null) {
|
if (i != null) {
|
||||||
@@ -195,7 +195,12 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
|||||||
if (type < 0) {
|
if (type < 0) {
|
||||||
c.announce(MaplePacketCreator.showCashShopMessage((byte) parseCouponResult(type)));
|
c.announce(MaplePacketCreator.showCashShopMessage((byte) parseCouponResult(type)));
|
||||||
} else {
|
} else {
|
||||||
List<Item> couponPackage = new LinkedList<>();
|
List<Item> cashItems = new LinkedList<Item>();
|
||||||
|
List<Pair<Integer, Integer>> items = new LinkedList<Pair<Integer, Integer>>();
|
||||||
|
int nxCredit = 0;
|
||||||
|
int maplePoints = 0;
|
||||||
|
int nxPrepaid = 0;
|
||||||
|
int mesos = 0;
|
||||||
|
|
||||||
for (Pair<Integer, Pair<Integer, Integer>> p : codeRes.getRight()) {
|
for (Pair<Integer, Pair<Integer, Integer>> p : codeRes.getRight()) {
|
||||||
type = p.getLeft();
|
type = p.getLeft();
|
||||||
@@ -204,18 +209,26 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
|||||||
CashShop cs = c.getPlayer().getCashShop();
|
CashShop cs = c.getPlayer().getCashShop();
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0:
|
case 0:
|
||||||
|
c.getPlayer().gainMeso(quantity, false); //mesos
|
||||||
|
mesos += quantity;
|
||||||
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
cs.gainCash(1, quantity); //nxCredit
|
cs.gainCash(1, quantity); //nxCredit
|
||||||
|
nxCredit += quantity;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
cs.gainCash(2, quantity); //maplePoint
|
cs.gainCash(2, quantity); //maplePoint
|
||||||
|
maplePoints += quantity;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
cs.gainCash(4, quantity); //nxPrepaid
|
cs.gainCash(4, quantity); //nxPrepaid
|
||||||
|
nxPrepaid += quantity;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
cs.gainCash(1, quantity);
|
cs.gainCash(1, quantity);
|
||||||
|
nxCredit += quantity;
|
||||||
cs.gainCash(4, (quantity / 5000));
|
cs.gainCash(4, (quantity / 5000));
|
||||||
|
nxPrepaid += quantity / 5000;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -234,22 +247,28 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
|||||||
Item it = CashShop.generateCouponItem(item, qty);
|
Item it = CashShop.generateCouponItem(item, qty);
|
||||||
|
|
||||||
cs.addToInventory(it);
|
cs.addToInventory(it);
|
||||||
couponPackage.add(it);
|
cashItems.add(it);
|
||||||
} else {
|
} else {
|
||||||
MapleInventoryManipulator.addById(c, item, qty, "", -1);
|
MapleInventoryManipulator.addById(c, item, qty, "", -1);
|
||||||
|
items.add(new Pair<Integer, Integer>((int)qty, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
//c.announce(MaplePacketCreator.showCouponRedeemedItem(item));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(cashItems.size() > 255) {
|
||||||
if (!couponPackage.isEmpty()) {
|
List<Item> oldList = cashItems;
|
||||||
c.announce(MaplePacketCreator.showBoughtCashPackage(couponPackage, c.getAccID()));
|
cashItems = Arrays.asList(new Item[255]);
|
||||||
} else {
|
int index = 0;
|
||||||
c.announce(MaplePacketCreator.showBoughtQuestItem(0));
|
for(Item item : oldList) {
|
||||||
|
cashItems.set(index, item);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nxCredit != 0 || nxPrepaid != 0) { //coupon packet can only show maple points (afaik)
|
||||||
|
c.announce(MaplePacketCreator.showBoughtQuestItem(0));
|
||||||
|
} else {
|
||||||
|
c.announce(MaplePacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items));
|
||||||
}
|
}
|
||||||
|
|
||||||
c.enableCSActions();
|
c.enableCSActions();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -6112,12 +6112,12 @@ public class MaplePacketCreator {
|
|||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static byte[] sendNameTransferCheck(boolean canUseName) {
|
public static byte[] sendNameTransferCheck(boolean canUseName) {
|
||||||
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
||||||
mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE.getValue());
|
mplew.writeShort(SendOpcode.CASHSHOP_CHECK_NAME_CHANGE.getValue());
|
||||||
mplew.writeShort(0);
|
mplew.writeShort(0);
|
||||||
mplew.writeBool(!canUseName);
|
mplew.writeBool(!canUseName);
|
||||||
|
|
||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6219,16 +6219,23 @@ public class MaplePacketCreator {
|
|||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] showCouponRedeemedItem(int itemid) {
|
public static byte[] showCouponRedeemedItems(int accountId, int maplePoints, int mesos, List<Item> cashItems, List<Pair<Integer, Integer>> items) {
|
||||||
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
||||||
mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue());
|
mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue());
|
||||||
mplew.writeShort(0x49); //v72
|
mplew.write(0x59);
|
||||||
mplew.writeInt(0);
|
mplew.write((byte)cashItems.size());
|
||||||
mplew.writeInt(1);
|
for(Item item : cashItems) {
|
||||||
mplew.writeShort(1);
|
addCashItemInformation(mplew, item, accountId);
|
||||||
mplew.writeShort(0x1A);
|
}
|
||||||
mplew.writeInt(itemid);
|
mplew.writeInt(maplePoints);
|
||||||
mplew.writeInt(0);
|
mplew.writeInt(items.size());
|
||||||
|
for(Pair<Integer, Integer> itemPair : items) {
|
||||||
|
int quantity = itemPair.getLeft();
|
||||||
|
mplew.writeShort((short) quantity); //quantity (0 = 1 for cash items)
|
||||||
|
mplew.writeShort(0x1F); //0 = ?, >=0x20 = ?, <0x20 = ? (does nothing?)
|
||||||
|
mplew.writeInt(itemPair.getRight());
|
||||||
|
}
|
||||||
|
mplew.writeInt(mesos);
|
||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user