fix common header encoding

This commit is contained in:
2024-04-01 12:45:35 +02:00
parent 248205ae01
commit 4fc612552a
6 changed files with 225 additions and 225 deletions

View File

@ -6,7 +6,7 @@
typedef DWORD IDENT;
/**
* @version 05/06/10 Bang2ni - Myshop Pricelist <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ HEADER_XX_MYSHOP_PRICELIST_XXX <EFBFBD>߰<EFBFBD>
* @version 05/06/10 Bang2ni - Myshop Pricelist 관련 패킷 HEADER_XX_MYSHOP_PRICELIST_XXX 추가
*/
enum
{
@ -104,8 +104,8 @@ enum
HEADER_GD_BILLING_CHECK = 106,
HEADER_GD_MALL_LOAD = 107,
HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û
HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< 가격정보 갱신 요청
HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< 가격정보 리스트 요청
HEADER_GD_BLOCK_CHAT = 110,
@ -116,21 +116,21 @@ enum
// END_OF_PCBANG_IP_LIST_BY_AUTH
HEADER_GD_HAMMER_OF_TOR = 114,
HEADER_GD_RELOAD_ADMIN = 115, ///<<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
HEADER_GD_BREAK_MARRIAGE = 116, ///< <EFBFBD><EFBFBD>ȥ <20>ı<EFBFBD>
HEADER_GD_ELECT_MONARCH = 117, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
HEADER_GD_CANDIDACY = 118, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HEADER_GD_ADD_MONARCH_MONEY = 119, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
HEADER_GD_COME_TO_VOTE = 121, ///< ǥ<EFBFBD><EFBFBD>
HEADER_GD_RMCANDIDACY = 122, ///< <EFBFBD>ĺ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><EFBFBD><EEBFB5>)
HEADER_GD_SETMONARCH = 123, ///<<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD> (<28><EFBFBD><EEBFB5>)
HEADER_GD_RMMONARCH = 124, ///<<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>
HEADER_GD_RELOAD_ADMIN = 115, ///<운영자 정보 요청
HEADER_GD_BREAK_MARRIAGE = 116, ///< 결혼 파기
HEADER_GD_ELECT_MONARCH = 117, ///< 군주 투표
HEADER_GD_CANDIDACY = 118, ///< 군주 등록
HEADER_GD_ADD_MONARCH_MONEY = 119, ///< 군주 돈 증가
HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< 군주 돈 감소
HEADER_GD_COME_TO_VOTE = 121, ///< 표결
HEADER_GD_RMCANDIDACY = 122, ///< 후보 제거 (운영자)
HEADER_GD_SETMONARCH = 123, ///<군주설정 (운영자)
HEADER_GD_RMMONARCH = 124, ///<군주삭제
HEADER_GD_DEC_MONARCH_MONEY = 125,
HEADER_GD_CHANGE_MONARCH_LORD = 126,
HEADER_GD_BLOCK_COUNTRY_IP = 127, // <EFBFBD><EFBFBD><EFBFBD> IP-Block
HEADER_GD_BLOCK_EXCEPTION = 128, // <EFBFBD><EFBFBD><EFBFBD> IP-Block <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HEADER_GD_BLOCK_COUNTRY_IP = 127, // 광대역 IP-Block
HEADER_GD_BLOCK_EXCEPTION = 128, // 광대역 IP-Block 예외
HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129,
@ -139,7 +139,7 @@ enum
HEADER_GD_UPDATE_HORSE_NAME = 131,
HEADER_GD_REQ_HORSE_NAME = 132,
HEADER_GD_DC = 133, // Login Key<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HEADER_GD_DC = 133, // Login Key를 지움
HEADER_GD_VALID_LOGOUT = 134,
@ -257,23 +257,23 @@ enum
HEADER_DG_WEDDING_START = 155,
HEADER_DG_WEDDING_END = 156,
HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
HEADER_DG_RELOAD_ADMIN = 158, ///< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD>
HEADER_DG_BREAK_MARRIAGE = 159, ///< <EFBFBD><EFBFBD>ȥ <20>ı<EFBFBD>
HEADER_DG_ELECT_MONARCH = 160, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
HEADER_DG_CANDIDACY = 161, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HEADER_DG_ADD_MONARCH_MONEY = 162, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
HEADER_DG_COME_TO_VOTE = 164, ///< ǥ<EFBFBD><EFBFBD>
HEADER_DG_RMCANDIDACY = 165, ///< <EFBFBD>ĺ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><EFBFBD><EEBFB5>)
HEADER_DG_SETMONARCH = 166, ///<<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD> (<28><EFBFBD><EEBFB5>)
HEADER_DG_RMMONARCH = 167, ///<<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>
HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< 가격정보 리스트 응답
HEADER_DG_RELOAD_ADMIN = 158, ///< 운영자 정보 리로드
HEADER_DG_BREAK_MARRIAGE = 159, ///< 결혼 파기
HEADER_DG_ELECT_MONARCH = 160, ///< 군주 투표
HEADER_DG_CANDIDACY = 161, ///< 군주 등록
HEADER_DG_ADD_MONARCH_MONEY = 162, ///< 군주 돈 증가
HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< 군주 돈 감소
HEADER_DG_COME_TO_VOTE = 164, ///< 표결
HEADER_DG_RMCANDIDACY = 165, ///< 후보 제거 (운영자)
HEADER_DG_SETMONARCH = 166, ///<군주설정 (운영자)
HEADER_DG_RMMONARCH = 167, ///<군주삭제
HEADER_DG_DEC_MONARCH_MONEY = 168,
HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169,
HEADER_DG_UPDATE_MONARCH_INFO = 170,
HEADER_DG_BLOCK_COUNTRY_IP = 171, // <EFBFBD><EFBFBD><EFBFBD> IP-Block
HEADER_DG_BLOCK_EXCEPTION = 172, // <EFBFBD><EFBFBD><EFBFBD> IP-Block <EFBFBD><EFBFBD><EFBFBD><EFBFBD> account
HEADER_DG_BLOCK_COUNTRY_IP = 171, // 광대역 IP-Block
HEADER_DG_BLOCK_EXCEPTION = 172, // 광대역 IP-Block 예외 account
HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,
@ -364,7 +364,7 @@ typedef struct SPlayerItem
DWORD count;
DWORD vnum;
LONG alSockets[ITEM_SOCKET_MAX_NUM]; // <EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD>ȣ
LONG alSockets[ITEM_SOCKET_MAX_NUM]; // 소켓번호
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
@ -572,9 +572,9 @@ typedef struct SShopItemTable
DWORD vnum;
BYTE count;
TItemPos pos; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
DWORD price; // PC, shop_table_ex.txt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
BYTE display_pos; // PC, shop_table_ex.txt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ġ.
TItemPos pos; // PC 상점에만 이용
DWORD price; // PC, shop_table_ex.txt 상점에만 이용
BYTE display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치.
} TShopItemTable;
typedef struct SShopTable
@ -638,12 +638,12 @@ typedef struct SItemTable : public SEntityTable
BYTE bSpecular;
BYTE bGainSocketPct;
WORD sAddonType; // <EFBFBD><20>Ӽ<EFBFBD>
WORD sAddonType; // 기본 속성
// <EFBFBD>Ʒ<EFBFBD> limit flag<EFBFBD><EFBFBD><EFBFBD><EFBFBD> realtime<EFBFBD><EFBFBD> üũ <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VNUM<55><4D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ź<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD><DBB8><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD>쿡 LIMIT_MAX_NUM<55><4D><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鼭 üũ<C3BC>ϴ<EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> Ŀ<><C4BF> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>.
char cLimitRealTimeFirstUseIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> limit <EFBFBD>ʵ尪 <20>߿<EFBFBD><DFBF><EFBFBD> LIMIT_REAL_TIME_FIRST_USE <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -1)
char cLimitTimerBasedOnWearIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> limit <EFBFBD>ʵ尪 <20>߿<EFBFBD><DFBF><EFBFBD> LIMIT_TIMER_BASED_ON_WEAR <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -1)
// 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데,
// 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠.
char cLimitRealTimeFirstUseIndex; // 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1)
char cLimitTimerBasedOnWearIndex; // 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1)
} TItemTable;
@ -681,7 +681,7 @@ typedef struct SPlayerLoadPacket
{
DWORD account_id;
DWORD player_id;
BYTE account_index; /* account <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ */
BYTE account_index; /* account 에서의 위치 */
} TPlayerLoadPacket;
typedef struct SPlayerCreatePacket
@ -758,9 +758,9 @@ typedef struct SEmpireSelectPacket
typedef struct SPacketGDSetup
{
char szPublicIP[16]; // Public IP which listen to users
BYTE bChannel; // ä<EFBFBD><EFBFBD>
WORD wListenPort; // Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ʈ <20><>ȣ
WORD wP2PPort; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ű<EFBFBD><C5B0> P2P <20><>Ʈ <20><>ȣ
BYTE bChannel; // 채널
WORD wListenPort; // 클라이언트가 접속하는 포트 번호
WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호
LONG alMaps[MAP_ALLOW_MAX_LEN];
DWORD dwLoginCount;
BYTE bAuthServer;
@ -938,8 +938,8 @@ typedef struct SPacketGuildWar
LONG lInitialScore;
} TPacketGuildWar;
// Game -> DB : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD>
// DB -> Game : <EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Game -> DB : 상대적 변화값
// DB -> Game : 토탈된 최종값
typedef struct SPacketGuildWarScore
{
DWORD dwGuildGainPoint;
@ -960,8 +960,8 @@ typedef struct SRefineTable
//DWORD result_vnum;
DWORD id;
BYTE material_count;
DWORD cost; // <EFBFBD>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD>
DWORD prob; // Ȯ<EFBFBD><EFBFBD>
DWORD cost; // 소요 비용
DWORD prob; // 확률
TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable;
@ -1046,14 +1046,14 @@ typedef struct SPacketGDLoginByKey
} TPacketGDLoginByKey;
/**
* @version 05/06/08 Bang2ni - <EFBFBD><EFBFBD><EFBFBD>ӽð<EFBFBD> <20>߰<EFBFBD>
* @version 05/06/08 Bang2ni - 지속시간 추가
*/
typedef struct SPacketGiveGuildPriv
{
BYTE type;
DWORD value;
DWORD guild_id;
time_t duration_sec; ///< <EFBFBD><EFBFBD><EFBFBD>ӽð<EFBFBD>
time_t duration_sec; ///< 지속시간
} TPacketGiveGuildPriv;
typedef struct SPacketGiveEmpirePriv
{
@ -1088,7 +1088,7 @@ typedef struct SPacketDGChangeCharacterPriv
} TPacketDGChangeCharacterPriv;
/**
* @version 05/06/08 Bang2ni - <EFBFBD><EFBFBD><EFBFBD>ӽð<EFBFBD> <20>߰<EFBFBD>
* @version 05/06/08 Bang2ni - 지속시간 추가
*/
typedef struct SPacketDGChangeGuildPriv
{
@ -1096,7 +1096,7 @@ typedef struct SPacketDGChangeGuildPriv
DWORD value;
DWORD guild_id;
BYTE bLog;
time_t end_time_sec; ///< <EFBFBD><EFBFBD><EFBFBD>ӽð<EFBFBD>
time_t end_time_sec; ///< 지속시간
} TPacketDGChangeGuildPriv;
typedef struct SPacketDGChangeEmpirePriv
@ -1277,27 +1277,27 @@ typedef struct
DWORD dwPID2;
} TPacketWeddingEnd;
/// <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6><EFBFBD><EFBFBD> <20><> <20>ڿ<EFBFBD> byCount <EFBFBD><EFBFBD>ŭ<EFBFBD><EFBFBD> TItemPriceInfo <EFBFBD><EFBFBD> <20>´<EFBFBD>.
/// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다.
typedef struct SPacketMyshopPricelistHeader
{
DWORD dwOwnerID; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> ID
BYTE byCount; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
BYTE byCount; ///< 가격정보 갯수
} TPacketMyshopPricelistHeader;
/// <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// 개인상점의 단일 아이템에 대한 가격정보
typedef struct SItemPriceInfo
{
DWORD dwVnum; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vnum
DWORD dwPrice; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwVnum; ///< 아이템 vnum
DWORD dwPrice; ///< 가격
} TItemPriceInfo;
/// <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>̺<EFBFBD>
/// 개인상점 아이템 가격정보 리스트 테이블
typedef struct SItemPriceListTable
{
DWORD dwOwnerID; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> ID
BYTE byCount; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>
DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
BYTE byCount; ///< 가격정보 리스트의 갯수
TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< 가격정보 리스트
} TItemPriceListTable;
typedef struct
@ -1318,12 +1318,12 @@ typedef struct SPacketPCBangIP
//ADMIN_MANAGER
typedef struct TAdminInfo
{
DWORD m_ID; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
char m_szAccount[32]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char m_szName[32]; //ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD>
char m_szContactIP[16]; //<EFBFBD><EFBFBD><EFBFBD>پ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char m_szServerIP[16]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_Authority; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_ID; //고유ID
char m_szAccount[32]; //계정
char m_szName[32]; //캐릭터이름
char m_szContactIP[16]; //접근아이피
char m_szServerIP[16]; //서버아이피
DWORD m_Authority; //권한
} tAdminInfo;
//END_ADMIN_MANAGER
@ -1344,20 +1344,20 @@ typedef struct SPacketReloadAdmin
typedef struct TMonarchInfo
{
DWORD pid[4]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PID
int64_t money[4]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
char name[4][32]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
char date[4][32]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>¥
DWORD pid[4]; // 군주의 PID
int64_t money[4]; // 군주의 별개 돈
char name[4][32]; // 군주의 이름
char date[4][32]; // 군주 등록 날짜
} MonarchInfo;
typedef struct TMonarchElectionInfo
{
DWORD pid; // <EFBFBD><EFBFBD>ǥ <20>ѻ<EFBFBD><D1BB><EFBFBD> PID
DWORD selectedpid; // <EFBFBD><EFBFBD>ǥ <20><><EFBFBD><EFBFBD> PID ( <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
char date[32]; // <EFBFBD><EFBFBD>ǥ <20><>¥
DWORD pid; // 투표 한사람 PID
DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 )
char date[32]; // 투표 날짜
} MonarchElectionInfo;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2B8B6>
// 군주 출마자
typedef struct tMonarchCandidacy
{
DWORD pid;
@ -1429,14 +1429,14 @@ typedef struct tNeedLoginLogInfo
DWORD dwPlayerID;
} TPacketNeedLoginLogInfo;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>˸<EFBFBD> <20><><EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE> <20><>Ŷ <20><><EFBFBD><EFBFBD>
//독일 선물 알림 기능 테스트용 패킷 정보
typedef struct tItemAwardInformer
{
char login[LOGIN_MAX_LEN + 1];
char command[20]; //<EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD>
DWORD vnum; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char command[20]; //명령어
DWORD vnum; //아이템
} TPacketItemAwardInfromer;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>
// 선물 알림 기능 삭제용 패킷 정보
typedef struct tDeleteAwardID
{
DWORD dwID;