daily pastebin goal
38%
SHARE
TWEET

Untitled

a guest Feb 18th, 2019 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top