1. #ifndef __INC_TABLES_H__
  2. #define __INC_TABLES_H__
  3. #include "length.h"
  4. #include "item_length.h"
  5. #include "service.h"
  6. typedef DWORD IDENT;
  7. /**
  8. * @version 05/06/10 Bang2ni - Myshop Pricelist ���� ��Ŷ HEADER_XX_MYSHOP_PRICELIST_XXX �߰�
  9. */
  10. enum
  11. {
  12. HEADER_GD_LOGIN = 1,
  13. HEADER_GD_LOGOUT = 2,
  14. HEADER_GD_PLAYER_LOAD = 3,
  15. HEADER_GD_PLAYER_SAVE = 4,
  16. HEADER_GD_PLAYER_CREATE = 5,
  17. HEADER_GD_PLAYER_DELETE = 6,
  18. HEADER_GD_LOGIN_KEY = 7,
  19. // 8 empty
  20. HEADER_GD_BOOT = 9,
  21. HEADER_GD_PLAYER_COUNT = 10,
  22. HEADER_GD_QUEST_SAVE = 11,
  23. HEADER_GD_SAFEBOX_LOAD = 12,
  24. HEADER_GD_SAFEBOX_SAVE = 13,
  25. HEADER_GD_SAFEBOX_CHANGE_SIZE = 14,
  26. HEADER_GD_EMPIRE_SELECT = 15,
  27. HEADER_GD_SAFEBOX_CHANGE_PASSWORD = 16,
  28. HEADER_GD_SAFEBOX_CHANGE_PASSWORD_SECOND = 17, // Not really a packet, used internal
  29. HEADER_GD_DIRECT_ENTER = 18,
  30. HEADER_GD_GUILD_SKILL_UPDATE = 19,
  31. HEADER_GD_GUILD_EXP_UPDATE = 20,
  32. HEADER_GD_GUILD_ADD_MEMBER = 21,
  33. HEADER_GD_GUILD_REMOVE_MEMBER = 22,
  34. HEADER_GD_GUILD_CHANGE_GRADE = 23,
  35. HEADER_GD_GUILD_CHANGE_MEMBER_DATA = 24,
  36. HEADER_GD_GUILD_DISBAND = 25,
  37. HEADER_GD_GUILD_WAR = 26,
  38. HEADER_GD_GUILD_WAR_SCORE = 27,
  39. HEADER_GD_GUILD_CREATE = 28,
  40. HEADER_GD_ITEM_SAVE = 30,
  41. HEADER_GD_ITEM_DESTROY = 31,
  42. HEADER_GD_ADD_AFFECT = 32,
  43. HEADER_GD_REMOVE_AFFECT = 33,
  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_GUILD_CHANGE_LADDER_POINT = 46,
  55. HEADER_GD_GUILD_USE_SKILL = 47,
  56. HEADER_GD_REQUEST_EMPIRE_PRIV = 48,
  57. HEADER_GD_REQUEST_GUILD_PRIV = 49,
  58. HEADER_GD_MONEY_LOG = 50,
  59. HEADER_GD_GUILD_DEPOSIT_MONEY = 51,
  60. HEADER_GD_GUILD_WITHDRAW_MONEY = 52,
  61. HEADER_GD_GUILD_WITHDRAW_MONEY_GIVE_REPLY = 53,
  62. HEADER_GD_REQUEST_CHARACTER_PRIV = 54,
  63. HEADER_GD_SET_EVENT_FLAG = 55,
  64. HEADER_GD_PARTY_SET_MEMBER_LEVEL = 56,
  65. HEADER_GD_GUILD_WAR_BET = 57,
  66. HEADER_GD_CREATE_OBJECT = 60,
  67. HEADER_GD_DELETE_OBJECT = 61,
  68. HEADER_GD_UPDATE_LAND = 62,
  69. HEADER_GD_MARRIAGE_ADD = 70,
  70. HEADER_GD_MARRIAGE_UPDATE = 71,
  71. HEADER_GD_MARRIAGE_REMOVE = 72,
  72. HEADER_GD_WEDDING_REQUEST = 73,
  73. HEADER_GD_WEDDING_READY = 74,
  74. HEADER_GD_WEDDING_END = 75,
  75. HEADER_GD_AUTH_LOGIN = 100,
  76. HEADER_GD_LOGIN_BY_KEY = 101,
  77. HEADER_GD_BILLING_EXPIRE = 104,
  78. HEADER_GD_BILLING_CHECK = 106,
  79. HEADER_GD_MALL_LOAD = 107,
  80. HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< �������� ���� ��û
  81. HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< �������� ����Ʈ ��û
  82. HEADER_GD_BLOCK_CHAT = 110,
  83. HEADER_GD_RELOAD_ADMIN = 115, ///<��� ���� ��û
  84. HEADER_GD_BREAK_MARRIAGE = 116, ///< ��ȥ �ı�
  85. HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129,
  86. HEADER_GD_REQ_SPARE_ITEM_ID_RANGE = 130,
  87. HEADER_GD_UPDATE_HORSE_NAME = 131,
  88. HEADER_GD_REQ_HORSE_NAME = 132,
  89. HEADER_GD_DC = 133, // Login Key�� ����
  90. HEADER_GD_VALID_LOGOUT = 134,
  91. HEADER_GD_REQUEST_CHARGE_CASH = 137,
  92. HEADER_GD_DELETE_AWARDID = 138, // delete gift notify icon
  93. HEADER_GD_UPDATE_CHANNELSTATUS = 139,
  94. HEADER_GD_REQUEST_CHANNELSTATUS = 140,
  95. #ifdef __ENABLE_NEW_OFFLINESHOP__
  96. HEADER_GD_NEW_OFFLINESHOP = 141,
  97. #endif
  98. HEADER_GD_SETUP = 255,
  99. ///////////////////////////////////////////////
  100. HEADER_DG_NOTICE = 1,
  101. HEADER_DG_LOGIN_SUCCESS = 30,
  102. HEADER_DG_LOGIN_NOT_EXIST = 31,
  103. HEADER_DG_LOGIN_WRONG_PASSWD = 33,
  104. HEADER_DG_LOGIN_ALREADY = 34,
  105. HEADER_DG_PLAYER_LOAD_SUCCESS = 35,
  106. HEADER_DG_PLAYER_LOAD_FAILED = 36,
  107. HEADER_DG_PLAYER_CREATE_SUCCESS = 37,
  108. HEADER_DG_PLAYER_CREATE_ALREADY = 38,
  109. HEADER_DG_PLAYER_CREATE_FAILED = 39,
  110. HEADER_DG_PLAYER_DELETE_SUCCESS = 40,
  111. HEADER_DG_PLAYER_DELETE_FAILED = 41,
  112. HEADER_DG_ITEM_LOAD = 42,
  113. HEADER_DG_BOOT = 43,
  114. HEADER_DG_QUEST_LOAD = 44,
  115. HEADER_DG_SAFEBOX_LOAD = 45,
  116. HEADER_DG_SAFEBOX_CHANGE_SIZE = 46,
  117. HEADER_DG_SAFEBOX_WRONG_PASSWORD = 47,
  118. HEADER_DG_SAFEBOX_CHANGE_PASSWORD_ANSWER = 48,
  119. HEADER_DG_EMPIRE_SELECT = 49,
  120. HEADER_DG_AFFECT_LOAD = 50,
  121. HEADER_DG_MALL_LOAD = 51,
  122. HEADER_DG_DIRECT_ENTER = 55,
  123. HEADER_DG_GUILD_SKILL_UPDATE = 56,
  124. HEADER_DG_GUILD_SKILL_RECHARGE = 57,
  125. HEADER_DG_GUILD_EXP_UPDATE = 58,
  126. HEADER_DG_PARTY_CREATE = 59,
  127. HEADER_DG_PARTY_DELETE = 60,
  128. HEADER_DG_PARTY_ADD = 61,
  129. HEADER_DG_PARTY_REMOVE = 62,
  130. HEADER_DG_PARTY_STATE_CHANGE = 63,
  131. HEADER_DG_PARTY_HEAL_USE = 64,
  132. HEADER_DG_PARTY_SET_MEMBER_LEVEL = 65,
  133. HEADER_DG_TIME = 90,
  134. HEADER_DG_ITEM_ID_RANGE = 91,
  135. HEADER_DG_GUILD_ADD_MEMBER = 92,
  136. HEADER_DG_GUILD_REMOVE_MEMBER = 93,
  137. HEADER_DG_GUILD_CHANGE_GRADE = 94,
  138. HEADER_DG_GUILD_CHANGE_MEMBER_DATA = 95,
  139. HEADER_DG_GUILD_DISBAND = 96,
  140. HEADER_DG_GUILD_WAR = 97,
  141. HEADER_DG_GUILD_WAR_SCORE = 98,
  142. HEADER_DG_GUILD_TIME_UPDATE = 99,
  143. HEADER_DG_GUILD_LOAD = 100,
  144. HEADER_DG_GUILD_LADDER = 101,
  145. HEADER_DG_GUILD_SKILL_USABLE_CHANGE = 102,
  146. HEADER_DG_GUILD_MONEY_CHANGE = 103,
  147. HEADER_DG_GUILD_WITHDRAW_MONEY_GIVE = 104,
  148. HEADER_DG_SET_EVENT_FLAG = 105,
  149. HEADER_DG_GUILD_WAR_RESERVE_ADD = 106,
  150. HEADER_DG_GUILD_WAR_RESERVE_DEL = 107,
  151. HEADER_DG_GUILD_WAR_BET = 108,
  152. HEADER_DG_RELOAD_PROTO = 120,
  153. HEADER_DG_CHANGE_NAME = 121,
  154. HEADER_DG_AUTH_LOGIN = 122,
  155. HEADER_DG_CHANGE_EMPIRE_PRIV = 124,
  156. HEADER_DG_CHANGE_GUILD_PRIV = 125,
  157. HEADER_DG_MONEY_LOG = 126,
  158. HEADER_DG_CHANGE_CHARACTER_PRIV = 127,
  159. HEADER_DG_BILLING_REPAIR = 128,
  160. HEADER_DG_BILLING_EXPIRE = 129,
  161. HEADER_DG_BILLING_LOGIN = 130,
  162. HEADER_DG_BILLING_CHECK = 132,
  163. HEADER_DG_CREATE_OBJECT = 140,
  164. HEADER_DG_DELETE_OBJECT = 141,
  165. HEADER_DG_UPDATE_LAND = 142,
  166. HEADER_DG_MARRIAGE_ADD = 150,
  167. HEADER_DG_MARRIAGE_UPDATE = 151,
  168. HEADER_DG_MARRIAGE_REMOVE = 152,
  169. HEADER_DG_WEDDING_REQUEST = 153,
  170. HEADER_DG_WEDDING_READY = 154,
  171. HEADER_DG_WEDDING_START = 155,
  172. HEADER_DG_WEDDING_END = 156,
  173. HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< �������� ����Ʈ ����
  174. HEADER_DG_RELOAD_ADMIN = 158, ///< ��� ���� ���ε�
  175. HEADER_DG_BREAK_MARRIAGE = 159, ///< ��ȥ �ı�
  176. HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,
  177. HEADER_DG_ACK_SPARE_ITEM_ID_RANGE = 174,
  178. HEADER_DG_UPDATE_HORSE_NAME = 175,
  179. HEADER_DG_ACK_HORSE_NAME = 176,
  180. HEADER_DG_NEED_LOGIN_LOG = 177,
  181. HEADER_DG_RESULT_CHARGE_CASH = 179,
  182. HEADER_DG_ITEMAWARD_INFORMER = 180, //gift notify
  183. HEADER_DG_RESPOND_CHANNELSTATUS = 181,
  184. #ifdef __ENABLE_NEW_OFFLINESHOP__
  185. HEADER_DG_NEW_OFFLINESHOP = 182,
  186. #endif
  187. HEADER_DG_MAP_LOCATIONS = 254,
  188. HEADER_DG_P2P = 255,
  189. };
  190. /* ----------------------------------------------
  191. * table
  192. * ----------------------------------------------
  193. */
  194. /* game Server -> DB Server */
  195. #pragma pack(1)
  196. enum ERequestChargeType
  197. {
  198. ERequestCharge_Cash = 0,
  199. ERequestCharge_Mileage,
  200. };
  201. typedef struct SRequestChargeCash
  202. {
  203. DWORD dwAID; // id(primary key) - Account Table
  204. DWORD dwAmount;
  205. ERequestChargeType eChargeType;
  206. } TRequestChargeCash;
  207. typedef struct SSimplePlayer
  208. {
  209. DWORD dwID;
  210. char szName[CHARACTER_NAME_MAX_LEN + 1];
  211. BYTE byJob;
  212. BYTE byLevel;
  213. DWORD dwPlayMinutes;
  214. BYTE byST, byHT, byDX, byIQ;
  215. WORD wMainPart;
  216. BYTE bChangeName;
  217. WORD wHairPart;
  218. BYTE bDummy[4];
  219. long x, y;
  220. long lAddr;
  221. WORD wPort;
  222. BYTE skill_group;
  223. } TSimplePlayer;
  224. typedef struct SAccountTable
  225. {
  226. DWORD id;
  227. char login[LOGIN_MAX_LEN + 1];
  228. char passwd[PASSWD_MAX_LEN + 1];
  229. char social_id[SOCIAL_ID_MAX_LEN + 1];
  230. char status[ACCOUNT_STATUS_MAX_LEN + 1];
  231. BYTE bEmpire;
  232. TSimplePlayer players[PLAYER_PER_ACCOUNT];
  233. } TAccountTable;
  234. typedef struct SPacketDGCreateSuccess
  235. {
  236. BYTE bAccountCharacterIndex;
  237. TSimplePlayer player;
  238. } TPacketDGCreateSuccess;
  239. typedef struct TPlayerItemAttribute
  240. {
  241. BYTE bType;
  242. short sValue;
  243. } TPlayerItemAttribute;
  244. typedef struct SPlayerItem
  245. {
  246. DWORD id;
  247. BYTE window;
  248. WORD pos;
  249. DWORD count;
  250. DWORD vnum;
  251. long alSockets[ITEM_SOCKET_MAX_NUM]; // ���Ϲ�ȣ
  252. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  253. DWORD owner;
  254. } TPlayerItem;
  255. typedef struct SQuickslot
  256. {
  257. BYTE type;
  258. BYTE pos;
  259. } TQuickslot;
  260. typedef struct SPlayerSkill
  261. {
  262. BYTE bMasterType;
  263. BYTE bLevel;
  264. time_t tNextRead;
  265. } TPlayerSkill;
  266. struct THorseInfo
  267. {
  268. BYTE bLevel;
  269. BYTE bRiding;
  270. short sStamina;
  271. short sHealth;
  272. DWORD dwHorseHealthDropTime;
  273. };
  274. typedef struct SPlayerTable
  275. {
  276. DWORD id;
  277. char name[CHARACTER_NAME_MAX_LEN + 1];
  278. char ip[IP_ADDRESS_LENGTH + 1];
  279. WORD job;
  280. BYTE voice;
  281. BYTE level;
  282. BYTE level_step;
  283. short st, ht, dx, iq;
  284. DWORD exp;
  285. INT gold;
  286. BYTE dir;
  287. INT x, y, z;
  288. INT lMapIndex;
  289. long lExitX, lExitY;
  290. long lExitMapIndex;
  291. int hp;
  292. int sp;
  293. short sRandomHP;
  294. short sRandomSP;
  295. int playtime;
  296. short stat_point;
  297. short skill_point;
  298. short sub_skill_point;
  299. short horse_skill_point;
  300. TPlayerSkill skills[SKILL_MAX_NUM];
  301. TQuickslot quickslot[QUICKSLOT_MAX_NUM];
  302. BYTE part_base;
  303. WORD parts[PART_MAX_NUM];
  304. short stamina;
  305. BYTE skill_group;
  306. long lAlignment;
  307. short stat_reset_count;
  308. THorseInfo horse;
  309. DWORD logoff_interval;
  310. int aiPremiumTimes[PREMIUM_MAX_NUM];
  311. } TPlayerTable;
  312. typedef struct SMobSkillLevel
  313. {
  314. DWORD dwVnum;
  315. BYTE bLevel;
  316. } TMobSkillLevel;
  317. typedef struct SEntityTable
  318. {
  319. DWORD dwVnum;
  320. } TEntityTable;
  321. typedef struct SMobTable : public SEntityTable
  322. {
  323. char szName[CHARACTER_NAME_MAX_LEN + 1];
  324. char szLocaleName[CHARACTER_NAME_MAX_LEN + 1];
  325. BYTE bType; // Monster, NPC
  326. BYTE bRank; // PAWN, KNIGHT, KING
  327. BYTE bBattleType; // MELEE, etc..
  328. BYTE bLevel; // Level
  329. BYTE bSize;
  330. DWORD dwGoldMin;
  331. DWORD dwGoldMax;
  332. DWORD dwExp;
  333. DWORD dwMaxHP;
  334. BYTE bRegenCycle;
  335. BYTE bRegenPercent;
  336. WORD wDef;
  337. DWORD dwAIFlag;
  338. DWORD dwRaceFlag;
  339. DWORD dwImmuneFlag;
  340. BYTE bStr, bDex, bCon, bInt;
  341. DWORD dwDamageRange[2];
  342. short sAttackSpeed;
  343. short sMovingSpeed;
  344. BYTE bAggresiveHPPct;
  345. WORD wAggressiveSight;
  346. WORD wAttackRange;
  347. char cEnchants[MOB_ENCHANTS_MAX_NUM];
  348. char cResists[MOB_RESISTS_MAX_NUM];
  349. DWORD dwResurrectionVnum;
  350. DWORD dwDropItemVnum;
  351. BYTE bMountCapacity;
  352. BYTE bOnClickType;
  353. BYTE bEmpire;
  354. char szFolder[64 + 1];
  355. float fDamMultiply;
  356. DWORD dwSummonVnum;
  357. DWORD dwDrainSP;
  358. DWORD dwMobColor;
  359. DWORD dwPolymorphItemVnum;
  360. TMobSkillLevel Skills[MOB_SKILL_MAX_NUM];
  361. BYTE bBerserkPoint;
  362. BYTE bStoneSkinPoint;
  363. BYTE bGodSpeedPoint;
  364. BYTE bDeathBlowPoint;
  365. BYTE bRevivePoint;
  366. } TMobTable;
  367. typedef struct SSkillTable
  368. {
  369. DWORD dwVnum;
  370. char szName[32 + 1];
  371. BYTE bType;
  372. BYTE bMaxLevel;
  373. DWORD dwSplashRange;
  374. char szPointOn[64];
  375. char szPointPoly[100 + 1];
  376. char szSPCostPoly[100 + 1];
  377. char szDurationPoly[100 + 1];
  378. char szDurationSPCostPoly[100 + 1];
  379. char szCooldownPoly[100 + 1];
  380. char szMasterBonusPoly[100 + 1];
  381. //char szAttackGradePoly[100 + 1];
  382. char szGrandMasterAddSPCostPoly[100 + 1];
  383. DWORD dwFlag;
  384. DWORD dwAffectFlag;
  385. // Data for secondary skill
  386. char szPointOn2[64];
  387. char szPointPoly2[100 + 1];
  388. char szDurationPoly2[100 + 1];
  389. DWORD dwAffectFlag2;
  390. // Data for grand master point
  391. char szPointOn3[64];
  392. char szPointPoly3[100 + 1];
  393. char szDurationPoly3[100 + 1];
  394. BYTE bLevelStep;
  395. BYTE bLevelLimit;
  396. DWORD preSkillVnum;
  397. BYTE preSkillLevel;
  398. long lMaxHit;
  399. char szSplashAroundDamageAdjustPoly[100 + 1];
  400. BYTE bSkillAttrType;
  401. DWORD dwTargetRange;
  402. } TSkillTable;
  403. typedef struct SShopItemTable
  404. {
  405. DWORD vnum;
  406. BYTE count;
  407. TItemPos pos; // PC �������� �̿�
  408. DWORD price; // PC, shop_table_ex.txt �������� �̿�
  409. BYTE display_pos; // PC, shop_table_ex.txt �������� �̿�, ���� ��ġ.
  410. } TShopItemTable;
  411. typedef struct SShopTable
  412. {
  413. DWORD dwVnum;
  414. DWORD dwNPCVnum;
  415. BYTE byItemCount;
  416. TShopItemTable items[SHOP_HOST_ITEM_MAX_NUM];
  417. } TShopTable;
  418. #define QUEST_NAME_MAX_LEN 32
  419. #define QUEST_STATE_MAX_LEN 64
  420. typedef struct SQuestTable
  421. {
  422. DWORD dwPID;
  423. char szName[QUEST_NAME_MAX_LEN + 1];
  424. char szState[QUEST_STATE_MAX_LEN + 1];
  425. long lValue;
  426. } TQuestTable;
  427. typedef struct SItemLimit
  428. {
  429. BYTE bType;
  430. long lValue;
  431. } TItemLimit;
  432. typedef struct SItemApply
  433. {
  434. BYTE bType;
  435. long lValue;
  436. } TItemApply;
  437. typedef struct SItemTable : public SEntityTable
  438. {
  439. DWORD dwVnumRange;
  440. char szName[ITEM_NAME_MAX_LEN + 1];
  441. char szLocaleName[ITEM_NAME_MAX_LEN + 1];
  442. BYTE bType;
  443. BYTE bSubType;
  444. BYTE bWeight;
  445. BYTE bSize;
  446. DWORD dwAntiFlags;
  447. DWORD dwFlags;
  448. DWORD dwWearFlags;
  449. DWORD dwImmuneFlag;
  450. DWORD dwGold;
  451. DWORD dwShopBuyPrice;
  452. TItemLimit aLimits[ITEM_LIMIT_MAX_NUM];
  453. TItemApply aApplies[ITEM_APPLY_MAX_NUM];
  454. long alValues[ITEM_VALUES_MAX_NUM];
  455. long alSockets[ITEM_SOCKET_MAX_NUM];
  456. DWORD dwRefinedVnum;
  457. WORD wRefineSet;
  458. BYTE bAlterToMagicItemPct;
  459. BYTE bSpecular;
  460. BYTE bGainSocketPct;
  461. short int sAddonType; // �⺻ �Ӽ�
  462. // �Ʒ� limit flag���� realtime�� üũ �� ���� ����, ������ VNUM�� ������ ���ε�,
  463. // ���� ������� �Ź� �����۸��� �ʿ��� ��쿡 LIMIT_MAX_NUM���� �������鼭 üũ�ϴ� ���ϰ� Ŀ�� �̸� ���� �� ��.
  464. char cLimitRealTimeFirstUseIndex; // ������ limit �ʵ尪 �߿��� LIMIT_REAL_TIME_FIRST_USE �÷����� ��ġ (������ -1)
  465. char cLimitTimerBasedOnWearIndex; // ������ limit �ʵ尪 �߿��� LIMIT_TIMER_BASED_ON_WEAR �÷����� ��ġ (������ -1)
  466. } TItemTable;
  467. struct TItemAttrTable
  468. {
  469. TItemAttrTable() :
  470. dwApplyIndex (0),
  471. dwProb (0)
  472. {
  473. szApply[0] = 0;
  474. memset (&lValues, 0, sizeof (lValues));
  475. memset (&bMaxLevelBySet, 0, sizeof (bMaxLevelBySet));
  476. }
  477. char szApply[APPLY_NAME_MAX_LEN + 1];
  478. DWORD dwApplyIndex;
  479. DWORD dwProb;
  480. long lValues[5];
  481. BYTE bMaxLevelBySet[ATTRIBUTE_SET_MAX_NUM];
  482. };
  483. typedef struct SConnectTable
  484. {
  485. char login[LOGIN_MAX_LEN + 1];
  486. IDENT ident;
  487. } TConnectTable;
  488. typedef struct SLoginPacket
  489. {
  490. char login[LOGIN_MAX_LEN + 1];
  491. char passwd[PASSWD_MAX_LEN + 1];
  492. } TLoginPacket;
  493. typedef struct SPlayerLoadPacket
  494. {
  495. DWORD account_id;
  496. DWORD player_id;
  497. BYTE account_index; /* account ������ ��ġ */
  498. } TPlayerLoadPacket;
  499. typedef struct SPlayerCreatePacket
  500. {
  501. char login[LOGIN_MAX_LEN + 1];
  502. char passwd[PASSWD_MAX_LEN + 1];
  503. DWORD account_id;
  504. BYTE account_index;
  505. TPlayerTable player_table;
  506. } TPlayerCreatePacket;
  507. typedef struct SPlayerDeletePacket
  508. {
  509. char login[LOGIN_MAX_LEN + 1];
  510. DWORD player_id;
  511. BYTE account_index;
  512. //char name[CHARACTER_NAME_MAX_LEN + 1];
  513. char private_code[8];
  514. } TPlayerDeletePacket;
  515. typedef struct SLogoutPacket
  516. {
  517. char login[LOGIN_MAX_LEN + 1];
  518. char passwd[PASSWD_MAX_LEN + 1];
  519. } TLogoutPacket;
  520. typedef struct SPlayerCountPacket
  521. {
  522. DWORD dwCount;
  523. } TPlayerCountPacket;
  524. #define SAFEBOX_MAX_NUM 135
  525. #define SAFEBOX_PASSWORD_MAX_LEN 6
  526. typedef struct SSafeboxTable
  527. {
  528. DWORD dwID;
  529. BYTE bSize;
  530. DWORD dwGold;
  531. WORD wItemCount;
  532. } TSafeboxTable;
  533. typedef struct SSafeboxChangeSizePacket
  534. {
  535. DWORD dwID;
  536. BYTE bSize;
  537. } TSafeboxChangeSizePacket;
  538. typedef struct SSafeboxLoadPacket
  539. {
  540. DWORD dwID;
  541. char szLogin[LOGIN_MAX_LEN + 1];
  542. char szPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  543. } TSafeboxLoadPacket;
  544. typedef struct SSafeboxChangePasswordPacket
  545. {
  546. DWORD dwID;
  547. char szOldPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  548. char szNewPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
  549. } TSafeboxChangePasswordPacket;
  550. typedef struct SSafeboxChangePasswordPacketAnswer
  551. {
  552. BYTE flag;
  553. } TSafeboxChangePasswordPacketAnswer;
  554. typedef struct SEmpireSelectPacket
  555. {
  556. DWORD dwAccountID;
  557. BYTE bEmpire;
  558. } TEmpireSelectPacket;
  559. typedef struct SPacketGDSetup
  560. {
  561. char szPublicIP[16]; // Public IP which listen to users
  562. BYTE bChannel; // �
  563. WORD wListenPort; // Ŭ���̾�Ʈ�� �����ϴ� ��Ʈ ��ȣ
  564. WORD wP2PPort; // �������� ���� ��Ű�� P2P ��Ʈ ��ȣ
  565. long alMaps[32];
  566. DWORD dwLoginCount;
  567. BYTE bAuthServer;
  568. } TPacketGDSetup;
  569. typedef struct SPacketDGMapLocations
  570. {
  571. BYTE bCount;
  572. } TPacketDGMapLocations;
  573. typedef struct SMapLocation
  574. {
  575. long alMaps[32];
  576. char szHost[MAX_HOST_LENGTH + 1];
  577. WORD wPort;
  578. } TMapLocation;
  579. typedef struct SPacketDGP2P
  580. {
  581. char szHost[MAX_HOST_LENGTH + 1];
  582. WORD wPort;
  583. BYTE bChannel;
  584. } TPacketDGP2P;
  585. typedef struct SPacketGDDirectEnter
  586. {
  587. char login[LOGIN_MAX_LEN + 1];
  588. char passwd[PASSWD_MAX_LEN + 1];
  589. BYTE index;
  590. } TPacketGDDirectEnter;
  591. typedef struct SPacketDGDirectEnter
  592. {
  593. TAccountTable accountTable;
  594. TPlayerTable playerTable;
  595. } TPacketDGDirectEnter;
  596. typedef struct SPacketGuildSkillUpdate
  597. {
  598. DWORD guild_id;
  599. int amount;
  600. BYTE skill_levels[12];
  601. BYTE skill_point;
  602. BYTE save;
  603. } TPacketGuildSkillUpdate;
  604. typedef struct SPacketGuildExpUpdate
  605. {
  606. DWORD guild_id;
  607. int amount;
  608. } TPacketGuildExpUpdate;
  609. typedef struct SPacketGuildChangeMemberData
  610. {
  611. DWORD guild_id;
  612. DWORD pid;
  613. DWORD offer;
  614. BYTE level;
  615. BYTE grade;
  616. } TPacketGuildChangeMemberData;
  617. typedef struct SPacketDGLoginAlready
  618. {
  619. char szLogin[LOGIN_MAX_LEN + 1];
  620. } TPacketDGLoginAlready;
  621. typedef struct TPacketAffectElement
  622. {
  623. DWORD dwType;
  624. BYTE bApplyOn;
  625. long lApplyValue;
  626. DWORD dwFlag;
  627. long lDuration;
  628. long lSPCost;
  629. } TPacketAffectElement;
  630. typedef struct SPacketGDAddAffect
  631. {
  632. DWORD dwPID;
  633. TPacketAffectElement elem;
  634. } TPacketGDAddAffect;
  635. typedef struct SPacketGDRemoveAffect
  636. {
  637. DWORD dwPID;
  638. DWORD dwType;
  639. BYTE bApplyOn;
  640. } TPacketGDRemoveAffect;
  641. typedef struct SPacketPartyCreate
  642. {
  643. DWORD dwLeaderPID;
  644. } TPacketPartyCreate;
  645. typedef struct SPacketPartyDelete
  646. {
  647. DWORD dwLeaderPID;
  648. } TPacketPartyDelete;
  649. typedef struct SPacketPartyAdd
  650. {
  651. DWORD dwLeaderPID;
  652. DWORD dwPID;
  653. BYTE bState;
  654. } TPacketPartyAdd;
  655. typedef struct SPacketPartyRemove
  656. {
  657. DWORD dwLeaderPID;
  658. DWORD dwPID;
  659. } TPacketPartyRemove;
  660. typedef struct SPacketPartyStateChange
  661. {
  662. DWORD dwLeaderPID;
  663. DWORD dwPID;
  664. BYTE bRole;
  665. BYTE bFlag;
  666. } TPacketPartyStateChange;
  667. typedef struct SPacketPartySetMemberLevel
  668. {
  669. DWORD dwLeaderPID;
  670. DWORD dwPID;
  671. BYTE bLevel;
  672. } TPacketPartySetMemberLevel;
  673. typedef struct SPacketGDBoot
  674. {
  675. DWORD dwItemIDRange[2];
  676. char szIP[16];
  677. } TPacketGDBoot;
  678. typedef struct SPacketGuild
  679. {
  680. DWORD dwGuild;
  681. DWORD dwInfo;
  682. } TPacketGuild;
  683. typedef struct SPacketGDGuildAddMember
  684. {
  685. DWORD dwPID;
  686. DWORD dwGuild;
  687. BYTE bGrade;
  688. } TPacketGDGuildAddMember;
  689. typedef struct SPacketDGGuildMember
  690. {
  691. DWORD dwPID;
  692. DWORD dwGuild;
  693. BYTE bGrade;
  694. BYTE isGeneral;
  695. BYTE bJob;
  696. BYTE bLevel;
  697. DWORD dwOffer;
  698. char szName[CHARACTER_NAME_MAX_LEN + 1];
  699. } TPacketDGGuildMember;
  700. typedef struct SPacketGuildWar
  701. {
  702. BYTE bType;
  703. BYTE bWar;
  704. DWORD dwGuildFrom;
  705. DWORD dwGuildTo;
  706. long lWarPrice;
  707. long lInitialScore;
  708. } TPacketGuildWar;
  709. // Game -> DB : ����� ��ȭ��
  710. // DB -> Game : ���� ������
  711. typedef struct SPacketGuildWarScore
  712. {
  713. DWORD dwGuildGainPoint;
  714. DWORD dwGuildOpponent;
  715. long lScore;
  716. long lBetScore;
  717. } TPacketGuildWarScore;
  718. typedef struct SRefineMaterial
  719. {
  720. DWORD vnum;
  721. int count;
  722. } TRefineMaterial;
  723. typedef struct SRefineTable
  724. {
  725. //DWORD src_vnum;
  726. //DWORD result_vnum;
  727. DWORD id;
  728. BYTE material_count;
  729. int cost; // �ҿ� ���
  730. int prob; // Ȯ��
  731. TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
  732. } TRefineTable;
  733. typedef struct SBanwordTable
  734. {
  735. char szWord[BANWORD_MAX_LEN + 1];
  736. } TBanwordTable;
  737. typedef struct SPacketGDChangeName
  738. {
  739. DWORD pid;
  740. char name[CHARACTER_NAME_MAX_LEN + 1];
  741. } TPacketGDChangeName;
  742. typedef struct SPacketDGChangeName
  743. {
  744. DWORD pid;
  745. char name[CHARACTER_NAME_MAX_LEN + 1];
  746. } TPacketDGChangeName;
  747. typedef struct SPacketGuildLadder
  748. {
  749. DWORD dwGuild;
  750. long lLadderPoint;
  751. long lWin;
  752. long lDraw;
  753. long lLoss;
  754. } TPacketGuildLadder;
  755. typedef struct SPacketGuildLadderPoint
  756. {
  757. DWORD dwGuild;
  758. long lChange;
  759. } TPacketGuildLadderPoint;
  760. typedef struct SPacketGuildUseSkill
  761. {
  762. DWORD dwGuild;
  763. DWORD dwSkillVnum;
  764. DWORD dwCooltime;
  765. } TPacketGuildUseSkill;
  766. typedef struct SPacketGuildSkillUsableChange
  767. {
  768. DWORD dwGuild;
  769. DWORD dwSkillVnum;
  770. BYTE bUsable;
  771. } TPacketGuildSkillUsableChange;
  772. typedef struct SPacketGDLoginKey
  773. {
  774. DWORD dwAccountID;
  775. DWORD dwLoginKey;
  776. } TPacketGDLoginKey;
  777. typedef struct SPacketGDAuthLogin
  778. {
  779. DWORD dwID;
  780. DWORD dwLoginKey;
  781. char szLogin[LOGIN_MAX_LEN + 1];
  782. char szSocialID[SOCIAL_ID_MAX_LEN + 1];
  783. DWORD adwClientKey[4];
  784. BYTE bBillType;
  785. DWORD dwBillID;
  786. int iPremiumTimes[PREMIUM_MAX_NUM];
  787. } TPacketGDAuthLogin;
  788. typedef struct SPacketGDLoginByKey
  789. {
  790. char szLogin[LOGIN_MAX_LEN + 1];
  791. DWORD dwLoginKey;
  792. DWORD adwClientKey[4];
  793. char szIP[MAX_HOST_LENGTH + 1];
  794. } TPacketGDLoginByKey;
  795. /**
  796. * @version 05/06/08 Bang2ni - ���ӽð� �߰�
  797. */
  798. typedef struct SPacketGiveGuildPriv
  799. {
  800. BYTE type;
  801. int value;
  802. DWORD guild_id;
  803. time_t duration_sec; ///< ���ӽð�
  804. } TPacketGiveGuildPriv;
  805. typedef struct SPacketGiveEmpirePriv
  806. {
  807. BYTE type;
  808. int value;
  809. BYTE empire;
  810. time_t duration_sec;
  811. } TPacketGiveEmpirePriv;
  812. typedef struct SPacketGiveCharacterPriv
  813. {
  814. BYTE type;
  815. int value;
  816. DWORD pid;
  817. } TPacketGiveCharacterPriv;
  818. typedef struct SPacketRemoveGuildPriv
  819. {
  820. BYTE type;
  821. DWORD guild_id;
  822. } TPacketRemoveGuildPriv;
  823. typedef struct SPacketRemoveEmpirePriv
  824. {
  825. BYTE type;
  826. BYTE empire;
  827. } TPacketRemoveEmpirePriv;
  828. typedef struct SPacketDGChangeCharacterPriv
  829. {
  830. BYTE type;
  831. int value;
  832. DWORD pid;
  833. BYTE bLog;
  834. } TPacketDGChangeCharacterPriv;
  835. /**
  836. * @version 05/06/08 Bang2ni - ���ӽð� �߰�
  837. */
  838. typedef struct SPacketDGChangeGuildPriv
  839. {
  840. BYTE type;
  841. int value;
  842. DWORD guild_id;
  843. BYTE bLog;
  844. time_t end_time_sec; ///< ���ӽð�
  845. } TPacketDGChangeGuildPriv;
  846. typedef struct SPacketDGChangeEmpirePriv
  847. {
  848. BYTE type;
  849. int value;
  850. BYTE empire;
  851. BYTE bLog;
  852. time_t end_time_sec;
  853. } TPacketDGChangeEmpirePriv;
  854. typedef struct SPacketMoneyLog
  855. {
  856. BYTE type;
  857. DWORD vnum;
  858. INT gold;
  859. } TPacketMoneyLog;
  860. typedef struct SPacketGDGuildMoney
  861. {
  862. DWORD dwGuild;
  863. INT iGold;
  864. } TPacketGDGuildMoney;
  865. typedef struct SPacketDGGuildMoneyChange
  866. {
  867. DWORD dwGuild;
  868. INT iTotalGold;
  869. } TPacketDGGuildMoneyChange;
  870. typedef struct SPacketDGGuildMoneyWithdraw
  871. {
  872. DWORD dwGuild;
  873. INT iChangeGold;
  874. } TPacketDGGuildMoneyWithdraw;
  875. typedef struct SPacketGDGuildMoneyWithdrawGiveReply
  876. {
  877. DWORD dwGuild;
  878. INT iChangeGold;
  879. BYTE bGiveSuccess;
  880. } TPacketGDGuildMoneyWithdrawGiveReply;
  881. typedef struct SPacketSetEventFlag
  882. {
  883. char szFlagName[EVENT_FLAG_NAME_MAX_LEN + 1];
  884. long lValue;
  885. } TPacketSetEventFlag;
  886. typedef struct SPacketBillingLogin
  887. {
  888. DWORD dwLoginKey;
  889. BYTE bLogin;
  890. } TPacketBillingLogin;
  891. typedef struct SPacketBillingRepair
  892. {
  893. DWORD dwLoginKey;
  894. char szLogin[LOGIN_MAX_LEN + 1];
  895. char szHost[MAX_HOST_LENGTH + 1];
  896. } TPacketBillingRepair;
  897. typedef struct SPacketBillingExpire
  898. {
  899. char szLogin[LOGIN_MAX_LEN + 1];
  900. BYTE bBillType;
  901. DWORD dwRemainSeconds;
  902. } TPacketBillingExpire;
  903. typedef struct SPacketLoginOnSetup
  904. {
  905. DWORD dwID;
  906. char szLogin[LOGIN_MAX_LEN + 1];
  907. char szSocialID[SOCIAL_ID_MAX_LEN + 1];
  908. char szHost[MAX_HOST_LENGTH + 1];
  909. DWORD dwLoginKey;
  910. DWORD adwClientKey[4];
  911. } TPacketLoginOnSetup;
  912. typedef struct SPacketGDCreateObject
  913. {
  914. DWORD dwVnum;
  915. DWORD dwLandID;
  916. INT lMapIndex;
  917. INT x, y;
  918. float xRot;
  919. float yRot;
  920. float zRot;
  921. } TPacketGDCreateObject;
  922. typedef struct SGuildReserve
  923. {
  924. DWORD dwID;
  925. DWORD dwGuildFrom;
  926. DWORD dwGuildTo;
  927. DWORD dwTime;
  928. BYTE bType;
  929. long lWarPrice;
  930. long lInitialScore;
  931. bool bStarted;
  932. DWORD dwBetFrom;
  933. DWORD dwBetTo;
  934. long lPowerFrom;
  935. long lPowerTo;
  936. long lHandicap;
  937. } TGuildWarReserve;
  938. typedef struct
  939. {
  940. DWORD dwWarID;
  941. char szLogin[LOGIN_MAX_LEN + 1];
  942. DWORD dwGold;
  943. DWORD dwGuild;
  944. } TPacketGDGuildWarBet;
  945. // Marriage
  946. typedef struct
  947. {
  948. DWORD dwPID1;
  949. DWORD dwPID2;
  950. time_t tMarryTime;
  951. char szName1[CHARACTER_NAME_MAX_LEN + 1];
  952. char szName2[CHARACTER_NAME_MAX_LEN + 1];
  953. } TPacketMarriageAdd;
  954. typedef struct
  955. {
  956. DWORD dwPID1;
  957. DWORD dwPID2;
  958. INT iLovePoint;
  959. BYTE byMarried;
  960. } TPacketMarriageUpdate;
  961. typedef struct
  962. {
  963. DWORD dwPID1;
  964. DWORD dwPID2;
  965. } TPacketMarriageRemove;
  966. typedef struct
  967. {
  968. DWORD dwPID1;
  969. DWORD dwPID2;
  970. } TPacketWeddingRequest;
  971. typedef struct
  972. {
  973. DWORD dwPID1;
  974. DWORD dwPID2;
  975. DWORD dwMapIndex;
  976. } TPacketWeddingReady;
  977. typedef struct
  978. {
  979. DWORD dwPID1;
  980. DWORD dwPID2;
  981. } TPacketWeddingStart;
  982. typedef struct
  983. {
  984. DWORD dwPID1;
  985. DWORD dwPID2;
  986. } TPacketWeddingEnd;
  987. /// ���λ��� ���������� ���. ���� ��Ŷ���� �� �ڿ� byCount ��ŭ�� TItemPriceInfo �� �´�.
  988. typedef struct SPacketMyshopPricelistHeader
  989. {
  990. DWORD dwOwnerID; ///< ���������� ���� �÷��̾� ID
  991. BYTE byCount; ///< �������� ����
  992. } TPacketMyshopPricelistHeader;
  993. /// ���λ����� ���� �����ۿ� ���� ��������
  994. typedef struct SItemPriceInfo
  995. {
  996. DWORD dwVnum; ///< ������ vnum
  997. DWORD dwPrice; ///< ����
  998. } TItemPriceInfo;
  999. /// ���λ��� ������ �������� ����Ʈ ���̺�
  1000. typedef struct SItemPriceListTable
  1001. {
  1002. DWORD dwOwnerID; ///< ���������� ���� �÷��̾� ID
  1003. BYTE byCount; ///< �������� ����Ʈ�� ����
  1004. TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< �������� ����Ʈ
  1005. } TItemPriceListTable;
  1006. typedef struct
  1007. {
  1008. char szName[CHARACTER_NAME_MAX_LEN + 1];
  1009. long lDuration;
  1010. } TPacketBlockChat;
  1011. //ADMIN_MANAGER
  1012. typedef struct TAdminInfo
  1013. {
  1014. int m_ID; //����ID
  1015. char m_szAccount[32]; //����
  1016. char m_szName[32]; //ij�����̸�
  1017. char m_szContactIP[16]; //���پ�����
  1018. char m_szServerIP[16]; //����������
  1019. int m_Authority; //����
  1020. } tAdminInfo;
  1021. //END_ADMIN_MANAGER
  1022. //BOOT_LOCALIZATION
  1023. struct tLocale
  1024. {
  1025. char szValue[32];
  1026. char szKey[32];
  1027. };
  1028. //BOOT_LOCALIZATION
  1029. //RELOAD_ADMIN
  1030. typedef struct SPacketReloadAdmin
  1031. {
  1032. char szIP[16];
  1033. } TPacketReloadAdmin;
  1034. //END_RELOAD_ADMIN
  1035. typedef struct tChangeGuildMaster
  1036. {
  1037. DWORD dwGuildID;
  1038. DWORD idFrom;
  1039. DWORD idTo;
  1040. } TPacketChangeGuildMaster;
  1041. typedef struct tItemIDRange
  1042. {
  1043. DWORD dwMin;
  1044. DWORD dwMax;
  1045. DWORD dwUsableItemIDMin;
  1046. } TItemIDRangeTable;
  1047. typedef struct tUpdateHorseName
  1048. {
  1049. DWORD dwPlayerID;
  1050. char szHorseName[CHARACTER_NAME_MAX_LEN + 1];
  1051. } TPacketUpdateHorseName;
  1052. typedef struct tDC
  1053. {
  1054. char login[LOGIN_MAX_LEN + 1];
  1055. } TPacketDC;
  1056. typedef struct tNeedLoginLogInfo
  1057. {
  1058. DWORD dwPlayerID;
  1059. } TPacketNeedLoginLogInfo;
  1060. //���� ���� �˸� ��� �׽�Ʈ�� ��Ŷ ����
  1061. typedef struct tItemAwardInformer
  1062. {
  1063. char login[LOGIN_MAX_LEN + 1];
  1064. char command[20]; //���ɾ�
  1065. unsigned int vnum; //������
  1066. } TPacketItemAwardInfromer;
  1067. // ���� �˸� ��� ������ ��Ŷ ����
  1068. typedef struct tDeleteAwardID
  1069. {
  1070. DWORD dwID;
  1071. } TPacketDeleteAwardID;
  1072. typedef struct SChannelStatus
  1073. {
  1074. short nPort;
  1075. BYTE bStatus;
  1076. } TChannelStatus;
  1077. #ifdef __ENABLE_NEW_OFFLINESHOP__
  1078. typedef struct SPacketGDNewOfflineShop
  1079. {
  1080. BYTE bSubHeader;
  1081. } TPacketGDNewOfflineShop;
  1082. typedef struct SPacketDGNewOfflineShop
  1083. {
  1084. BYTE bSubHeader;
  1085. } TPacketDGNewOfflineShop;
  1086. namespace offlineshop
  1087. {
  1088. enum class ExpirationType
  1089. {
  1090. EXPIRE_NONE,
  1091. EXPIRE_REAL_TIME,
  1092. EXPIRE_REAL_TIME_FIRST_USE,
  1093. };
  1094. typedef struct SPriceInfo
  1095. {
  1096. long long illYang;
  1097. #ifdef __ENABLE_CHEQUE_SYSTEM__
  1098. int iCheque;
  1099. #endif
  1100. SPriceInfo() : illYang(0)
  1101. #ifdef ENABLE_CHEQUE_SYSTEM
  1102. ,iCheque(0)
  1103. #endif
  1104. {}
  1105. bool operator < (const SPriceInfo& rItem) const
  1106. {
  1107. return GetTotalYangAmount() < rItem.GetTotalYangAmount();
  1108. }
  1109. long long GetTotalYangAmount() const
  1110. {
  1111. long long total = illYang;
  1112. #ifdef __ENABLE_CHEQUE_SYSTEM__
  1113. total += (long long) YANG_PER_CHEQUE * (long long) iCheque;
  1114. #endif
  1115. return total;
  1116. }
  1117. } TPriceInfo;
  1118. typedef struct SItemInfoEx
  1119. {
  1120. DWORD dwVnum;
  1121. DWORD dwCount;
  1122. long alSockets[ITEM_SOCKET_MAX_NUM];
  1123. TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
  1124. #ifdef __ENABLE_CHANGELOOK_SYSTEM__
  1125. DWORD dwTransmutation;
  1126. #endif
  1127. ExpirationType expiration;
  1128. } TItemInfoEx;
  1129. typedef struct SItemInfo
  1130. {
  1131. DWORD dwOwnerID, dwItemID;
  1132. TPriceInfo price;
  1133. TItemInfoEx item;
  1134. } TItemInfo;
  1135. typedef struct SOfferInfo
  1136. {
  1137. DWORD dwOfferID, dwOwnerID, dwItemID, dwOffererID;
  1138. TPriceInfo price;
  1139. bool bNoticed, bAccepted;
  1140. char szBuyerName[CHARACTER_NAME_MAX_LEN+1];
  1141. } TOfferInfo;
  1142. typedef struct SAuctionInfo
  1143. {
  1144. DWORD dwOwnerID;
  1145. char szOwnerName[CHARACTER_NAME_MAX_LEN + 1];
  1146. DWORD dwDuration;
  1147. TPriceInfo init_price;
  1148. TItemInfoEx item;
  1149. } TAuctionInfo;
  1150. typedef struct SAuctionOfferInfo
  1151. {
  1152. TPriceInfo price;
  1153. DWORD dwOwnerID;
  1154. DWORD dwBuyerID;
  1155. char szBuyerName[CHARACTER_NAME_MAX_LEN + 1];
  1156. } TAuctionOfferInfo;
  1157. typedef struct SValutesInfoa
  1158. {
  1159. long long illYang;
  1160. #ifdef __ENABLE_CHEQUE_SYSTEM__
  1161. int iCheque;
  1162. #endif
  1163. void operator +=(const SValutesInfoa& r)
  1164. {
  1165. illYang += r.illYang;
  1166. #ifdef __ENABLE_CHEQUE_SYSTEM__
  1167. iCheque += r.iCheque;
  1168. #endif
  1169. }
  1170. void operator -=(const SValutesInfoa& r)
  1171. {
  1172. illYang -= r.illYang;
  1173. #ifdef __ENABLE_CHEQUE_SYSTEM__
  1174. iCheque -= r.iCheque;
  1175. #endif
  1176. }
  1177. SValutesInfoa() : illYang(0)
  1178. #ifdef ENABLE_CHEQUE_SYSTEM
  1179. , iCheque(0)
  1180. #endif
  1181. {}
  1182. } TValutesInfo;
  1183. typedef struct SShopInfo
  1184. {
  1185. DWORD dwOwnerID;
  1186. DWORD dwDuration;
  1187. char szName[OFFLINE_SHOP_NAME_MAX_LEN];
  1188. DWORD dwCount;
  1189. } TShopInfo;
  1190. #ifdef ENABLE_IRA_REWORK
  1191. typedef struct SShopPosition
  1192. {
  1193. long lMapIndex;
  1194. long x, y;
  1195. BYTE bChannel;
  1196. } TShopPosition;
  1197. #endif
  1198. enum eNewOfflineshopSubHeaderGD
  1199. {
  1200. SUBHEADER_GD_BUY_ITEM = 0,
  1201. SUBHEADER_GD_BUY_LOCK_ITEM,
  1202. SUBHEADER_GD_CANNOT_BUY_LOCK_ITEM,
  1203. SUBHEADER_GD_EDIT_ITEM,
  1204. SUBHEADER_GD_REMOVE_ITEM,
  1205. SUBHEADER_GD_ADD_ITEM,
  1206. SUBHEADER_GD_SHOP_FORCE_CLOSE,
  1207. SUBHEADER_GD_SHOP_CREATE_NEW,
  1208. SUBHEADER_GD_SHOP_CHANGE_NAME,
  1209. SUBHEADER_GD_OFFER_CREATE,
  1210. SUBHEADER_GD_OFFER_NOTIFIED,
  1211. SUBHEADER_GD_OFFER_ACCEPT,
  1212. SUBHEADER_GD_OFFER_CANCEL,
  1213. SUBHEADER_GD_SAFEBOX_GET_ITEM,
  1214. SUBHEADER_GD_SAFEBOX_GET_VALUTES,
  1215. SUBHEADER_GD_SAFEBOX_ADD_ITEM,
  1216. SUBHEADER_GD_AUCTION_CREATE,
  1217. SUBHEADER_GD_AUCTION_ADD_OFFER,
  1218. };
  1219. typedef struct SSubPacketGDBuyItem
  1220. {
  1221. DWORD dwOwnerID, dwItemID, dwGuestID;
  1222. } TSubPacketGDBuyItem;
  1223. typedef struct SSubPacketGDLockBuyItem
  1224. {
  1225. DWORD dwOwnerID, dwItemID, dwGuestID;
  1226. } TSubPacketGDLockBuyItem;
  1227. typedef struct SSubPacketGDCannotBuyLockItem
  1228. {
  1229. DWORD dwOwnerID, dwItemID;
  1230. } TSubPacketGDCannotBuyLockItem;
  1231. typedef struct SSubPacketGDEditItem
  1232. {
  1233. DWORD dwOwnerID, dwItemID;
  1234. TPriceInfo priceInfo;
  1235. } TSubPacketGDEditItem;
  1236. typedef struct SSubPacketGDRemoveItem
  1237. {
  1238. DWORD dwOwnerID;
  1239. DWORD dwItemID;
  1240. } TSubPacketGDRemoveItem;
  1241. typedef struct SSubPacketGDAddItem
  1242. {
  1243. DWORD dwOwnerID;
  1244. TItemInfo itemInfo;
  1245. } TSubPacketGDAddItem;
  1246. typedef struct SSubPacketGDShopForceClose
  1247. {
  1248. DWORD dwOwnerID;
  1249. } TSubPacketGDShopForceClose;
  1250. typedef struct SSubPacketGDShopCreateNew
  1251. {
  1252. TShopInfo shop;
  1253. #ifdef ENABLE_IRA_REWORK
  1254. TShopPosition pos;
  1255. #endif
  1256. } TSubPacketGDShopCreateNew;
  1257. typedef struct SSubPacketGDShopChangeName
  1258. {
  1259. DWORD dwOwnerID;
  1260. char szName[OFFLINE_SHOP_NAME_MAX_LEN];
  1261. } TSubPacketGDShopChangeName;
  1262. typedef struct SSubPacketGDOfferCreate
  1263. {
  1264. DWORD dwOwnerID, dwItemID;
  1265. TOfferInfo offer;
  1266. } TSubPacketGDOfferCreate;
  1267. typedef struct SSubPacketGDOfferCancel
  1268. {
  1269. DWORD dwOfferID;
  1270. DWORD dwOwnerID;
  1271. }TSubPacketGDOfferCancel;
  1272. typedef struct SSubPacketGDOfferNotified
  1273. {
  1274. DWORD dwOwnerID, dwOfferID;
  1275. } TSubPacketGDOfferNotified;
  1276. typedef struct SSubPacketGDOfferAccept
  1277. {
  1278. DWORD dwOwnerID, dwOfferID;
  1279. } TSubPacketGDOfferAccept;
  1280. typedef struct SSubPacketGDSafeboxGetItem
  1281. {
  1282. DWORD dwOwnerID;
  1283. DWORD dwItemID;
  1284. } TSubPacketGDSafeboxGetItem;
  1285. typedef struct SSubPacketGDSafeboxAddItem
  1286. {
  1287. DWORD dwOwnerID;
  1288. TItemInfoEx item;
  1289. } TSubPacketGDSafeboxAddItem;
  1290. typedef struct SSubPacketGDSafeboxGetValutes
  1291. {
  1292. DWORD dwOwnerID;
  1293. TValutesInfo valute;
  1294. } TSubPacketGDSafeboxGetValutes;
  1295. typedef struct SSubPacketGDAuctionCreate
  1296. {
  1297. TAuctionInfo auction;
  1298. } TSubPacketGDAuctionCreate;
  1299. typedef struct SSubPacketGDAuctionAddOffer
  1300. {
  1301. TAuctionOfferInfo offer;
  1302. } TSubPacketGDAuctionAddOffer;
  1303. enum eSubHeaderDGNewOfflineshop
  1304. {
  1305. SUBHEADER_DG_BUY_ITEM,
  1306. SUBHEADER_DG_LOCKED_BUY_ITEM,
  1307. SUBHEADER_DG_EDIT_ITEM,
  1308. SUBHEADER_DG_REMOVE_ITEM,
  1309. SUBHEADER_DG_ADD_ITEM,
  1310. SUBHEADER_DG_SHOP_FORCE_CLOSE,
  1311. SUBHEADER_DG_SHOP_CREATE_NEW,
  1312. SUBHEADER_DG_SHOP_CHANGE_NAME,
  1313. SUBHEADER_DG_SHOP_EXPIRED,
  1314. SUBHEADER_DG_OFFER_CREATE,
  1315. SUBHEADER_DG_OFFER_NOTIFIED,
  1316. SUBHEADER_DG_OFFER_ACCEPT,
  1317. SUBHEADER_DG_OFFER_CANCEL,
  1318. SUBHEADER_DG_LOAD_TABLES,
  1319. SUBHEADER_DG_SAFEBOX_ADD_ITEM,
  1320. SUBHEADER_DG_SAFEBOX_ADD_VALUTES,
  1321. SUBHEADER_DG_SAFEBOX_LOAD,
  1322. SUBHEADER_DG_SAFEBOX_EXPIRED_ITEM,
  1323. SUBHEADER_DG_AUCTION_CREATE,
  1324. SUBHEADER_DG_AUCTION_ADD_OFFER,
  1325. SUBHEADER_DG_AUCTION_EXPIRED,
  1326. };
  1327. typedef struct SSubPacketDGBuyItem
  1328. {
  1329. DWORD dwOwnerID, dwItemID, dwBuyerID;
  1330. } TSubPacketDGBuyItem;
  1331. typedef struct SSubPacketDGLockedBuyItem
  1332. {
  1333. DWORD dwOwnerID, dwItemID, dwBuyerID;
  1334. } TSubPacketDGLockedBuyItem;
  1335. typedef struct SSubPacketDGEditItem
  1336. {
  1337. DWORD dwOwnerID, dwItemID;
  1338. TPriceInfo price;
  1339. } TSubPacketDGEditItem;
  1340. typedef struct SSubPacketDGRemoveItem
  1341. {
  1342. DWORD dwOwnerID, dwItemID;
  1343. } TSubPacketDGRemoveItem;
  1344. typedef struct SSubPacketDGAddItem
  1345. {
  1346. DWORD dwOwnerID, dwItemID;
  1347. TItemInfo item;
  1348. } TSubPacketDGAddItem;
  1349. typedef struct SSubPacketDGShopForceClose
  1350. {
  1351. DWORD dwOwnerID;
  1352. } TSubPacketDGShopForceClose;
  1353. typedef struct SSubPacketDGShopCreateNew
  1354. {
  1355. TShopInfo shop;
  1356. #ifdef ENABLE_IRA_REWORK
  1357. TShopPosition pos;
  1358. #endif
  1359. } TSubPacketDGShopCreateNew;
  1360. typedef struct SSubPacketDGShopChangeName
  1361. {
  1362. DWORD dwOwnerID;
  1363. char szName[OFFLINE_SHOP_NAME_MAX_LEN];
  1364. } TSubPacketDGShopChangeName;
  1365. typedef struct SSubPacketDGOfferCreate
  1366. {
  1367. DWORD dwOwnerID, dwItemID;
  1368. TOfferInfo offer;
  1369. } TSubPacketDGOfferCreate;
  1370. typedef struct SSubPacketDGOfferCancel
  1371. {
  1372. DWORD dwOfferID;
  1373. DWORD dwOwnerID;
  1374. bool IsRemovingItem;
  1375. } TSubPacketDGOfferCancel;
  1376. typedef struct SSubPacketDGOfferNotified
  1377. {
  1378. DWORD dwOwnerID, dwOfferID;
  1379. } TSubPacketDGOfferNotified;
  1380. typedef struct SSubPacketDGOfferAccept
  1381. {
  1382. DWORD dwOwnerID, dwOfferID;
  1383. } TSubPacketDGOfferAccept;
  1384. typedef struct SSubPacketDGLoadTables
  1385. {
  1386. DWORD dwShopCount;
  1387. DWORD dwOfferCount;
  1388. DWORD dwAuctionCount;
  1389. DWORD dwAuctionOfferCount;
  1390. } TSubPacketDGLoadTables;
  1391. typedef struct SSubPacketDGShopExpired
  1392. {
  1393. DWORD dwOwnerID;
  1394. } TSubPacketDGShopExpired;
  1395. typedef struct SSubPacketDGSafeboxAddItem
  1396. {
  1397. DWORD dwOwnerID, dwItemID;
  1398. TItemInfoEx item;
  1399. } TSubPacketDGSafeboxAddItem;
  1400. typedef struct SSubPacketDGSafeboxAddValutes
  1401. {
  1402. DWORD dwOwnerID;
  1403. TValutesInfo valute;
  1404. } TSubPacketDGSafeboxAddValutes;
  1405. typedef struct SSubPacketDGSafeboxLoad
  1406. {
  1407. DWORD dwOwnerID;
  1408. TValutesInfo valute;
  1409. DWORD dwItemCount;
  1410. } TSubPacketDGSafeboxLoad;
  1411. typedef struct SSubPacketDGSafeboxExpiredItem
  1412. {
  1413. DWORD dwOwnerID;
  1414. DWORD dwItemID;
  1415. } TSubPacketDGSafeboxExpiredItem;
  1416. typedef struct SSubPacketDGAuctionCreate
  1417. {
  1418. TAuctionInfo auction;
  1419. } TSubPacketDGAuctionCreate;
  1420. typedef struct SSubPacketDGAuctionAddOffer
  1421. {
  1422. TAuctionOfferInfo offer;
  1423. } TSubPacketDGAuctionAddOffer;
  1424. typedef struct SSubPacketDGAuctionExpired
  1425. {
  1426. DWORD dwOwnerID;
  1427. } TSubPacketDGAuctionExpired;
  1428. }
  1429. #endif
  1430. #pragma pack()
  1431. #endif

tables.h