Advertisement
Guest User

Untitled

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