Guest User

Untitled

a guest
Feb 7th, 2018
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 47.40 KB | None | 0 0
  1. #ifndef __INC_PACKET_H__
  2. #define __INC_PACKET_H__
  3.  
  4. enum
  5. {
  6.     HEADER_CG_HANDSHAKE             = 0xff,
  7.     HEADER_CG_PONG              = 0xfe,
  8.     HEADER_CG_TIME_SYNC             = 0xfc,
  9.     HEADER_CG_KEY_AGREEMENT         = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  10.  
  11.     HEADER_CG_LOGIN             = 1,
  12.     HEADER_CG_ATTACK                = 2,
  13.     HEADER_CG_CHAT              = 3,
  14.     HEADER_CG_CHARACTER_CREATE          = 4,
  15.     HEADER_CG_CHARACTER_DELETE          = 5,
  16.     HEADER_CG_CHARACTER_SELECT          = 6,
  17.     HEADER_CG_MOVE              = 7,
  18.     HEADER_CG_SYNC_POSITION         = 8,
  19.     HEADER_CG_ENTERGAME             = 10,
  20.  
  21.     HEADER_CG_ITEM_USE              = 11,
  22.     HEADER_CG_ITEM_DROP             = 12,
  23.     HEADER_CG_ITEM_MOVE             = 13,
  24.     HEADER_CG_ITEM_PICKUP           = 15,
  25.  
  26.     HEADER_CG_QUICKSLOT_ADD         = 16,
  27.     HEADER_CG_QUICKSLOT_DEL         = 17,
  28.     HEADER_CG_QUICKSLOT_SWAP            = 18,
  29.     HEADER_CG_WHISPER               = 19,
  30.     HEADER_CG_ITEM_DROP2            = 20,
  31.  
  32.     HEADER_CG_ON_CLICK              = 26,
  33.     HEADER_CG_EXCHANGE              = 27,
  34.     HEADER_CG_CHARACTER_POSITION        = 28,
  35.     HEADER_CG_SCRIPT_ANSWER         = 29,
  36.     HEADER_CG_QUEST_INPUT_STRING        = 30,
  37.     HEADER_CG_QUEST_CONFIRM         = 31,
  38.  
  39.     HEADER_CG_SHOP              = 50,
  40.     HEADER_CG_FLY_TARGETING         = 51,
  41.     HEADER_CG_USE_SKILL             = 52,
  42.     HEADER_CG_ADD_FLY_TARGETING         = 53,
  43.     HEADER_CG_SHOOT             = 54,
  44.     HEADER_CG_MYSHOP                = 55,
  45.    
  46.     HEADER_CG_OFFLINE_SHOP          = 56,
  47.     HEADER_CG_MY_OFFLINE_SHOP       = 57,
  48.  
  49.     HEADER_CG_ITEM_USE_TO_ITEM          = 60,
  50.     HEADER_CG_TARGET                = 61,
  51.  
  52.     HEADER_CG_TEXT              = 64,   // @ 로 시작되면 텍스트를 파싱한다.
  53.     HEADER_CG_WARP              = 65,
  54.     HEADER_CG_SCRIPT_BUTTON         = 66,
  55.     HEADER_CG_MESSENGER             = 67,
  56.  
  57.     HEADER_CG_MALL_CHECKOUT         = 69,
  58.     HEADER_CG_SAFEBOX_CHECKIN           = 70,   // 아이템을 창고에 넣†š는다.
  59.     HEADER_CG_SAFEBOX_CHECKOUT          = 71,   // 아이템을 창고로 부터 빼온다.
  60.  
  61.     HEADER_CG_PARTY_INVITE          = 72,
  62.     HEADER_CG_PARTY_INVITE_ANSWER       = 73,
  63.     HEADER_CG_PARTY_REMOVE          = 74,
  64.     HEADER_CG_PARTY_SET_STATE                   = 75,
  65.     HEADER_CG_PARTY_USE_SKILL           = 76,
  66.     HEADER_CG_SAFEBOX_ITEM_MOVE         = 77,
  67.     HEADER_CG_PARTY_PARAMETER           = 78,
  68.  
  69.     HEADER_CG_GUILD             = 80,
  70.     HEADER_CG_ANSWER_MAKE_GUILD         = 81,
  71.  
  72.     HEADER_CG_FISHING               = 82,
  73.  
  74.     HEADER_CG_ITEM_GIVE             = 83,
  75.  
  76.     HEADER_CG_EMPIRE                = 90,
  77.  
  78.     HEADER_CG_REFINE                = 96,
  79.  
  80.     HEADER_CG_MARK_LOGIN            = 100,
  81.     HEADER_CG_MARK_CRCLIST          = 101,
  82.     HEADER_CG_MARK_UPLOAD           = 102,
  83.     HEADER_CG_MARK_IDXLIST          = 104,
  84.  
  85.     HEADER_CG_HACK                  = 105,
  86.     HEADER_CG_CHANGE_NAME           = 106,
  87.     HEADER_CG_LOGIN2                = 109,
  88.     HEADER_CG_DUNGEON               = 110,
  89.     HEADER_CG_LOGIN3                = 111,
  90.  
  91.     HEADER_CG_GUILD_SYMBOL_UPLOAD   = 112,
  92.     HEADER_CG_SYMBOL_CRC            = 113,
  93.  
  94.     // SCRIPT_SELECT_ITEM
  95.     HEADER_CG_SCRIPT_SELECT_ITEM    = 114,
  96.     // END_OF_SCRIPT_SELECT_ITEM
  97.    
  98.     HEADER_CG_LOGIN5_OPENID         = 116,  //OpenID : 클라이언트로부터 OpenID 인증키를 받는다.
  99.  
  100. //  HEADER_CG_ROULETTE              = 200,
  101. //  HEADER_CG_RUNUP_MATRIX_ANSWER   = 201,
  102.  
  103.     //
  104.     HEADER_CG_PASSPOD_ANSWER        = 202,
  105.  
  106.     //NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나.
  107.     //enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가..
  108.     //정말 packet generator까지는 바라지도 않는다. 이런 씨XX
  109.     //이러다가 숫자 겹치면 누가 책임지는데???
  110.     HEADER_CG_HS_ACK                = 203,
  111.     HEADER_CG_XTRAP_ACK             = 204,
  112.  
  113.     HEADER_CG_DRAGON_SOUL_REFINE            = 205,
  114.     HEADER_CG_STATE_CHECKER                 = 206,
  115.  
  116.     HEADER_CG_CLIENT_VERSION            = 0xfd,
  117.     HEADER_CG_CLIENT_VERSION2           = 0xf1,
  118.  
  119.     /********************************************************/
  120.     HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
  121.     HEADER_GC_KEY_AGREEMENT         = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
  122.     HEADER_GC_TIME_SYNC             = 0xfc,
  123.     HEADER_GC_PHASE                 = 0xfd,
  124.     HEADER_GC_BINDUDP               = 0xfe,
  125.     HEADER_GC_HANDSHAKE             = 0xff,
  126.  
  127.     HEADER_GC_CHARACTER_ADD         = 1,
  128.     HEADER_GC_CHARACTER_DEL         = 2,
  129.     HEADER_GC_MOVE                  = 3,
  130.     HEADER_GC_CHAT                  = 4,
  131.     HEADER_GC_SYNC_POSITION         = 5,
  132.  
  133.     HEADER_GC_LOGIN_SUCCESS         = 6,
  134.     HEADER_GC_LOGIN_SUCCESS_NEWSLOT = 32,
  135.     HEADER_GC_LOGIN_FAILURE         = 7,
  136.  
  137.     HEADER_GC_CHARACTER_CREATE_SUCCESS      = 8,
  138.     HEADER_GC_CHARACTER_CREATE_FAILURE      = 9,
  139.     HEADER_GC_CHARACTER_DELETE_SUCCESS      = 10,
  140.     HEADER_GC_CHARACTER_DELETE_WRONG_SOCIAL_ID  = 11,
  141.  
  142.     HEADER_GC_ATTACK                = 12,
  143.     HEADER_GC_STUN              = 13,
  144.     HEADER_GC_DEAD              = 14,
  145.  
  146.     HEADER_GC_MAIN_CHARACTER_OLD        = 15,
  147.     HEADER_GC_CHARACTER_POINTS          = 16,
  148.     HEADER_GC_CHARACTER_POINT_CHANGE        = 17,
  149.     HEADER_GC_CHANGE_SPEED          = 18,
  150.     HEADER_GC_CHARACTER_UPDATE          = 19,
  151.     HEADER_GC_CHARACTER_UPDATE_NEW      = 24,
  152.  
  153.     HEADER_GC_ITEM_DEL              = 20,
  154.     HEADER_GC_ITEM_SET              = 21,
  155.     HEADER_GC_ITEM_USE              = 22,
  156.     HEADER_GC_ITEM_DROP             = 23,
  157.     HEADER_GC_ITEM_UPDATE           = 25,
  158.  
  159.     HEADER_GC_ITEM_GROUND_ADD           = 26,
  160.     HEADER_GC_ITEM_GROUND_DEL           = 27,
  161.  
  162.     HEADER_GC_QUICKSLOT_ADD         = 28,
  163.     HEADER_GC_QUICKSLOT_DEL         = 29,
  164.     HEADER_GC_QUICKSLOT_SWAP            = 30,
  165.  
  166.     HEADER_GC_ITEM_OWNERSHIP            = 31,
  167.  
  168.     HEADER_GC_WHISPER               = 34,
  169.  
  170.     HEADER_GC_MOTION                = 36,
  171.     HEADER_GC_PARTS             = 37,
  172.  
  173.     HEADER_GC_SHOP              = 38,
  174.     HEADER_GC_SHOP_SIGN             = 39,
  175.  
  176.     HEADER_GC_DUEL_START                = 40,
  177.     HEADER_GC_PVP                               = 41,
  178.     HEADER_GC_EXCHANGE              = 42,
  179.     HEADER_GC_CHARACTER_POSITION        = 43,
  180.  
  181.     HEADER_GC_PING              = 44,
  182.     HEADER_GC_SCRIPT                = 45,
  183.     HEADER_GC_QUEST_CONFIRM         = 46,
  184.    
  185.     HEADER_GC_OFFLINE_SHOP          = 47,
  186.     HEADER_GC_OFFLINE_SHOP_SIGN     = 48,
  187.  
  188.     HEADER_GC_MOUNT             = 61,
  189.     HEADER_GC_OWNERSHIP             = 62,
  190.     HEADER_GC_TARGET                = 63,
  191.  
  192.     HEADER_GC_WARP              = 65,
  193.  
  194.     HEADER_GC_ADD_FLY_TARGETING         = 69,
  195.     HEADER_GC_CREATE_FLY            = 70,
  196.     HEADER_GC_FLY_TARGETING         = 71,
  197.     HEADER_GC_SKILL_LEVEL_OLD           = 72,
  198.     HEADER_GC_SKILL_LEVEL           = 76,
  199.  
  200.     HEADER_GC_MESSENGER             = 74,
  201.     HEADER_GC_GUILD             = 75,
  202.  
  203.     HEADER_GC_PARTY_INVITE          = 77,
  204.     HEADER_GC_PARTY_ADD             = 78,
  205.     HEADER_GC_PARTY_UPDATE          = 79,
  206.     HEADER_GC_PARTY_REMOVE          = 80,
  207.     HEADER_GC_QUEST_INFO            = 81,
  208.     HEADER_GC_REQUEST_MAKE_GUILD        = 82,
  209.     HEADER_GC_PARTY_PARAMETER           = 83,
  210.  
  211.     HEADER_GC_SAFEBOX_SET           = 85,
  212.     HEADER_GC_SAFEBOX_DEL           = 86,
  213.     HEADER_GC_SAFEBOX_WRONG_PASSWORD        = 87,
  214.     HEADER_GC_SAFEBOX_SIZE          = 88,
  215.  
  216.     HEADER_GC_FISHING               = 89,
  217.  
  218.     HEADER_GC_EMPIRE                = 90,
  219.  
  220.     HEADER_GC_PARTY_LINK            = 91,
  221.     HEADER_GC_PARTY_UNLINK          = 92,
  222.  
  223.     HEADER_GC_REFINE_INFORMATION_OLD        = 95,
  224.  
  225.     HEADER_GC_VIEW_EQUIP            = 99,
  226.  
  227.     HEADER_GC_MARK_BLOCK            = 100,
  228.     HEADER_GC_MARK_IDXLIST          = 102,
  229.  
  230.     HEADER_GC_TIME                  = 106,
  231.     HEADER_GC_CHANGE_NAME           = 107,
  232.  
  233.     HEADER_GC_DUNGEON               = 110,
  234.  
  235.     HEADER_GC_WALK_MODE             = 111,
  236.     HEADER_GC_SKILL_GROUP           = 112,
  237.     HEADER_GC_MAIN_CHARACTER            = 113,
  238.  
  239.     //  HEADER_GC_USE_POTION            = 114,
  240.     HEADER_GC_SEPCIAL_EFFECT        = 114,
  241.  
  242.     HEADER_GC_NPC_POSITION          = 115,
  243.  
  244.     HEADER_GC_MATRIX_CARD           = 116,
  245.     HEADER_GC_LOGIN_KEY             = 118,
  246.     HEADER_GC_REFINE_INFORMATION        = 119,
  247.     HEADER_GC_CHANNEL               = 121,
  248.  
  249.     // 122 HEADER_GC_MALL_OPEN
  250.     HEADER_GC_TARGET_UPDATE         = 123,
  251.     HEADER_GC_TARGET_DELETE         = 124,
  252.     HEADER_GC_TARGET_CREATE         = 125,
  253.  
  254.     HEADER_GC_AFFECT_ADD            = 126,
  255.     HEADER_GC_AFFECT_REMOVE         = 127,
  256.  
  257.     HEADER_GC_MALL_OPEN             = 122,
  258.     HEADER_GC_MALL_SET              = 128,
  259.     HEADER_GC_MALL_DEL              = 129,
  260.  
  261.     HEADER_GC_LAND_LIST             = 130,
  262.     HEADER_GC_LOVER_INFO            = 131,
  263.     HEADER_GC_LOVE_POINT_UPDATE         = 132,
  264.  
  265.     HEADER_GC_SYMBOL_DATA           = 133,
  266.  
  267.     // MINING
  268.     HEADER_GC_DIG_MOTION            = 134,
  269.     // END_OF_MINING
  270.  
  271.     HEADER_GC_DAMAGE_INFO           = 135,
  272.     HEADER_GC_CHAR_ADDITIONAL_INFO  = 136,
  273.  
  274.     // SUPPORT_BGM
  275.     HEADER_GC_MAIN_CHARACTER3_BGM       = 137,
  276.     HEADER_GC_MAIN_CHARACTER4_BGM_VOL   = 138,
  277.     // END_OF_SUPPORT_BGM
  278.  
  279.     HEADER_GC_AUTH_SUCCESS          = 150,
  280.  
  281.     HEADER_GC_PANAMA_PACK           = 151,
  282.  
  283.     //HYBRID CRYPT
  284.     HEADER_GC_HYBRIDCRYPT_KEYS      = 152,
  285.     HEADER_GC_HYBRIDCRYPT_SDB       = 153, // SDB means Supplmentary Data Blocks
  286.     //HYBRID CRYPT
  287.  
  288.     HEADER_GC_AUTH_SUCCESS_OPENID   = 154,
  289.  
  290.     // ROULETTE
  291.     HEADER_GC_ROULETTE                  = 200,
  292.     // END_ROULETTE        
  293.     //
  294.     HEADER_GC_REQUEST_PASSPOD               = 202,
  295.     HEADER_GC_REQUEST_PASSPOD_FAILED        = 203,
  296.  
  297.     HEADER_GC_HS_REQUEST                    = 204,
  298.     HEADER_GC_XTRAP_CS1_REQUEST             = 205,
  299.  
  300.     HEADER_GC_SPECIFIC_EFFECT               = 208,
  301.  
  302.     HEADER_GC_DRAGON_SOUL_REFINE            = 209,
  303.     HEADER_GC_RESPOND_CHANNELSTATUS         = 210,
  304.  
  305.  
  306.     /////////////////////////////////////////////////////////////////////////////
  307.  
  308.     HEADER_GG_LOGIN             = 1,
  309.     HEADER_GG_LOGOUT                = 2,
  310.     HEADER_GG_RELAY             = 3,
  311.     HEADER_GG_NOTICE                = 4,
  312.     HEADER_GG_SHUTDOWN              = 5,
  313.     HEADER_GG_GUILD             = 6,
  314.     HEADER_GG_DISCONNECT            = 7,    // 누군가의 접속을 강제로 끊을 때
  315.     HEADER_GG_SHOUT             = 8,
  316.     HEADER_GG_SETUP             = 9,
  317.     HEADER_GG_MESSENGER_ADD                     = 10,
  318.     HEADER_GG_MESSENGER_REMOVE                  = 11,
  319.     HEADER_GG_FIND_POSITION         = 12,
  320.     HEADER_GG_WARP_CHARACTER            = 13,
  321.     HEADER_GG_MESSENGER_MOBILE          = 14,
  322.     HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX      = 15,
  323.     HEADER_GG_TRANSFER              = 16,
  324.     HEADER_GG_XMAS_WARP_SANTA           = 17,
  325.     HEADER_GG_XMAS_WARP_SANTA_REPLY     = 18,
  326.     HEADER_GG_RELOAD_CRC_LIST           = 19,
  327.     HEADER_GG_LOGIN_PING            = 20,
  328.     HEADER_GG_CHECK_CLIENT_VERSION      = 21,
  329.     HEADER_GG_BLOCK_CHAT            = 22,
  330.  
  331.     HEADER_GG_BLOCK_EXCEPTION       = 24,
  332.     HEADER_GG_SIEGE                 = 25,
  333.     HEADER_GG_MONARCH_NOTICE        = 26,
  334.     HEADER_GG_MONARCH_TRANSFER      = 27,
  335.     HEADER_GG_PCBANG_UPDATE         = 28,
  336.  
  337.     HEADER_GG_CHECK_AWAKENESS       = 29,
  338.     HEADER_GG_REMOVE_OFFLINE_SHOP           = 30,
  339.         HEADER_GG_CHANGE_OFFLINE_SHOP_TIME      = 31,
  340.         HEADER_GG_OFFLINE_SHOP_BUY              = 32,
  341. };
  342.  
  343. #pragma pack(1)
  344. typedef struct SPacketGGSetup
  345. {
  346.     BYTE    bHeader;
  347.     WORD    wPort;
  348.     BYTE    bChannel;
  349. } TPacketGGSetup;
  350.  
  351. typedef struct SPacketGGLogin
  352. {
  353.     BYTE    bHeader;
  354.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  355.     DWORD   dwPID;
  356.     BYTE    bEmpire;
  357.     long    lMapIndex;
  358.     BYTE    bChannel;
  359. } TPacketGGLogin;
  360.  
  361. typedef struct SPacketGGLogout
  362. {
  363.     BYTE    bHeader;
  364.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  365. } TPacketGGLogout;
  366.  
  367. typedef struct SPacketGGRelay
  368. {
  369.     BYTE    bHeader;
  370.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  371.     long    lSize;
  372. } TPacketGGRelay;
  373.  
  374. typedef struct SPacketGGNotice
  375. {
  376.     BYTE    bHeader;
  377.     long    lSize;
  378. } TPacketGGNotice;
  379.  
  380. typedef struct SPacketGGMonarchNotice
  381. {
  382.     BYTE    bHeader;
  383.     BYTE    bEmpire;
  384.     long    lSize;
  385. } TPacketGGMonarchNotice;
  386.  
  387. //FORKED_ROAD
  388. typedef struct SPacketGGForkedMapInfo
  389. {
  390.     BYTE    bHeader;
  391.     BYTE    bPass;
  392.     BYTE    bSungzi;
  393. } TPacketGGForkedMapInfo;
  394. //END_FORKED_ROAD
  395. typedef struct SPacketGGShutdown
  396. {
  397.     BYTE    bHeader;
  398. } TPacketGGShutdown;
  399.  
  400. typedef struct SPacketGGGuild
  401. {
  402.     BYTE    bHeader;
  403.     BYTE    bSubHeader;
  404.     DWORD   dwGuild;
  405. } TPacketGGGuild;
  406.  
  407. enum
  408. {
  409.     GUILD_SUBHEADER_GG_CHAT,
  410.     GUILD_SUBHEADER_GG_SET_MEMBER_COUNT_BONUS,
  411. };
  412.  
  413. typedef struct SPacketGGGuildChat
  414. {
  415.     BYTE    bHeader;
  416.     BYTE    bSubHeader;
  417.     DWORD   dwGuild;
  418.     char    szText[CHAT_MAX_LEN + 1];
  419. } TPacketGGGuildChat;
  420.  
  421. typedef struct SPacketGGParty
  422. {
  423.     BYTE    header;
  424.     BYTE    subheader;
  425.     DWORD   pid;
  426.     DWORD   leaderpid;
  427. } TPacketGGParty;
  428.  
  429. enum
  430. {
  431.     PARTY_SUBHEADER_GG_CREATE,
  432.     PARTY_SUBHEADER_GG_DESTROY,
  433.     PARTY_SUBHEADER_GG_JOIN,
  434.     PARTY_SUBHEADER_GG_QUIT,
  435. };
  436.  
  437. typedef struct SPacketGGDisconnect
  438. {
  439.     BYTE    bHeader;
  440.     char    szLogin[LOGIN_MAX_LEN + 1];
  441. } TPacketGGDisconnect;
  442.  
  443. typedef struct SPacketGGShout
  444. {
  445.     BYTE    bHeader;
  446.     BYTE    bEmpire;
  447.     char    szText[CHAT_MAX_LEN + 1];
  448. } TPacketGGShout;
  449.  
  450. typedef struct SPacketGGXmasWarpSanta
  451. {
  452.     BYTE    bHeader;
  453.     BYTE    bChannel;
  454.     long    lMapIndex;
  455. } TPacketGGXmasWarpSanta;
  456.  
  457. typedef struct SPacketGGXmasWarpSantaReply
  458. {
  459.     BYTE    bHeader;
  460.     BYTE    bChannel;
  461. } TPacketGGXmasWarpSantaReply;
  462.  
  463. typedef struct SMessengerData
  464. {
  465.     char        szMobile[MOBILE_MAX_LEN + 1];
  466. } TMessengerData;
  467.  
  468. typedef struct SPacketGGMessenger
  469. {  
  470.     BYTE        bHeader;
  471.     char        szAccount[CHARACTER_NAME_MAX_LEN + 1];
  472.     char        szCompanion[CHARACTER_NAME_MAX_LEN + 1];
  473. } TPacketGGMessenger;
  474.  
  475. typedef struct SPacketGGMessengerMobile
  476. {  
  477.     BYTE        bHeader;
  478.     char        szName[CHARACTER_NAME_MAX_LEN + 1];
  479.     char        szMobile[MOBILE_MAX_LEN + 1];
  480. } TPacketGGMessengerMobile;
  481.  
  482. typedef struct SPacketGGFindPosition
  483. {
  484.     BYTE header;
  485.     DWORD dwFromPID; // 저 위치로 워프하려는 사람
  486.     DWORD dwTargetPID; // 찾는 사람
  487. } TPacketGGFindPosition;
  488.  
  489. typedef struct SPacketGGWarpCharacter
  490. {
  491.     BYTE header;
  492.     DWORD pid;
  493.     long x;
  494.     long y;
  495. } TPacketGGWarpCharacter;
  496.  
  497. //  HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX      = 15,
  498.  
  499. typedef struct SPacketGGGuildWarMapIndex
  500. {
  501.     BYTE bHeader;
  502.     DWORD dwGuildID1;
  503.     DWORD dwGuildID2;
  504.     long lMapIndex;
  505. } TPacketGGGuildWarMapIndex;
  506.  
  507. typedef struct SPacketGGTransfer
  508. {
  509.     BYTE    bHeader;
  510.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  511.     long    lX, lY;
  512. } TPacketGGTransfer;
  513.  
  514. typedef struct SPacketGGLoginPing
  515. {
  516.     BYTE    bHeader;
  517.     char    szLogin[LOGIN_MAX_LEN + 1];
  518. } TPacketGGLoginPing;
  519.  
  520. typedef struct SPacketGGBlockChat
  521. {
  522.     BYTE    bHeader;
  523.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  524.     long    lBlockDuration;
  525. } TPacketGGBlockChat;
  526.  
  527. typedef struct SPacketGGRemoveOfflineShop
  528. {
  529.     BYTE    bHeader;
  530.         long    lMapIndex;
  531.     char    szNpcName[CHARACTER_NAME_MAX_LEN + 1];
  532. } TPacketGGRemoveOfflineShop;
  533.  
  534. typedef struct SPacketGGChangeOfflineShopTime
  535. {
  536.         BYTE    bHeader;
  537.         BYTE    bTime;
  538.         long    lMapIndex;
  539.         DWORD   dwOwnerPID;
  540. } TPacketGGChangeOfflineShopTime;
  541.  
  542. typedef struct SPacketGGOfflineShopBuy
  543. {
  544.         BYTE    bHeader;
  545.         DWORD   dwMoney;
  546.         char    szBuyerName[CHARACTER_NAME_MAX_LEN + 1];        
  547. } TPacketGGOfflineShopBuy;
  548.  
  549. /* 클라이언트 측에서 보내는 패킷 */
  550.  
  551. typedef struct command_text
  552. {
  553.     BYTE    bHeader;
  554. } TPacketCGText;
  555.  
  556. /* 로그인 (1) */
  557. typedef struct command_handshake
  558. {
  559.     BYTE    bHeader;
  560.     DWORD   dwHandshake;
  561.     DWORD   dwTime;
  562.     long    lDelta;
  563. } TPacketCGHandshake;
  564.  
  565. typedef struct command_login
  566. {
  567.     BYTE    header;
  568.     char    login[LOGIN_MAX_LEN + 1];
  569.     char    passwd[PASSWD_MAX_LEN + 1];
  570. } TPacketCGLogin;
  571.  
  572. typedef struct command_login2
  573. {
  574.     BYTE    header;
  575.     char    login[LOGIN_MAX_LEN + 1];
  576.     DWORD   dwLoginKey;
  577.     DWORD   adwClientKey[4];
  578. } TPacketCGLogin2;
  579.  
  580. typedef struct command_login3
  581. {
  582.     BYTE    header;
  583.     char    login[LOGIN_MAX_LEN + 1];
  584.     char    passwd[PASSWD_MAX_LEN + 1];
  585.     DWORD   adwClientKey[4];
  586. } TPacketCGLogin3;
  587.  
  588. typedef struct command_login5
  589. {
  590.     BYTE    header;
  591.     char    authKey[OPENID_AUTHKEY_LEN + 1];
  592.     DWORD   adwClientKey[4];
  593. } TPacketCGLogin5;
  594.  
  595. typedef struct command_matrix_card
  596. {
  597.     BYTE    bHeader;
  598.     char    szAnswer[MATRIX_ANSWER_MAX_LEN + 1];
  599. } TPacketCGMatrixCard;
  600.  
  601. typedef struct packet_matrix_card
  602. {
  603.     BYTE    bHeader;
  604.     DWORD   dwRows;
  605.     DWORD   dwCols;
  606. } TPacketGCMatrixCard;
  607.  
  608. typedef struct packet_login_key
  609. {
  610.     BYTE    bHeader;
  611.     DWORD   dwLoginKey;
  612. } TPacketGCLoginKey;
  613.  
  614. typedef struct command_player_select
  615. {
  616.     BYTE    header;
  617.     BYTE    index;
  618. } TPacketCGPlayerSelect;
  619.  
  620. typedef struct command_player_delete
  621. {
  622.     BYTE    header;
  623.     BYTE    index;
  624.     char    private_code[8];
  625. } TPacketCGPlayerDelete;
  626.  
  627. typedef struct command_player_create
  628. {
  629.     BYTE        header;
  630.     BYTE        index;
  631.     char        name[CHARACTER_NAME_MAX_LEN + 1];
  632.     WORD        job;
  633.     BYTE    shape;
  634.     BYTE    Con;
  635.     BYTE    Int;
  636.     BYTE    Str;
  637.     BYTE    Dex;
  638. } TPacketCGPlayerCreate;
  639.  
  640. typedef struct command_player_create_success
  641. {
  642.     BYTE        header;
  643.     BYTE        bAccountCharacterIndex;
  644.     TSimplePlayer   player;
  645. } TPacketGCPlayerCreateSuccess;
  646.  
  647. // 공격
  648. typedef struct command_attack
  649. {
  650.     BYTE    bHeader;
  651.     BYTE    bType;
  652.     DWORD   dwVID;
  653.     BYTE    bCRCMagicCubeProcPiece;
  654.     BYTE    bCRCMagicCubeFilePiece;
  655. } TPacketCGAttack;
  656.  
  657. enum EMoveFuncType
  658. {
  659.     FUNC_WAIT,
  660.     FUNC_MOVE,
  661.     FUNC_ATTACK,
  662.     FUNC_COMBO,
  663.     FUNC_MOB_SKILL,
  664.     _FUNC_SKILL,
  665.     FUNC_MAX_NUM,
  666.     FUNC_SKILL = 0x80,
  667. };
  668.  
  669. // 이동
  670. typedef struct command_move
  671. {
  672.     BYTE    bHeader;
  673.     BYTE    bFunc;
  674.     BYTE    bArg;
  675.     BYTE    bRot;
  676.     long    lX;
  677.     long    lY;
  678.     DWORD   dwTime;
  679. } TPacketCGMove;
  680.  
  681. typedef struct command_sync_position_element
  682. {
  683.     DWORD   dwVID;
  684.     long    lX;
  685.     long    lY;
  686. } TPacketCGSyncPositionElement;
  687.  
  688. // 위치 동기화
  689. typedef struct command_sync_position    // 가변 패킷
  690. {
  691.     BYTE    bHeader;
  692.     WORD    wSize;
  693. } TPacketCGSyncPosition;
  694.  
  695. /* 채팅 (3) */
  696. typedef struct command_chat // 가변 패킷
  697. {
  698.     BYTE    header;
  699.     WORD    size;
  700.     BYTE    type;
  701. } TPacketCGChat;
  702.  
  703. /* 귓속말 */
  704. typedef struct command_whisper
  705. {
  706.     BYTE    bHeader;
  707.     WORD    wSize;
  708.     char    szNameTo[CHARACTER_NAME_MAX_LEN + 1];
  709. } TPacketCGWhisper;
  710.  
  711. typedef struct command_entergame
  712. {
  713.     BYTE    header;
  714. } TPacketCGEnterGame;
  715.  
  716. typedef struct command_item_use
  717. {
  718.     BYTE    header;
  719.     TItemPos    Cell;
  720. } TPacketCGItemUse;
  721.  
  722. typedef struct command_item_use_to_item
  723. {
  724.     BYTE    header;
  725.     TItemPos    Cell;
  726.     TItemPos    TargetCell;
  727. } TPacketCGItemUseToItem;
  728.  
  729. typedef struct command_item_drop
  730. {
  731.     BYTE    header;
  732.     TItemPos    Cell;
  733.     DWORD   gold;
  734. } TPacketCGItemDrop;
  735.  
  736. typedef struct command_item_drop2
  737. {
  738.     BYTE    header;
  739.     TItemPos    Cell;
  740.     DWORD   gold;
  741.     BYTE    count;
  742. } TPacketCGItemDrop2;
  743.  
  744. typedef struct command_item_move
  745. {
  746.     BYTE    header;
  747.     TItemPos    Cell;
  748.     TItemPos    CellTo;
  749.     BYTE    count;
  750. } TPacketCGItemMove;
  751.  
  752. typedef struct command_item_pickup
  753. {
  754.     BYTE    header;
  755.     DWORD   vid;
  756. } TPacketCGItemPickup;
  757.  
  758. typedef struct command_quickslot_add
  759. {
  760.     BYTE    header;
  761.     BYTE    pos;
  762.     TQuickslot  slot;
  763. } TPacketCGQuickslotAdd;
  764.  
  765. typedef struct command_quickslot_del
  766. {
  767.     BYTE    header;
  768.     BYTE    pos;
  769. } TPacketCGQuickslotDel;
  770.  
  771. typedef struct command_quickslot_swap
  772. {
  773.     BYTE    header;
  774.     BYTE    pos;
  775.     BYTE    change_pos;
  776. } TPacketCGQuickslotSwap;
  777.  
  778. enum
  779. {
  780.     SHOP_SUBHEADER_CG_END,
  781.     SHOP_SUBHEADER_CG_BUY,
  782.     SHOP_SUBHEADER_CG_SELL,
  783.     SHOP_SUBHEADER_CG_SELL2,
  784.     SHOP_SUBHEADER_CG_CHANGE_EDIT_TIME,
  785.     SHOP_SUBHEADER_CG_ADD_ITEM,
  786.     SHOP_SUBHEADER_CG_REMOVE_ITEM,
  787.     SHOP_SUBHEADER_CG_CHANGE_PRICE,
  788.     SHOP_SUBHEADER_CG_DESTROY_OFFLINE_SHOP,
  789.     SHOP_SUBHEADER_CG_REFRESH,
  790.     SHOP_SUBHEADER_CG_REFRESH_MONEY,
  791.     SHOP_SUBHEADER_CG_WITHDRAW_MONEY,
  792. };
  793.  
  794. typedef struct command_shop_buy
  795. {
  796.     BYTE    count;
  797. } TPacketCGShopBuy;
  798.  
  799. typedef struct command_shop_sell
  800. {
  801.     BYTE    pos;
  802.     BYTE    count;
  803. } TPacketCGShopSell;
  804.  
  805. typedef struct command_shop
  806. {
  807.     BYTE    header;
  808.     BYTE    subheader;
  809. } TPacketCGShop;
  810.  
  811. typedef struct command_on_click
  812. {
  813.     BYTE    header;
  814.     DWORD   vid;
  815. } TPacketCGOnClick;
  816.  
  817. enum
  818. {
  819.     EXCHANGE_SUBHEADER_CG_START,    /* arg1 == vid of target character */
  820.     EXCHANGE_SUBHEADER_CG_ITEM_ADD, /* arg1 == position of item */
  821.     EXCHANGE_SUBHEADER_CG_ITEM_DEL, /* arg1 == position of item */
  822.     EXCHANGE_SUBHEADER_CG_ELK_ADD,  /* arg1 == amount of gold */
  823.     EXCHANGE_SUBHEADER_CG_ACCEPT,   /* arg1 == not used */
  824.     EXCHANGE_SUBHEADER_CG_CANCEL,   /* arg1 == not used */
  825. };
  826.  
  827. typedef struct command_exchange
  828. {
  829.     BYTE    header;
  830.     BYTE    sub_header;
  831.     DWORD   arg1;
  832.     BYTE    arg2;
  833.     TItemPos    Pos;
  834. } TPacketCGExchange;
  835.  
  836. typedef struct command_position
  837. {
  838.     BYTE    header;
  839.     BYTE    position;
  840. } TPacketCGPosition;
  841.  
  842. typedef struct command_script_answer
  843. {
  844.     BYTE    header;
  845.     BYTE    answer;
  846.     //char  file[32 + 1];
  847.     //BYTE  answer[16 + 1];
  848. } TPacketCGScriptAnswer;
  849.  
  850.  
  851. typedef struct command_script_button
  852. {
  853.     BYTE        header;
  854.     unsigned int    idx;
  855. } TPacketCGScriptButton;
  856.  
  857. typedef struct command_quest_input_string
  858. {
  859.     BYTE header;
  860.     char msg[64+1];
  861. } TPacketCGQuestInputString;
  862.  
  863. typedef struct command_quest_confirm
  864. {
  865.     BYTE header;
  866.     BYTE answer;
  867.     DWORD requestPID;
  868. } TPacketCGQuestConfirm;
  869.  
  870. /*
  871.  * 서버 측에서 보내는 패킷
  872.  */
  873. typedef struct packet_quest_confirm
  874. {
  875.     BYTE header;
  876.     char msg[64+1];
  877.     long timeout;
  878.     DWORD requestPID;
  879. } TPacketGCQuestConfirm;
  880.  
  881. typedef struct packet_handshake
  882. {
  883.     BYTE    bHeader;
  884.     DWORD   dwHandshake;
  885.     DWORD   dwTime;
  886.     long    lDelta;
  887. } TPacketGCHandshake;
  888.  
  889. enum EPhase
  890. {
  891.     PHASE_CLOSE,
  892.     PHASE_HANDSHAKE,
  893.     PHASE_LOGIN,
  894.     PHASE_SELECT,
  895.     PHASE_LOADING,
  896.     PHASE_GAME,
  897.     PHASE_DEAD,
  898.  
  899.     PHASE_CLIENT_CONNECTING,
  900.     PHASE_DBCLIENT,
  901.     PHASE_P2P,
  902.     PHASE_AUTH,
  903.     PHASE_TEEN,
  904.     PHASE_PASSPOD,
  905. };
  906.  
  907. typedef struct packet_phase
  908. {
  909.     BYTE    header;
  910.     BYTE    phase;
  911. } TPacketGCPhase;
  912.  
  913. typedef struct packet_bindudp
  914. {
  915.     BYTE    header;
  916.     DWORD   addr;
  917.     WORD    port;
  918. } TPacketGCBindUDP;
  919.  
  920. enum
  921. {
  922.     LOGIN_FAILURE_ALREADY   = 1,
  923.     LOGIN_FAILURE_ID_NOT_EXIST  = 2,
  924.     LOGIN_FAILURE_WRONG_PASS    = 3,
  925.     LOGIN_FAILURE_FALSE     = 4,
  926.     LOGIN_FAILURE_NOT_TESTOR    = 5,
  927.     LOGIN_FAILURE_NOT_TEST_TIME = 6,
  928.     LOGIN_FAILURE_FULL      = 7
  929. };
  930.  
  931. typedef struct packet_login_success
  932. {
  933.     BYTE        bHeader;
  934.     TSimplePlayer   players[PLAYER_PER_ACCOUNT];
  935.     DWORD       guild_id[PLAYER_PER_ACCOUNT];
  936.     char        guild_name[PLAYER_PER_ACCOUNT][GUILD_NAME_MAX_LEN+1];
  937.  
  938.     DWORD       handle;
  939.     DWORD       random_key;
  940. } TPacketGCLoginSuccess;
  941.  
  942. typedef struct packet_auth_success
  943. {
  944.     BYTE    bHeader;
  945.     DWORD   dwLoginKey;
  946.     BYTE    bResult;
  947. } TPacketGCAuthSuccess;
  948.  
  949. typedef struct packet_auth_success_openid
  950. {
  951.     BYTE    bHeader;
  952.     DWORD   dwLoginKey;
  953.     BYTE    bResult;
  954.     char    login[LOGIN_MAX_LEN + 1];
  955. } TPacketGCAuthSuccessOpenID;
  956.  
  957. typedef struct packet_login_failure
  958. {
  959.     BYTE    header;
  960.     char    szStatus[ACCOUNT_STATUS_MAX_LEN + 1];
  961. } TPacketGCLoginFailure;
  962.  
  963. typedef struct packet_create_failure
  964. {
  965.     BYTE    header;
  966.     BYTE    bType;
  967. } TPacketGCCreateFailure;
  968.  
  969. enum
  970. {
  971.     ADD_CHARACTER_STATE_DEAD        = (1 << 0),
  972.     ADD_CHARACTER_STATE_SPAWN       = (1 << 1),
  973.     ADD_CHARACTER_STATE_GUNGON      = (1 << 2),
  974.     ADD_CHARACTER_STATE_KILLER      = (1 << 3),
  975.     ADD_CHARACTER_STATE_PARTY       = (1 << 4),
  976. };
  977.  
  978. enum ECharacterEquipmentPart
  979. {
  980.     CHR_EQUIPPART_ARMOR,
  981.     CHR_EQUIPPART_WEAPON,
  982.     CHR_EQUIPPART_HEAD,
  983.     CHR_EQUIPPART_HAIR,
  984.     CHR_EQUIPPART_ACCE,
  985.     CHR_EQUIPPART_NUM,
  986. };
  987.  
  988. typedef struct packet_add_char
  989. {
  990.     BYTE    header;
  991.     DWORD   dwVID;
  992.  
  993.     float   angle;
  994.     long    x;
  995.     long    y;
  996.     long    z;
  997.  
  998.     BYTE    bType;
  999.     WORD    wRaceNum;
  1000.     BYTE    bMovingSpeed;
  1001.     BYTE    bAttackSpeed;
  1002.  
  1003.     BYTE    bStateFlag;
  1004.     DWORD   dwAffectFlag[2];    // 효과
  1005. } TPacketGCCharacterAdd;
  1006.  
  1007. typedef struct packet_char_additional_info
  1008. {
  1009.     BYTE    header;
  1010.     DWORD   dwVID;
  1011.     char    name[CHARACTER_NAME_MAX_LEN + 1];
  1012.     WORD    awPart[CHR_EQUIPPART_NUM];
  1013.     BYTE    bEmpire;
  1014.     DWORD   dwGuildID;
  1015.     DWORD   dwLevel;
  1016.     short   sAlignment;
  1017.     BYTE    bPKMode;
  1018.     DWORD   dwMountVnum;
  1019. } TPacketGCCharacterAdditionalInfo;
  1020.  
  1021. /*
  1022.    typedef struct packet_update_char_old
  1023.    {
  1024.    BYTE header;
  1025.    DWORD    dwVID;
  1026.  
  1027.    WORD        awPart[CHR_EQUIPPART_NUM];
  1028.    BYTE bMovingSpeed;
  1029.    BYTE bAttackSpeed;
  1030.  
  1031.    BYTE bStateFlag;
  1032.    DWORD    dwAffectFlag[2];
  1033.  
  1034.    DWORD    dwGuildID;
  1035.    short    sAlignment;
  1036.    BYTE bPKMode;
  1037.    DWORD    dwMountVnum;
  1038.    } TPacketGCCharacterUpdateOld;
  1039.  */
  1040.  
  1041. typedef struct packet_update_char
  1042. {
  1043.     BYTE    header;
  1044.     DWORD   dwVID;
  1045.  
  1046.     WORD        awPart[CHR_EQUIPPART_NUM];
  1047.     BYTE    bMovingSpeed;
  1048.     BYTE    bAttackSpeed;
  1049.  
  1050.     BYTE    bStateFlag;
  1051.     DWORD   dwAffectFlag[2];
  1052.  
  1053.     DWORD   dwGuildID;
  1054.     short   sAlignment;
  1055.     BYTE    bPKMode;
  1056.     DWORD   dwMountVnum;
  1057.     //WORD  wRaceNum;
  1058. } TPacketGCCharacterUpdate;
  1059.  
  1060. typedef struct packet_del_char
  1061. {
  1062.     BYTE    header;
  1063.     DWORD   id;
  1064. } TPacketGCCharacterDelete;
  1065.  
  1066. typedef struct packet_chat  // 가변 패킷
  1067. {
  1068.     BYTE    header;
  1069.     WORD    size;
  1070.     BYTE    type;
  1071.     DWORD   id;
  1072.     BYTE    bEmpire;
  1073. } TPacketGCChat;
  1074.  
  1075. typedef struct packet_whisper   // 가변 패킷
  1076. {
  1077.     BYTE    bHeader;
  1078.     WORD    wSize;
  1079.     BYTE    bType;
  1080.     char    szNameFrom[CHARACTER_NAME_MAX_LEN + 1];
  1081. } TPacketGCWhisper;
  1082.  
  1083. typedef struct packet_main_character
  1084. {
  1085.     BYTE        header;
  1086.     DWORD   dwVID;
  1087.     WORD    wRaceNum;
  1088.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  1089.     long    lx, ly, lz;
  1090.     BYTE    empire;
  1091.     BYTE    skill_group;
  1092. } TPacketGCMainCharacter;
  1093.  
  1094. // SUPPORT_BGM
  1095. typedef struct packet_main_character3_bgm
  1096. {
  1097.     enum
  1098.     {
  1099.         MUSIC_NAME_LEN = 24,
  1100.     };
  1101.  
  1102.     BYTE    header;
  1103.     DWORD   dwVID;
  1104.     WORD    wRaceNum;
  1105.     char    szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1106.     char    szBGMName[MUSIC_NAME_LEN + 1];
  1107.     long    lx, ly, lz;
  1108.     BYTE    empire;
  1109.     BYTE    skill_group;
  1110. } TPacketGCMainCharacter3_BGM;
  1111.  
  1112. typedef struct packet_main_character4_bgm_vol
  1113. {
  1114.     enum
  1115.     {
  1116.         MUSIC_NAME_LEN = 24,
  1117.     };
  1118.  
  1119.     BYTE    header;
  1120.     DWORD   dwVID;
  1121.     WORD    wRaceNum;
  1122.     char    szChrName[CHARACTER_NAME_MAX_LEN + 1];
  1123.     char    szBGMName[MUSIC_NAME_LEN + 1];
  1124.     float   fBGMVol;
  1125.     long    lx, ly, lz;
  1126.     BYTE    empire;
  1127.     BYTE    skill_group;
  1128. } TPacketGCMainCharacter4_BGM_VOL;
  1129. // END_OF_SUPPORT_BGM
  1130.  
  1131. typedef struct packet_points
  1132. {
  1133.     BYTE    header;
  1134.     INT     points[POINT_MAX_NUM];
  1135. } TPacketGCPoints;
  1136.  
  1137. typedef struct packet_skill_level
  1138. {
  1139.     BYTE        bHeader;
  1140.     TPlayerSkill    skills[SKILL_MAX_NUM];
  1141. } TPacketGCSkillLevel;
  1142.  
  1143. typedef struct packet_point_change
  1144. {
  1145.     int     header;
  1146.     DWORD   dwVID;
  1147.     BYTE    type;
  1148.     long    amount;
  1149.     long    value;
  1150. } TPacketGCPointChange;
  1151.  
  1152. typedef struct packet_stun
  1153. {
  1154.     BYTE    header;
  1155.     DWORD   vid;
  1156. } TPacketGCStun;
  1157.  
  1158. typedef struct packet_dead
  1159. {
  1160.     BYTE    header;
  1161.     DWORD   vid;
  1162. } TPacketGCDead;
  1163.  
  1164. struct TPacketGCItemDelDeprecated
  1165. {
  1166.     BYTE    header;
  1167.     TItemPos Cell;
  1168.     DWORD   vnum;
  1169.     BYTE    count;
  1170.     long    alSockets[ITEM_SOCKET_MAX_NUM];
  1171.     TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1172. };
  1173.  
  1174. typedef struct packet_item_set
  1175. {
  1176.     BYTE    header;
  1177.     TItemPos Cell;
  1178.     DWORD   vnum;
  1179.     BYTE    count;
  1180.     DWORD   flags;
  1181.     DWORD   anti_flags;
  1182.     bool    highlight;
  1183.     long    alSockets[ITEM_SOCKET_MAX_NUM];
  1184.     TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1185. } TPacketGCItemSet;
  1186.  
  1187. typedef struct packet_item_del
  1188. {
  1189.     BYTE    header;
  1190.     BYTE    pos;
  1191. } TPacketGCItemDel;
  1192.  
  1193. struct packet_item_use
  1194. {
  1195.     BYTE    header;
  1196.     TItemPos Cell;
  1197.     DWORD   ch_vid;
  1198.     DWORD   victim_vid;
  1199.     DWORD   vnum;
  1200. };
  1201.  
  1202. struct packet_item_move
  1203. {
  1204.     BYTE    header;
  1205.     TItemPos Cell;
  1206.     TItemPos CellTo;
  1207. };
  1208.  
  1209. typedef struct packet_item_update
  1210. {
  1211.     BYTE    header;
  1212.     TItemPos Cell;
  1213.     BYTE    count;
  1214.     long    alSockets[ITEM_SOCKET_MAX_NUM];
  1215.     TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1216. } TPacketGCItemUpdate;
  1217.  
  1218. typedef struct packet_item_ground_add
  1219. {
  1220.     BYTE    bHeader;
  1221.     long    x, y, z;
  1222.     DWORD   dwVID;
  1223.     DWORD   dwVnum;
  1224. } TPacketGCItemGroundAdd;
  1225.  
  1226. typedef struct packet_item_ownership
  1227. {
  1228.     BYTE    bHeader;
  1229.     DWORD   dwVID;
  1230.     char    szName[CHARACTER_NAME_MAX_LEN + 1];
  1231. } TPacketGCItemOwnership;
  1232.  
  1233. typedef struct packet_item_ground_del
  1234. {
  1235.     BYTE    bHeader;
  1236.     DWORD   dwVID;
  1237. } TPacketGCItemGroundDel;
  1238.  
  1239. struct packet_quickslot_add
  1240. {
  1241.     BYTE    header;
  1242.     BYTE    pos;
  1243.     TQuickslot  slot;
  1244. };
  1245.  
  1246. struct packet_quickslot_del
  1247. {
  1248.     BYTE    header;
  1249.     BYTE    pos;
  1250. };
  1251.  
  1252. struct packet_quickslot_swap
  1253. {
  1254.     BYTE    header;
  1255.     BYTE    pos;
  1256.     BYTE    pos_to;
  1257. };
  1258.  
  1259. struct packet_motion
  1260. {
  1261.     BYTE    header;
  1262.     DWORD   vid;
  1263.     DWORD   victim_vid;
  1264.     WORD    motion;
  1265. };
  1266.  
  1267. enum EPacketShopSubHeaders
  1268. {
  1269.     SHOP_SUBHEADER_GC_START,
  1270.     SHOP_SUBHEADER_GC_END,
  1271.     SHOP_SUBHEADER_GC_UPDATE_ITEM,
  1272.     SHOP_SUBHEADER_GC_UPDATE_PRICE,
  1273.     SHOP_SUBHEADER_GC_OK,
  1274.     SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY,
  1275.     SHOP_SUBHEADER_GC_SOLDOUT,
  1276.     SHOP_SUBHEADER_GC_INVENTORY_FULL,
  1277.     SHOP_SUBHEADER_GC_INVALID_POS,
  1278.     SHOP_SUBHEADER_GC_SOLD_OUT,
  1279.     SHOP_SUBHEADER_GC_START_EX,
  1280.     SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_EX,
  1281.     SHOP_SUBHEADER_GC_UPDATE_ITEM2,
  1282.     SHOP_SUBHEADER_GC_REFRESH_MONEY,
  1283. };
  1284.  
  1285. struct packet_shop_item
  1286. {  
  1287.     DWORD       vnum;
  1288.     DWORD       price;
  1289.     BYTE        count;
  1290.     BYTE        display_pos;
  1291.     long    alSockets[ITEM_SOCKET_MAX_NUM];
  1292.     TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1293. };
  1294.  
  1295. typedef struct packet_shop_start
  1296. {
  1297.     DWORD   owner_vid;
  1298.     struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1299. } TPacketGCShopStart;
  1300.  
  1301. // Offline Shop Start Packet
  1302. typedef struct packet_offline_shop_start
  1303. {
  1304.     DWORD   owner_vid;
  1305.     struct packet_shop_item items[OFFLINE_SHOP_HOST_ITEM_MAX_NUM];
  1306. } TPacketGCOfflineShopStart;
  1307.  
  1308. typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴.
  1309. {
  1310.     typedef struct sub_packet_shop_tab
  1311.     {
  1312.         char name[SHOP_TAB_NAME_MAX];
  1313.         BYTE coin_type;
  1314.         packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
  1315.     } TSubPacketShopTab;
  1316.     DWORD owner_vid;
  1317.     BYTE shop_tab_count;
  1318. } TPacketGCShopStartEx;
  1319.  
  1320. typedef struct packet_shop_update_item
  1321. {
  1322.     BYTE            pos;
  1323.     struct packet_shop_item item;
  1324. } TPacketGCShopUpdateItem;
  1325.  
  1326. typedef struct packet_shop_update_price
  1327. {
  1328.     BYTE            bPos;
  1329.     int             iPrice;
  1330. } TPacketGCShopUpdatePrice;
  1331.  
  1332. typedef struct packet_shop  // 가변 패킷
  1333. {
  1334.     BYTE        header;
  1335.     WORD    size;
  1336.     BYTE        subheader;
  1337. } TPacketGCShop;
  1338.  
  1339. typedef struct packet_offline_shop_money
  1340. {
  1341.     DWORD   dwMoney;
  1342. } TPacketGCOfflineShopMoney;
  1343.  
  1344. struct packet_exchange
  1345. {
  1346.     BYTE    header;
  1347.     BYTE    sub_header;
  1348.     BYTE    is_me;
  1349.     DWORD   arg1;   // vnum
  1350.     TItemPos    arg2;   // cell
  1351.     DWORD   arg3;   // count
  1352.     long    alSockets[ITEM_SOCKET_MAX_NUM];
  1353.     TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1354. };
  1355.  
  1356. enum EPacketTradeSubHeaders
  1357. {
  1358.     EXCHANGE_SUBHEADER_GC_START,    /* arg1 == vid */
  1359.     EXCHANGE_SUBHEADER_GC_ITEM_ADD, /* arg1 == vnum  arg2 == pos  arg3 == count */
  1360.     EXCHANGE_SUBHEADER_GC_ITEM_DEL,
  1361.     EXCHANGE_SUBHEADER_GC_GOLD_ADD, /* arg1 == gold */
  1362.     EXCHANGE_SUBHEADER_GC_ACCEPT,   /* arg1 == accept */
  1363.     EXCHANGE_SUBHEADER_GC_END,      /* arg1 == not used */
  1364.     EXCHANGE_SUBHEADER_GC_ALREADY,  /* arg1 == not used */
  1365.     EXCHANGE_SUBHEADER_GC_LESS_GOLD,    /* arg1 == not used */
  1366. };
  1367.  
  1368. struct packet_position
  1369. {
  1370.     BYTE    header;
  1371.     DWORD   vid;
  1372.     BYTE    position;
  1373. };
  1374.  
  1375. typedef struct packet_ping
  1376. {
  1377.     BYTE    header;
  1378. } TPacketGCPing;
  1379.  
  1380. struct packet_script
  1381. {
  1382.     BYTE    header;
  1383.     WORD    size;
  1384.     BYTE    skin;
  1385.     WORD    src_size;
  1386. };
  1387.  
  1388. typedef struct packet_change_speed
  1389. {
  1390.     BYTE        header;
  1391.     DWORD       vid;
  1392.     WORD        moving_speed;
  1393. } TPacketGCChangeSpeed;
  1394.  
  1395. struct packet_mount
  1396. {
  1397.     BYTE    header;
  1398.     DWORD   vid;
  1399.     DWORD   mount_vid;
  1400.     BYTE    pos;
  1401.     DWORD   x, y;
  1402. };
  1403.  
  1404. typedef struct packet_move
  1405. {  
  1406.     BYTE        bHeader;
  1407.     BYTE        bFunc;
  1408.     BYTE        bArg;
  1409.     BYTE        bRot;
  1410.     DWORD       dwVID;
  1411.     long        lX;
  1412.     long        lY;
  1413.     DWORD       dwTime;
  1414.     DWORD       dwDuration;
  1415. } TPacketGCMove;
  1416.  
  1417. // 소유권
  1418. typedef struct packet_ownership
  1419. {
  1420.     BYTE        bHeader;
  1421.     DWORD       dwOwnerVID;
  1422.     DWORD       dwVictimVID;
  1423. } TPacketGCOwnership;
  1424.  
  1425. // 위치 동기화 패킷의 bCount 만큼 붙는 단위
  1426. typedef struct packet_sync_position_element
  1427. {
  1428.     DWORD   dwVID;
  1429.     long    lX;
  1430.     long    lY;
  1431. } TPacketGCSyncPositionElement;
  1432.  
  1433. // 위치 동기화
  1434. typedef struct packet_sync_position // 가변 패킷
  1435. {
  1436.     BYTE    bHeader;
  1437.     WORD    wSize;  // 개수 = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement)
  1438. } TPacketGCSyncPosition;
  1439.  
  1440. typedef struct packet_fly
  1441. {
  1442.     BYTE    bHeader;
  1443.     BYTE    bType;
  1444.     DWORD   dwStartVID;
  1445.     DWORD   dwEndVID;
  1446. } TPacketGCCreateFly;
  1447.  
  1448. typedef struct command_fly_targeting
  1449. {
  1450.     BYTE        bHeader;
  1451.     DWORD       dwTargetVID;
  1452.     long        x, y;
  1453. } TPacketCGFlyTargeting;
  1454.  
  1455. typedef struct packet_fly_targeting
  1456. {
  1457.     BYTE        bHeader;
  1458.     DWORD       dwShooterVID;
  1459.     DWORD       dwTargetVID;
  1460.     long        x, y;
  1461. } TPacketGCFlyTargeting;
  1462.  
  1463. typedef struct packet_shoot
  1464. {
  1465.     BYTE        bHeader;
  1466.     BYTE        bType;
  1467. } TPacketCGShoot;
  1468.  
  1469. typedef struct packet_duel_start
  1470. {
  1471.     BYTE    header;
  1472.     WORD    wSize;  // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4
  1473. } TPacketGCDuelStart;
  1474.  
  1475. enum EPVPModes
  1476. {
  1477.     PVP_MODE_NONE,
  1478.     PVP_MODE_AGREE,
  1479.     PVP_MODE_FIGHT,
  1480.     PVP_MODE_REVENGE
  1481. };
  1482.  
  1483. typedef struct packet_pvp
  1484. {
  1485.     BYTE        bHeader;
  1486.     DWORD       dwVIDSrc;
  1487.     DWORD       dwVIDDst;
  1488.     BYTE        bMode;  // 0 이면 끔, 1이면 켬
  1489. } TPacketGCPVP;
  1490.  
  1491. typedef struct command_use_skill
  1492. {
  1493.     BYTE    bHeader;
  1494.     DWORD   dwVnum;
  1495.     DWORD   dwVID;
  1496. } TPacketCGUseSkill;
  1497.  
  1498. typedef struct command_target
  1499. {
  1500.     BYTE    header;
  1501.     DWORD   dwVID;
  1502. } TPacketCGTarget;
  1503.  
  1504. typedef struct packet_target
  1505. {
  1506.     BYTE    header;
  1507.     DWORD   dwVID;
  1508.     BYTE    bHPPercent;
  1509. } TPacketGCTarget;
  1510.  
  1511. typedef struct packet_warp
  1512. {
  1513.     BYTE    bHeader;
  1514.     long    lX;
  1515.     long    lY;
  1516.     long    lAddr;
  1517.     WORD    wPort;
  1518. } TPacketGCWarp;
  1519.  
  1520. typedef struct command_warp
  1521. {
  1522.     BYTE    bHeader;
  1523. } TPacketCGWarp;
  1524.  
  1525. struct packet_quest_info
  1526. {
  1527.     BYTE header;
  1528.     WORD size;
  1529.     WORD index;
  1530.     BYTE flag;
  1531. };
  1532.  
  1533. enum
  1534. {
  1535.     MESSENGER_SUBHEADER_GC_LIST,
  1536.     MESSENGER_SUBHEADER_GC_LOGIN,
  1537.     MESSENGER_SUBHEADER_GC_LOGOUT,
  1538.     MESSENGER_SUBHEADER_GC_INVITE,
  1539.     MESSENGER_SUBHEADER_GC_MOBILE
  1540. };
  1541.  
  1542. typedef struct packet_messenger
  1543. {
  1544.     BYTE header;
  1545.     WORD size;
  1546.     BYTE subheader;
  1547. } TPacketGCMessenger;
  1548.  
  1549. typedef struct packet_messenger_guild_list
  1550. {
  1551.     BYTE connected;
  1552.     BYTE length;
  1553.     //char login[LOGIN_MAX_LEN+1];
  1554. } TPacketGCMessengerGuildList;
  1555.  
  1556. typedef struct packet_messenger_guild_login
  1557. {
  1558.     BYTE length;
  1559.     //char login[LOGIN_MAX_LEN+1];
  1560. } TPacketGCMessengerGuildLogin;
  1561.  
  1562. typedef struct packet_messenger_guild_logout
  1563. {
  1564.     BYTE length;
  1565.  
  1566.     //char login[LOGIN_MAX_LEN+1];
  1567. } TPacketGCMessengerGuildLogout;
  1568.  
  1569. typedef struct packet_messenger_list_offline
  1570. {
  1571.     BYTE connected; // always 0
  1572.     BYTE length;
  1573. } TPacketGCMessengerListOffline;
  1574.  
  1575. typedef struct packet_messenger_list_online
  1576. {
  1577.     BYTE connected; // always 1
  1578.     BYTE length;
  1579. } TPacketGCMessengerListOnline;
  1580.  
  1581. enum
  1582. {
  1583.     MESSENGER_SUBHEADER_CG_ADD_BY_VID,
  1584.     MESSENGER_SUBHEADER_CG_ADD_BY_NAME,
  1585.     MESSENGER_SUBHEADER_CG_REMOVE,
  1586.     MESSENGER_SUBHEADER_CG_INVITE_ANSWER,
  1587. };
  1588.  
  1589. typedef struct command_messenger
  1590. {
  1591.     BYTE header;
  1592.     BYTE subheader;
  1593. } TPacketCGMessenger;
  1594.  
  1595. typedef struct command_messenger_add_by_vid
  1596. {
  1597.     DWORD vid;
  1598. } TPacketCGMessengerAddByVID;
  1599.  
  1600. typedef struct command_messenger_add_by_name
  1601. {
  1602.     BYTE length;
  1603.     //char login[LOGIN_MAX_LEN+1];
  1604. } TPacketCGMessengerAddByName;
  1605.  
  1606. typedef struct command_messenger_remove
  1607. {
  1608.     char login[LOGIN_MAX_LEN+1];
  1609.     //DWORD account;
  1610. } TPacketCGMessengerRemove;
  1611.  
  1612. typedef struct command_safebox_checkout
  1613. {
  1614.     BYTE    bHeader;
  1615.     BYTE    bSafePos;
  1616.     TItemPos    ItemPos;
  1617. } TPacketCGSafeboxCheckout;
  1618.  
  1619. typedef struct command_safebox_checkin
  1620. {
  1621.     BYTE    bHeader;
  1622.     BYTE    bSafePos;
  1623.     TItemPos    ItemPos;
  1624. } TPacketCGSafeboxCheckin;
  1625.  
  1626. ///////////////////////////////////////////////////////////////////////////////////
  1627. // Party
  1628.  
  1629. typedef struct command_party_parameter
  1630. {
  1631.     BYTE    bHeader;
  1632.     BYTE    bDistributeMode;
  1633. } TPacketCGPartyParameter;
  1634.  
  1635. typedef struct paryt_parameter
  1636. {
  1637.     BYTE    bHeader;
  1638.     BYTE    bDistributeMode;
  1639. } TPacketGCPartyParameter;
  1640.  
  1641. typedef struct packet_party_add
  1642. {
  1643.     BYTE    header;
  1644.     DWORD   pid;
  1645.     char    name[CHARACTER_NAME_MAX_LEN+1];
  1646. } TPacketGCPartyAdd;
  1647.  
  1648. typedef struct command_party_invite
  1649. {
  1650.     BYTE    header;
  1651.     DWORD   vid;
  1652. } TPacketCGPartyInvite;
  1653.  
  1654. typedef struct packet_party_invite
  1655. {
  1656.     BYTE    header;
  1657.     DWORD   leader_vid;
  1658. } TPacketGCPartyInvite;
  1659.  
  1660. typedef struct command_party_invite_answer
  1661. {
  1662.     BYTE    header;
  1663.     DWORD   leader_vid;
  1664.     BYTE    accept;
  1665. } TPacketCGPartyInviteAnswer;
  1666.  
  1667. typedef struct packet_party_update
  1668. {
  1669.     BYTE    header;
  1670.     DWORD   pid;
  1671.     BYTE    role;
  1672.     BYTE    percent_hp;
  1673.     short   affects[7];
  1674. } TPacketGCPartyUpdate;
  1675.  
  1676. typedef struct packet_party_remove
  1677. {
  1678.     BYTE header;
  1679.     DWORD pid;
  1680. } TPacketGCPartyRemove;
  1681.  
  1682. typedef struct packet_party_link
  1683. {
  1684.     BYTE header;
  1685.     DWORD pid;
  1686.     DWORD vid;
  1687. } TPacketGCPartyLink;
  1688.  
  1689. typedef struct packet_party_unlink
  1690. {
  1691.     BYTE header;
  1692.     DWORD pid;
  1693.     DWORD vid;
  1694. } TPacketGCPartyUnlink;
  1695.  
  1696. typedef struct command_party_remove
  1697. {
  1698.     BYTE header;
  1699.     DWORD pid;
  1700. } TPacketCGPartyRemove;
  1701.  
  1702. typedef struct command_party_set_state
  1703. {
  1704.     BYTE header;
  1705.     DWORD pid;
  1706.     BYTE byRole;
  1707.     BYTE flag;
  1708. } TPacketCGPartySetState;
  1709.  
  1710. enum
  1711. {
  1712.     PARTY_SKILL_HEAL = 1,
  1713.     PARTY_SKILL_WARP = 2
  1714. };
  1715.  
  1716. typedef struct command_party_use_skill
  1717. {
  1718.     BYTE header;
  1719.     BYTE bySkillIndex;
  1720.     DWORD vid;
  1721. } TPacketCGPartyUseSkill;
  1722.  
  1723. typedef struct packet_safebox_size
  1724. {
  1725.     BYTE bHeader;
  1726.     BYTE bSize;
  1727. } TPacketCGSafeboxSize;
  1728.  
  1729. typedef struct packet_safebox_wrong_password
  1730. {
  1731.     BYTE    bHeader;
  1732. } TPacketCGSafeboxWrongPassword;
  1733.  
  1734. typedef struct command_empire
  1735. {
  1736.     BYTE    bHeader;
  1737.     BYTE    bEmpire;
  1738. } TPacketCGEmpire;
  1739.  
  1740. typedef struct packet_empire
  1741. {
  1742.     BYTE    bHeader;
  1743.     BYTE    bEmpire;
  1744. } TPacketGCEmpire;
  1745.  
  1746. enum
  1747. {
  1748.     SAFEBOX_MONEY_STATE_SAVE,
  1749.     SAFEBOX_MONEY_STATE_WITHDRAW,
  1750. };
  1751.  
  1752. typedef struct command_safebox_money
  1753. {
  1754.     BYTE        bHeader;
  1755.     BYTE        bState;
  1756.     long    lMoney;
  1757. } TPacketCGSafeboxMoney;
  1758.  
  1759. typedef struct packet_safebox_money_change
  1760. {
  1761.     BYTE    bHeader;
  1762.     long    lMoney;
  1763. } TPacketGCSafeboxMoneyChange;
  1764.  
  1765. // Guild
  1766.  
  1767. enum
  1768. {
  1769.     GUILD_SUBHEADER_GC_LOGIN,
  1770.     GUILD_SUBHEADER_GC_LOGOUT,
  1771.     GUILD_SUBHEADER_GC_LIST,
  1772.     GUILD_SUBHEADER_GC_GRADE,
  1773.     GUILD_SUBHEADER_GC_ADD,
  1774.     GUILD_SUBHEADER_GC_REMOVE,
  1775.     GUILD_SUBHEADER_GC_GRADE_NAME,
  1776.     GUILD_SUBHEADER_GC_GRADE_AUTH,
  1777.     GUILD_SUBHEADER_GC_INFO,
  1778.     GUILD_SUBHEADER_GC_COMMENTS,
  1779.     GUILD_SUBHEADER_GC_CHANGE_EXP,
  1780.     GUILD_SUBHEADER_GC_CHANGE_MEMBER_GRADE,
  1781.     GUILD_SUBHEADER_GC_SKILL_INFO,
  1782.     GUILD_SUBHEADER_GC_CHANGE_MEMBER_GENERAL,
  1783.     GUILD_SUBHEADER_GC_GUILD_INVITE,
  1784.     GUILD_SUBHEADER_GC_WAR,
  1785.     GUILD_SUBHEADER_GC_GUILD_NAME,
  1786.     GUILD_SUBHEADER_GC_GUILD_WAR_LIST,
  1787.     GUILD_SUBHEADER_GC_GUILD_WAR_END_LIST,
  1788.     GUILD_SUBHEADER_GC_WAR_SCORE,
  1789.     GUILD_SUBHEADER_GC_MONEY_CHANGE,
  1790. };
  1791.  
  1792. enum GUILD_SUBHEADER_CG
  1793. {
  1794.     GUILD_SUBHEADER_CG_ADD_MEMBER,
  1795.     GUILD_SUBHEADER_CG_REMOVE_MEMBER,
  1796.     GUILD_SUBHEADER_CG_CHANGE_GRADE_NAME,
  1797.     GUILD_SUBHEADER_CG_CHANGE_GRADE_AUTHORITY,
  1798.     GUILD_SUBHEADER_CG_OFFER,
  1799.     GUILD_SUBHEADER_CG_POST_COMMENT,
  1800.     GUILD_SUBHEADER_CG_DELETE_COMMENT,    
  1801.     GUILD_SUBHEADER_CG_REFRESH_COMMENT,
  1802.     GUILD_SUBHEADER_CG_CHANGE_MEMBER_GRADE,
  1803.     GUILD_SUBHEADER_CG_USE_SKILL,
  1804.     GUILD_SUBHEADER_CG_CHANGE_MEMBER_GENERAL,
  1805.     GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER,
  1806.     GUILD_SUBHEADER_CG_CHARGE_GSP,
  1807.     GUILD_SUBHEADER_CG_DEPOSIT_MONEY,
  1808.     GUILD_SUBHEADER_CG_WITHDRAW_MONEY,
  1809. };
  1810.  
  1811. typedef struct packet_guild
  1812. {
  1813.     BYTE header;
  1814.     WORD size;
  1815.     BYTE subheader;
  1816. } TPacketGCGuild;
  1817.  
  1818. typedef struct packet_guild_name_t
  1819. {
  1820.     BYTE header;
  1821.     WORD size;
  1822.     BYTE subheader;
  1823.     DWORD   guildID;
  1824.     char    guildName[GUILD_NAME_MAX_LEN];
  1825. } TPacketGCGuildName;
  1826.  
  1827. typedef struct packet_guild_war
  1828. {
  1829.     DWORD   dwGuildSelf;
  1830.     DWORD   dwGuildOpp;
  1831.     BYTE    bType;
  1832.     BYTE    bWarState;
  1833. } TPacketGCGuildWar;
  1834.  
  1835. typedef struct command_guild
  1836. {
  1837.     BYTE header;
  1838.     BYTE subheader;
  1839. } TPacketCGGuild;
  1840.  
  1841. typedef struct command_guild_answer_make_guild
  1842. {
  1843.     BYTE header;
  1844.     char guild_name[GUILD_NAME_MAX_LEN+1];
  1845. } TPacketCGAnswerMakeGuild;
  1846.  
  1847. typedef struct command_guild_use_skill
  1848. {
  1849.     DWORD   dwVnum;
  1850.     DWORD   dwPID;
  1851. } TPacketCGGuildUseSkill;
  1852.  
  1853. // Guild Mark
  1854. typedef struct command_mark_login
  1855. {
  1856.     BYTE    header;
  1857.     DWORD   handle;
  1858.     DWORD   random_key;
  1859. } TPacketCGMarkLogin;
  1860.  
  1861. typedef struct command_mark_upload
  1862. {
  1863.     BYTE    header;
  1864.     DWORD   gid;
  1865.     BYTE    image[16*12*4];
  1866. } TPacketCGMarkUpload;
  1867.  
  1868. typedef struct command_mark_idxlist
  1869. {
  1870.     BYTE    header;
  1871. } TPacketCGMarkIDXList;
  1872.  
  1873. typedef struct command_mark_crclist
  1874. {
  1875.     BYTE    header;
  1876.     BYTE    imgIdx;
  1877.     DWORD   crclist[80];
  1878. } TPacketCGMarkCRCList;
  1879.  
  1880. typedef struct packet_mark_idxlist
  1881. {
  1882.     BYTE    header;
  1883.     DWORD   bufSize;
  1884.     WORD    count;
  1885.     //뒤에 size * (WORD + WORD)만큼 데이터 붙음
  1886. } TPacketGCMarkIDXList;
  1887.  
  1888. typedef struct packet_mark_block
  1889. {
  1890.     BYTE    header;
  1891.     DWORD   bufSize;
  1892.     BYTE    imgIdx;
  1893.     DWORD   count;
  1894.     // 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
  1895. } TPacketGCMarkBlock;
  1896.  
  1897. typedef struct command_symbol_upload
  1898. {
  1899.     BYTE    header;
  1900.     WORD    size;
  1901.     DWORD   guild_id;
  1902. } TPacketCGGuildSymbolUpload;
  1903.  
  1904. typedef struct command_symbol_crc
  1905. {
  1906.     BYTE header;
  1907.     DWORD guild_id;
  1908.     DWORD crc;
  1909.     DWORD size;
  1910. } TPacketCGSymbolCRC;
  1911.  
  1912. typedef struct packet_symbol_data
  1913. {
  1914.     BYTE header;
  1915.     WORD size;
  1916.     DWORD guild_id;
  1917. } TPacketGCGuildSymbolData;
  1918.  
  1919. // Fishing
  1920.  
  1921. typedef struct command_fishing
  1922. {
  1923.     BYTE header;
  1924.     BYTE dir;
  1925. } TPacketCGFishing;
  1926.  
  1927. typedef struct packet_fishing
  1928. {
  1929.     BYTE header;
  1930.     BYTE subheader;
  1931.     DWORD info;
  1932.     BYTE dir;
  1933. } TPacketGCFishing;
  1934.  
  1935. enum
  1936. {
  1937.     FISHING_SUBHEADER_GC_START,
  1938.     FISHING_SUBHEADER_GC_STOP,
  1939.     FISHING_SUBHEADER_GC_REACT,
  1940.     FISHING_SUBHEADER_GC_SUCCESS,
  1941.     FISHING_SUBHEADER_GC_FAIL,
  1942.     FISHING_SUBHEADER_GC_FISH,
  1943. };
  1944.  
  1945. typedef struct command_give_item
  1946. {
  1947.     BYTE byHeader;
  1948.     DWORD dwTargetVID;
  1949.     TItemPos ItemPos;
  1950.     BYTE byItemCount;
  1951. } TPacketCGGiveItem;
  1952.  
  1953. typedef struct SPacketCGHack
  1954. {
  1955.     BYTE    bHeader;
  1956.     char    szBuf[255 + 1];
  1957. } TPacketCGHack;
  1958.  
  1959. // SubHeader - Dungeon
  1960. enum
  1961. {
  1962.     DUNGEON_SUBHEADER_GC_TIME_ATTACK_START = 0,
  1963.     DUNGEON_SUBHEADER_GC_DESTINATION_POSITION = 1,
  1964. };
  1965.  
  1966. typedef struct packet_dungeon
  1967. {
  1968.     BYTE bHeader;
  1969.     WORD size;
  1970.     BYTE subheader;
  1971. } TPacketGCDungeon;
  1972.  
  1973. typedef struct packet_dungeon_dest_position
  1974. {
  1975.     long x;
  1976.     long y;
  1977. } TPacketGCDungeonDestPosition;
  1978.  
  1979. typedef struct SPacketGCShopSign
  1980. {
  1981.     BYTE    bHeader;
  1982.     DWORD   dwVID;
  1983.     char    szSign[SHOP_SIGN_MAX_LEN + 1];
  1984. } TPacketGCShopSign;
  1985.  
  1986. typedef struct SPacketCGMyShop
  1987. {
  1988.     BYTE    bHeader;
  1989.     char    szSign[SHOP_SIGN_MAX_LEN + 1];
  1990.     BYTE    bCount;
  1991. } TPacketCGMyShop;
  1992.  
  1993. typedef struct TPacketCGMyOfflineShop
  1994. {
  1995.     BYTE    bHeader;
  1996.     char    szSign[SHOP_SIGN_MAX_LEN + 1];
  1997.     BYTE    bCount;
  1998.     BYTE    bTime;
  1999. } TPacketCGMyOfflineShop;
  2000.  
  2001. typedef struct SPacketGCTime
  2002. {
  2003.     BYTE    bHeader;
  2004.     time_t  time;
  2005. } TPacketGCTime;
  2006.  
  2007. enum
  2008. {
  2009.     WALKMODE_RUN,
  2010.     WALKMODE_WALK,
  2011. };
  2012.  
  2013. typedef struct SPacketGCWalkMode
  2014. {
  2015.     BYTE    header;
  2016.     DWORD   vid;
  2017.     BYTE    mode;
  2018. } TPacketGCWalkMode;
  2019.  
  2020. typedef struct SPacketGCChangeSkillGroup
  2021. {
  2022.     BYTE        header;
  2023.     BYTE        skill_group;
  2024. } TPacketGCChangeSkillGroup;
  2025.  
  2026. typedef struct SPacketCGRefine
  2027. {
  2028.     BYTE    header;
  2029.     BYTE    pos;
  2030.     BYTE    type;
  2031. } TPacketCGRefine;
  2032.  
  2033. typedef struct SPacketCGRequestRefineInfo
  2034. {
  2035.     BYTE    header;
  2036.     BYTE    pos;
  2037. } TPacketCGRequestRefineInfo;
  2038.  
  2039. typedef struct SPacketGCRefineInformaion
  2040. {
  2041.     BYTE    header;
  2042.     BYTE    type;
  2043.     BYTE    pos;
  2044.     DWORD   src_vnum;
  2045.     DWORD   result_vnum;
  2046.     BYTE    material_count;
  2047.     int     cost; // 소요 비용
  2048.     int     prob; // 확률
  2049.     TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
  2050. } TPacketGCRefineInformation;
  2051.  
  2052. struct TNPCPosition
  2053. {
  2054.     BYTE bType;
  2055.     char name[CHARACTER_NAME_MAX_LEN+1];
  2056.     long x;
  2057.     long y;
  2058. };
  2059.  
  2060. typedef struct SPacketGCNPCPosition
  2061. {
  2062.     BYTE header;
  2063.     WORD size;
  2064.     WORD count;
  2065.  
  2066.     // array of TNPCPosition
  2067. } TPacketGCNPCPosition;
  2068.  
  2069. typedef struct SPacketGCSpecialEffect
  2070. {
  2071.     BYTE header;
  2072.     BYTE type;
  2073.     DWORD vid;
  2074. } TPacketGCSpecialEffect;
  2075.  
  2076. typedef struct SPacketCGChangeName
  2077. {
  2078.     BYTE header;
  2079.     BYTE index;
  2080.     char name[CHARACTER_NAME_MAX_LEN+1];
  2081. } TPacketCGChangeName;
  2082.  
  2083. typedef struct SPacketGCChangeName
  2084. {
  2085.     BYTE header;
  2086.     DWORD pid;
  2087.     char name[CHARACTER_NAME_MAX_LEN+1];
  2088. } TPacketGCChangeName;
  2089.  
  2090.  
  2091. typedef struct command_client_version
  2092. {
  2093.     BYTE header;
  2094.     char filename[32+1];
  2095.     char timestamp[32+1];
  2096. } TPacketCGClientVersion;
  2097.  
  2098. typedef struct command_client_version2
  2099. {
  2100.     BYTE header;
  2101.     char filename[32+1];
  2102.     char timestamp[32+1];
  2103. } TPacketCGClientVersion2;
  2104.  
  2105. typedef struct packet_channel
  2106. {
  2107.     BYTE header;
  2108.     BYTE channel;
  2109. } TPacketGCChannel;
  2110.  
  2111. typedef struct pakcet_view_equip
  2112. {
  2113.     BYTE  header;
  2114.     DWORD vid;
  2115.     struct {
  2116.         DWORD   vnum;
  2117.         BYTE    count;
  2118.         long    alSockets[ITEM_SOCKET_MAX_NUM];
  2119.         TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  2120.     } equips[WEAR_MAX_NUM];
  2121. } TPacketViewEquip;
  2122.  
  2123. typedef struct
  2124. {
  2125.     DWORD   dwID;
  2126.     long    x, y;
  2127.     long    width, height;
  2128.     DWORD   dwGuildID;
  2129. } TLandPacketElement;
  2130.  
  2131. typedef struct packet_land_list
  2132. {
  2133.     BYTE    header;
  2134.     WORD    size;
  2135. } TPacketGCLandList;
  2136.  
  2137. typedef struct
  2138. {
  2139.     BYTE    bHeader;
  2140.     long    lID;
  2141.     char    szName[32+1];
  2142.     DWORD   dwVID;
  2143.     BYTE    bType;
  2144. } TPacketGCTargetCreate;
  2145.  
  2146. typedef struct
  2147. {
  2148.     BYTE    bHeader;
  2149.     long    lID;
  2150.     long    lX, lY;
  2151. } TPacketGCTargetUpdate;
  2152.  
  2153. typedef struct
  2154. {
  2155.     BYTE    bHeader;
  2156.     long    lID;
  2157. } TPacketGCTargetDelete;
  2158.  
  2159. typedef struct
  2160. {
  2161.     BYTE        bHeader;
  2162.     TPacketAffectElement elem;
  2163. } TPacketGCAffectAdd;
  2164.  
  2165. typedef struct
  2166. {
  2167.     BYTE    bHeader;
  2168.     DWORD   dwType;
  2169.     BYTE    bApplyOn;
  2170. } TPacketGCAffectRemove;
  2171.  
  2172. typedef struct packet_lover_info
  2173. {
  2174.     BYTE header;
  2175.     char name[CHARACTER_NAME_MAX_LEN + 1];
  2176.     BYTE love_point;
  2177. } TPacketGCLoverInfo;
  2178.  
  2179. typedef struct packet_love_point_update
  2180. {
  2181.     BYTE header;
  2182.     BYTE love_point;
  2183. } TPacketGCLovePointUpdate;
  2184.  
  2185. // MINING
  2186. typedef struct packet_dig_motion
  2187. {
  2188.     BYTE header;
  2189.     DWORD vid;
  2190.     DWORD target_vid;
  2191.     BYTE count;
  2192. } TPacketGCDigMotion;
  2193. // END_OF_MINING
  2194.  
  2195. // SCRIPT_SELECT_ITEM
  2196. typedef struct command_script_select_item
  2197. {
  2198.     BYTE header;
  2199.     DWORD selection;
  2200. } TPacketCGScriptSelectItem;
  2201. // END_OF_SCRIPT_SELECT_ITEM
  2202.  
  2203. typedef struct packet_damage_info
  2204. {
  2205.     BYTE header;
  2206.     DWORD dwVID;
  2207.     BYTE flag;
  2208.     int damage;
  2209. } TPacketGCDamageInfo;
  2210.  
  2211. enum
  2212. {
  2213.     RUNUP_MATRIX_ANSWER_MAX_LEN = 4,
  2214.     RUNUP_MATRIX_QUIZ_MAX_LEN = 8 ,
  2215.    
  2216. };
  2217.  
  2218. typedef struct packet_runup_matrix_quiz
  2219. {
  2220.     BYTE    bHeader;
  2221.     char    szQuiz[RUNUP_MATRIX_QUIZ_MAX_LEN + 1];
  2222. } TPacketGCRunupMatrixQuiz;
  2223.  
  2224. typedef struct command_runup_matrix_answer
  2225. {
  2226.     BYTE    bHeader;
  2227.     char    szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
  2228. } TPacketCGRunupMatrixAnswer;
  2229.  
  2230. typedef struct packet_passpod
  2231. {
  2232.     BYTE    bHeader;
  2233.     char    szAnswer[8+1];
  2234. } TPacketCGPasspod;
  2235.  
  2236. typedef struct packet_passpod_failed
  2237. {
  2238.     BYTE    bHeader;
  2239.     char    szMessage[128];
  2240. } TPacketCGPasspodFailed;
  2241.  
  2242. typedef struct tag_GGSiege
  2243. {
  2244.     BYTE    bHeader;
  2245.     BYTE    bEmpire;
  2246.     BYTE    bTowerCount;
  2247. } TPacketGGSiege;
  2248.  
  2249. typedef struct SPacketGGMonarchTransfer
  2250. {
  2251.     BYTE    bHeader;
  2252.     DWORD   dwTargetPID;
  2253.     long    x;
  2254.     long    y;
  2255. } TPacketMonarchGGTransfer;
  2256.  
  2257. typedef struct SPacketGGPCBangUpdate
  2258. {
  2259.     BYTE bHeader;
  2260.     unsigned long ulPCBangID;
  2261. } TPacketPCBangUpdate;
  2262.  
  2263. typedef struct SPacketGGCheckAwakeness
  2264. {
  2265.     BYTE bHeader;
  2266. } TPacketGGCheckAwakeness;
  2267.  
  2268. typedef struct SPacketGCPanamaPack
  2269. {
  2270.     BYTE    bHeader;
  2271.     char    szPackName[256];
  2272.     BYTE    abIV[32];
  2273. } TPacketGCPanamaPack;
  2274.  
  2275. //TODO :  아우 짱나..가변패킷 사이즈 받아들일수 있게 패킷 핸들러 Refactoring 하자.
  2276. typedef struct SPacketGCHybridCryptKeys
  2277. {
  2278.     SPacketGCHybridCryptKeys() : m_pStream(NULL) {}
  2279.     ~SPacketGCHybridCryptKeys()
  2280.     {
  2281.         //GCC 에선 NULL delete 해도 괜찮나? 일단 안전하게 NULL 체크 하자. ( 근데 이거 C++ 표준아니었나 --a )
  2282.         if( m_pStream )
  2283.         {
  2284.             delete[] m_pStream;
  2285.             m_pStream = NULL;
  2286.         }
  2287.     }
  2288.    
  2289.     DWORD GetStreamSize()
  2290.     {
  2291.         return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + KeyStreamLen;
  2292.     }
  2293.  
  2294.     BYTE* GetStreamData()
  2295.     {
  2296.         if( m_pStream )
  2297.             delete[] m_pStream;
  2298.  
  2299.         uDynamicPacketSize = (WORD)GetStreamSize();
  2300.        
  2301.         m_pStream = new BYTE[ uDynamicPacketSize ];
  2302.  
  2303.         memcpy( m_pStream, &bHeader, 1 );
  2304.         memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2305.         memcpy( m_pStream+3, &KeyStreamLen, 4 );
  2306.  
  2307.         if( KeyStreamLen > 0 )
  2308.             memcpy( m_pStream+7, pDataKeyStream, KeyStreamLen );
  2309.  
  2310.         return m_pStream;
  2311.     }
  2312.  
  2313.     BYTE    bHeader;
  2314.     WORD    uDynamicPacketSize; // 빌어먹을 클라  DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
  2315.     int     KeyStreamLen;
  2316.     BYTE*   pDataKeyStream;
  2317.  
  2318. private:
  2319.     BYTE* m_pStream;
  2320.  
  2321.  
  2322. } TPacketGCHybridCryptKeys;
  2323.  
  2324.  
  2325. typedef struct SPacketGCPackageSDB
  2326. {
  2327.     SPacketGCPackageSDB() : m_pDataSDBStream(NULL), m_pStream(NULL) {}
  2328.     ~SPacketGCPackageSDB()
  2329.     {
  2330.         if( m_pStream )
  2331.         {
  2332.             delete[] m_pStream;
  2333.             m_pStream = NULL;
  2334.         }
  2335.     }
  2336.    
  2337.     DWORD GetStreamSize()
  2338.     {
  2339.         return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + iStreamLen;
  2340.     }
  2341.  
  2342.     BYTE* GetStreamData()
  2343.     {
  2344.         if( m_pStream )
  2345.             delete[] m_pStream;
  2346.  
  2347.         uDynamicPacketSize =  GetStreamSize();
  2348.  
  2349.         m_pStream = new BYTE[ uDynamicPacketSize ];
  2350.  
  2351.         memcpy( m_pStream, &bHeader, 1 );
  2352.         memcpy( m_pStream+1, &uDynamicPacketSize, 2 );
  2353.         memcpy( m_pStream+3, &iStreamLen, 4 );
  2354.  
  2355.         if( iStreamLen > 0 )
  2356.             memcpy( m_pStream+7, m_pDataSDBStream, iStreamLen );
  2357.  
  2358.         return m_pStream;
  2359.     }
  2360.  
  2361.     BYTE    bHeader;
  2362.     WORD    uDynamicPacketSize; // 빌어먹을 클라  DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-;
  2363.     int     iStreamLen;
  2364.     BYTE*   m_pDataSDBStream;
  2365.  
  2366. private:
  2367.     BYTE* m_pStream;
  2368.  
  2369.  
  2370. } TPacketGCPackageSDB;
  2371.  
  2372. #ifdef _IMPROVED_PACKET_ENCRYPTION_
  2373. struct TPacketKeyAgreement
  2374. {
  2375.     static const int MAX_DATA_LEN = 256;
  2376.     BYTE bHeader;
  2377.     WORD wAgreedLength;
  2378.     WORD wDataLength;
  2379.     BYTE data[MAX_DATA_LEN];
  2380. };
  2381.  
  2382. struct TPacketKeyAgreementCompleted
  2383. {
  2384.     BYTE bHeader;
  2385.     BYTE data[3]; // dummy (not used)
  2386. };
  2387.  
  2388. #endif // _IMPROVED_PACKET_ENCRYPTION_
  2389.  
  2390. #define MAX_EFFECT_FILE_NAME 128
  2391. typedef struct SPacketGCSpecificEffect
  2392. {
  2393.     BYTE header;
  2394.     DWORD vid;
  2395.     char effect_file[MAX_EFFECT_FILE_NAME];
  2396. } TPacketGCSpecificEffect;
  2397.  
  2398. // 용혼석
  2399. enum EDragonSoulRefineWindowRefineType
  2400. {
  2401.     DragonSoulRefineWindow_UPGRADE,
  2402.     DragonSoulRefineWindow_IMPROVEMENT,
  2403.     DragonSoulRefineWindow_REFINE,
  2404. };
  2405.  
  2406. enum EPacketCGDragonSoulSubHeaderType
  2407. {
  2408.     DS_SUB_HEADER_OPEN,
  2409.     DS_SUB_HEADER_CLOSE,
  2410.     DS_SUB_HEADER_DO_REFINE_GRADE,
  2411.     DS_SUB_HEADER_DO_REFINE_STEP,
  2412.     DS_SUB_HEADER_DO_REFINE_STRENGTH,
  2413.     DS_SUB_HEADER_REFINE_FAIL,
  2414.     DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE,
  2415.     DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL,
  2416.     DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY,
  2417.     DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL,
  2418.     DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL,
  2419.     DS_SUB_HEADER_REFINE_SUCCEED,
  2420. };
  2421. typedef struct SPacketCGDragonSoulRefine
  2422. {
  2423.     SPacketCGDragonSoulRefine() : header (HEADER_CG_DRAGON_SOUL_REFINE)
  2424.     {}
  2425.     BYTE header;
  2426.     BYTE bSubType;
  2427.     TItemPos ItemGrid[DRAGON_SOUL_REFINE_GRID_SIZE];
  2428. } TPacketCGDragonSoulRefine;
  2429.  
  2430. typedef struct SPacketGCDragonSoulRefine
  2431. {
  2432.     SPacketGCDragonSoulRefine() : header(HEADER_GC_DRAGON_SOUL_REFINE)
  2433.     {}
  2434.     BYTE header;
  2435.     BYTE bSubType;
  2436.     TItemPos Pos;
  2437. } TPacketGCDragonSoulRefine;
  2438.  
  2439. typedef struct SPacketCGStateCheck
  2440. {
  2441.     BYTE header;
  2442.     unsigned long key; 
  2443.     unsigned long index;
  2444. } TPacketCGStateCheck;
  2445.  
  2446. typedef struct SPacketGCStateCheck
  2447. {
  2448.     BYTE header;
  2449.     unsigned long key;
  2450.     unsigned long index;
  2451.     unsigned char state;
  2452. } TPacketGCStateCheck;
  2453.  
  2454. #pragma pack()
  2455. #endif
Advertisement
Add Comment
Please, Sign In to add comment