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

new tables.h