#ifndef _GUILD_PACKET_H_ #define _GUILD_PACKET_H_ #include #include #include #include #include #pragma pack(1) using namespace Guild; // ±æµå »ý¼º struct PktCreateGuild : public PktBase { enum PktCreateGuildErr { FAIL_ALREADY_NAME = 2, // ÀÌ¹Ì Á¸ÀçÇÏ´Â À̸§ FAIL_DISSOLVE_GUILD = 3, // ±æµå ÇØÃ¼ FAIL_INVALID_NAME = 4 // ºÎÀûÀýÇÑ À̸§ }; enum DissolveReason { NONE_LOGIN = 1, // ¿À·§µ¿¾È ¾Æ¹«µµ ·Î±×ÀÎÇÏÁö ¾ÊÀ½ MIN_MEMBER_TIMEOUT = 2, // ±æµå¿øÀÌ ÃÖ¼Ò Àοø ¹Ì¸¸ÀΠä ÀÏÁ¤ ½Ã°£ °æ°ú NONE_NEXT_GUILDMASTER_BY_NONE_LOGIN = 3, // ÀÏÁ¤±â°£ ±æµå¸¶½ºÅͰ¡ ·Î±×ÀÎÇÏÁö ¾Ê¾Æ, ±ÇÇÑ À̾çÇÏ·Á ÇÒ ½Ã¿¡ ±æ¸¶°¡ ¾øÀ» °æ¿ì NONE_NEXT_GUILDMASTER_BY_GUILDMASTER_OUT = 4, // ±æµå¸¶½ºÅÍ Å»Åð½Ã¿¡ ±ÇÇÑ À̾çÇÏ·Á ÇÒ ½Ã¿¡ ±æ¸¶°¡ ¾øÀ» °æ¿ì NONE_NEXT_GUILDMASTER_BY_GUILDMASTER_DELETED = 5 // ±æµå¸¶½ºÅÍ »èÁ¦½Ã¿¡ ±ÇÇÑ À̾çÇÏ·Á ÇÒ ½Ã¿¡ ±æ¸¶°¡ ¾øÀ» °æ¿ì }; unsigned long m_dwCID; unsigned long m_dwGID; unsigned char m_cInclination; char m_szGuildName[MAX_GUILD_NAME_LEN]; }; // ±æµå ¸®½ºÆ® (°¡º¯ ±æÀÌ) + ±æµå Á¤º¸ struct PktGuildList : public PktBase { enum { MAX_NUM_PER_PAGE = 10 }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cSortCmd; // ¸í·É unsigned char m_cPage; // ÆäÀÌÁö unsigned char m_cSmallNodeNum; // ³ëµå ¼ö (C -> S : üũ¼¶ ³ëµå, S -> C : °£·« ³ëµå) unsigned char m_cLargeNodeNum; // ³ëµå ¼ö (Àüü Á¤º¸ ³ëµå) }; // ±æµå Á¤º¸ (üũ¼¶) struct GuildCheckSumNode { unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð unsigned long m_dwCheckSum; // üũ¼¶ }; // ±æµå Á¤º¸ (Á¾Á¾ º¯ÇÏÁö¸¸ °£È¤ ¿äûµÇ´Â ÀÚÀßÇÑ °Íµé) struct GuildSmallInfoNode { // TODO : ±¹°¡, ·¹º§, ±æµå À̸§Àº GuildLargeInfoNode·Î »©¸é µÉ µí ÇÕ´Ï´Ù. // (±¹°¡¿Í ±æµå À̸§Àº º¯°æµÇÁö ¾Ê½À´Ï´Ù. ·¹º§Àº ¸¶Å©³ª °ü°èó·³ º¯°æ½Ã¸¶´Ù ºê·Îµåij½ºÆÃÇÏ¸é µË´Ï´Ù.) // ´õºÒ¾î ±æµå »ý¼º½Ã »ý¼ºµÇ´Â ±æµåÀÇ GuildLargeInfoNode¸¦ ºê·Îµåij½ºÆÃÇØ¾ß ÇÕ´Ï´Ù. // (ÀÌ ¶§ ÁÖÀÇÇÒ Á¡Àº ±æµå »ý¼º ÆÐŶ Àü¼Û ´ç½Ã¿£ ¸¶½ºÅͰ¡ °¡ÀÔÇÏÁö ¾ÊÀº »óÅÂÀ̹ǷΠ¸¶½ºÅÍ À̸§À» º°µµ·Î ³Ö¾îÁà¾ß ÇÕ´Ï´Ù.) unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð unsigned char m_cIndex; // ¸®½ºÆ®»óÀÇ À妽º unsigned char m_cInclination; // ±æµå ¼ºÇâ unsigned short m_wRank; // ¼øÀ§ unsigned long m_dwFame; // ¸í¼º unsigned char m_cLevel; // ·¹º§ unsigned char m_cCurrentMemberNum; // Àοø¼ö char m_szName[MAX_GUILD_NAME_LEN]; // ±æµå À̸§ char m_szMasterName[MAX_MEMBER_NAME_LEN]; // ¸¶½ºÅÍ À̸§ GuildSmallInfoNode() : m_dwGID(0), m_cIndex(0), m_cInclination(0), m_wRank(0), m_dwFame(0), m_cLevel(0), m_cCurrentMemberNum(0) { std::fill_n(m_szName, int(MAX_GUILD_NAME_LEN), 0); std::fill_n(m_szMasterName, int(MAX_MEMBER_NAME_LEN), 0); } GuildSmallInfoNode(unsigned long dwGID, unsigned char cIndex, unsigned char cInclination, unsigned short wRank, unsigned long dwFame, unsigned char cLevel, unsigned char cCurrentMemberNum, const char* szGuildName, const char* szMasterName) : m_dwGID(dwGID), m_cIndex(cIndex), m_cInclination(cInclination), m_wRank(wRank), m_dwFame(dwFame), m_cLevel(cLevel), m_cCurrentMemberNum(cCurrentMemberNum) { if (NULL != szGuildName) { strncpy(m_szName, szGuildName, MAX_GUILD_NAME_LEN); } if (NULL != szMasterName) { strncpy(m_szMasterName, szMasterName, MAX_MEMBER_NAME_LEN); } } }; // ±æµå Á¤º¸ (¸ðµÎ) struct GuildLargeInfoNode : public GuildSmallInfoNode { char m_szMark[MAX_MARK_SIZE]; // ¸¶Å© unsigned char m_cRelationByMine; // Ŭ¶óÀ̾ðÆ®(À¯Àú)°¡ ÀÌ ±æµå¿¡ ¸ÎÀº ±æµå °ü°è unsigned char m_cRelationByTarget; // ÀÌ ±æµå°¡ Ŭ¶óÀ̾ðÆ®(À¯Àú)¿¡°Ô ¸ÎÀº ±æµå °ü°è GuildLargeInfoNode() : GuildSmallInfoNode(), m_cRelationByMine(0), m_cRelationByTarget(0) { std::fill_n(m_szMark, int(MAX_MARK_SIZE), 0); } GuildLargeInfoNode(unsigned long dwGID, unsigned char cIndex, unsigned char cInclination, unsigned short wRank, unsigned long dwFame, unsigned char cLevel, unsigned char cCurrentMemberNum, const char* szMasterName, const char* szGuildName, const char* szMark, unsigned char cRelationByMine, unsigned char cRelationByTarget) : GuildSmallInfoNode(dwGID, cIndex, cInclination, wRank, dwFame, cLevel, cCurrentMemberNum, szGuildName, szMasterName), m_cRelationByMine(cRelationByMine), m_cRelationByTarget(cRelationByTarget) { if (NULL != szMark) { memcpy(m_szMark, szMark, MAX_MARK_SIZE); } } }; // ±æµå ¸â¹ö °ü·Ã ¸í·É struct PktGuildCmd : public PktBase { enum GuildCmd { GC_INVITE = 0, // ÃÊ´ë GC_JOIN = 1, // °¡ÀÔ (ÃÊ´ë¿¡ ÀÇÇÑ) GC_REFUSE = 2, // °ÅÀý (ÃÊ´ë¿¡ ´ëÇÑ) GC_ASK_ENTER = 3, // °¡ÀÔ ½Åû GC_ASK_LEAVE = 4, // Å»Åð ½Åû GC_KICK = 5, // °­Á¦ Å»Åð GC_SETUP_TITLE = 6, // Á÷À§ º¯°æ GC_LOGINOUT = 7, // ·Î±×ÀÎ/¾Æ¿ô GC_RANK_UP = 8, // ¼­¿­ À§·Î GC_RANK_DOWN = 9, // ¼­¿­ ¾Æ·¡·Î GC_TACTICS = 10, // ¿ëº´ °¡ÀÔ ½Åû. GC_TACTICS_JOIN = 11, // ¿ëº´ °¡ÀÔ ÃÊ´ë. GC_TACTICS_TITLE = 12, // ¿ëº´ Çã°¡. GC_TACTICS_KICK = 13, // ¿ëº´ »èÁ¦. GC_TACTICS_LEAVE = 14, // ¿ëº´ Å»Åð. GC_TACTICS_REQUEST = 15, // ±æµå ÀüÀï Áß ¿ëº´ Çã°¡ ½Ã ij¸¯ÅÍ È®ÀÎ ¿äû. }; enum PktGuildCmdErr { FAIL_NOT_MEMBER = 2, // ±æµå¿øÀÌ ¾Æ´Ô FAIL_NOT_RIGHT = 3, // ±ÇÇÑÀÌ ¾øÀ½ FAIL_ALREADY_MEMBER = 4, // ÀÌ¹Ì ±æµå¿øÀÓ FAIL_OVER_MEMBER = 5, // ±æµå Á¤¿ø Ãʰú FAIL_NATION = 6, // ´Ù¸¥ ±¹°¡ÀÇ ±æµå FAIL_DIFFERENCE_TITLE = 7, // ´Ù¸¥ Á÷À§·ÎÀÇ ¼­¿­ º¯°æ FAIL_OVER_MEMBER_NUM = 8, // ±æµå¿ø ¼ö ¹üÀ§¸¦ ÃʰúÇÏ´Â ¼­¿­ º¯°æ FAIL_GUILDWAR_TIME_KICK = 9, // ±æµåÀüÀï ½Ã°£¿¡ Å»Å𸦠½ÃµµÇÏ´Â °æ¿ì FAIL_TACTICS_LIMITLEVEL = 10, // ¿ëº´ ½Åû ·¹º§ÀÌ ¾ÈµÇ´Â ij¸¯ÅÍ. FAIL_TACTICS_NATION = 11, // ±¹ÀûÀÌ ´Ù¸¥ ij¸¯ÅÍ. FAIL_TACTICS_GUILDJOIN = 12, // ±æµå³ª ¿ëº´¿¡ °¡ÀԵǾîÀְųª ½ÅûÁßÀΠij¸¯ÅÍ. FAIL_TACTICS_OVER_MEMBER = 13, // ±æµå Á¤¿ø Ãʰú. FAIL_TACTICS_LOGOUT = 14 // ¿ëº´ Çã°¡ ½Ã ·Î±×¾Æ¿ô »óÅÂÀ϶§. }; unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð unsigned long m_dwSenderID; // ij¸¯ÅÍ ¾ÆÀ̵ð (ÁÖü) unsigned long m_dwReferenceID; // ÂüÁ¶ ¾ÆÀ̵ð (´ë»ó ij¸¯ÅÍ/¼­¹ö ¾ÆÀ̵ð/±ÇÇÑ ºñÆ®) char m_szGuildName[MAX_GUILD_NAME_LEN]; // ±æµå À̸§ char m_szSenderName[MAX_MEMBER_NAME_LEN]; // ij¸¯ÅÍ À̸§ (ÁÖü) unsigned short m_wCmd; // ¸í·É }; // ¸â¹ö ¸®½ºÆ® (°¡º¯ ±æÀÌ) + ¸â¹ö Á¤º¸ struct PktGuildMemberList : public PktBase { enum { MAX_NUM_PER_PAGE = 10 }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cMemberType; // ¸â¹ö¸®½ºÆ®, ¿ëº´¸®½ºÆ® unsigned char m_cSortCmd; // ¸í·É (Guild::MemberSort) unsigned char m_cPage; // ÆäÀÌÁö unsigned char m_cTotalMemberNum; // ÃÑ ¸â¹ö ¼ö unsigned char m_cNodeNum; // ³ëµå ¼ö (¸â¹ö ³ëµå) }; // ¸â¹ö Á¤º¸ struct GuildMemberInfoNode { unsigned long m_dwCID; char m_szName[MAX_MEMBER_NAME_LEN]; unsigned char m_cTactics; unsigned long m_dwFame; unsigned long m_dwGold; unsigned long m_dwServerID; unsigned char m_cRank; unsigned char m_cTitle; unsigned char m_cLevel; unsigned char m_cClass; unsigned char m_cGuildWarFlag; }; // ¸â¹ö Á¤º¸ ¾÷µ¥ÀÌÆ® (Game <-> DBAgent) struct PktGuildMemberInfoUpdate : public PktBase { unsigned long m_dwGID; unsigned long m_dwCID; MemberListInfo m_MemberListInfo; MemberDetailInfo m_MemberDetailInfo; }; // ¸â¹ö ¸í¼º ¾÷µ¥ÀÌÆ® struct PktGuildMemberFameUpdate : public PktBase { unsigned long m_dwOurGID; unsigned long m_dwEnemyGID; unsigned long m_dwCID; unsigned char m_cType; int m_nAddFame; }; // ¸â¹ö µ· ¾÷µ¥ÀÌÆ® struct PktGuildMemberGoldUpdate : public PktBase { unsigned long m_dwGID; unsigned long m_dwCID; unsigned long m_dwGold; }; // ±æµå ¸¶Å© struct PktGuildMark : public PktBase { enum eError { FAIL_INVALID_GUILD = 2, // Á¸ÀçÇÏÁö¾Ê´Â ±æµå FAIL_INVALID_MARK = 3, // º¯°æÇÒ ¸¶Å©°¡ ¾øÀ½ FAIL_INVALID_CHARACTER = 4, // Á¸ÀçÇÏÁö¾Ê´Â ij¸¯ÅÍ FAIL_NOT_MASTER = 5, // ¸¶½ºÅͰ¡ ¾Æ´Ô FAIL_NOT_ENOUGH_GOLD = 6, // ±Ý¾× ºÎÁ· }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð char m_szMark[MAX_MARK_SIZE]; // ¸¶Å© unsigned long m_dwGold; // ±Ý°í ÀÜ¾× }; // ±æµå ·¹º§ struct PktGuildLevel : public PktBase { unsigned long m_dwUID; // ¾ÆÀ̵ð (C -> S : ij¸¯ÅÍ ¾ÆÀ̵ð, S -> C : ±æµå ¾ÆÀ̵ð) unsigned char m_cLevel; // ·¹º§ unsigned long m_dwGold; // ±Ý°í ÀÜ¾× }; // ±æµå °ü°è struct PktGuildRelation : public PktBase { enum eSubCmd { GR_HOSTILITY = 0, // Àû´ë ¼±¾ð GR_PEACE = 1, // ÆòÈ­ ¼±¾ð GR_ALERT = 2, // °æ°è Àû´ë ¼±¾ð GR_COUNTER = 3, // Ä«¿îÅÍ Àû´ë ¼±¾ð GR_REQUEST = 4, // ÀÌ¹Ì Àû´ëÀÎ ±æµå¿Í ÆòÈ­ ¼±¾ðÈÄ ´ë»ó ±æµå¿Í Àû´ë ¼±¾ð // Ä«¿îÅÍ Àû´ë ¼±¾ðÀ» ÇÒÁö ¹°¾îº¸´Â ´ëȭâ GR_HOSTILITYDEL = 5 // A->B·Î Àû´ë¼±¾ðÀ» ÇÑÈÄ A->B¿¡°Ô ÆòÈ­¼±¾ðÀ» ÇØµµ BÀÇ Target¿¡ Á¸ÀçÇÏ´Â // Àû´ë¼±¾ð ¸®½ºÆ®´Â »ç¶óÁöÁö ¾Ê´Â´Ù. B°¡ Á÷Á¢ 5¹ø Ä¿¸Çµå·Î Ãë¼ÒÇØÁà¾ß¸¸ // Ãë¼Ò°¡ µÈ´Ù. }; enum eError { FAIL_NOT_MEMBER = 2, // ÇØ´ç ±æµåÀÇ ¸â¹ö°¡ ¾Æ´Ô FAIL_NOT_HOSTILITY_TIME = 3, // Àû´ë ¼±¾ðÀ» ÇÒ¼ö ¾ø´Â ½Ã°£ FAIL_NOT_ALERT_TIME = 4, // °æ°è Àû´ë ¼±¾ðÀ» ÇÒ¼ö ¾ø´Â ½Ã°£ FAIL_NOT_COUNTER_TIME = 5, // Ä«¿îÅÍ Àû´ë ¼±¾ðÀ» ÇÒ¼ö ¾ø´Â ½Ã°£ FAIL_NOT_MASTER = 6, // ±æµåÀÇ ¸¶½ºÅͰ¡ ¾Æ´Ô FAIL_NOT_EXIST_GUILD = 7, // ±æµå ID°¡ 0 À̰ųª ±æµå°¡ Á¸ÀçÇÏÁö ¾ÊÀ½ FAIL_SELF_GUILD = 8, // ÀÚ½ÅÀÇ ±æµå¿¡°Ô Àû´ë/ÆòÈ­/°æ°è/Ä«¿îÅÍ ¼±¾ð FAIL_ALREADY_HOSTILITY = 9, // ´ë»ó ±æµå¿Í ÀÌ¹Ì Àû´ë °ü°èÀÔ´Ï´Ù. FAIL_ALREADY_COUNTER_HOSTILITY = 10, // ´ë»ó ±æµå¿Í ÀÌ¹Ì Ä«¿îÅÍ Àû´ë °ü°èÀÔ´Ï´Ù. FAIL_ALREADY_ALERT_HOSTILITY = 11, // µ¥»ó ±æµå¿Í ÀÌ¹Ì °æ°è Àû´ë °ü°èÀÔ´Ï´Ù. FAIL_ALREADY_NEUTRALITY = 12, // ´ë»ó ±æµå¿Í ÀÌ¹Ì Á߸³ °ü°èÀÔ´Ï´Ù. FAIL_MAX_ALERT_NUM = 13, // °æ°è Àû´ë ¼±¾ð±Ç Ãʰú FAIL_NOT_HAVE_DEVELOPING_CAMP = 14, // ±¸ÃàÁßÀÎ ±æµå ¿ä»õ°¡ ¾øÀ½ FAIL_NOT_HAVE_ALERT = 15, // °æ°è Àû´ë ½ÅûÀ» ¹ÞÁö ¾Ê°í Ä«¿îÅÍ Àû´ë ½ÅûÀ» ÇÏ·ÁÇÔ FAIL_TARGET_HOSTILITY_FULL = 16, // Àû´ë ¼±¾ð ¹ÞÀ» ¼ö ÀÖ´Â ÇѰèÄ¡ Ãʰú FAIL_REQUEST_WINDOW = 100, // Àû´ë ¼±¾ð¼ö Ãʰú·Î ÀÎÇØ ÆòÈ­ ¼±¾ðÈÄ Àû´ë ¼±¾ðÀ» Çϵµ·Ï ÀÎÁõ FAIL_REQUEST_COUNTER = 101, // Ä«¿îÅÍ Àû´ë ¼±¾ðÀ» Çϵµ·Ï ÀÎÁõ }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGID; // ÀÚ½ÅÀÇ GID unsigned long m_dwTargetGID; // »ó´ë ±æµå ¾ÆÀ̵ð unsigned long m_dwValue; // Àû´ë ¼±¾ðÁßÀÎ GID ( GR_REQUEST À϶§¸¸... ) char m_cSubCmd; // ±æµå °ü°è º¯°æ Ä¿¸Çµå char m_szGuildName[MAX_GUILD_NAME_LEN]; // ´ë»ó ±æµå¸í / ¼±Æ÷ ±æµå¸í char m_szTempGuildName[MAX_GUILD_NAME_LEN]; // ÀÌ¹Ì Àû´ë ¼±¾ðÁßÀÎ ±æµå À̸§ }; // ±æµå ¼ºÇâ struct PktGuildInclination : public PktBase { enum PktGIErr { FAIL_SO_FAST = 2, // ÀÏÁ¤ ½Ã°£µ¿¾ÈÀ» º¯°æÇÒ ¼ö ¾ø´Ù. FAIL_WRONG_NATION_KARTERANT = 3, // Ä«¸£Å×¶õÆ® ±æµå¿¡´Â Àΰ£¸¸ ¼ÓÇÒ ¼ö ÀÖ´Ù. FAIL_WRONG_NATION_MERKADIA = 4 // ¸Þ¸£Ä«µð¾Æ ±æµå¿¡´Â ¾ÆÄ­¸¸ ¼ÓÇÒ ¼ö ÀÖ´Ù. }; unsigned long m_dwUID; // ¾ÆÀ̵ð (C -> S : ij¸¯ÅÍ ¾ÆÀ̵ð, S -> C : ±æµå ¾ÆÀ̵ð) unsigned char m_cInclination; // ¼ºÇâ (Guild::Inclination Âü°í) }; // ±æµå ±ÇÇÑ Á¤º¸ struct GuildRight { enum Index { PUT_STOREHOUSE = 0, GET_STOREHOUSE = 1, USE_SAFE = 2, INVITE_MEMBER = 3, PERMIT_JOIN = 4, CHANGE_PASSWORD = 5, REGULATE_TEX = 6, KICK_MEMBER = 7, BOARD_ADMIN = 8, SETUP_MARK_N_LEVEL = 9, SETUP_MIDDLE = 10, DIVIDE_GOLD = 11, SETUP_POLICY = 12, MAX_USING_RIGHT = 13 }; unsigned char m_aryRight[MAX_RIGHT_SIZE]; GuildRight() { Init(false); } GuildRight(bool bMaxRight) { Init(bMaxRight); } void Init(bool bMaxRight) { std::fill_n(m_aryRight, int(MAX_RIGHT_SIZE), Guild::NONE); m_aryRight[CHANGE_PASSWORD] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[PUT_STOREHOUSE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[GET_STOREHOUSE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[USE_SAFE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[INVITE_MEMBER] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[PERMIT_JOIN] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER; m_aryRight[REGULATE_TEX] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER; m_aryRight[KICK_MEMBER] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER; m_aryRight[BOARD_ADMIN] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER; m_aryRight[SETUP_MARK_N_LEVEL] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER; m_aryRight[SETUP_MIDDLE] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER; m_aryRight[DIVIDE_GOLD] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER; m_aryRight[SETUP_POLICY] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER; } int IsValid(void) { GuildRight MaxRight(true); int nIndex = 0; for (; nIndex < MAX_RIGHT_SIZE; ++nIndex) { if (m_aryRight[nIndex] > MaxRight.m_aryRight[nIndex]) { return nIndex; } } return nIndex; } }; // ±æµå ±ÇÇÑ struct PktGuildRight : public PktBase { unsigned long m_dwUID; // ¾ÆÀ̵ð (C -> S : ij¸¯ÅÍ ¾ÆÀ̵ð, S -> C : ±æµå ¾ÆÀ̵ð) GuildRight m_GuildRight; // ±æµå ±ÇÇÑ }; // Àڱ⠱æµå Á¤º¸ struct PktMyGuildInfo : public PktBase { unsigned long m_dwGold; // ±æµå ±Ý°í GuildRight m_GuildRight; // ±æµå ±ÇÇÑ unsigned char m_cTitle; // Á÷À§ }; // Àû´ë ÇöȲ ¸®½ºÆ® (°¡º¯ ±æÀÌ) + Àû´ë ÇöȲ Á¤º¸ struct PktGuildHostilityList : public PktBase { enum { MAX_NUM_PER_PAGE = 5 }; enum PageState { PAGE_CURRENT = 0, PAGE_PREV = 1, PAGE_NEXT = 2 }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned char m_cCurrentPage; // ÇöÀç ÆäÀÌÁö unsigned char m_cPageState; // ¿äûÇÑ ÆäÀÌÁöÀÇ »óÅ unsigned char m_cNodeNum; // °¡º¯ ³ëµå¼ö unsigned short m_wTotalItemNum; // Àû´ë ÇöȲÀÇ ÃÑ ¸®½ºÆ® ¼ö char m_szHostility[MAX_GUILD_NAME_LEN]; // Àû´ë ¼±¾ð ÁßÀÎ ±æµå¸í char m_szAlert[MAX_GUILD_NAME_LEN]; // °æ°è Àû´ë ¼±¾ðÁßÀÎ ±æµå¸í }; // ±æµå Àû´ë ÇöȲ Á¤º¸ struct GuildHostilityInfoNode { char m_szName[MAX_GUILD_NAME_LEN]; // Àû´ë °ü°è ±æµå À̸§ unsigned char m_cRelationType; // Àû´ë °ü°è ŸÀÔ (Guild::Relation) }; // ÀÚ½ÅÀÇ ±æµåÀÇ °ü°è ¸®½ºÆ® ¿äû ÆÐŶ (°¡º¯ ±æÀÌ) + °ü°è Á¤º¸ struct PktGuildRelationInfo : public PktBase { unsigned long m_dwCID; // ¿äû ij¸¯ÅÍ unsigned long m_dwGID; // ÀÚ½ÅÀÇ ±æµå ID unsigned short m_wNodeNum; // °¡º¯ ³ëµå¼ö }; // ±æµå °ü°è Á¤º¸ struct GuildRelationInfoNode { // GuildLargeInfo ÀÇ ³»¿ë°ú µ¿ÀÏ unsigned long m_dwGID; unsigned char m_cRelationByMine; unsigned char m_cRelationByTarget; }; // ±æµå ±Ý°í struct PktGuildSafe : public PktBase { enum PktGuildSafeErr { FAIL_NOT_ENOUGH_MONEY = 2, // ±Ý°í¿¡ µ·ÀÌ ÃæºÐÄ¡ ¾ÊÀ½ FAIL_NOT_CHAR_MONEY = 3, // ij¸¯ÅÍ¿¡ µ·ÀÌ ÃæºÐÄ¡ ¾ÊÀ½ FAIL_NOT_GUILD_DEPOSIT = 4, // ±Ý°í ÀÔ±ÝÇϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. FAIL_NOT_GUILD_UPDATE = 5, // ±Ý°í Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® Çϴµ¥ ½ÇÆÐÇß½À´Ï´Ù. FAIL_REQUEST_DATA = 6, // Á¤º¸¸¦ ¿äûÁßÀÔ´Ï´Ù. }; enum SafeCmd { SC_WITHDRAWAL = 0, // Ãâ±Ý SC_DEPOSIT = 1, // ÀÔ±Ý SC_RELEASE = 2, // ±æµå¿ø¿¡°Ô ¹æÃâ SC_REFER = 3, // »ç¿ë ³»¿ª Á¶È¸ SC_CAMPSHOP = 4, // ±æµå ¿ä»õ »óÁ¡ÀÇ ¼öÀÍ±Ý SC_BONUS = 5, // º¸³Ê½º ÀÔ±Ý }; unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGold; // ÀÔ±Ý/Ãâ±Ý/¹æÃâÇÏ´Â ±Ý¾× unsigned char m_cCmd; // ¸í·É }; // ±æµå ±Ý°í Ack struct PktGuildSafeAck : public PktBase { unsigned long m_dwCID; // ij¸¯ÅÍ ¾ÆÀ̵ð unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð unsigned long m_dwSafeGold; // ±Ý°í ÀÜ¾× unsigned long m_dwCharGold; // ij¸¯ÅÍ ÀÜ¾× (C -> S : ÀÔ±Ý/Ãâ±Ý/¹æÃâÇÏ´Â ±Ý¾×) unsigned char m_cCmd; // ¸í·É char m_szCharName[Guild::MAX_MEMBER_NAME_LEN]; // ij¸¯ÅÍ À̸§ }; // ±æµå DB (°¡º¯ ±æÀÌ) + ±æµå Á¤º¸ struct PktGuildDB : public PktBase { bool m_bStartFlag; // ½ÃÀÛ ÆÐŶÀΰ¡? (PktGuildDB´Â ±æµå ¼ö¸¸Å­ º¸³»¹Ç·Î ù¹øÂ° ±æµå¸¦ ¹Þ¾ÒÀ» ¶§ ¸®½ºÆ®¸¦ ÃʱâÈ­ ÇØÁÖ¾î¾ß ÇÑ´Ù.) unsigned long m_dwGID; // ±æµå ¾ÆÀ̵ð unsigned char m_cTotalMemberNum; // ±æµå¿ø ¼ö unsigned char m_cRelationByMineNum; // ³»°¡ ¸ÎÀº ±æµå °ü°è¼ö unsigned char m_cRelationByTargetNum; // ´Ù¸¥ ±æµå°¡ ¸ÎÀº ±æµå °ü°è¼ö unsigned short m_wSize; // ±æµå Á¤º¸ Å©±â }; // ±æµå Á¤º¸ (DB) struct GuildInfoDB { unsigned long m_dwGID; char m_strName[MAX_GUILD_NAME_FOR_DB]; unsigned char m_cLevel; unsigned long m_dwFame; unsigned long m_dwGold; TIME m_tmLastLogout; TIME m_tmCheckMember; TIME m_tmGMLastLogout; char m_szMark[MAX_MARK_SIZE]; char m_szRight[MAX_RIGHT_SIZE]; unsigned char m_cInclination; TIME m_tmChangeInclination; }; // ±æµå ¸â¹ö (DB) struct GuildMemberDB { unsigned long m_dwGID; unsigned long m_dwCID; unsigned long m_dwRank; char m_strName[MAX_MEMBER_NAME_LEN]; unsigned long m_dwTitle; unsigned char m_cLevel; unsigned short m_wClass; unsigned long m_dwFame; unsigned long m_dwGold; unsigned char m_cGuildWarFlag; TIME m_LeaveGuildTime; unsigned char m_cTactics; }; // ±æµå °ü°è (DB) struct GuildRelationDB { unsigned long m_dwGID; unsigned long m_dwTargetGID; unsigned char m_cRelation; }; // ±æµå Æ÷Áö¼Ç ¼³Á¤ ÆÐŶ. struct PktGuildPosition : public PktBase { enum PktErr { FAIL_GUILD = 1, // ±æµå°¡ ¾øÀ»¶§. FAIL_CONNECT_CHAR = 2, // ij¸¯ÅͰ¡ Á¢¼Ó ÁßÀ϶§. FAIL_DB_UPDATE = 3, // DB ¾÷µ¥ÀÌÆ® ½ÇÆÐ. FAIL_MEMBER_DELETE = 4 // ±æµå ¸â¹ö »èÁ¦ ½ÇÆÐ. }; enum Const { TYPE_POSITION = 0, // Æ÷Áö¼Ç º¯°æ½Ã. TYPE_MEMBERDELETE = 1 // ±æµå ¸â¹ö »èÁ¦½Ã. }; unsigned long m_dwGID; unsigned long m_dwCID; unsigned char m_cPosition; unsigned char m_cType; }; // À§Ä¡°¡ ¾ø¾î¼­ Àӽ÷Î(Á¶À̽ºÆ½ Ű ¼³Á¤ °ü·Ã). struct PktKeyInfo : public PktBase { enum Const { MAX_KEY_INFO = 34 }; unsigned long m_dwCID; unsigned long m_dwKeyInfo[MAX_KEY_INFO]; }; #pragma pack() #endif