Guest User

Untitled

a guest
Feb 9th, 2018
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.61 KB | None | 0 0
  1. #ifndef __INC_TABLES_H__
  2. #define __INC_TABLES_H__
  3.  
  4. #include "length.h"
  5.  
  6. typedef DWORD IDENT;
  7.  
  8. /**
  9. * @version 05/06/10 Bang2ni - Myshop Pricelist 관련 패킷 HEADER_XX_MYSHOP_PRICELIST_XXX 추가
  10. */
  11. enum
  12. {
  13. HEADER_GD_LOGIN = 1,
  14. HEADER_GD_LOGOUT = 2,
  15.  
  16. HEADER_GD_PLAYER_LOAD = 3,
  17. HEADER_GD_PLAYER_SAVE = 4,
  18. HEADER_GD_PLAYER_CREATE = 5,
  19. HEADER_GD_PLAYER_DELETE = 6,
  20.  
  21. HEADER_GD_LOGIN_KEY = 7,
  22. // 8 empty
  23. HEADER_GD_BOOT = 9,
  24. HEADER_GD_PLAYER_COUNT = 10,
  25. HEADER_GD_QUEST_SAVE = 11,
  26. HEADER_GD_SAFEBOX_LOAD = 12,
  27. HEADER_GD_SAFEBOX_SAVE = 13,
  28. HEADER_GD_SAFEBOX_CHANGE_SIZE = 14,
  29. HEADER_GD_EMPIRE_SELECT = 15,
  30.  
  31. HEADER_GD_SAFEBOX_CHANGE_PASSWORD = 16,
  32. HEADER_GD_SAFEBOX_CHANGE_PASSWORD_SECOND = 17, // Not really a packet, used internal
  33. HEADER_GD_DIRECT_ENTER = 18,
  34.  
  35. HEADER_GD_GUILD_SKILL_UPDATE = 19,
  36. HEADER_GD_GUILD_EXP_UPDATE = 20,
  37. HEADER_GD_GUILD_ADD_MEMBER = 21,
  38. HEADER_GD_GUILD_REMOVE_MEMBER = 22,
  39. HEADER_GD_GUILD_CHANGE_GRADE = 23,
  40. HEADER_GD_GUILD_CHANGE_MEMBER_DATA = 24,
  41. HEADER_GD_GUILD_DISBAND = 25,
  42. HEADER_GD_GUILD_WAR = 26,
  43. HEADER_GD_GUILD_WAR_SCORE = 27,
  44. HEADER_GD_GUILD_CREATE = 28,
  45.  
  46. HEADER_GD_ITEM_SAVE = 30,
  47. HEADER_GD_ITEM_DESTROY = 31,
  48.  
  49. HEADER_GD_ADD_AFFECT = 32,
  50. HEADER_GD_REMOVE_AFFECT = 33,
  51.  
  52. HEADER_GD_HIGHSCORE_REGISTER = 34,
  53. HEADER_GD_ITEM_FLUSH = 35,
  54.  
  55. HEADER_GD_PARTY_CREATE = 36,
  56. HEADER_GD_PARTY_DELETE = 37,
  57. HEADER_GD_PARTY_ADD = 38,
  58. HEADER_GD_PARTY_REMOVE = 39,
  59. HEADER_GD_PARTY_STATE_CHANGE = 40,
  60. HEADER_GD_PARTY_HEAL_USE = 41,
  61.  
  62. HEADER_GD_FLUSH_CACHE = 42,
  63. HEADER_GD_RELOAD_PROTO = 43,
  64.  
  65. HEADER_GD_CHANGE_NAME = 44,
  66. HEADER_GD_SMS = 45,
  67.  
  68. HEADER_GD_GUILD_CHANGE_LADDER_POINT = 46,
  69. HEADER_GD_GUILD_USE_SKILL = 47,
  70.  
  71. HEADER_GD_REQUEST_EMPIRE_PRIV = 48,
  72. HEADER_GD_REQUEST_GUILD_PRIV = 49,
  73.  
  74. HEADER_GD_MONEY_LOG = 50,
  75.  
  76. HEADER_GD_GUILD_DEPOSIT_MONEY = 51,
  77. HEADER_GD_GUILD_WITHDRAW_MONEY = 52,
  78. HEADER_GD_GUILD_WITHDRAW_MONEY_GIVE_REPLY = 53,
  79.  
  80. HEADER_GD_REQUEST_CHARACTER_PRIV = 54,
  81.  
  82. HEADER_GD_SET_EVENT_FLAG = 55,
  83.  
  84. HEADER_GD_PARTY_SET_MEMBER_LEVEL = 56,
  85.  
  86. HEADER_GD_GUILD_WAR_BET = 57,
  87.  
  88. HEADER_GD_CREATE_OBJECT = 60,
  89. HEADER_GD_DELETE_OBJECT = 61,
  90. HEADER_GD_UPDATE_LAND = 62,
  91.  
  92. HEADER_GD_MARRIAGE_ADD = 70,
  93. HEADER_GD_MARRIAGE_UPDATE = 71,
  94. HEADER_GD_MARRIAGE_REMOVE = 72,
  95.  
  96. HEADER_GD_WEDDING_REQUEST = 73,
  97. HEADER_GD_WEDDING_READY = 74,
  98. HEADER_GD_WEDDING_END = 75,
  99.  
  100. HEADER_GD_AUTH_LOGIN = 100,
  101. HEADER_GD_LOGIN_BY_KEY = 101,
  102. HEADER_GD_BILLING_EXPIRE = 104,
  103. HEADER_GD_VCARD = 105,
  104. HEADER_GD_BILLING_CHECK = 106,
  105. HEADER_GD_MALL_LOAD = 107,
  106.  
  107. HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< 가격정보 갱신 요청
  108. HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< 가격정보 리스트 요청
  109.  
  110. HEADER_GD_BLOCK_CHAT = 110,
  111.  
  112. // PCBANG_IP_LIST_BY_AUTH
  113. HEADER_GD_PCBANG_REQUEST_IP_LIST = 111,
  114. HEADER_GD_PCBANG_CLEAR_IP_LIST = 112,
  115. HEADER_GD_PCBANG_INSERT_IP = 113,
  116. // END_OF_PCBANG_IP_LIST_BY_AUTH
  117.  
  118. HEADER_GD_HAMMER_OF_TOR = 114,
  119. HEADER_GD_RELOAD_ADMIN = 115, ///<운영자 정보 요청
  120. HEADER_GD_BREAK_MARRIAGE = 116, ///< 결혼 파기
  121. HEADER_GD_ELECT_MONARCH = 117, ///< 군주 투표
  122. HEADER_GD_CANDIDACY = 118, ///< 군주 등록
  123. HEADER_GD_ADD_MONARCH_MONEY = 119, ///< 군주 돈 증가
  124. HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< 군주 돈 감소
  125. HEADER_GD_COME_TO_VOTE = 121, ///< 표결
  126. HEADER_GD_RMCANDIDACY = 122, ///< 후보 제거 (운영자)
  127. HEADER_GD_SETMONARCH = 123, ///<군주설정 (운영자)
  128. HEADER_GD_RMMONARCH = 124, ///<군주삭제
  129. HEADER_GD_DEC_MONARCH_MONEY = 125,
  130.  
  131. HEADER_GD_CHANGE_MONARCH_LORD = 126,
  132. HEADER_GD_BLOCK_COUNTRY_IP = 127, // 광대역 IP-Block
  133. HEADER_GD_BLOCK_EXCEPTION = 128, // 광대역 IP-Block 예외
  134.  
  135. HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129,
  136.  
  137. HEADER_GD_REQ_SPARE_ITEM_ID_RANGE = 130,
  138.  
  139. HEADER_GD_UPDATE_HORSE_NAME = 131,
  140. HEADER_GD_REQ_HORSE_NAME = 132,
  141.  
  142. HEADER_GD_DC = 133, // Login Key를 지움
  143.  
  144. HEADER_GD_VALID_LOGOUT = 134,
  145.  
  146. // AUCTION
  147. #ifdef __AUCTION__
  148. HEADER_GD_GET_AUCTION_LIST = 135,
  149. HEADER_GD_COMMAND_AUCTION = 136,
  150. #endif
  151.  
  152. HEADER_GD_REQUEST_CHARGE_CASH = 137,
  153.  
  154. HEADER_GD_DELETE_AWARDID = 138, // delete gift notify icon
  155.  
  156. HEADER_GD_UPDATE_CHANNELSTATUS = 139,
  157. HEADER_GD_REQUEST_CHANNELSTATUS = 140,
  158.  
  159. HEADER_GD_SETUP = 0xff,
  160.  
  161. ///////////////////////////////////////////////
  162. HEADER_DG_NOTICE = 1,
  163.  
  164. HEADER_DG_LOGIN_SUCCESS = 30,
  165. HEADER_DG_LOGIN_NOT_EXIST = 31,
  166. HEADER_DG_LOGIN_WRONG_PASSWD = 33,
  167. HEADER_DG_LOGIN_ALREADY = 34,
  168.  
  169. HEADER_DG_PLAYER_LOAD_SUCCESS = 35,
  170. HEADER_DG_PLAYER_LOAD_FAILED = 36,
  171. HEADER_DG_PLAYER_CREATE_SUCCESS = 37,
  172. HEADER_DG_PLAYER_CREATE_ALREADY = 38,
  173. HEADER_DG_PLAYER_CREATE_FAILED = 39,
  174. HEADER_DG_PLAYER_DELETE_SUCCESS = 40,
  175. HEADER_DG_PLAYER_DELETE_FAILED = 41,
  176.  
  177. HEADER_DG_ITEM_LOAD = 42,
  178.  
  179. HEADER_DG_BOOT = 43,
  180. HEADER_DG_QUEST_LOAD = 44,
  181.  
  182. HEADER_DG_SAFEBOX_LOAD = 45,
  183. HEADER_DG_SAFEBOX_CHANGE_SIZE = 46,
  184. HEADER_DG_SAFEBOX_WRONG_PASSWORD = 47,
  185. HEADER_DG_SAFEBOX_CHANGE_PASSWORD_ANSWER = 48,
  186.  
  187. HEADER_DG_EMPIRE_SELECT = 49,
  188.  
  189. HEADER_DG_AFFECT_LOAD = 50,
  190. HEADER_DG_MALL_LOAD = 51,
  191.  
  192. HEADER_DG_DIRECT_ENTER = 55,
  193.  
  194. HEADER_DG_GUILD_SKILL_UPDATE = 56,
  195. HEADER_DG_GUILD_SKILL_RECHARGE = 57,
  196. HEADER_DG_GUILD_EXP_UPDATE = 58,
  197.  
  198. HEADER_DG_PARTY_CREATE = 59,
  199. HEADER_DG_PARTY_DELETE = 60,
  200. HEADER_DG_PARTY_ADD = 61,
  201. HEADER_DG_PARTY_REMOVE = 62,
  202. HEADER_DG_PARTY_STATE_CHANGE = 63,
  203. HEADER_DG_PARTY_HEAL_USE = 64,
  204. HEADER_DG_PARTY_SET_MEMBER_LEVEL = 65,
  205.  
  206. HEADER_DG_TIME = 90,
  207. HEADER_DG_ITEM_ID_RANGE = 91,
  208.  
  209. HEADER_DG_GUILD_ADD_MEMBER = 92,
  210. HEADER_DG_GUILD_REMOVE_MEMBER = 93,
  211. HEADER_DG_GUILD_CHANGE_GRADE = 94,
  212. HEADER_DG_GUILD_CHANGE_MEMBER_DATA = 95,
  213. HEADER_DG_GUILD_DISBAND = 96,
  214. HEADER_DG_GUILD_WAR = 97,
  215. HEADER_DG_GUILD_WAR_SCORE = 98,
  216. HEADER_DG_GUILD_TIME_UPDATE = 99,
  217. HEADER_DG_GUILD_LOAD = 100,
  218. HEADER_DG_GUILD_LADDER = 101,
  219. HEADER_DG_GUILD_SKILL_USABLE_CHANGE = 102,
  220. HEADER_DG_GUILD_MONEY_CHANGE = 103,
  221. HEADER_DG_GUILD_WITHDRAW_MONEY_GIVE = 104,
  222.  
  223. HEADER_DG_SET_EVENT_FLAG = 105,
  224.  
  225. HEADER_DG_GUILD_WAR_RESERVE_ADD = 106,
  226. HEADER_DG_GUILD_WAR_RESERVE_DEL = 107,
  227. HEADER_DG_GUILD_WAR_BET = 108,
  228.  
  229. HEADER_DG_RELOAD_PROTO = 120,
  230. HEADER_DG_CHANGE_NAME = 121,
  231.  
  232. HEADER_DG_AUTH_LOGIN = 122,
  233.  
  234. HEADER_DG_CHANGE_EMPIRE_PRIV = 124,
  235. HEADER_DG_CHANGE_GUILD_PRIV = 125,
  236.  
  237. HEADER_DG_MONEY_LOG = 126,
  238.  
  239. HEADER_DG_CHANGE_CHARACTER_PRIV = 127,
  240.  
  241. HEADER_DG_BILLING_REPAIR = 128,
  242. HEADER_DG_BILLING_EXPIRE = 129,
  243. HEADER_DG_BILLING_LOGIN = 130,
  244. HEADER_DG_VCARD = 131,
  245. HEADER_DG_BILLING_CHECK = 132,
  246.  
  247. HEADER_DG_CREATE_OBJECT = 140,
  248. HEADER_DG_DELETE_OBJECT = 141,
  249. HEADER_DG_UPDATE_LAND = 142,
  250.  
  251. HEADER_DG_MARRIAGE_ADD = 150,
  252. HEADER_DG_MARRIAGE_UPDATE = 151,
  253. HEADER_DG_MARRIAGE_REMOVE = 152,
  254.  
  255. HEADER_DG_WEDDING_REQUEST = 153,
  256. HEADER_DG_WEDDING_READY = 154,
  257. HEADER_DG_WEDDING_START = 155,
  258. HEADER_DG_WEDDING_END = 156,
  259.  
  260. HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< 가격정보 리스트 응답
  261. HEADER_DG_RELOAD_ADMIN = 158, ///< 운영자 정보 리로드
  262. HEADER_DG_BREAK_MARRIAGE = 159, ///< 결혼 파기
  263. HEADER_DG_ELECT_MONARCH = 160, ///< 군주 투표
  264. HEADER_DG_CANDIDACY = 161, ///< 군주 등록
  265. HEADER_DG_ADD_MONARCH_MONEY = 162, ///< 군주 돈 증가
  266. HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< 군주 돈 감소
  267. HEADER_DG_COME_TO_VOTE = 164, ///< 표결
  268. HEADER_DG_RMCANDIDACY = 165, ///< 후보 제거 (운영자)
  269. HEADER_DG_SETMONARCH = 166, ///<군주설정 (운영자)
  270. HEADER_DG_RMMONARCH = 167, ///<군주삭제
  271. HEADER_DG_DEC_MONARCH_MONEY = 168,
  272.  
  273. HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169,
  274. HEADER_DG_UPDATE_MONARCH_INFO = 170,
  275. HEADER_DG_BLOCK_COUNTRY_IP = 171, // 광대역 IP-Block
  276. HEADER_DG_BLOCK_EXCEPTION = 172, // 광대역 IP-Block 예외 account
  277.  
  278. HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,
  279.  
  280. HEADER_DG_ACK_SPARE_ITEM_ID_RANGE = 174,
  281.  
  282. HEADER_DG_UPDATE_HORSE_NAME = 175,
  283. HEADER_DG_ACK_HORSE_NAME = 176,
  284.  
  285. HEADER_DG_NEED_LOGIN_LOG = 177,
  286. #ifdef __AUCTION__
  287. HEADER_DG_AUCTION_RESULT = 178,
  288. #endif
  289. HEADER_DG_RESULT_CHARGE_CASH = 179,
  290. HEADER_DG_ITEMAWARD_INFORMER = 180, //gift notify
  291. HEADER_DG_RESPOND_CHANNELSTATUS = 181,
  292.  
  293. HEADER_DG_MAP_LOCATIONS = 0xfe,
  294. HEADER_DG_P2P = 0xff,
  295.  
  296. HEADER_GP_CONFIRM_PASSPOD = 1,
  297. HEADER_PG_CONFIRM_PASSPOD = 2,
  298.  
  299. };
  300.  
  301. enum E_PASSPOD
  302. {
  303. E_PASSPOD_SUCCESS = 0,
  304. E_PASSPOD_FAILED_PASSPOD_ERROR,
  305. E_PASSPOD_FAILED_USER_NOT_FOUND,
  306. E_PASSPOD_FAILED_SYSTEM_NOT_FOUND,
  307. E_PASSPOD_FAILED_TOKEN_DISABLED,
  308. E_PASSPOD_FAILED_EMPTY,
  309. };
  310.  
  311.  
  312. typedef struct SRequestConfirmPasspod
  313. {
  314. int pid;
  315. char passpod[MAX_PASSPOD + 1];
  316. char login[LOGIN_MAX_LEN + 1];
  317.  
  318. } RequestConfirmPasspod;
  319.  
  320. typedef struct SResultConfirmPasspod
  321. {
  322. int pid;
  323. int ret_code;
  324. char login[LOGIN_MAX_LEN + 1];
  325. } ResultConfirmPasspod;
  326. /* ----------------------------------------------
  327. * table
  328. * ----------------------------------------------
  329. */
  330.  
  331. /* game Server -> DB Server */
  332. #pragma pack(1)
  333. enum ERequestChargeType
  334. {
  335. ERequestCharge_Cash = 0,
  336. ERequestCharge_Mileage,
  337. };
  338.  
  339. typedef struct SRequestChargeCash
  340. {
  341. DWORD dwAID; // id(primary key) - Account Table
  342. DWORD dwAmount;
  343. ERequestChargeType eChargeType;
  344.  
  345. } TRequestChargeCash;
  346.  
  347. typedef struct SSimplePlayer
  348. {
  349. DWORD dwID;
  350. char szName[CHARACTER_NAME_MAX_LEN + 1];
  351. BYTE byJob;
  352. BYTE byLevel;
  353. DWORD dwPlayMinutes;
  354. BYTE byST, byHT, byDX, byIQ;
  355. WORD wMainPart;
  356. BYTE bChangeName;
  357. WORD wHairPart;
  358. WORD wAccePart;
  359. BYTE bDummy[4];
  360. long x, y;
  361. long lAddr;
  362. WORD wPort;
  363. BYTE skill_group;
  364. } TSimplePlayer;
  365.  
  366. typedef struct SAccountTable
  367. {
  368. DWORD id;
  369. char login[LOGIN_MAX_LEN + 1];
  370. char passwd[PASSWD_MAX_LEN + 1];
  371. char social_id[SOCIAL_ID_MAX_LEN + 1];
  372. char status[ACCOUNT_STATUS_MAX_LEN + 1];
  373. BYTE bEmpire;
  374. TSimplePlayer players[PLAYER_PER_ACCOUNT];
  375. } TAccountTable;
  376.  
  377. typedef struct SPacketDGCreateSuccess
  378. {
  379. BYTE bAccountCharacterIndex;
  380. TSimplePlayer player;
  381. } TPacketDGCreateSuccess;
  382.  
  383. typedef struct TPlayerItemAttribute
  384. {
  385. BYTE bType;
  386. short sValue;
  387. } TPlayerItemAttribute;
  388.  
  389. typedef struct SPlayerItem
  390. {
  391. DWORD id;
  392. BYTE window;
  393. WORD pos;
  394. DWORD count;
  395.  
  396. DWORD vnum;
  397. long alSockets[ITEM_SOCKET_MAX_NUM]; // 소켓번호
  398.  
  399. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  400.  
  401. DWORD owner;
  402. } TPlayerItem;
  403.  
  404. typedef struct SPlayerItem2
  405. {
  406. BYTE bPos;
  407. BYTE bCount;
  408.  
  409. DWORD dwVnum;
  410. long alSockets[ITEM_SOCKET_MAX_NUM];
  411. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  412. DWORD dwPrice;
  413. } TPlayerItem2;
  414.  
  415. typedef struct SQuickslot
  416. {
  417. BYTE type;
  418. BYTE pos;
  419. } TQuickslot;
  420.  
  421. typedef struct SPlayerSkill
  422. {
  423. BYTE bMasterType;
  424. BYTE bLevel;
  425. time_t tNextRead;
  426. } TPlayerSkill;
  427.  
  428. struct THorseInfo
  429. {
  430. BYTE bLevel;
  431. BYTE bRiding;
  432. short sStamina;
  433. short sHealth;
  434. DWORD dwHorseHealthDropTime;
  435. };
  436.  
  437. typedef struct SPlayerTable
  438. {
  439. DWORD id;
  440.  
  441. char name[CHARACTER_NAME_MAX_LEN + 1];
  442. char ip[IP_ADDRESS_LENGTH + 1];
  443.  
  444. WORD job;
  445. BYTE voice;
  446.  
  447. BYTE level;
  448. BYTE level_step;
  449. short st, ht, dx, iq;
  450.  
  451. DWORD exp;
  452. long long gold;
  453.  
  454. BYTE dir;
  455. INT x, y, z;
  456. INT lMapIndex;
  457.  
  458. long lExitX, lExitY;
  459. long lExitMapIndex;
  460.  
  461. long hp;
  462. long sp;
  463.  
  464. short sRandomHP;
  465. short sRandomSP;
  466.  
  467. int playtime;
  468.  
  469. short stat_point;
  470. short skill_point;
  471. short sub_skill_point;
  472. short horse_skill_point;
  473.  
  474. TPlayerSkill skills[SKILL_MAX_NUM];
  475.  
  476. TQuickslot quickslot[QUICKSLOT_MAX_NUM];
  477.  
  478. BYTE part_base;
  479. WORD parts[PART_MAX_NUM];
  480.  
  481. short stamina;
  482.  
  483. BYTE skill_group;
  484. long lAlignment;
  485. char szMobile[MOBILE_MAX_LEN + 1];
  486.  
  487. short stat_reset_count;
  488.  
  489. THorseInfo horse;
  490.  
  491. DWORD logoff_interval;
  492.  
  493. int aiPremiumTimes[PREMIUM_MAX_NUM];
  494. } TPlayerTable;
  495.  
  496. typedef struct SMobSkillLevel
  497. {
  498. DWORD dwVnum;
  499. BYTE bLevel;
  500. } TMobSkillLevel;
  501.  
  502. typedef struct SEntityTable
  503. {
  504. DWORD dwVnum;
  505. } TEntityTable;
  506.  
  507. typedef struct SMobTable : public SEntityTable
  508. {
  509. char szName[CHARACTER_NAME_MAX_LEN + 1];
  510. char szLocaleName[CHARACTER_NAME_MAX_LEN + 1];
  511.  
  512. BYTE bType; // Monster, NPC
  513. BYTE bRank; // PAWN, KNIGHT, KING
  514. BYTE bBattleType; // MELEE, etc..
  515. BYTE bLevel; // Level
  516. BYTE bSize;
  517.  
  518. DWORD dwGoldMin;
  519. DWORD dwGoldMax;
  520. DWORD dwExp;
  521. DWORD dwMaxHP;
  522. BYTE bRegenCycle;
  523. BYTE bRegenPercent;
  524. WORD wDef;
  525.  
  526. DWORD dwAIFlag;
  527. DWORD dwRaceFlag;
  528. DWORD dwImmuneFlag;
  529.  
  530. BYTE bStr, bDex, bCon, bInt;
  531. DWORD dwDamageRange[2];
  532.  
  533. short sAttackSpeed;
  534. short sMovingSpeed;
  535. BYTE bAggresiveHPPct;
  536. WORD wAggressiveSight;
  537. WORD wAttackRange;
  538.  
  539. char cEnchants[MOB_ENCHANTS_MAX_NUM];
  540. char cResists[MOB_RESISTS_MAX_NUM];
  541.  
  542. DWORD dwResurrectionVnum;
  543. DWORD dwDropItemVnum;
  544.  
  545. BYTE bMountCapacity;
  546. BYTE bOnClickType;
  547.  
  548. BYTE bEmpire;
  549. char szFolder[64 + 1];
  550.  
  551. float fDamMultiply;
  552.  
  553. DWORD dwSummonVnum;
  554. DWORD dwDrainSP;
  555. DWORD dwMobColor;
  556. DWORD dwPolymorphItemVnum;
  557.  
  558. TMobSkillLevel Skills[MOB_SKILL_MAX_NUM];
  559.  
  560. BYTE bBerserkPoint;
  561. BYTE bStoneSkinPoint;
  562. BYTE bGodSpeedPoint;
  563. BYTE bDeathBlowPoint;
  564. BYTE bRevivePoint;
  565. } TMobTable;
  566.  
  567. typedef struct SSkillTable
  568. {
  569. DWORD dwVnum;
  570. char szName[32 + 1];
  571. BYTE bType;
  572. BYTE bMaxLevel;
  573. DWORD dwSplashRange;
  574.  
  575. char szPointOn[64];
  576. char szPointPoly[100 + 1];
  577. char szSPCostPoly[100 + 1];
  578. char szDurationPoly[100 + 1];
  579. char szDurationSPCostPoly[100 + 1];
  580. char szCooldownPoly[100 + 1];
  581. char szMasterBonusPoly[100 + 1];
  582. //char szAttackGradePoly[100 + 1];
  583. char szGrandMasterAddSPCostPoly[100 + 1];
  584. DWORD dwFlag;
  585. DWORD dwAffectFlag;
  586.  
  587. // Data for secondary skill
  588. char szPointOn2[64];
  589. char szPointPoly2[100 + 1];
  590. char szDurationPoly2[100 + 1];
  591. DWORD dwAffectFlag2;
  592.  
  593. // Data for grand master point
  594. char szPointOn3[64];
  595. char szPointPoly3[100 + 1];
  596. char szDurationPoly3[100 + 1];
  597.  
  598. BYTE bLevelStep;
  599. BYTE bLevelLimit;
  600. DWORD preSkillVnum;
  601. BYTE preSkillLevel;
  602.  
  603. long lMaxHit;
  604. char szSplashAroundDamageAdjustPoly[100 + 1];
  605.  
  606. BYTE bSkillAttrType;
  607.  
  608. DWORD dwTargetRange;
  609. } TSkillTable;
  610.  
  611. typedef struct SShopItemTable
  612. {
  613. DWORD vnum;
  614. BYTE count;
  615.  
  616. TItemPos pos; // PC 상점에만 이용
  617. long long price; // PC, shop_table_ex.txt 상점에만 이용
  618. BYTE display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치.
  619. } TShopItemTable;
  620.  
  621. typedef struct SSOfflineShopItemTable
  622. {
  623. BYTE bPos;
  624. BYTE bDisplayPos;
  625. long lPrice;
  626. } TOfflineShopItemTable;
  627.  
  628. typedef struct SShopTable
  629. {
  630. DWORD dwVnum;
  631. DWORD dwNPCVnum;
  632.  
  633. BYTE byItemCount;
  634. TShopItemTable items[SHOP_HOST_ITEM_MAX_NUM];
  635. } TShopTable;
  636.  
  637. #define QUEST_NAME_MAX_LEN 32
  638. #define QUEST_STATE_MAX_LEN 64
  639.  
  640. typedef struct SQuestTable
  641. {
  642. DWORD dwPID;
  643. char szName[QUEST_NAME_MAX_LEN + 1];
  644. char szState[QUEST_STATE_MAX_LEN + 1];
  645. long lValue;
  646. } TQuestTable;
  647.  
  648. typedef struct SItemLimit
  649. {
  650. BYTE bType;
  651. long lValue;
  652. } TItemLimit;
  653.  
  654. typedef struct SItemApply
  655. {
  656. BYTE bType;
  657. long lValue;
  658. } TItemApply;
  659.  
  660. typedef struct SItemTable : public SEntityTable
  661. {
  662. DWORD dwVnumRange;
  663. char szName[ITEM_NAME_MAX_LEN + 1];
  664. char szLocaleName[ITEM_NAME_MAX_LEN + 1];
  665. BYTE bType;
  666. BYTE bSubType;
  667.  
  668. BYTE bWeight;
  669. BYTE bSize;
  670.  
  671. DWORD dwAntiFlags;
  672. DWORD dwFlags;
  673. DWORD dwWearFlags;
  674. DWORD dwImmuneFlag;
  675.  
  676. long long dwGold;
  677. long long dwShopBuyPrice;
  678.  
  679. TItemLimit aLimits[ITEM_LIMIT_MAX_NUM];
  680. TItemApply aApplies[ITEM_APPLY_MAX_NUM];
  681. long alValues[ITEM_VALUES_MAX_NUM];
  682. long alSockets[ITEM_SOCKET_MAX_NUM];
  683. DWORD dwRefinedVnum;
  684. WORD wRefineSet;
  685. BYTE bAlterToMagicItemPct;
  686. BYTE bSpecular;
  687. BYTE bGainSocketPct;
  688.  
  689. short int sAddonType; // 기본 속성
  690.  
  691. // 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데,
  692. // 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠.
  693. char cLimitRealTimeFirstUseIndex; // 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1)
  694. char cLimitTimerBasedOnWearIndex; // 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1)
  695.  
  696. } TItemTable;
  697.  
  698. struct TItemAttrTable
  699. {
  700. TItemAttrTable() :
  701. dwApplyIndex(0),
  702. dwProb(0)
  703. {
  704. szApply[0] = 0;
  705. memset(&lValues, 0, sizeof(lValues));
  706. memset(&bMaxLevelBySet, 0, sizeof(bMaxLevelBySet));
  707. }
  708.  
  709. char szApply[APPLY_NAME_MAX_LEN + 1];
  710. DWORD dwApplyIndex;
  711. DWORD dwProb;
  712. long lValues[5];
  713. BYTE bMaxLevelBySet[ATTRIBUTE_SET_MAX_NUM];
  714. };
  715.  
  716. typedef struct SConnectTable
  717. {
  718. char login[LOGIN_MAX_LEN + 1];
  719. IDENT ident;
  720. } TConnectTable;
  721.  
  722. typedef struct SLoginPacket
  723. {
  724. char login[LOGIN_MAX_LEN + 1];
  725. char passwd[PASSWD_MAX_LEN + 1];
  726. } TLoginPacket;
  727.  
  728. typedef struct SPlayerLoadPacket
  729. {
  730. DWORD account_id;
  731. DWORD player_id;
  732. BYTE account_index; /* account 에서의 위치 */
  733. } TPlayerLoadPacket;
  734.  
  735. typedef struct SPlayerCreatePacket
  736. {
  737. char login[LOGIN_MAX_LEN + 1];
  738. char passwd[PASSWD_MAX_LEN + 1];
  739. DWORD account_id;
  740. BYTE account_index;
  741. TPlayerTable player_table;
  742. } TPlayerCreatePacket;
  743.  
  744. typedef struct SPlayerDeletePacket
  745. {
  746. char login[LOGIN_MAX_LEN + 1];
  747. DWORD player_id;
  748. BYTE account_index;
  749. //char name[CHARACTER_NAME_MAX_LEN + 1];
  750. char private_code[8];
  751. } TPlayerDeletePacket;
  752.  
  753. typedef struct SLogoutPacket
  754. {
  755. char login[LOGIN_MAX_LEN + 1];
  756. char passwd[PASSWD_MAX_LEN + 1];
  757. } TLogoutPacket;
  758.  
  759. typedef struct SPlayerCountPacket
  760. {
  761. DWORD dwCount;
  762. } TPlayerCountPacket;
  763.  
  764. #define SAFEBOX_MAX_NUM 135
  765. #define SAFEBOX_PASSWORD_MAX_LEN 6
  766.  
  767. typedef struct SSafeboxTable
  768. {
  769. DWORD dwID;
  770. BYTE bSize;
  771. DWORD dwGold;
  772. WORD wItemCount;
  773. } TSafeboxTable;
  774.  
  775. typedef struct SSafeboxChangeSizePacket
  776. {
  777. DWORD dwID;
  778. BYTE bSize;
  779. } TSafeboxChangeSizePacket;
  780.  
  781. typedef struct SSafeboxLoadPacket
  782. {
  783. DWORD dwID;
  784. char szLogin[LOGIN_MAX_LEN + 1];
  785. char szPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  786. } TSafeboxLoadPacket;
  787.  
  788. typedef struct SSafeboxChangePasswordPacket
  789. {
  790. DWORD dwID;
  791. char szOldPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  792. char szNewPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  793. } TSafeboxChangePasswordPacket;
  794.  
  795. typedef struct SSafeboxChangePasswordPacketAnswer
  796. {
  797. BYTE flag;
  798. } TSafeboxChangePasswordPacketAnswer;
  799.  
  800. typedef struct SEmpireSelectPacket
  801. {
  802. DWORD dwAccountID;
  803. BYTE bEmpire;
  804. } TEmpireSelectPacket;
  805.  
  806. typedef struct SPacketGDSetup
  807. {
  808. char szPublicIP[16]; // Public IP which listen to users
  809. BYTE bChannel; // 채널
  810. WORD wListenPort; // 클라이언트가 접속하는 포트 번호
  811. WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호
  812. long alMaps[64];
  813. DWORD dwLoginCount;
  814. BYTE bAuthServer;
  815. } TPacketGDSetup;
  816.  
  817. typedef struct SPacketDGMapLocations
  818. {
  819. BYTE bCount;
  820. } TPacketDGMapLocations;
  821.  
  822. typedef struct SMapLocation
  823. {
  824. long alMaps[64];
  825. char szHost[MAX_HOST_LENGTH + 1];
  826. WORD wPort;
  827. } TMapLocation;
  828.  
  829. typedef struct SPacketDGP2P
  830. {
  831. char szHost[MAX_HOST_LENGTH + 1];
  832. WORD wPort;
  833. BYTE bChannel;
  834. } TPacketDGP2P;
  835.  
  836. typedef struct SPacketGDDirectEnter
  837. {
  838. char login[LOGIN_MAX_LEN + 1];
  839. char passwd[PASSWD_MAX_LEN + 1];
  840. BYTE index;
  841. } TPacketGDDirectEnter;
  842.  
  843. typedef struct SPacketDGDirectEnter
  844. {
  845. TAccountTable accountTable;
  846. TPlayerTable playerTable;
  847. } TPacketDGDirectEnter;
  848.  
  849. typedef struct SPacketGuildSkillUpdate
  850. {
  851. DWORD guild_id;
  852. int amount;
  853. BYTE skill_levels[12];
  854. BYTE skill_point;
  855. BYTE save;
  856. } TPacketGuildSkillUpdate;
  857.  
  858. typedef struct SPacketGuildExpUpdate
  859. {
  860. DWORD guild_id;
  861. int amount;
  862. } TPacketGuildExpUpdate;
  863.  
  864. typedef struct SPacketGuildChangeMemberData
  865. {
  866. DWORD guild_id;
  867. DWORD pid;
  868. DWORD offer;
  869. BYTE level;
  870. BYTE grade;
  871. } TPacketGuildChangeMemberData;
  872.  
  873.  
  874. typedef struct SPacketDGLoginAlready
  875. {
  876. char szLogin[LOGIN_MAX_LEN + 1];
  877. } TPacketDGLoginAlready;
  878.  
  879. typedef struct TPacketAffectElement
  880. {
  881. DWORD dwType;
  882. BYTE bApplyOn;
  883. long lApplyValue;
  884. DWORD dwFlag;
  885. long lDuration;
  886. long lSPCost;
  887. } TPacketAffectElement;
  888.  
  889. typedef struct SPacketGDAddAffect
  890. {
  891. DWORD dwPID;
  892. TPacketAffectElement elem;
  893. } TPacketGDAddAffect;
  894.  
  895. typedef struct SPacketGDRemoveAffect
  896. {
  897. DWORD dwPID;
  898. DWORD dwType;
  899. BYTE bApplyOn;
  900. } TPacketGDRemoveAffect;
  901.  
  902. typedef struct SPacketGDHighscore
  903. {
  904. DWORD dwPID;
  905. long lValue;
  906. char cDir;
  907. char szBoard[21];
  908. } TPacketGDHighscore;
  909.  
  910. typedef struct SPacketPartyCreate
  911. {
  912. DWORD dwLeaderPID;
  913. } TPacketPartyCreate;
  914.  
  915. typedef struct SPacketPartyDelete
  916. {
  917. DWORD dwLeaderPID;
  918. } TPacketPartyDelete;
  919.  
  920. typedef struct SPacketPartyAdd
  921. {
  922. DWORD dwLeaderPID;
  923. DWORD dwPID;
  924. BYTE bState;
  925. } TPacketPartyAdd;
  926.  
  927. typedef struct SPacketPartyRemove
  928. {
  929. DWORD dwLeaderPID;
  930. DWORD dwPID;
  931. } TPacketPartyRemove;
  932.  
  933. typedef struct SPacketPartyStateChange
  934. {
  935. DWORD dwLeaderPID;
  936. DWORD dwPID;
  937. BYTE bRole;
  938. BYTE bFlag;
  939. } TPacketPartyStateChange;
  940.  
  941. typedef struct SPacketPartySetMemberLevel
  942. {
  943. DWORD dwLeaderPID;
  944. DWORD dwPID;
  945. BYTE bLevel;
  946. } TPacketPartySetMemberLevel;
  947.  
  948. typedef struct SPacketGDBoot
  949. {
  950. DWORD dwItemIDRange[2];
  951. char szIP[16];
  952. } TPacketGDBoot;
  953.  
  954. typedef struct SPacketGuild
  955. {
  956. DWORD dwGuild;
  957. DWORD dwInfo;
  958. } TPacketGuild;
  959.  
  960. typedef struct SPacketGDGuildAddMember
  961. {
  962. DWORD dwPID;
  963. DWORD dwGuild;
  964. BYTE bGrade;
  965. } TPacketGDGuildAddMember;
  966.  
  967. typedef struct SPacketDGGuildMember
  968. {
  969. DWORD dwPID;
  970. DWORD dwGuild;
  971. BYTE bGrade;
  972. BYTE isGeneral;
  973. BYTE bJob;
  974. BYTE bLevel;
  975. DWORD dwOffer;
  976. char szName[CHARACTER_NAME_MAX_LEN + 1];
  977. } TPacketDGGuildMember;
  978.  
  979. typedef struct SPacketGuildWar
  980. {
  981. BYTE bType;
  982. BYTE bWar;
  983. DWORD dwGuildFrom;
  984. DWORD dwGuildTo;
  985. long lWarPrice;
  986. long lInitialScore;
  987. } TPacketGuildWar;
  988.  
  989. // Game -> DB : 상대적 변화값
  990. // DB -> Game : 토탈된 최종값
  991. typedef struct SPacketGuildWarScore
  992. {
  993. DWORD dwGuildGainPoint;
  994. DWORD dwGuildOpponent;
  995. long lScore;
  996. long lBetScore;
  997. } TPacketGuildWarScore;
  998.  
  999. typedef struct SRefineMaterial
  1000. {
  1001. DWORD vnum;
  1002. int count;
  1003. } TRefineMaterial;
  1004.  
  1005. typedef struct SRefineTable
  1006. {
  1007. //DWORD src_vnum;
  1008. //DWORD result_vnum;
  1009. DWORD id;
  1010. BYTE material_count;
  1011. int cost; // 소요 비용
  1012. int prob; // 확률
  1013. TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
  1014. } TRefineTable;
  1015.  
  1016. typedef struct SBanwordTable
  1017. {
  1018. char szWord[BANWORD_MAX_LEN + 1];
  1019. } TBanwordTable;
  1020.  
  1021. typedef struct SSpawnOfflineShopTable
  1022. {
  1023. BYTE bChannel;
  1024. char szSign[SHOP_SIGN_MAX_LEN + 1];
  1025. long lMapIndex, x, y;
  1026. int iTime;
  1027. } TSpawnOfflineShopTable;
  1028.  
  1029. typedef struct SPacketGDChangeName
  1030. {
  1031. DWORD pid;
  1032. char name[CHARACTER_NAME_MAX_LEN + 1];
  1033. } TPacketGDChangeName;
  1034.  
  1035. typedef struct SPacketDGChangeName
  1036. {
  1037. DWORD pid;
  1038. char name[CHARACTER_NAME_MAX_LEN + 1];
  1039. } TPacketDGChangeName;
  1040.  
  1041. typedef struct SPacketGuildLadder
  1042. {
  1043. DWORD dwGuild;
  1044. long lLadderPoint;
  1045. long lWin;
  1046. long lDraw;
  1047. long lLoss;
  1048. } TPacketGuildLadder;
  1049.  
  1050. typedef struct SPacketGuildLadderPoint
  1051. {
  1052. DWORD dwGuild;
  1053. long lChange;
  1054. } TPacketGuildLadderPoint;
  1055.  
  1056. typedef struct SPacketGDSMS
  1057. {
  1058. char szFrom[CHARACTER_NAME_MAX_LEN + 1];
  1059. char szTo[CHARACTER_NAME_MAX_LEN + 1];
  1060. char szMobile[MOBILE_MAX_LEN + 1];
  1061. char szMsg[SMS_MAX_LEN + 1];
  1062. } TPacketGDSMS;
  1063.  
  1064. typedef struct SPacketGuildUseSkill
  1065. {
  1066. DWORD dwGuild;
  1067. DWORD dwSkillVnum;
  1068. DWORD dwCooltime;
  1069. } TPacketGuildUseSkill;
  1070.  
  1071. typedef struct SPacketGuildSkillUsableChange
  1072. {
  1073. DWORD dwGuild;
  1074. DWORD dwSkillVnum;
  1075. BYTE bUsable;
  1076. } TPacketGuildSkillUsableChange;
  1077.  
  1078. typedef struct SPacketGDLoginKey
  1079. {
  1080. DWORD dwAccountID;
  1081. DWORD dwLoginKey;
  1082. } TPacketGDLoginKey;
  1083.  
  1084. typedef struct SPacketGDAuthLogin
  1085. {
  1086. DWORD dwID;
  1087. DWORD dwLoginKey;
  1088. char szLogin[LOGIN_MAX_LEN + 1];
  1089. char szSocialID[SOCIAL_ID_MAX_LEN + 1];
  1090. DWORD adwClientKey[4];
  1091. BYTE bBillType;
  1092. DWORD dwBillID;
  1093. int iPremiumTimes[PREMIUM_MAX_NUM];
  1094. } TPacketGDAuthLogin;
  1095.  
  1096. typedef struct SPacketGDLoginByKey
  1097. {
  1098. char szLogin[LOGIN_MAX_LEN + 1];
  1099. DWORD dwLoginKey;
  1100. DWORD adwClientKey[4];
  1101. char szIP[MAX_HOST_LENGTH + 1];
  1102. } TPacketGDLoginByKey;
  1103.  
  1104. /**
  1105. * @version 05/06/08 Bang2ni - 지속시간 추가
  1106. */
  1107. typedef struct SPacketGiveGuildPriv
  1108. {
  1109. BYTE type;
  1110. int value;
  1111. DWORD guild_id;
  1112. time_t duration_sec; ///< 지속시간
  1113. } TPacketGiveGuildPriv;
  1114. typedef struct SPacketGiveEmpirePriv
  1115. {
  1116. BYTE type;
  1117. int value;
  1118. BYTE empire;
  1119. time_t duration_sec;
  1120. } TPacketGiveEmpirePriv;
  1121. typedef struct SPacketGiveCharacterPriv
  1122. {
  1123. BYTE type;
  1124. int value;
  1125. DWORD pid;
  1126. } TPacketGiveCharacterPriv;
  1127. typedef struct SPacketRemoveGuildPriv
  1128. {
  1129. BYTE type;
  1130. DWORD guild_id;
  1131. } TPacketRemoveGuildPriv;
  1132. typedef struct SPacketRemoveEmpirePriv
  1133. {
  1134. BYTE type;
  1135. BYTE empire;
  1136. } TPacketRemoveEmpirePriv;
  1137.  
  1138. typedef struct SPacketDGChangeCharacterPriv
  1139. {
  1140. BYTE type;
  1141. int value;
  1142. DWORD pid;
  1143. BYTE bLog;
  1144. } TPacketDGChangeCharacterPriv;
  1145.  
  1146. /**
  1147. * @version 05/06/08 Bang2ni - 지속시간 추가
  1148. */
  1149. typedef struct SPacketDGChangeGuildPriv
  1150. {
  1151. BYTE type;
  1152. int value;
  1153. DWORD guild_id;
  1154. BYTE bLog;
  1155. time_t end_time_sec; ///< 지속시간
  1156. } TPacketDGChangeGuildPriv;
  1157.  
  1158. typedef struct SPacketDGChangeEmpirePriv
  1159. {
  1160. BYTE type;
  1161. int value;
  1162. BYTE empire;
  1163. BYTE bLog;
  1164. time_t end_time_sec;
  1165. } TPacketDGChangeEmpirePriv;
  1166.  
  1167. typedef struct SPacketMoneyLog
  1168. {
  1169. BYTE type;
  1170. DWORD vnum;
  1171. long long gold
  1172. } TPacketMoneyLog;
  1173.  
  1174. typedef struct SPacketGDGuildMoney
  1175. {
  1176. DWORD dwGuild;
  1177. INT iGold;
  1178. } TPacketGDGuildMoney;
  1179.  
  1180. typedef struct SPacketDGGuildMoneyChange
  1181. {
  1182. DWORD dwGuild;
  1183. INT iTotalGold;
  1184. } TPacketDGGuildMoneyChange;
  1185.  
  1186. typedef struct SPacketDGGuildMoneyWithdraw
  1187. {
  1188. DWORD dwGuild;
  1189. INT iChangeGold;
  1190. } TPacketDGGuildMoneyWithdraw;
  1191.  
  1192. typedef struct SPacketGDGuildMoneyWithdrawGiveReply
  1193. {
  1194. DWORD dwGuild;
  1195. INT iChangeGold;
  1196. BYTE bGiveSuccess;
  1197. } TPacketGDGuildMoneyWithdrawGiveReply;
  1198.  
  1199. typedef struct SPacketSetEventFlag
  1200. {
  1201. char szFlagName[EVENT_FLAG_NAME_MAX_LEN + 1];
  1202. long lValue;
  1203. } TPacketSetEventFlag;
  1204.  
  1205. typedef struct SPacketBillingLogin
  1206. {
  1207. DWORD dwLoginKey;
  1208. BYTE bLogin;
  1209. } TPacketBillingLogin;
  1210.  
  1211. typedef struct SPacketBillingRepair
  1212. {
  1213. DWORD dwLoginKey;
  1214. char szLogin[LOGIN_MAX_LEN + 1];
  1215. char szHost[MAX_HOST_LENGTH + 1];
  1216. } TPacketBillingRepair;
  1217.  
  1218. typedef struct SPacketBillingExpire
  1219. {
  1220. char szLogin[LOGIN_MAX_LEN + 1];
  1221. BYTE bBillType;
  1222. DWORD dwRemainSeconds;
  1223. } TPacketBillingExpire;
  1224.  
  1225. typedef struct SPacketLoginOnSetup
  1226. {
  1227. DWORD dwID;
  1228. char szLogin[LOGIN_MAX_LEN + 1];
  1229. char szSocialID[SOCIAL_ID_MAX_LEN + 1];
  1230. char szHost[MAX_HOST_LENGTH + 1];
  1231. DWORD dwLoginKey;
  1232. DWORD adwClientKey[4];
  1233. } TPacketLoginOnSetup;
  1234.  
  1235. typedef struct SPacketGDCreateObject
  1236. {
  1237. DWORD dwVnum;
  1238. DWORD dwLandID;
  1239. INT lMapIndex;
  1240. INT x, y;
  1241. float xRot;
  1242. float yRot;
  1243. float zRot;
  1244. } TPacketGDCreateObject;
  1245.  
  1246. typedef struct SPacketGDHammerOfTor
  1247. {
  1248. DWORD key;
  1249. DWORD delay;
  1250. } TPacketGDHammerOfTor;
  1251.  
  1252. typedef struct SPacketGDVCard
  1253. {
  1254. DWORD dwID;
  1255. char szSellCharacter[CHARACTER_NAME_MAX_LEN + 1];
  1256. char szSellAccount[LOGIN_MAX_LEN + 1];
  1257. char szBuyCharacter[CHARACTER_NAME_MAX_LEN + 1];
  1258. char szBuyAccount[LOGIN_MAX_LEN + 1];
  1259. } TPacketGDVCard;
  1260.  
  1261. typedef struct SGuildReserve
  1262. {
  1263. DWORD dwID;
  1264. DWORD dwGuildFrom;
  1265. DWORD dwGuildTo;
  1266. DWORD dwTime;
  1267. BYTE bType;
  1268. long lWarPrice;
  1269. long lInitialScore;
  1270. bool bStarted;
  1271. DWORD dwBetFrom;
  1272. DWORD dwBetTo;
  1273. long lPowerFrom;
  1274. long lPowerTo;
  1275. long lHandicap;
  1276. } TGuildWarReserve;
  1277.  
  1278. typedef struct
  1279. {
  1280. DWORD dwWarID;
  1281. char szLogin[LOGIN_MAX_LEN + 1];
  1282. DWORD dwGold;
  1283. DWORD dwGuild;
  1284. } TPacketGDGuildWarBet;
  1285.  
  1286. // Marriage
  1287.  
  1288. typedef struct
  1289. {
  1290. DWORD dwPID1;
  1291. DWORD dwPID2;
  1292. time_t tMarryTime;
  1293. char szName1[CHARACTER_NAME_MAX_LEN + 1];
  1294. char szName2[CHARACTER_NAME_MAX_LEN + 1];
  1295. } TPacketMarriageAdd;
  1296.  
  1297. typedef struct
  1298. {
  1299. DWORD dwPID1;
  1300. DWORD dwPID2;
  1301. INT iLovePoint;
  1302. BYTE byMarried;
  1303. } TPacketMarriageUpdate;
  1304.  
  1305. typedef struct
  1306. {
  1307. DWORD dwPID1;
  1308. DWORD dwPID2;
  1309. } TPacketMarriageRemove;
  1310.  
  1311. typedef struct
  1312. {
  1313. DWORD dwPID1;
  1314. DWORD dwPID2;
  1315. } TPacketWeddingRequest;
  1316.  
  1317. typedef struct
  1318. {
  1319. DWORD dwPID1;
  1320. DWORD dwPID2;
  1321. DWORD dwMapIndex;
  1322. } TPacketWeddingReady;
  1323.  
  1324. typedef struct
  1325. {
  1326. DWORD dwPID1;
  1327. DWORD dwPID2;
  1328. } TPacketWeddingStart;
  1329.  
  1330. typedef struct
  1331. {
  1332. DWORD dwPID1;
  1333. DWORD dwPID2;
  1334. } TPacketWeddingEnd;
  1335.  
  1336. /// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다.
  1337. typedef struct SPacketMyshopPricelistHeader
  1338. {
  1339. DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
  1340. BYTE byCount; ///< 가격정보 갯수
  1341. } TPacketMyshopPricelistHeader;
  1342.  
  1343. /// 개인상점의 단일 아이템에 대한 가격정보
  1344. typedef struct SItemPriceInfo
  1345. {
  1346. DWORD dwVnum; ///< 아이템 vnum
  1347. long long dwPrice; ///< 가격
  1348. } TItemPriceInfo;
  1349.  
  1350. /// 개인상점 아이템 가격정보 리스트 테이블
  1351. typedef struct SItemPriceListTable
  1352. {
  1353. DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
  1354. BYTE byCount; ///< 가격정보 리스트의 갯수
  1355.  
  1356. TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< 가격정보 리스트
  1357. } TItemPriceListTable;
  1358.  
  1359. typedef struct
  1360. {
  1361. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1362. long lDuration;
  1363. } TPacketBlockChat;
  1364.  
  1365. // PCBANG_IP_LIST
  1366. typedef struct SPacketPCBangIP
  1367. {
  1368. DWORD id;
  1369. DWORD ip;
  1370. } TPacketPCBangIP;
  1371. // END_OF_PCBANG_IP_LIST
  1372.  
  1373.  
  1374. //ADMIN_MANAGER
  1375. typedef struct TAdminInfo
  1376. {
  1377. int m_ID; //고유ID
  1378. char m_szAccount[32]; //계정
  1379. char m_szName[32]; //캐릭터이름
  1380. char m_szContactIP[16]; //접근아이피
  1381. char m_szServerIP[16]; //서버아이피
  1382. int m_Authority; //권한
  1383. } tAdminInfo;
  1384. //END_ADMIN_MANAGER
  1385.  
  1386. //BOOT_LOCALIZATION
  1387. struct tLocale
  1388. {
  1389. char szValue[32];
  1390. char szKey[32];
  1391. };
  1392. //BOOT_LOCALIZATION
  1393.  
  1394. //RELOAD_ADMIN
  1395. typedef struct SPacketReloadAdmin
  1396. {
  1397. char szIP[16];
  1398. } TPacketReloadAdmin;
  1399. //END_RELOAD_ADMIN
  1400.  
  1401. typedef struct TMonarchInfo
  1402. {
  1403. DWORD pid[4]; // 군주의 PID
  1404. int64_t money[4]; // 군주의 별개 돈
  1405. char name[4][32]; // 군주의 이름
  1406. char date[4][32]; // 군주 등록 날짜
  1407. } MonarchInfo;
  1408.  
  1409. typedef struct TMonarchElectionInfo
  1410. {
  1411. DWORD pid; // 투표 한사람 PID
  1412. DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 )
  1413. char date[32]; // 투표 날짜
  1414. } MonarchElectionInfo;
  1415.  
  1416. // 군주 출마자
  1417. typedef struct tMonarchCandidacy
  1418. {
  1419. DWORD pid;
  1420. char name[32];
  1421. char date[32];
  1422. } MonarchCandidacy;
  1423.  
  1424. typedef struct tChangeMonarchLord
  1425. {
  1426. BYTE bEmpire;
  1427. DWORD dwPID;
  1428. } TPacketChangeMonarchLord;
  1429.  
  1430. typedef struct tChangeMonarchLordACK
  1431. {
  1432. BYTE bEmpire;
  1433. DWORD dwPID;
  1434. char szName[32];
  1435. char szDate[32];
  1436. } TPacketChangeMonarchLordACK;
  1437.  
  1438. // Block Country Ip
  1439. typedef struct tBlockCountryIp
  1440. {
  1441. DWORD ip_from;
  1442. DWORD ip_to;
  1443. } TPacketBlockCountryIp;
  1444.  
  1445. enum EBlockExceptionCommand
  1446. {
  1447. BLOCK_EXCEPTION_CMD_ADD = 1,
  1448. BLOCK_EXCEPTION_CMD_DEL = 2,
  1449. };
  1450.  
  1451. // Block Exception Account
  1452. typedef struct tBlockException
  1453. {
  1454. BYTE cmd; // 1 == add, 2 == delete
  1455. char login[LOGIN_MAX_LEN + 1];
  1456. }TPacketBlockException;
  1457.  
  1458. typedef struct tChangeGuildMaster
  1459. {
  1460. DWORD dwGuildID;
  1461. DWORD idFrom;
  1462. DWORD idTo;
  1463. } TPacketChangeGuildMaster;
  1464.  
  1465. typedef struct tItemIDRange
  1466. {
  1467. DWORD dwMin;
  1468. DWORD dwMax;
  1469. DWORD dwUsableItemIDMin;
  1470. } TItemIDRangeTable;
  1471.  
  1472. typedef struct tUpdateHorseName
  1473. {
  1474. DWORD dwPlayerID;
  1475. char szHorseName[CHARACTER_NAME_MAX_LEN + 1];
  1476. } TPacketUpdateHorseName;
  1477.  
  1478. typedef struct tDC
  1479. {
  1480. char login[LOGIN_MAX_LEN + 1];
  1481. } TPacketDC;
  1482.  
  1483. typedef struct tNeedLoginLogInfo
  1484. {
  1485. DWORD dwPlayerID;
  1486. } TPacketNeedLoginLogInfo;
  1487.  
  1488. //독일 선물 알림 기능 테스트용 패킷 정보
  1489. typedef struct tItemAwardInformer
  1490. {
  1491. char login[LOGIN_MAX_LEN + 1];
  1492. char command[20]; //명령어
  1493. unsigned int vnum; //아이템
  1494. } TPacketItemAwardInfromer;
  1495. // 선물 알림 기능 삭제용 패킷 정보
  1496. typedef struct tDeleteAwardID
  1497. {
  1498. DWORD dwID;
  1499. } TPacketDeleteAwardID;
  1500.  
  1501. typedef struct SChannelStatus
  1502. {
  1503. short nPort;
  1504. BYTE bStatus;
  1505. } TChannelStatus;
  1506.  
  1507. #pragma pack()
  1508. #endif
Advertisement
Add Comment
Please, Sign In to add comment