465 lines
20 KiB
C++
465 lines
20 KiB
C++
#pragma once
|
||
|
||
#pragma pack(push, 1)
|
||
|
||
//-------------------------------------------------
|
||
// Cash Packet (Nexon)
|
||
//-------------------------------------------------
|
||
struct TBillingHeader
|
||
{
|
||
BYTE cPacketID; // 0xAF 고정
|
||
UINT nLength; //
|
||
};
|
||
|
||
#if (defined(_KR) || defined(_US)) && defined(_CASHSERVER)
|
||
struct TBonusProductInfo
|
||
{
|
||
UINT nProductNo; // 보너스 상품 번호
|
||
char szExtend[10]; // 보너스값
|
||
};
|
||
|
||
struct TProductInquiry
|
||
{
|
||
int nCommodityItemSN; // CashCommodity 상품번호
|
||
int nProductNo; // 상품번호
|
||
int nRelationProductNo; // 연관상품 아닐경우 0 대표상품일 경우 product no와 동일
|
||
short wProductExpire; // 사용기간 (일)
|
||
short wProductPieces; // 개별 상품수
|
||
char szProductID[100]; // 게임서버에서 사용하는 DBID
|
||
char szProductGUID[32]; // NISMS에서 부여되는 상품 GUID 테스트, 상용환경 동일한 값
|
||
int nPaymentType; // 지불수단
|
||
char szProductType[2]; // 상품타입
|
||
int nSalePrice; // 상품판매금액
|
||
int nCategoryNo; // 상품이 속한 카테고리 번호
|
||
short wProductStatus; // 상품 상태 번호
|
||
char cBonusProductCount; // 보너스상품 총 카운트
|
||
std::vector<TBonusProductInfo> vBonusProduct;
|
||
};
|
||
|
||
struct TProductItem
|
||
{
|
||
int nProductNo; // 상품번호
|
||
short wOrderQuantity; // 주문수량
|
||
char szExtend[10]; // 확장값
|
||
};
|
||
|
||
struct TPickupItemSub
|
||
{
|
||
UINT nProductNo; // 상품번호
|
||
char szProductName[100];// 상품이름
|
||
char szProductID[100]; // 게임서버에서 사용하는 DBID
|
||
USHORT wProductExpire; // 사용기간 (일)
|
||
USHORT wProductPieces; // 개별 상품수
|
||
char szProductAttribute[64][5]; // 상품 속성값
|
||
};
|
||
|
||
struct TPickupItemBonus
|
||
{
|
||
UINT nBonusProduct; // 보너스 상품번호
|
||
UINT nBonusAmount; // 보너스 금액
|
||
};
|
||
|
||
struct TInventoryInquiryProduct
|
||
{
|
||
int nOrderNo;
|
||
int nProductNo;
|
||
char cProductKind;
|
||
char szProductName[100];
|
||
char szProductID[100];
|
||
short wProductExpire;
|
||
short wProductPieces;
|
||
short wOrderQuantity;
|
||
short wRemainProductQuantity;
|
||
char cPresent;
|
||
char cRead;
|
||
char cSenderServerNo;
|
||
char szSenderGameID[64];
|
||
char szSenderPresentMessage[100];
|
||
char szProductAttribute[64][5];
|
||
char szExtend[10];
|
||
};
|
||
|
||
#endif
|
||
|
||
/*-------------------------------------------------
|
||
Cash Packet
|
||
|
||
AccountDBID를 꼭 앞에 써줘야함. 저걸로 유저 찾음
|
||
-------------------------------------------------*/
|
||
struct TCashHeader
|
||
{
|
||
UINT nAccountDBID;
|
||
};
|
||
|
||
// CASH_BALANCEINQUIRY
|
||
struct TQCashBalanceInquiry : public TCashHeader
|
||
{
|
||
char szAccountName[IDLENMAX];
|
||
bool bOpen;
|
||
bool bServer;
|
||
UINT nIp;
|
||
#if defined(_KR) || defined(_US)
|
||
UINT nNexonSN;
|
||
#endif // _KR _CH
|
||
};
|
||
|
||
struct TACashBalanceInquiry : public TCashHeader
|
||
{
|
||
int nResult;
|
||
int nCashBalance;
|
||
int nPetal;
|
||
bool bOpen;
|
||
bool bServer;
|
||
#if defined(_US)
|
||
int nNotRefundableBalance; //
|
||
#endif // _US
|
||
};
|
||
|
||
struct TCashItemBase
|
||
{
|
||
int nItemSN;
|
||
TItem CashItem;
|
||
DWORD dwPartsColor1; // 파츠 색깔
|
||
DWORD dwPartsColor2; // 파츠 색깔2
|
||
TVehicleItem VehiclePart1;
|
||
TVehicleItem VehiclePart2;
|
||
int nPaidCashAmount;
|
||
};
|
||
|
||
struct TCashBuyItem: TCashItemBase
|
||
{
|
||
char cCartIndex;
|
||
bool bFail;
|
||
};
|
||
|
||
// CASH_BUY
|
||
struct TQCashBuyBase : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
char cWorldSetID;
|
||
char szCharacterName[NAMELENMAX];
|
||
char cAge;
|
||
bool bPCBang;
|
||
int nMapID;
|
||
int nChannelID;
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
bool bMoveCashInven; // 캐쉬인벤으로 바로 옮기기 플래그
|
||
#endif
|
||
char cPaymentRules; // Cash::PaymentRules
|
||
};
|
||
|
||
struct TQCashBuy: TQCashBuyBase
|
||
{
|
||
char cCartType; // 구매 카트 타입 (3,7: PREVIEWCARTLISTMAX, 나머지: CARTLISTMAX, 50 + eInstantCashShopBuyType: 간편결재)
|
||
char cProductCount;
|
||
#if defined(PRE_ADD_SALE_COUPON)
|
||
INT64 biSaleCouponSerial; // 세일쿠폰 사용
|
||
#endif
|
||
TCashBuyItem BuyList[PREVIEWCARTLISTMAX];
|
||
};
|
||
|
||
struct TACashBuy : public TCashHeader
|
||
{
|
||
int nResult;
|
||
char cPaymentRules; // Cash::PaymentRules
|
||
int nPetalBalance;
|
||
char cCartType; // 구매 카트 타입 (3,7: PREVIEWCARTLISTMAX, 나머지: CARTLISTMAX, 50 + eInstantCashShopBuyType: 간편결재)
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
TPaymentItemInfoEx ItemList[PREVIEWCARTLISTMAX];
|
||
#endif
|
||
#if defined(PRE_ADD_SALE_COUPON)
|
||
INT64 biSaleCouponSerial;
|
||
#endif
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
char cProductCount;
|
||
TCashBuyItem BuyList[PREVIEWCARTLISTMAX];
|
||
};
|
||
|
||
// CASH_PACKAGEBUY
|
||
struct TQCashPackageBuy: TQCashBuyBase
|
||
{
|
||
int nPackageSN; // 패키지 대표 SN
|
||
#if defined(PRE_ADD_SALE_COUPON)
|
||
INT64 biSaleCouponSerial; // 세일쿠폰 사용
|
||
#endif
|
||
char cPackageCount; // 패키지안에 상품들
|
||
TCashItemBase BuyList[PACKAGEITEMMAX];
|
||
};
|
||
|
||
struct TACashPackageBuy : public TCashHeader
|
||
{
|
||
int nResult;
|
||
char cPaymentRules; // Cash::PaymentRules
|
||
int nPetalBalance;
|
||
int nPackageSN; // 패키지 대표 SN
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
TPaymentPackageItemInfoEx PaymentItem;
|
||
#endif
|
||
#if defined(PRE_ADD_SALE_COUPON)
|
||
INT64 biSaleCouponSerial;
|
||
#endif
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
char cPackageCount;
|
||
TCashItemBase BuyList[PACKAGEITEMMAX];
|
||
};
|
||
|
||
struct TCashGiftItem
|
||
{
|
||
char cCartIndex;
|
||
int nItemSN;
|
||
int nItemID;
|
||
char cItemOption;
|
||
bool bFail;
|
||
};
|
||
|
||
struct TCashPackageGiftItem
|
||
{
|
||
int nItemSN;
|
||
int nItemID;
|
||
char cItemOption;
|
||
};
|
||
|
||
struct TQCashGiftBase : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
char cWorldSetID;
|
||
char szCharacterName[NAMELENMAX];
|
||
char cAge;
|
||
bool bPCBang;
|
||
int nMapID;
|
||
int nChannelID;
|
||
WCHAR wszReceiverCharacterName[NAMELENMAX];
|
||
WCHAR wszMessage[GIFTMESSAGEMAX];
|
||
#if defined(PRE_ADD_CADGE_CASH)
|
||
int nMailDBID;
|
||
#endif // #if defined(PRE_ADD_CADGE_CASH)
|
||
};
|
||
|
||
// CASH_GIFT
|
||
struct TQCashGift: TQCashGiftBase
|
||
{
|
||
char cCartType; // 구매 카트 타입 (3,7: PREVIEWCARTLISTMAX, 나머지: CARTLISTMAX, 50 + eInstantCashShopBuyType: 간편결재)
|
||
char cProductCount;
|
||
TCashGiftItem GiftList[PREVIEWCARTLISTMAX];
|
||
};
|
||
|
||
struct TACashGift : public TCashHeader
|
||
{
|
||
UINT nReceiverAccountDBID;
|
||
INT64 biReceiverCharacterDBID;
|
||
int nReceiverGiftCount;
|
||
int nResult;
|
||
int nPetalBalance;
|
||
char cCartType; // 구매 카트 타입 (3,7: PREVIEWCARTLISTMAX, 나머지: CARTLISTMAX, 50 + eInstantCashShopBuyType: 간편결재)
|
||
#if defined(PRE_ADD_CADGE_CASH)
|
||
int nMailDBID;
|
||
#endif // #if defined(PRE_ADD_CADGE_CASH)
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
char cGiftCount;
|
||
TCashGiftItem GiftList[PREVIEWCARTLISTMAX];
|
||
};
|
||
|
||
// CASH_PACKAGEGIFT
|
||
struct TQCashPackageGift: TQCashGiftBase
|
||
{
|
||
int nPackageSN; // 패키지 대표 SN
|
||
char cPackageCount; // 패키지안에 상품들
|
||
TCashPackageGiftItem GiftList[PACKAGEITEMMAX];
|
||
};
|
||
|
||
struct TACashPackageGift : public TCashHeader
|
||
{
|
||
UINT nReceiverAccountDBID;
|
||
INT64 biReceiverCharacterDBID;
|
||
int nReceiverGiftCount;
|
||
int nResult;
|
||
int nPetalBalance;
|
||
int nPackageSN; // 패키지 대표 SN
|
||
#if defined(PRE_ADD_CADGE_CASH)
|
||
int nMailDBID;
|
||
#endif // #if defined(PRE_ADD_CADGE_CASH)
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
char cPackageCount;
|
||
TCashPackageGiftItem GiftList[PACKAGEITEMMAX];
|
||
};
|
||
|
||
// CASH_COUPON
|
||
struct TQCashCoupon : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
char cWorldSetID;
|
||
char szCharacterName[NAMELENMAX];
|
||
WCHAR wszCoupon[COUPONMAX];
|
||
bool bPCBang;
|
||
};
|
||
|
||
struct TACashCoupon : public TCashHeader
|
||
{
|
||
int nResult;
|
||
};
|
||
|
||
// CASH_DELUSER
|
||
struct TQCashDelUser : public TCashHeader
|
||
{
|
||
};
|
||
|
||
|
||
// CASH_VIPBUY,
|
||
struct TQCashVIPBuy : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
int nItemSN;
|
||
char cWorldSetID;
|
||
bool bPCBang;
|
||
int nMapID;
|
||
int nChannelID;
|
||
bool bAutoPay; // 0=수동결제, 1=자동결제
|
||
bool bServer; // 유저가 산건지 서버에서 보낸건지
|
||
};
|
||
|
||
struct TACashVIPBuy : public TCashHeader
|
||
{
|
||
int nResult;
|
||
int nPetal;
|
||
int nCash;
|
||
int nItemSN;
|
||
int nVIPTotalPoint;
|
||
__time64_t tVIPEndDate;
|
||
bool bAutoPay; // 0=수동결제, 1=자동결제
|
||
bool bServer; // 유저가 산건지 서버에서 보낸건지
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
};
|
||
|
||
// CASH_VIPGIFT,
|
||
struct TQCashVIPGift : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
int nItemSN;
|
||
char cWorldSetID;
|
||
bool bPCBang;
|
||
int nMapID;
|
||
int nChannelID;
|
||
WCHAR wszReceiverCharacterName[NAMELENMAX];
|
||
WCHAR wszMessage[GIFTMESSAGEMAX];
|
||
};
|
||
|
||
struct TACashVIPGift : public TCashHeader
|
||
{
|
||
int nResult;
|
||
int nPetal;
|
||
int nCash;
|
||
int nItemSN;
|
||
UINT nReceiverAccountDBID;
|
||
INT64 biReceiverCharacterDBID;
|
||
int nReceiverGiftCount;
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
INT64 nSeedPoint;
|
||
#endif
|
||
};
|
||
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
struct TQGetLimitedItemList
|
||
{
|
||
};
|
||
|
||
struct TAGetLimitedItemList
|
||
{
|
||
BYTE cIsLast;
|
||
BYTE cCount;
|
||
LimitedCashItem::TLimitedQuantityCashItem Limited[LimitedCashItem::Common::DefaultPacketCount];
|
||
};
|
||
|
||
struct TAGetChangedLimitedItemList
|
||
{
|
||
BYTE cCount;
|
||
LimitedCashItem::TChangedLimitedQuantity Limited[LimitedCashItem::Common::DefaultPacketCount];
|
||
};
|
||
|
||
struct TQChangeLimitMax
|
||
{
|
||
int nSN;
|
||
int nLimitMax;
|
||
};
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
// CASH_SALEABORTLIST
|
||
struct TASaleAbortList
|
||
{
|
||
BYTE cCount;
|
||
int nAbortList[SALEABORTLISTMAX];
|
||
};
|
||
|
||
// CASH_MOVE_CASHINVEN
|
||
struct TQCashMoveCashInven : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
char cWorldSetID;
|
||
int nMapID;
|
||
int nChannelID;
|
||
TCashItemBase CashItem;
|
||
TPaymentItemInfoEx PaymentItemInfo;
|
||
};
|
||
|
||
struct TACashMoveCashInven : public TCashHeader
|
||
{
|
||
int nResult;
|
||
int nTotalPetal; // 페탈이 적립될 수 있다.(토탈 페탈)
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
int nTotalSeed; // 시드 적립
|
||
#endif
|
||
TCashItemBase CashItem;
|
||
INT64 biPurchaseOrderDetailID;
|
||
};
|
||
|
||
// CASH_PACKAGE_MOVE_CASHINVEN
|
||
struct TQCashPackageMoveCashInven : public TCashHeader
|
||
{
|
||
INT64 biCharacterDBID;
|
||
char cWorldSetID;
|
||
int nMapID;
|
||
int nChannelID;
|
||
TCashItemBase CashItemList[PACKAGEITEMMAX];
|
||
TPaymentPackageItemInfoEx PaymentPackageItemInfo;
|
||
};
|
||
|
||
struct TACashPackageMoveCashInven : public TCashHeader
|
||
{
|
||
int nResult;
|
||
int nTotalPetal; // 페탈이 적립될 수 있다.(토탈 페탈)
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
int nTotalSeed; // 시드 적립
|
||
#endif
|
||
TCashItemBase CashItemList[PACKAGEITEMMAX];
|
||
INT64 biPurchaseOrderDetailID;
|
||
};
|
||
|
||
// CASH_REFUNDCASH
|
||
struct TQCashRefund : public TCashHeader
|
||
{
|
||
char cItemType; // 1..일반, 2..Package
|
||
char cWorldSetID;
|
||
int nItemSN;
|
||
UINT uiOrderNo; // Nexon
|
||
INT64 biPurchaseOrderDetailID; // 우리꺼
|
||
};
|
||
|
||
struct TACashRefund : public TCashHeader
|
||
{
|
||
int nResult;
|
||
char cItemType;
|
||
INT64 biPurchaseOrderDetailID; // 우리꺼
|
||
};
|
||
|
||
|
||
|
||
#pragma pack(pop)
|