/////////////////////////////////////////////////////////////////////////////////////////////// // // DB Struct Define // ////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _DBDefine #define _DBDefine #include #pragma pack(1) // 1byte order·Î ÆÐÅ· /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ Á¤º¸ DB Table // ////////////////////////////////////////////////////////////////////////////////////////////// struct CHAR_INFOST { enum { // edith 2008.03.17 ID,PASS ±æÀÌÁ¶Á¤ MAX_ACCOUNT_LEN = 24, MAX_NAME_LEN = 16 }; unsigned long CID; char Name[MAX_NAME_LEN]; // ij¸¯ÅÍ À̸§ char Sex; // ij¸¯ÅÍ ¼º char Hair; // ij¸¯ÅÍ ¸Ó¸® ¸ð¾ç char Face; // ij¸¯ÅÍ ¾ó±¼ ¸ð¾ç char Race; // ij¸¯ÅÍ Á¾Á· unsigned short Class; // ij¸¯ÅÍ Å¬·¡½º unsigned long Fame; // ¸í¼º unsigned long Mileage; // ¸¶Àϸ®Áö unsigned long GID; // ij¸¯ÅÍ ±æµå unsigned long PID; // ij¸¯ÅÍ ÆÄƼ char Level; // ij¸¯ÅÍ ·¹º§ unsigned long Gold; // µ· unsigned short IP; // Áõ°¡ Æ÷ÀÎÆ® unsigned short STR; // ij¸¯ÅÍ STR unsigned short DEX; // ij¸¯ÅÍ DEX unsigned short CON; // ij¸¯ÅÍ CON unsigned short INT; // ij¸¯ÅÍ INT unsigned short WIS; // ij¸¯ÅÍ WIS short HP; // ij¸¯ÅÍ HP short MP; // ij¸¯ÅÍ MP __int64 Exp; // ij¸¯ÅÍ °æÇèÁ¡ char Chance; // ij¸¯ÅÍ Âù½º }; typedef CHAR_INFOST* LPCHAR_INFOST; /////////////////////////////////////////////////////////////////////////////////////////////// // // ½Ã°£ // ////////////////////////////////////////////////////////////////////////////////////////////// struct TIME { unsigned short Year; // ¿¬µµ unsigned short Month; // ´Þ unsigned short Day; // ³¯Â¥ unsigned short Hour; // ½Ã°£ unsigned short Minute; // ºÐ unsigned short Second; // ÃÊ unsigned long MSecond; // ¹Ð¸®ÃÊ }; typedef TIME* LPTIME; /////////////////////////////////////////////////////////////////////////////////////////////// // // ¿ä½Ã·£µå ÀÎÁõ // ////////////////////////////////////////////////////////////////////////////////////////////// struct AUTH { unsigned long Errcode; // ¿¡·¯ ÄÚµå unsigned long UID; // À¯Àú ¾ÆÀ̵ð union COMMENT { unsigned long Point; // Æ÷ÀÎÆ® ¾ç TIME Time; // ½Ã°£ } Comment; unsigned long Dumy[4]; // ±Ô°Ý¿¡ ¸ÂÁö ¾ÊÀº »çÀÌÁîÀÇ µ¥ÀÌÅÍ ´ëºñ }; struct PAY_AUTH { // edith 2008.05.29 ¾îÄ«¿îÆ® ±æÀ̰¡ 20->40À¸·Î ¹Ù²¼´Ù. enum { AccountLen = 40 }; unsigned long Errcode; // ¿¡·¯ ÄÚµå char Account[AccountLen]; // °èÁ¤ À̸§ unsigned long UID; // À¯Àú ¾ÆÀ̵ð unsigned long Time; // ½Ã°£ (ºÐ) int WarningCode; // 0 : ´ë¸¸ °æ°íº¸³¿ / 1 : Áß±¹ °æ°í¾øÀ½ / 2 : Áß±¹ °æ°íº¸³¿ }; /////////////////////////////////////////////////////////////////////////////////////////////// // // ÇѰÔÀÓ ÀÎÁõ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _HAN_UID { unsigned long hUID; // À¯Àú ¾ÆÀ̵ð unsigned long lUID; // À¯Àú ¾ÆÀ̵ð }HAN_UID, *LPHAN_UID; typedef struct _HAN_AUTH { unsigned char Num; // ÀÚ¸®¼ö unsigned short Extra; // ¹¹ÇÏ´Â °ÇÁö ¸ð¸§ unsigned long UID; // À¯Àú ¾ÆÀ̵ð unsigned char Dump; // ºó°ø°£ }HAN_AUTH, *LPHAN_AUTH; typedef union _HAN_CONVERT { unsigned _int64 iValue; // 64 Bit °ª HAN_AUTH sValue; // ±¸Á¶Ã¼ }HAN_CONVERT, *LPHAN_CONVERT; /////////////////////////////////////////////////////////////////////////////////////////////// // // À§Ä¡ // ////////////////////////////////////////////////////////////////////////////////////////////// struct POS { float fPointX; // Point X ÁÂÇ¥ float fPointY; // Point Y ÁÂÇ¥ float fPointZ; // Point Z ÁÂÇ¥ }; /////////////////////////////////////////////////////////////////////////////////////////////// // // ½ºÅ³ ½½·Ô // modified 2002/10/3 11:20 by sparrowhawk // ////////////////////////////////////////////////////////////////////////////////////////////// union SKILLSLOT { struct { unsigned short wSkill; // ½ºÅ³ ¾ÆÀ̵ð char cLockCount; // ½ºÅ³ ¶ô Ä«¿îÆ® ( 0~4 ) char cSkillLevel; // ½ºÅ³ ·¹º§ ( -127 ~ 128 ) }SKILLINFO; unsigned long dwSkillSlot; SKILLSLOT() : dwSkillSlot(0) { } SKILLSLOT(unsigned short skill, char lockcount, char skillLevel) { SKILLINFO.wSkill = skill; SKILLINFO.cLockCount = lockcount; SKILLINFO.cSkillLevel = skillLevel; } }; typedef SKILLSLOT* LPSKILLSLOT; /////////////////////////////////////////////////////////////////////////////////////////////// // // ½ºÅ³ // ////////////////////////////////////////////////////////////////////////////////////////////// struct SKILL { enum Const { MAX_SKILL_LEVEL = 6, MAX_SLOT_NUM = 40 }; unsigned short wSkillNum; // ½ºÅ³ ¼ö (TODO : »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.) unsigned short wSlotNum; // ½½·Ô ¼ö SKILLSLOT SSlot[MAX_SLOT_NUM]; // ½ºÅ³ SKILL() : wSkillNum(0), wSlotNum(0) { std::fill_n(&SSlot[0], int(MAX_SLOT_NUM), SKILLSLOT()); } SKILL(unsigned short usSkillNum, unsigned short usSlotNum) : wSkillNum(usSkillNum), wSlotNum(usSlotNum) { std::fill_n(&SSlot[0], int(MAX_SLOT_NUM), SKILLSLOT()); } unsigned short GetSkillNum(void) { unsigned short wCount = 0; for (int Index = 0; Index < wSlotNum; ++Index) { // ½ºÅ³¾ÆÀ̵𰡠0x8000 º¸´Ù ÀÛÀ¸¸é ¼Ò¼³¸ð¼Ç, ¾îºô¸®Æ¼ ÀÌ´Ù. if(SSlot[Index].SKILLINFO.wSkill < 0x8000) continue; wCount += (SSlot[Index].SKILLINFO.cLockCount * MAX_SKILL_LEVEL + SSlot[Index].SKILLINFO.cSkillLevel); } return wCount; } unsigned short GetAbilityNum(void) { unsigned short wCount = 0; for (int Index = 0; Index < wSlotNum; ++Index) { if(SSlot[Index].SKILLINFO.wSkill >= 0x2000) continue; wCount += SSlot[Index].SKILLINFO.cLockCount; } return wCount; } }; typedef SKILL* LPSKILL; /////////////////////////////////////////////////////////////////////////////////////////////// // // ŸÀÌÆ² // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _TITLE { __int64 dlTitle; // ŸÀÌÆ² ¾ÆÀ̵ð unsigned short wScore; // ŸÀÌÆ² Á¡¼ö }TITLE, *LPTITLE; /////////////////////////////////////////////////////////////////////////////////////////////// // // Àåºñ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _EQUIP { enum { MAX_EQUIP_SIZE = 1436 }; // + 4 = 1440 unsigned long dwSize; char Data[MAX_EQUIP_SIZE]; } EQUIP, *LPEQUIP; /////////////////////////////////////////////////////////////////////////////////////////////// // // Àκ¥ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _INVEN { enum { MAX_INVEN_SIZE = 5116 }; // + 4 = 5120 unsigned long dwSize; char Data[MAX_INVEN_SIZE]; } INVEN, *LPINVEN; /////////////////////////////////////////////////////////////////////////////////////////////// // // Extra // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _EXTRA { enum { MAX_EXTRA_SIZE = 508 }; // + 4 = 512 unsigned long dwSize; char Data[MAX_EXTRA_SIZE]; } EXTRA, *LPEXTRA; /////////////////////////////////////////////////////////////////////////////////////////////// // // Exchange // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _EXCHANGE { enum { MAX_EXCHANGE_SIZE = 1280 }; // + 4 = 1284 unsigned long dwSize; char Data[MAX_EXCHANGE_SIZE]; } EXCHANGE, *LPEXCHANGE; /////////////////////////////////////////////////////////////////////////////////////////////// // // Àӽà Àκ¥Å丮 // ////////////////////////////////////////////////////////////////////////////////////////////// struct TEMPINVEN { enum { MAX_TEMPINVEN_SIZE = 1436 }; // + 4 = 1440 unsigned long dwSize; char Data[MAX_TEMPINVEN_SIZE]; }; /////////////////////////////////////////////////////////////////////////////////////////////// // // â°í // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _STORE { enum { MAX_STORE_SIZE = 7296 }; // + 4 = 7300 unsigned long dwSize; char Data[MAX_STORE_SIZE]; } STORE, *LPSTORE; /////////////////////////////////////////////////////////////////////////////////////////////// // // Äü ½½·Ô // ////////////////////////////////////////////////////////////////////////////////////////////// struct QUICKSLOT { enum Type { NONE = 0, SKILL = 1, ITEM = 2 }; char nType; char nSkillLockCount; char nSkillLevel; unsigned short wID; // Skill_ID ¶Ç´Â ¾ÆÀÌÅÛ ProtoType ID QUICKSLOT() : nType(NONE), nSkillLockCount(0), nSkillLevel(0), wID(0) { } QUICKSLOT(char type, char lockCount, char skillLevel, unsigned short wid) : nType(type), nSkillLockCount(lockCount), nSkillLevel(skillLevel), wID(wid) { } }; typedef QUICKSLOT* LPQUICKSLOT; struct QUICK { enum { MAX_QUICK_NUM = 20 }; QUICKSLOT Slots[MAX_QUICK_NUM]; QUICK() { std::fill_n(&Slots[0], int(MAX_QUICK_NUM), QUICKSLOT()); } }; typedef QUICK *LPQUICK; /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ »ý¼º ±¸Á¶Ã¼ // ////////////////////////////////////////////////////////////////////////////////////////////// struct CHAR_CREATE { enum RaceType { HUMAN = 0, AKHAN = 1 }; char Name[CHAR_INFOST::MAX_NAME_LEN]; // ij¸¯ÅÍ À̸§ char Sex; // ij¸¯ÅÍ ¼º char Hair; // ij¸¯ÅÍ ¸Ó¸® ¸ð¾ç char Face; // ij¸¯ÅÍ ¾ó±¼ ¸ð¾ç char Race; // ij¸¯ÅÍ Á¾Á· unsigned short Class; // ij¸¯ÅÍ Å¬·¡½º unsigned short Equip[15]; // Àåºñ unsigned short STR; // ij¸¯ÅÍ STR unsigned short DEX; // ij¸¯ÅÍ DEX unsigned short CON; // ij¸¯ÅÍ CON unsigned short INT; // ij¸¯ÅÍ INT unsigned short WIS; // ij¸¯ÅÍ WIS }; /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ ¸ð¾ç ±¸Á¶Ã¼ // ////////////////////////////////////////////////////////////////////////////////////////////// struct CHAR_VIEW { enum RaceType { HUMAN = 0, AKHAN = 1 }; unsigned long CID; char Name[CHAR_INFOST::MAX_NAME_LEN]; // ij¸¯ÅÍ À̸§ char Sex; // ij¸¯ÅÍ ¼º char Hair; // ij¸¯ÅÍ ¸Ó¸® ¸ð¾ç char Face; // ij¸¯ÅÍ ¾ó±¼ ¸ð¾ç char Race; // ij¸¯ÅÍ Á¾Á· unsigned short Class; // ij¸¯ÅÍ Å¬·¡½º unsigned long Fame; // ¸í¼º unsigned long Mileage; // ¸¶Àϸ®Áö unsigned long GID; // ij¸¯ÅÍ ±æµå unsigned long PID; // ij¸¯ÅÍ ÆÄƼ char Level; // ij¸¯ÅÍ ·¹º§ unsigned short Equip[15]; // Àåºñ(°Ñº¸±â) }; // DB ¿¡ ÀúÀåÇÏÁö´Â ¾ÊÁö¸¸ CHAR_VIEW ¿¡ °ü·ÃµÈ Ãß°¡ Á¤º¸ÀÌ´Ù. // ±æµå ¹× ±¹Àû Á¤º¸ struct sGuildData { unsigned char m_cNation; char m_szName[CHAR_INFOST::MAX_NAME_LEN]; }; typedef struct _PREMIUMSERVICE { long lPremiumTime; int iPremiumType; } PREMIUMSERVICE, *LPPREMIUMSERVICE; /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ Á¤º¸ DB Table // ////////////////////////////////////////////////////////////////////////////////////////////// struct USER_INFO { enum { MAX_CHAR_NUM = 5 }; unsigned long CharID[MAX_CHAR_NUM]; // ij¸¯ÅÍ // WORK_LIST 2.1 °èÁ¤ ±¹Àû Ãß°¡ unsigned char Nation; // °èÁ¤ ±¹Àû // ¼­¹öÅëÇÕ - by sphawk unsigned char OldServerGroupID; // ÅëÇÕÀü ¼­¹ö±×·ìID (0À̸é ÇöÀç ¼­¹ö±ºÀÇ Á¤º¸ÀÓÀ» ³ªÅ¸³¿) unsigned char FirstLogin; bool HasCharacter(unsigned long dwCID) const { for(int nCount = 0; nCount < MAX_CHAR_NUM; ++nCount) { if(CharID[nCount] == dwCID) { return true; } } return false; } unsigned char GetCharacterNum() const { unsigned char cSelectedCharacter = 0; for(int nCount = 0; nCount < MAX_CHAR_NUM; ++nCount) { if(0 != CharID[nCount]) { ++cSelectedCharacter; } } return cSelectedCharacter; } }; typedef USER_INFO *LPUSER_INFO; /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ Ãß°¡ Á¤º¸ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _CHAR_INFOEX { unsigned long Total; // ÃÑ ÀÌ¿ë ½Ã°£(ºÐ) unsigned long ServerID; // Á¸ unsigned char cNameChangeCount; // À̸§ ¹Ù²Ü ¼ö Àִ Ƚ¼ö unsigned char cAdminFlag; // Admin ¸ðµ¨ Á¤º¸. unsigned char GuildWarFlag; // ±æµå ÀüÀï Âü¿© Ç÷¡±× unsigned char RealmWarFlag; // ±¹°¡ ÀüÀï Âü¿© Ç÷¡±× unsigned char RealmPoint; // ±¹°¡ ÀüÀï °øÇåÈÆÀå Æ÷ÀÎÆ®. unsigned char RealmCheckPoint; // ±¹°¡ ÀüÀï Áß¿¡ ·Î±×¾Æ¿ôÇØ¼­ Æ÷ÀÎÆ®¸¦ ¾ò¾úÀ» °æ¿ì. unsigned char RealmMinute; // ±¹°¡ ÀüÀï Ç÷¹ÀÌ Å¸ÀÓ ±â·Ï. TIME LoggoutTime; // ·Î±×¾Æ¿ôµÈ ½Ã°£. } CHAR_INFOEX, *LPCHAR_INFOEX; /////////////////////////////////////////////////////////////////////////////////////////////// // // ij¸¯ÅÍ À§Ä¡ Á¤º¸ DB Table // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _CHAR_POS { POS LastPoint; // ¸¶Áö¸· À§Ä¡ POS SavePoint; // ¼¼À̺ê À§Ä¡ } CHAR_POS, *LPCHAR_POS; /////////////////////////////////////////////////////////////////////////////////////////////// // // ÆÄƼ Á¤º¸ DB Table // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _PARTY_INFO { enum { MAX_MEM = 10 }; unsigned long MemberCID[MAX_MEM]; // ¸â¹ö CID char Name[MAX_MEM][CHAR_INFOST::MAX_NAME_LEN]; // ¸â¹ö À̸§ } PARTY_INFO, *LPPARTY_INFO; typedef struct _PARTY_USER_INFO { enum { MAX_MEM = 10 }; unsigned short m_wClass[MAX_MEM]; // ¸â¹ö Ŭ·¡½º char m_cLevel[MAX_MEM]; // ¸â¹ö ·¹º§ unsigned long m_dwGID[MAX_MEM]; // ¸ã¹ö ±æµå ¾ÆÀ̵å } PARTY_USER_INFO, *LPPARTY_USER_INFO; typedef struct _PARTY_DB_INFO // µðºñ¿¡¼­ ¾ò¾î¿Ã¶§ »ç¿ë. { PARTY_INFO PartyInfo; PARTY_USER_INFO PartyUserInfo; } PARTY_DB_INFO, *LPPARTY_DB_INFO; /////////////////////////////////////////////////////////////////////////////////////////////// // // ÆÄƼ // ////////////////////////////////////////////////////////////////////////////////////////////// struct PARTY { enum { MAX_MEM = 10 }; unsigned long m_dwPartyID; unsigned long m_dwLeaderID; unsigned char m_cMemberNum; char Name[MAX_MEM][CHAR_INFOST::MAX_NAME_LEN]; unsigned long MemberCID[MAX_MEM]; unsigned long ServerID[MAX_MEM]; unsigned short m_wClass[MAX_MEM]; // ¸â¹ö Ŭ·¡½º char m_cLevel[MAX_MEM]; // ¸â¹ö ·¹º§ unsigned long m_dwGID[MAX_MEM]; // ¸â¹ö ±æµå ¾ÆÀ̵å PARTY() : m_dwPartyID(0), m_dwLeaderID(0), m_cMemberNum(0) { std::fill_n(&MemberCID[0], int(MAX_MEM), 0); std::fill_n(&ServerID[0], int(MAX_MEM), 0); std::fill_n(&m_wClass[0], int(MAX_MEM), 0); std::fill_n(&m_cLevel[0], int(MAX_MEM), 0); std::fill_n(&m_dwGID[0], int(MAX_MEM), 0); } }; struct PARTY_USERINFO { unsigned long m_dwGID[PARTY::MAX_MEM]; }; // ÆÄƼ Á¤º¸(±æµåÁ¤º¸ Ãß°¡) // struct PARTY_EX : public PARTY { bool m_bAutoRouting[PARTY::MAX_MEM]; POS m_Position[PARTY::MAX_MEM]; PARTY_EX() { InitMemberAutoRouting(); InitMemberPos(); } PARTY_EX(const PARTY& party) { m_dwPartyID = party.m_dwPartyID; m_dwLeaderID = party.m_dwLeaderID; m_cMemberNum = party.m_cMemberNum; for (int nIndex = 0; nIndex < PARTY::MAX_MEM; ++nIndex) { ::memcpy(Name[nIndex], party.Name[nIndex], CHAR_INFOST::MAX_NAME_LEN); MemberCID[nIndex] = party.MemberCID[nIndex]; ServerID[nIndex] = party.ServerID[nIndex]; m_wClass[nIndex] = party.m_wClass[nIndex]; m_cLevel[nIndex] = party.m_cLevel[nIndex]; m_dwGID[nIndex] = party.m_dwGID[nIndex]; } InitMemberAutoRouting(); InitMemberPos(); } inline void InitMemberAutoRouting() { std::fill_n(&m_bAutoRouting[0], int(PARTY::MAX_MEM), false); } inline void InitMemberPos() { for (int i = 0; i < PARTY::MAX_MEM; ++i) { m_Position[i].fPointX = 0.0f; m_Position[i].fPointY = 0.0f; m_Position[i].fPointZ = 0.0f; } } }; /////////////////////////////////////////////////////////////////////////////////////////////// // // â°í // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _STORE_INFO { enum { MAX_PASS_LEN = 5 }; char Password[MAX_PASS_LEN]; // ÆÐ½º¿öµå unsigned long Flag; // Ç÷¡±× unsigned long Gold; // Ç÷¡±× } STORE_INFO, *LPSTORE_INFO; /////////////////////////////////////////////////////////////////////////////////////////////// // // ¿î¿µÀÚ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _ADMIN { enum { MAX_IP_LEN = 16 }; unsigned long UID; unsigned short Level; char IP_S[MAX_IP_LEN]; char IP_E[MAX_IP_LEN]; } ADMIN, *LPADMIN; /////////////////////////////////////////////////////////////////////////////////////////////// // // ÇÁ·£µå // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _FRIEND { enum { MAX_FRIEND_SIZE = 2400, // + 4 = 2404 MAX_FRIENDINFO_SIZE = 700, // + 4 = 704 (ij¸¯ÅÍ Á¤º¸ Ãß°¡.) }; unsigned long dwSize; char Data[MAX_FRIEND_SIZE]; unsigned long dwInfoSize; // char Info[MAX_FRIENDINFO_SIZE]; } FRIEND, *LPFRIEND; typedef struct _BAN { enum { MAX_BAN_SIZE = 2000, // + 4 = 2004 MAX_BANINFO_SIZE = 700, // + 4 = 704 (ij¸¯ÅÍ Á¤º¸ Ãß°¡.) }; unsigned long dwSize; char Data[MAX_BAN_SIZE]; unsigned long dwInfoSize; char Info[MAX_BANINFO_SIZE]; } BAN, *LPBAN; /////////////////////////////////////////////////////////////////////////////////////////////// // // °ú±Ý °ü·Ã // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _RE_USPCheckBilling_Login { unsigned long Flag; // Success(=0) char strBillingType[2]; // D, T(N: ¹«·á°èÁ¤) int PlayTime; // ÇöÀç ³²Àº ½Ã°£ (ÀÏ, ºÐ) unsigned long intCRMIndex1; // ÇÇ½Ã¹æ °íÀ¯¾ÆÀ̵ð } RE_USPCheckBilling_Login, *LPRE_USPCheckBilling_Login; typedef struct _RE_USPGRoomCurrent_DisConn { enum { ClientIDLen = 20 }; unsigned char ClientID[ClientIDLen]; // °èÁ¤ unsigned long UID; // À¯Àú ¾ÆÀ̵ð char ServerID; // ¼­¹ö ¾ÆÀ̵ð }RE_USPGRoomCurrent_DisConn, *LPRE_USPGRoomCurrent_DisConn; /////////////////////////////////////////////////////////////////////////////////////////////// // // °èÁ¤ ºí·Ï °ü·Ã // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _RE_CMS_CheckUserBlock { unsigned char m_cFlags; // 0 : ºí·° ¾ÈÇÔ, 1 : °èÁ¤ ºí·°, 2 : ij¸¯ÅÍ ºí·° char m_szCharName[20][USER_INFO::MAX_CHAR_NUM]; // ºí·°µÈ ij¸¯ÅÍ À̸§ } RE_CMS_CheckUserBlock, *LPRE_CMS_CheckUserBlock; /////////////////////////////////////////////////////////////////////////////////////////////// // // Äù½ºÆ® // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _QUEST { enum { MAX_QUEST_SIZE = 260 }; // + 4 = 264 unsigned long dwSize; char Data[MAX_QUEST_SIZE]; } QUEST, *LPQUEST; typedef struct _HISTORY { enum { MAX_HISTORY_SIZE = 400 }; // + 4 = 404 unsigned long dwSize; char Data[MAX_HISTORY_SIZE]; } HISTORY, *LPHISTORY; /////////////////////////////////////////////////////////////////////////////////////////////// // // ¼³Á¤ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _CONFIG { enum { MAX_CONFIG_SIZE = 46 }; // + 4 = 50 unsigned long dwSize; char Data[MAX_CONFIG_SIZE]; } CONFIG, *LPCONFIG; /////////////////////////////////////////////////////////////////////////////////////////////// // // Ư¼ö ¼Ò¼³¸ð¼Ç // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _SOCIALEX { enum { MAX_SOCIAL_SIZE = 20 }; // + 4 = 24 unsigned long dwSize; char Data[MAX_SOCIAL_SIZE]; } SOCIALEX, *LPSOCIALEX; /////////////////////////////////////////////////////////////////////////////////////////////// // // À̺¥Æ® ¾ÆÀÌÅÛ // ////////////////////////////////////////////////////////////////////////////////////////////// typedef struct _EVENTITEM { enum { MAX_ITEM_NAME = 32 }; unsigned long nItemIndex; char strItemName[MAX_ITEM_NAME]; unsigned long nItemAmount; TIME UpdateTime; } EVENTITEM, *LPEVENTITEM; // ¼­¹öÅëÇÕ - ij¸¯ÅÍ »ý¼ºÀ» ÆÄ¶ó¹ÌÅÍ·Î DB¿¡ È£Ãâ. struct CHAR_CREATE_DB { unsigned long dwUID; unsigned long dwSlotPos; char szName[CHAR_INFOST::MAX_NAME_LEN]; unsigned char cSex; unsigned char cHair; unsigned char cFace; unsigned char cRace; short sClass; unsigned long dwGold; short sSTR; short sDEX; short sCON; short sINT; short sWIS; float fPointX; float fPointY; float fPointZ; unsigned short Equip[15]; SKILL skill; unsigned char cServerGroupID; int dwCID_Out; }; // ¼­¹öÅëÇÕ - ÅëÇÕµÈ Ä³¸¯ÅÍ Á¤º¸¸¦ ¾ò¾î¿Â´Ù. struct UnifiedCharData { char szName[16]; char szBeforeCharName[20]; unsigned long dwNewCID; unsigned long dwBeforeCID; short sClass; unsigned char cLevel; unsigned char cOldServerGroupID; }; struct UnifiedStoreInfo { unsigned char cOldServerGroupID; // ±¸ ¼­¹ö±×·ì char Password[STORE_INFO::MAX_PASS_LEN]; // ÆÐ½º¿öµå unsigned long Flag; // Ç÷¡±× unsigned long Gold; // ±Ý¾× }; struct KeyInfo { enum Const { MAX_KEY_INFO = 34 }; unsigned char m_cUsed; unsigned long m_dwKeyInfo[MAX_KEY_INFO]; }; /////////////////////////////////////////////////////////////////////////////////////////////// // // ½ºÆç // ////////////////////////////////////////////////////////////////////////////////////////////// struct SPELLINSTANCE { unsigned long dwDurationSec; unsigned short wSpellID; unsigned short wEnchantLevel; unsigned char cSpellType; SPELLINSTANCE() : dwDurationSec(0), wSpellID(0), wEnchantLevel(0), cSpellType(0) { } SPELLINSTANCE(unsigned long dwDurationSec, unsigned short wSpellID, unsigned short wEnchantLevel, unsigned char cSpellType) : dwDurationSec(dwDurationSec), wSpellID(wSpellID), wEnchantLevel(wEnchantLevel), cSpellType(cSpellType) { } }; typedef SPELLINSTANCE* LPSPELLINSTANCE; struct SPELL { enum { MAX_SPELL_NUM = 30 }; SPELLINSTANCE Spells[MAX_SPELL_NUM]; SPELL() { std::fill_n(&Spells[0], int(MAX_SPELL_NUM), SPELLINSTANCE()); } }; typedef SPELL* LPSPELL; #pragma pack() #endif