#pragma once #pragma pack(1) #include "ShopDefine.h" namespace ShopProtocol { struct STCashDetail { STCashDetail() { ZeroMemory(Name, MAX_TYPENAME_LENGTH * sizeof(WCHAR)); Value = 0; Type = 0; }; WCHAR Name[MAX_TYPENAME_LENGTH]; double Value; char Type; }; struct STPointDetail { STPointDetail() { ZeroMemory(PointTypeName, MAX_POINTNAME_LENGTH); PointType = PointValue = 0; }; char PointTypeName[MAX_POINTNAME_LENGTH]; long PointType; long PointValue; }; struct STItemProperty { STItemProperty() { PropertySeq = 0; Value = 0; }; long PropertySeq; int Value; }; struct STStorage { STStorage() { StorageSeq = PackageProductSeq = PriceSeq = 0; }; long StorageSeq; long PackageProductSeq; long PriceSeq; DWORD DeleteDate; }; struct STStorageNoGiftMessage { STStorageNoGiftMessage() { Seq = ItemSeq = GroupCode = ShareFlag = ProductSeq = PriceSeq = ProductType = 0; CashPoint = 0; ItemType = 0; RelationType = 0; ZeroMemory(CashName, MAX_TYPENAME_LENGTH * sizeof(WCHAR)); ZeroMemory(SendAccountID, MAX_ACCOUNTID_LENGTH * sizeof(WCHAR)); }; long Seq; long ItemSeq; long GroupCode; long ShareFlag; long ProductSeq; WCHAR CashName[MAX_TYPENAME_LENGTH]; double CashPoint; WCHAR SendAccountID[MAX_ACCOUNTID_LENGTH]; char ItemType; BYTE RelationType; long PriceSeq; long ProductType; DWORD DeleteDate; }; enum PaymentType { Inbound = 0, Outbound_HanCoin = 1, Outbound_Ijji = 2, Outbound_GameOn = 3, Outbound_GameChu = 4, Outbound_Channeling = 5, Outbound_FPTOnline = 6, Outbound_WebzenTW = 7, Outbound_WinneronlineTH = 8, Outbound_SUN_JP = 9, Outbound_BT_TH = 10, Outbound_SUN_RU = 11, Outbound_SUN_CN = 12, }; template class MSG_REQUEST_BASE { public: MSG_REQUEST_BASE() {} MSG_REQUEST_BASE(DWORD dwID) : dwProtocolID(dwID), GameCode(0), dwPacketSize(sizeof( _subcls )) {} long GetGameCode() { return GameCode; } DWORD dwPacketSize; DWORD dwProtocolID; long GameCode; }; template class MSG_RESPONSE_BASE : public MSG_REQUEST_BASE<_subcls> { public: MSG_RESPONSE_BASE(DWORD dwProtocol) : MSG_REQUEST_BASE<_subcls>(dwProtocol) { ResultCode = 0; } public: long ResultCode; }; class MSG_SERVER_GIFTPRODUCT : public MSG_RESPONSE_BASE { public: MSG_SERVER_GIFTPRODUCT(long nGameCode) : MSG_RESPONSE_BASE(PROTOCOL_SERVER_GIFTPRODUCT) { GameCode = nGameCode; SenderSeq = ReceiverSeq = 0; DeductCashSeq = 0; ZeroMemory(SenderID, MAX_ACCOUNT_LENGTH); ZeroMemory(ReceiverID, MAX_ACCOUNT_LENGTH); } public: char SenderID[MAX_ACCOUNT_LENGTH]; char ReceiverID[MAX_ACCOUNT_LENGTH]; DWORD SenderSeq; DWORD ReceiverSeq; long DeductCashSeq; }; class MSG_CLIENT_INQUIRE_CASH : public MSG_REQUEST_BASE { public: MSG_CLIENT_INQUIRE_CASH(long nGameCode) : MSG_REQUEST_BASE(PROTOCOL_CLIENT_INQUIRE_CASH) { GameCode = nGameCode; AccountSeq = 0; } public: DWORD AccountSeq; }; class MSG_SERVER_INQUIRE_CASH : public MSG_RESPONSE_BASE { public: MSG_SERVER_INQUIRE_CASH(long nGameCode) : MSG_RESPONSE_BASE(PROTOCOL_SERVER_INQUIRE_CASH) { GameCode = nGameCode; PackHeader = dwPacketSize; AccountSeq = 0; ListCount = 0; CashPoint = 0; PPCashPoint = 0; MileagePoint = 0; } public: DWORD AccountSeq; long PackHeader; int ListCount; double CashPoint; double PPCashPoint; double MileagePoint; }; class MSG_CLIENT_BUYPRODUCT : public MSG_REQUEST_BASE { public: MSG_CLIENT_BUYPRODUCT(long nGameCode) : MSG_REQUEST_BASE(PROTOCOL_CLIENT_BUYPRODUCT) { GameCode = nGameCode; AccountSeq = 0; PackageSeq = PriceSeq = 0; ZeroMemory(CharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); } public: DWORD AccountSeq; long PackageSeq; long PriceSeq; WCHAR CharName[MAX_CHARACTERID_LENGTH]; }; class MSG_SERVER_BUYPRODUCT : public MSG_RESPONSE_BASE { public: MSG_SERVER_BUYPRODUCT(long nGameCode) : MSG_RESPONSE_BASE(PROTOCOL_SERVER_BUYPRODUCT) { GameCode = nGameCode; AccountSeq = 0; } public: DWORD AccountSeq; }; class MSG_CLIENT_GIFTPRODUCT : public MSG_REQUEST_BASE { public: MSG_CLIENT_GIFTPRODUCT(long nGameCode) : MSG_REQUEST_BASE(PROTOCOL_CLIENT_GIFTPRODUCT) { GameCode = nGameCode; SenderSeq = ReceiverSeq = 0; PackageSeq = PriceSeq = 0; ZeroMemory(Message, MAX_MESSAGE_LENGTH * sizeof(WCHAR)); ZeroMemory(SenderCharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); ZeroMemory(ReceiverCharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); } public: DWORD SenderSeq; WCHAR SenderCharName[MAX_CHARACTERID_LENGTH]; DWORD ReceiverSeq; WCHAR ReceiverCharName[MAX_CHARACTERID_LENGTH]; WCHAR Message[MAX_MESSAGE_LENGTH]; long PackageSeq; long PriceSeq; }; class MSG_CLIENT_GIFTCASH : public MSG_REQUEST_BASE { public: MSG_CLIENT_GIFTCASH() : MSG_REQUEST_BASE(PROTOCOL_CLIENT_GIFTCASH) { SenderAccountSeq = ReceiverAccountSeq = 0; SendServerIndex = ReceiverServerIndex = 0; CashValue = 0; ZeroMemory(Message, MAX_MESSAGE_LENGTH * sizeof(WCHAR)); ZeroMemory(SendCharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); ZeroMemory(ReceiverCharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); } public: DWORD SenderAccountSeq; WCHAR SendCharName[MAX_CHARACTERID_LENGTH]; long SendServerIndex; DWORD ReceiverAccountSeq; WCHAR ReceiverCharName[MAX_CHARACTERID_LENGTH]; long ReceiverServerIndex; WCHAR Message[MAX_MESSAGE_LENGTH]; double CashValue; }; class MSG_SERVER_GIFTCASH : public MSG_RESPONSE_BASE { public: MSG_SERVER_GIFTCASH() : MSG_RESPONSE_BASE(PROTOCOL_SERVER_GIFTCASH) { SenderSeq = ReceiverSeq = 0; GiftSendLimit = 0; } public: DWORD SenderSeq; DWORD ReceiverSeq; double GiftSendLimit; }; class MSG_CLIENT_STORAGELIST : public MSG_REQUEST_BASE { public: MSG_CLIENT_STORAGELIST() : MSG_REQUEST_BASE(PROTOCOL_CLIENT_STORAGELIST) { AccountSeq = 0; } public: DWORD AccountSeq; }; class MSG_SERVER_STORAGELIST : public MSG_RESPONSE_BASE { public: MSG_SERVER_STORAGELIST() : MSG_RESPONSE_BASE(PROTOCOL_SERVER_STORAGELIST) { PackHeader = dwPacketSize; AccountSeq = 0; ListCount = 0; } public: long PackHeader; DWORD AccountSeq; int ListCount; }; class MSG_CLIENT_STORAGEUSEROLLBACK:public MSG_REQUEST_BASE { public: MSG_CLIENT_STORAGEUSEROLLBACK() :MSG_REQUEST_BASE(PROTOCOL_CLINET_STORAGEUSE_ROLLBACK) { } DWORD AccountSeq; long StorageSeq; }; class MSG_CLIENT_STORAGEUSE : public MSG_REQUEST_BASE { public: MSG_CLIENT_STORAGEUSE() : MSG_REQUEST_BASE(PROTOCOL_CLIENT_STORAGEUSE) ,EmptySlotNum(0),AccountSeq(0),IPAddress(0),StorageSeq(0) { ZeroMemory(CharName, MAX_CHARACTERID_LENGTH * sizeof(WCHAR)); } public: DWORD AccountSeq; DWORD IPAddress; long StorageSeq; BYTE EmptySlotNum; WCHAR CharName[MAX_CHARACTERID_LENGTH]; }; class MSG_SERVER_STORAGEUSE_ONE : public MSG_RESPONSE_BASE { public: MSG_SERVER_STORAGEUSE_ONE() : MSG_RESPONSE_BASE(PROTOCOL_SERVER_STORAGEUSE) ,PackHeader(dwPacketSize),AccountSeq(0),ProductSeq(0),StorageSeq(0) ,InGameProductID(0) { } public: DWORD AccountSeq; long InGameProductID; long PackHeader; long ProductSeq; long StorageSeq; ShopProtocol::STItemProperty ItemProperty; }; class MSG_SERVER_STORAGEUSE_MULIT:public MSG_RESPONSE_BASE { public: MSG_SERVER_STORAGEUSE_MULIT() :MSG_RESPONSE_BASE(PROTOCOL_SERVER_STORAGEUSE_ALL) ,iListCount(0),PackHeader(dwPacketSize) { } public: int iListCount; long PackHeader; }; class MSG_CLIENT_INQUIRE_SALESVERSION : public MSG_REQUEST_BASE { public: MSG_CLIENT_INQUIRE_SALESVERSION() : MSG_REQUEST_BASE(PROTOCOL_CLIENT_INQUIRE_SALESVERSION) { } }; class MSG_SERVER_INQUIRE_SALESVERSION : public MSG_RESPONSE_BASE { public: MSG_SERVER_INQUIRE_SALESVERSION() : MSG_RESPONSE_BASE(PROTOCOL_SERVER_INQUIRE_SALESVERSION) { SalesZone = Year = YearIdentity = 0; } public: unsigned short SalesZone; unsigned short Year; unsigned short YearIdentity; }; } #pragma pack()