/trunk/Demo.Mmose.GameServer/R.O.S.E.Server/R.O.S.E.Server/WorldServer/Network/WorldPackets.cs

# · C# · 1771 lines · 1068 code · 215 blank · 488 comment · 72 complexity · e34838c51426acdb8f5ac13dec792a76 MD5 · raw file

Large files are truncated click here to view the full file

  1. #region zh-CHS °æȨËùÓÐ (C) 2006 - 2006 DemoSoft Corporation. ±£ÁôËùÓÐȨÀû | en Copyright (C) 2006 - 2006 DemoSoft Corporation. All Rights Reserved.
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // Program.cs : interface for the Program class.
  5. //
  6. // This file is a part of the Demo Toolkit for .NET.
  7. // 2006-2006 Demo Software, All Rights Reserved.
  8. //
  9. // This source code can only be used under the terms and conditions
  10. // outlined in the accompanying license agreement.
  11. //
  12. // mailto:caihuanqing@hotmail.com
  13. #region zh-CHS °üº¬Ãû×Ö¿Õ¼ä | en Include namespace
  14. using System.IO;
  15. using Demo_G.O.S.E.ServerEngine.Network;
  16. using System;
  17. using Demo_G.O.S.E.ServerEngine.Common;
  18. using Demo_R.O.S.E.Mobile;
  19. #endregion
  20. namespace Demo_R.O.S.E.WorldServer.Network
  21. {
  22. #region zh-CHS Unknown0x0702Ack Àà | en Unknown0x702Ack Class
  23. /// <summary>
  24. ///
  25. /// </summary>
  26. internal sealed class Unknown0x0702Ack : Packet
  27. {
  28. /// <summary>
  29. ///
  30. /// </summary>
  31. internal Unknown0x0702Ack(string strMessage)
  32. : base( 0x702, 0 /*6 + ?*/ )
  33. {
  34. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  35. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  36. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  37. //////////////////////////////////////////////////////////////////////////
  38. WriterStream.WriteAsciiNull( strMessage );
  39. //////////////////////////////////////////////////////////////////////////
  40. WriterStream.Seek( 0, SeekOrigin.Begin );
  41. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  42. }
  43. }
  44. #endregion
  45. #region zh-CHS Unknown0x070CAck Àà | en Unknown0x070CAck Class
  46. /// <summary>
  47. ///
  48. /// </summary>
  49. internal sealed class Unknown0x070CAck : Packet
  50. {
  51. /// <summary>
  52. ///
  53. /// </summary>
  54. internal Unknown0x070CAck() : base( 0x70C, 15 /*6 + 9*/ )
  55. {
  56. WriterStream.Write( (ushort)15 /*6 + 9*/ ); // ×ֶδóС
  57. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  58. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  59. //////////////////////////////////////////////////////////////////////////
  60. WriterStream.Write( (sbyte)0x0 );
  61. WriterStream.Write( (uint)0x87654321 );
  62. WriterStream.Write( (uint)0x00000000 );
  63. }
  64. }
  65. #endregion
  66. #region zh-CHS Unknown0x0721Ack Àà | en Unknown0x721Ack Class
  67. /// <summary>
  68. ///
  69. /// </summary>
  70. internal sealed class Unknown0x0721Ack : Packet
  71. {
  72. /// <summary>
  73. ///
  74. /// </summary>
  75. internal Unknown0x0721Ack()
  76. : base( 0x721, 12 /*6 + 6*/ )
  77. {
  78. WriterStream.Write( (ushort)12 /*6 + 6*/ ); // ×ֶδóС
  79. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  80. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  81. //////////////////////////////////////////////////////////////////////////
  82. WriterStream.Write( (ushort)0x0022 );
  83. WriterStream.Write( (ushort)0x0002 );
  84. WriterStream.Write( (ushort)0x0000 );
  85. }
  86. }
  87. #endregion
  88. #region zh-CHS Unknown0x0730Ack Àà | en Unknown0x730Ack Class
  89. /// <summary>
  90. ///
  91. /// </summary>
  92. internal sealed class Unknown0x0730Ack : Packet
  93. {
  94. /// <summary>
  95. ///
  96. /// </summary>
  97. internal Unknown0x0730Ack()
  98. : base( 0x730, 12 /*6 + 6*/ )
  99. {
  100. WriterStream.Write( (ushort)12 /*6 + 6*/ ); // ×ֶδóС
  101. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  102. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  103. //////////////////////////////////////////////////////////////////////////
  104. WriterStream.Write( (ushort)0x0005 );
  105. WriterStream.Write( (uint)0x40B3A24D );
  106. }
  107. }
  108. #endregion
  109. #region zh-CHS Unknown0x0753Ack Àà | en Unknown0x753Ack Class
  110. /// <summary>
  111. ///
  112. /// </summary>
  113. internal sealed class Unknown0x0753Ack : Packet
  114. {
  115. /// <summary>
  116. ///
  117. /// </summary>
  118. internal Unknown0x0753Ack( ROSEMobile character )
  119. : base( 0x753, 52 /*6 + 46*/ )
  120. {
  121. WriterStream.Write( (ushort)52 /*6 + 46*/ ); // ×ֶδóС
  122. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  123. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  124. //////////////////////////////////////////////////////////////////////////
  125. WriterStream.Write( (ushort)character.m_iClientID ); // USER ID
  126. WriterStream.Write( (ushort)character.m_iCurrentHP ); // CURRENT HP
  127. WriterStream.Write( (ushort)character.m_iCurrentMP ); // CURRENT MP
  128. WriterStream.Write( (uint)character.m_iExperience ); // CURRENT EXP
  129. WriterStream.Write( (uint)0x00000000 ); // LVL EXP (UNSUSED)
  130. //[economy]
  131. WriterStream.Write( (ushort)0x0063 ); // World Rate
  132. WriterStream.Write( (byte)0x70 );
  133. WriterStream.Write( (byte)0x69 );
  134. WriterStream.Write( (byte)0x68 );
  135. WriterStream.Write( (byte)0x67 );
  136. WriterStream.Write( (ushort)0x0062 ); // Town rate
  137. WriterStream.Write( (byte)0x61 ); // misc rate
  138. WriterStream.Write( (byte)0x32 ); // 1
  139. WriterStream.Write( (byte)0x32 ); // 2
  140. WriterStream.Write( (byte)0x32 ); // 3
  141. WriterStream.Write( (byte)0x32 ); // 4
  142. WriterStream.Write( (byte)0x32 ); // 5
  143. WriterStream.Write( (byte)0x32 ); // 6
  144. WriterStream.Write( (byte)0x32 ); // 7
  145. WriterStream.Write( (byte)0x32 ); // 8
  146. WriterStream.Write( (byte)0x32 ); // 9
  147. WriterStream.Write( (byte)0x32 ); // 10
  148. WriterStream.Write( (byte)0x32 ); // 11
  149. if (character.m_posMapData.pvp == true)
  150. WriterStream.Write( (ushort)0x0001 ); // player vs player map
  151. else
  152. WriterStream.Write( (ushort)0x0000 ); // non player vs player map
  153. WriterStream.Write( (ushort)0x0000 ); // ?
  154. // This 3 are to the world time (night/day...)
  155. WriterStream.Write( (byte)character.m_iCurrentWorldTime );
  156. WriterStream.Write( (byte)0xDE );
  157. WriterStream.Write( (ushort)0x0008 ); // this change something in the mapicon (time)
  158. if ( character.m_posMapData.pvp == true )
  159. {
  160. WriterStream.Write( (ushort)0x0000 ); // red icon (map)
  161. WriterStream.Write( (ushort)0x0005 ); // red icon (map)
  162. }
  163. else
  164. {
  165. WriterStream.Write( (ushort)0x0002 ); // white icon (map)
  166. WriterStream.Write( (ushort)0x0000 ); // white icon (map)
  167. }
  168. }
  169. }
  170. #endregion
  171. #region zh-CHS Unknown0x0762Ack Àà | en Unknown0x762Ack Class
  172. /// <summary>
  173. ///
  174. /// </summary>
  175. internal sealed class Unknown0x0762Ack : Packet
  176. {
  177. /// <summary>
  178. ///
  179. /// </summary>
  180. internal Unknown0x0762Ack( ROSEMobile character )
  181. : base( 0x762, 9 /*6 + 3*/ )
  182. {
  183. WriterStream.Write( (ushort)9 /*6 + 3*/ ); // ×ֶδóС
  184. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  185. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  186. //////////////////////////////////////////////////////////////////////////
  187. WriterStream.Write( (ushort)character.m_iClientID ); // USER ID
  188. WriterStream.Write( (sbyte)0x01 ); // SOMETHING TO DO WITH WEIGHT
  189. }
  190. }
  191. #endregion
  192. #region zh-CHS Unknown0x0782Ack Àà | en Unknown0x782Ack Class
  193. /// <summary>
  194. ///
  195. /// </summary>
  196. internal sealed class Unknown0x0782Ack : Packet
  197. {
  198. /// <summary>
  199. ///
  200. /// </summary>
  201. internal Unknown0x0782Ack( ROSEMobile character )
  202. : base( 0x782, 9 /*6 + 3*/ )
  203. {
  204. WriterStream.Write( (ushort)9 /*6 + 3*/ ); // ×ֶδóС
  205. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  206. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  207. //////////////////////////////////////////////////////////////////////////
  208. WriterStream.Write( (ushort)character.m_iClientID );
  209. WriterStream.Write( (sbyte)character.m_iSense );
  210. }
  211. }
  212. #endregion
  213. #region zh-CHS Unknown0x0798Ack Àà | en Unknown0x0798Ack Class
  214. /// <summary>
  215. ///
  216. /// </summary>
  217. internal sealed class Unknown0x0798Ack : Packet
  218. {
  219. /// <summary>
  220. ///
  221. /// </summary>
  222. internal Unknown0x0798Ack()
  223. : base( 0x798, 20 /*6 + 14*/ )
  224. {
  225. WriterStream.Write( (ushort)20 /*6 + 14*/ ); // ×ֶδóС
  226. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  227. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  228. //////////////////////////////////////////////////////////////////////////
  229. //WriterStream.Write( (ushort)0x00 );
  230. //WriterStream.Write( (ushort)0x00 );
  231. //WriterStream.Write( (ushort)0x00 );
  232. //WriterStream.Write( (float)0x00 );
  233. //WriterStream.Write( (float)0x00 );
  234. }
  235. }
  236. #endregion
  237. #region zh-CHS Unknown0x079FAck Àà | en Unknown0x079FAck Class
  238. /// <summary>
  239. ///
  240. /// </summary>
  241. internal sealed class Unknown0x079FAck : Packet
  242. {
  243. /// <summary>
  244. ///
  245. /// </summary>
  246. internal Unknown0x079FAck()
  247. : base( 0x79F, 12 /*6 + 6*/ )
  248. {
  249. WriterStream.Write( (ushort)12 /*6 + 6*/ ); // ×ֶδóС
  250. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  251. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  252. //////////////////////////////////////////////////////////////////////////
  253. //WriterStream.Write( (ushort)0x00 );
  254. //WriterStream.Write( (ushort)0x00 );
  255. //WriterStream.Write( (ushort)0x00 );
  256. }
  257. }
  258. #endregion
  259. #region zh-CHS Unknown0x07D5Ack Àà | en Unknown0x721Ack Class
  260. /// <summary>
  261. ///
  262. /// </summary>
  263. internal sealed class Unknown0x07D5Ack : Packet
  264. {
  265. /// <summary>
  266. ///
  267. /// </summary>
  268. internal Unknown0x07D5Ack( ROSEMobile character )
  269. : base( 0x7D5, 26 /*6 + 20*/ )
  270. {
  271. WriterStream.Write( (ushort)26 /*6 + 20*/ ); // ×ֶδóС
  272. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  273. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  274. //////////////////////////////////////////////////////////////////////////
  275. WriterStream.Write( (uint)character.m_iCharacterGuid );
  276. WriterStream.Write( (ushort)character.m_iClientID );
  277. WriterStream.Write( (ushort)character.m_iMaxHP );
  278. WriterStream.Write( (ushort)character.m_iCurrentHP );
  279. WriterStream.Write( (uint)0x01000000 );
  280. WriterStream.Write( (uint)0x0000000F );
  281. WriterStream.Write( (ushort)0x1388 );
  282. }
  283. }
  284. #endregion
  285. #region zh-CHS Unknown0x07DEAck Àà | en Unknown0x07DEAck Class
  286. /// <summary>
  287. ///
  288. /// </summary>
  289. internal sealed class Unknown0x07DEAck : Packet
  290. {
  291. /// <summary>
  292. ///
  293. /// </summary>
  294. internal Unknown0x07DEAck() : base( 0x07DE, 37 /*6 + 31*/ )
  295. {
  296. WriterStream.Write( (ushort)37 /*6 + 31*/ ); // ×ֶδóС
  297. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  298. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  299. //////////////////////////////////////////////////////////////////////////
  300. WriterStream.Write( (uint)0x000C1003 );
  301. WriterStream.Write( (uint)0xFFFF0000 );
  302. WriterStream.Write( (uint)0x00000000 );
  303. WriterStream.Write( (uint)0x9B000038 );
  304. WriterStream.Write( (uint)0x7272656A );
  305. WriterStream.Write( (uint)0x3C3C3479 );
  306. WriterStream.Write( (uint)0x534D5547 );
  307. WriterStream.Write( (ushort)0x3E3E );
  308. WriterStream.Write( (sbyte)0x00 );
  309. }
  310. }
  311. #endregion
  312. #region zh-CHS Unknown0x07DFAck Àà | en Unknown0x07DFAck Class
  313. /// <summary>
  314. ///
  315. /// </summary>
  316. internal sealed class Unknown0x07DFAck : Packet
  317. {
  318. /// <summary>
  319. ///
  320. /// </summary>
  321. internal Unknown0x07DFAck()
  322. : base( 0x7DF, 0 /*6 + ?*/ )
  323. {
  324. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  325. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  326. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  327. //////////////////////////////////////////////////////////////////////////
  328. WriterStream.Write( (byte)0xF1 );
  329. WriterStream.WriteAsciiNull( "H.Q.Cai Rose Online Private Server!" );
  330. //////////////////////////////////////////////////////////////////////////
  331. WriterStream.Seek( 0, SeekOrigin.Begin );
  332. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  333. }
  334. }
  335. #endregion
  336. #region zh-CHS UserInformationAck Àà | en UserInformationAck Class
  337. /// <summary>
  338. ///
  339. /// </summary>
  340. internal sealed class UserInformationAck : Packet
  341. {
  342. /// <summary>
  343. ///
  344. /// </summary>
  345. internal UserInformationAck( ROSEMobile character )
  346. : base( 0x715, 0 /*6 + ?*/ )
  347. {
  348. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  349. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  350. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  351. //////////////////////////////////////////////////////////////////////////
  352. WriterStream.Write( (byte)character.m_iSex ); // GENDER 1=FEMALE 0=MALE
  353. WriterStream.Write( (ushort)character.m_posMapID ); // MAP
  354. WriterStream.Write( (float)( character.X* 100 ) ); // X POS
  355. WriterStream.Write( (float)( character.Y * 100 ) ); // Y POS
  356. WriterStream.Write( (ushort)0x0000 );
  357. WriterStream.Write( (uint)character.m_iFace ); // FACE TYPE
  358. WriterStream.Write( (uint)character.m_iHairStyle ); // HAIR TYPE
  359. WriterStream.Write( (ushort)character.m_Items[2].m_iItemID ); // CAP
  360. WriterStream.Write( (ushort)character.m_Items[2].BuildItemRefine() ); // CAP REFINE
  361. WriterStream.Write( (ushort)character.m_Items[3].m_iItemID ); // BODY
  362. WriterStream.Write( (ushort)character.m_Items[3].BuildItemRefine() ); // BODY REFINE
  363. WriterStream.Write( (ushort)character.m_Items[5].m_iItemID ); // GLOVES
  364. WriterStream.Write( (ushort)character.m_Items[5].BuildItemRefine() ); // GLOVES REFINE
  365. WriterStream.Write( (ushort)character.m_Items[6].m_iItemID ); // BOOTS
  366. WriterStream.Write( (ushort)character.m_Items[6].BuildItemRefine() ); // BOOTS REFINE
  367. WriterStream.Write( (ushort)character.m_Items[1].m_iItemID ); // FACE
  368. WriterStream.Write( (ushort)character.m_Items[1].BuildItemRefine() ); // FACE REFINE
  369. WriterStream.Write( (ushort)character.m_Items[4].m_iItemID ); // BACK
  370. WriterStream.Write( (ushort)character.m_Items[4].BuildItemRefine() ); // BACK REFINE
  371. WriterStream.Write( (ushort)character.m_Items[7].m_iItemID ); // WEAPON
  372. WriterStream.Write( (ushort)character.m_Items[7].BuildItemRefine() ); // WEAPON REFINE
  373. WriterStream.Write( (ushort)character.m_Items[8].m_iItemID ); // SUBWEAPON
  374. WriterStream.Write( (ushort)character.m_Items[8].BuildItemRefine() ); // SUBWEAPON REFINE
  375. WriterStream.Write( (byte)0x0 );
  376. WriterStream.Write( (ushort)0x140F );
  377. WriterStream.Write( (ushort)character.m_iClassID ); //JOB
  378. WriterStream.Write( (byte)0x0 );
  379. WriterStream.Write( (ushort)0x0 );
  380. WriterStream.Write( (ushort)character.m_iStrength ); // STR
  381. WriterStream.Write( (ushort)character.m_iDexterity ); // DEX
  382. WriterStream.Write( (ushort)character.m_iIntellect ); // INT
  383. WriterStream.Write( (ushort)character.m_iConvergence ); // CON
  384. WriterStream.Write( (ushort)character.m_iCharm ); // CHA
  385. WriterStream.Write( (ushort)character.m_iSense ); // SEN
  386. WriterStream.Write( (ushort)character.m_iCurrentHP ); // HP
  387. WriterStream.Write( (ushort)character.m_iCurrentMP ); // MP
  388. WriterStream.Write( (ushort)character.m_iExperience ); // EXP
  389. WriterStream.Write( (ushort)0x0);
  390. WriterStream.Write( (ushort)character.m_iLevel ); // LEVEL
  391. WriterStream.Write( (ushort)character.m_iStatusPoint ); // STAT POINTS
  392. WriterStream.Write( (ushort)character.m_iSkillPoint ); // SKILL POINTS
  393. WriterStream.Write( (ushort)0x6464 );
  394. for ( int iIndex = 0; iIndex < 37; iIndex++ )
  395. WriterStream.Write( (byte)0x0 ); // UNKNOWN
  396. WriterStream.Write( (ushort)character.m_iStamina ); // STAMINA
  397. for ( int iIndex = 0; iIndex < 326; iIndex++ )
  398. WriterStream.Write( (byte)0x0 ); // UNKNOWN
  399. for ( int iIndex = 0; iIndex < 60; iIndex++ )
  400. WriterStream.Write( (ushort)0 ); // CLASS SKILLS
  401. //WriterStream.Write( (ushort)character.m_iClassSkills[iIndex].m_iClassSkillID + character.m_iClassSkills[iIndex].m_iLevel - 1 ); // CLASS SKILLS
  402. for ( int iIndex = 0; iIndex < 260; iIndex++ )
  403. WriterStream.Write( (ushort)0x0 ); // UNKNOWN
  404. for ( int iIndex = 0; iIndex < 42; iIndex++ )
  405. WriterStream.Write( (ushort)character.m_iBasicSkills[iIndex] ); // BASIC SKILLS
  406. for ( int iIndex = 0; iIndex < 48; iIndex++ )
  407. WriterStream.Write( (ushort)character.m_iQuickBar[iIndex] ); // QUICKBAR
  408. WriterStream.Write( (uint)character.m_iCharacterGuid ); // CHARACTER GUID
  409. for ( int iIndex = 0; iIndex < 80; iIndex++ )
  410. WriterStream.Write( (byte)0x0 ); // UNKNOWN
  411. WriterStream.WriteAsciiNull( character.m_strCharacter ); // CHARACTER NAME
  412. //////////////////////////////////////////////////////////////////////////
  413. WriterStream.Seek( 0, SeekOrigin.Begin );
  414. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  415. }
  416. }
  417. #endregion
  418. #region zh-CHS UserInventoryDataAck Àà | en UserInventoryDataAck Class
  419. /// <summary>
  420. ///
  421. /// </summary>
  422. internal sealed class UserInventoryDataAck : Packet
  423. {
  424. /// <summary>
  425. ///
  426. /// </summary>
  427. internal UserInventoryDataAck( ROSEMobile character )
  428. : base( 0x716, 1126/*6 + 1120*/ )
  429. {
  430. WriterStream.Write( (ushort)1126/*6 + 1120*/ ); // ×ֶδóС
  431. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  432. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  433. //////////////////////////////////////////////////////////////////////////
  434. // low Zulies
  435. WriterStream.Write( (uint)0x00 );
  436. // High Zulies
  437. WriterStream.Write( (uint)0x00 );
  438. for ( int iIndex = 0; iIndex < 140; iIndex++ )
  439. {
  440. WriterStream.Write( (uint)character.m_Items[iIndex].BuildItemHead() );
  441. WriterStream.Write( (uint)character.m_Items[iIndex].BuildItemData() );
  442. }
  443. }
  444. }
  445. #endregion
  446. #region zh-CHS UserQuestDataAck Àà | en UserQuestDataAck Class
  447. /// <summary>
  448. ///
  449. /// </summary>
  450. internal sealed class UserQuestDataAck : Packet
  451. {
  452. /// <summary>
  453. ///
  454. /// </summary>
  455. internal UserQuestDataAck( ROSEMobile character )
  456. : base( 0x71B, 0 /*6 + ?*/ )
  457. {
  458. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  459. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  460. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  461. //////////////////////////////////////////////////////////////////////////
  462. for ( int iIndex = 0; iIndex < 0x32; iIndex++ )
  463. WriterStream.Write( (byte)0x0 );
  464. int l_iActiveQuestCount = 0;
  465. //for ( int iIndex = 0; iIndex < thisclient->MyQuest.size( ); iIndex++ )
  466. //{
  467. //if ( myquest->active )
  468. //{
  469. // WriterStream.Write( (ushort)0x0 ); // # Quest ID
  470. // WriterStream.Write( (uint)0x0 ); // Time
  471. // WriterStream.Write( (uint)0x0 );
  472. // for ( int iIndex2 = 0; iIndex2 < 0x14; iIndex2++ )
  473. // WriterStream.Write( (byte)0x0 );
  474. // for ( int iIndex3 = 0; iIndex3 < 5; iIndex3++ )
  475. // {
  476. // //if ( myquest->thisquest->CItem[j] != 0 && myquest->items[j] != 0 )
  477. // //{
  478. // // CItem item;
  479. // // item.itemnum = myquest->thisquest->CItem[j];
  480. // // item.itemtype = 13;
  481. // // item.count = 1;
  482. // // WriterStream.Write( (uint)BuildItemHead( item ) );
  483. // // WriterStream.Write( (uint)myquest->items[j] );
  484. // //}
  485. // //else
  486. // {
  487. // WriterStream.Write( (uint)0x00000000 );
  488. // WriterStream.Write( (uint)0x00000000 );
  489. // }
  490. // }
  491. // WriterStream.Write( (uint)0x00000000 );
  492. // WriterStream.Write( (uint)0x00000000 );
  493. // l_iActiveQuestCount++;
  494. //}
  495. // if ( l_iActiveQuestCount >= 10 )
  496. // break;
  497. //}
  498. for ( int iIndex = l_iActiveQuestCount; iIndex < 10; iIndex++ )
  499. for ( int iIndex2 = 0; iIndex2 < 0x4E; iIndex2++ )
  500. WriterStream.Write( (byte)0x00 );
  501. // Made Quest?
  502. for ( int iIndex = 0; iIndex < 84; iIndex++ )
  503. WriterStream.Write( (byte)0x00 );
  504. // Whish list Credits to Caali
  505. for ( int iIndex = 0; iIndex < 30; iIndex++ )
  506. {
  507. WriterStream.Write( (uint)0x00000000 ); //Item Head
  508. WriterStream.Write( (uint)0x00000000 ); //Item Data
  509. }
  510. //////////////////////////////////////////////////////////////////////////
  511. WriterStream.Seek( 0, SeekOrigin.Begin );
  512. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  513. }
  514. }
  515. #endregion
  516. #region zh-CHS SpawnMonsterAck Àà | en SpawnMonsterAck Class
  517. /// <summary>
  518. ///
  519. /// </summary>
  520. public sealed class SpawnMonsterAck : Packet
  521. {
  522. /// <summary>
  523. ///
  524. /// </summary>
  525. /// <param name="character"></param>
  526. /// <returns></returns>
  527. public int BuildBuffs( ROSEMobile character )
  528. {
  529. byte buff1 = 0;
  530. byte buff2 = 0;
  531. byte buff3 = 0;
  532. byte buff4 = 0;
  533. // Build Debuffs and Buffs
  534. // Up
  535. if ( character.Attack_up != 0xff ) //A_ATTACK:
  536. buff2 += character.ATTACK_UP;
  537. if ( character.Defense_up != 0xff ) //A_DEFENSE:
  538. buff2 += character.DEFENSE_UP;
  539. if ( character.Accury_up != 0xff ) //A_ACCUR:
  540. buff3 += character.HITRATE_UP;
  541. if ( character.Dash_up != 0xff ) //A_DASH:
  542. buff1 += character.DASH_UP;
  543. if ( character.Haste_up != 0xff ) //A_HASTE:
  544. buff2 += character.HASTE_UP;
  545. if ( character.HP_up != 0xff ) //A_HP:
  546. buff1 += character.HP_UP;
  547. if ( character.MP_up != 0xff ) //A_MP:
  548. buff1 += character.MP_UP;
  549. if ( character.Critical_up != 0xff ) //A_CRITICAL:
  550. buff1 += character.CRITICAL_UP;
  551. if ( character.Dodge_up != 0xff ) //A_DODGE:
  552. buff1 += character.DODGE_UP;
  553. // Down
  554. if ( character.Attack_down != 0xff ) // A_ATTACK:
  555. buff2 += character.ATTACK_DOWN;
  556. if ( character.Defense_down != 0xff ) //A_DEFENSE:
  557. buff2 += character.DEFENSE_DOWN;
  558. if ( character.Accury_down != 0xff ) //A_ACCUR:
  559. buff3 += character.HITRATE_DOWN;
  560. if ( character.Dash_down != 0xff ) //A_DASH:
  561. buff1 += character.DASH_DOWN;
  562. if ( character.Haste_down != 0xff ) //A_HASTE:
  563. buff2 += character.HASTE_DOWN;
  564. if ( character.HP_down != 0xff ) //A_HP:
  565. buff1 += 0;
  566. if ( character.MP_down != 0xff ) //A_MP:
  567. buff1 += 0;
  568. if ( character.Critical_down != 0xff ) //A_CRITICAL:
  569. buff1 += character.CRITICAL_DOWN;
  570. if ( character.owner != 0 )
  571. buff3 += character.SUMMON;
  572. return ( buff1 * 0x01 ) + ( buff2 * 0x100 ) + ( buff3 * 0x10000 ) + ( buff4 * 0x1000000 );
  573. }
  574. /// <summary>
  575. ///
  576. /// </summary>
  577. public SpawnMonsterAck( ROSEMobile character )
  578. : base( 0x792, 45 /*6 + 39*/ )
  579. {
  580. WriterStream.Write( (ushort)45 /*6 + 39*/ ); // ×ֶδóС
  581. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  582. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  583. //////////////////////////////////////////////////////////////////////////
  584. WriterStream.Write( (ushort)character.m_iClientID );
  585. WriterStream.Write( (float)character.X * 100 );
  586. WriterStream.Write( (float)character.Y * 100 );
  587. WriterStream.Write( (float)character.m_DestinePoint3D.X * 100 );
  588. WriterStream.Write( (float)character.m_DestinePoint3D.Y * 100 );
  589. if ( character.Hits <= 0 )
  590. {
  591. WriterStream.Write( (ushort)0x0003 );
  592. WriterStream.Write( (ushort)0x0000 );
  593. }
  594. else if ( character.targetid != 0 )
  595. {
  596. WriterStream.Write( (ushort)0x0002 );
  597. WriterStream.Write( (ushort)character.targetid );
  598. }
  599. else if ( character.X != character.m_DestinePoint3D.X || character.Y != character.m_DestinePoint3D.Y )
  600. {
  601. WriterStream.Write( (ushort)0x0001 );
  602. WriterStream.Write( (ushort)0x0000 );
  603. }
  604. else
  605. {
  606. WriterStream.Write( (ushort)0x0000 );
  607. WriterStream.Write( (ushort)0x0000 );
  608. }
  609. WriterStream.Write( (sbyte)0x00 );
  610. WriterStream.Write( (uint)character.Hits );
  611. if ( character.owner == 0 && character.m_posMapData.pvp )
  612. WriterStream.Write( (uint)0x00000064 ); // Hostil µÐ¶Ô
  613. else
  614. WriterStream.Write( (uint)0x00000000 ); // Friendly ÅóÓÑ
  615. WriterStream.Write( (uint)BuildBuffs( character ) );
  616. WriterStream.Write( (ushort)character.montype );
  617. WriterStream.Write( (ushort)0x0000 );
  618. if ( character.owner != 0 )
  619. {
  620. WriterStream.Write( (ushort)character.owner );
  621. WriterStream.Write( (ushort)0x0000 ); //id del skill (si es summon de skill)
  622. }
  623. }
  624. }
  625. #endregion
  626. #region zh-CHS SpawnNPCAck Àà | en SpawnNPCAck Class
  627. /// <summary>
  628. ///
  629. /// </summary>
  630. public sealed class SpawnNPCAck : Packet
  631. {
  632. /// <summary>
  633. ///
  634. /// </summary>
  635. public SpawnNPCAck( ROSEMobile character )
  636. : base( 0x791, 51 /*6 + 45*/ )
  637. {
  638. WriterStream.Write( (ushort)51 /*6 + 45*/ ); // ×ֶδóС
  639. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  640. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  641. //////////////////////////////////////////////////////////////////////////
  642. WriterStream.Write( (ushort)character.m_iClientID );
  643. WriterStream.Write( (float)character.X * 100 );
  644. WriterStream.Write( (float)character.Y * 100 );
  645. WriterStream.Write( (float)character.X * 100 );
  646. WriterStream.Write( (float)character.Y * 100 );
  647. WriterStream.Write( (sbyte)0x00 );
  648. WriterStream.Write( (ushort)0x0000 );
  649. WriterStream.Write( (ushort)0x0000 );
  650. WriterStream.Write( (ushort)0x03E8 );
  651. WriterStream.Write( (ushort)0x0000 );
  652. WriterStream.Write( (ushort)0x0001 );
  653. WriterStream.Write( (ushort)0x0000 );
  654. WriterStream.Write( (ushort)0x0000 );
  655. WriterStream.Write( (ushort)0x0000 );
  656. WriterStream.Write( (ushort)character.npctype );
  657. if ( character.dialogid != 0)
  658. WriterStream.Write( (ushort)character.dialogid );
  659. else
  660. WriterStream.Write( (ushort)character.npctype - 900 );
  661. WriterStream.Write( (float)character.Direction );
  662. WriterStream.Write( (ushort)0x0000 );
  663. }
  664. }
  665. #endregion
  666. #region zh-CHS MoveCharAck Àà | en MoveCharAck Class
  667. /// <summary>
  668. ///
  669. /// </summary>
  670. public sealed class MoveCharAck : Packet
  671. {
  672. /// <summary>
  673. ///
  674. /// </summary>
  675. public MoveCharAck( ROSEMobile character )
  676. : base( 0x079A, 22 /*6 + 16*/)
  677. {
  678. WriterStream.Write( (ushort)22 /*6 + 16*/ ); // ×ֶδóС
  679. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  680. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  681. //////////////////////////////////////////////////////////////////////////
  682. WriterStream.Write( (ushort)character.m_iClientID ); // USER ID
  683. WriterStream.Write( (ushort)character.targetid ); // TARGET
  684. WriterStream.Write( (ushort)character.mspeed ); // MSPEED
  685. WriterStream.Write( (float)( character.X * 100 ) ); // POSITION X
  686. WriterStream.Write( (float)( character.Y * 100 ) ); // POSITION Y
  687. WriterStream.Write( (ushort)0x0000 ); // POSITION Z (NOT USED)
  688. }
  689. }
  690. #endregion
  691. #region zh-CHS ExitAck Àà | en ExitAck Class
  692. /// <summary>
  693. ///
  694. /// </summary>
  695. public sealed class ExitAck : Packet
  696. {
  697. /// <summary>
  698. ///
  699. /// </summary>
  700. public ExitAck( ushort iSeconds )
  701. : base( 0x707, 8 /*6 + 2*/ )
  702. {
  703. WriterStream.Write( (ushort)8 /*6 + 2*/ ); // ×ֶδóС
  704. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  705. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  706. //////////////////////////////////////////////////////////////////////////
  707. WriterStream.Write( (ushort)iSeconds );
  708. }
  709. }
  710. #endregion
  711. #region zh-CHS SpawnDropAck Àà | en SpawnDropAck Class
  712. /// <summary>
  713. ///
  714. /// </summary>
  715. public sealed class SpawnDropAck : Packet
  716. {
  717. /// <summary>
  718. ///
  719. /// </summary>
  720. public SpawnDropAck()
  721. : base( 0x7A6, 0 )
  722. {
  723. WriterStream.Write( (ushort)8 /*6 + 2*/ ); // ×ֶδóС
  724. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  725. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  726. //////////////////////////////////////////////////////////////////////////
  727. //WriterStream.Write( (float)0x0 );
  728. //WriterStream.Write( (float)0x0 );
  729. // -- ZULY --
  730. WriterStream.Write( (uint)0xCCCCCCDF );
  731. //WriterStream.Write( (uint)0x00000000 );
  732. //WriterStream.Write( (ushort)0x0000 );
  733. WriterStream.Write( (ushort)0x0000 );
  734. WriterStream.Write( (ushort)0x5F90 );
  735. // -- ITEM --
  736. //WriterStream.Write( (uint)0x00000000 );
  737. //WriterStream.Write( (uint)0x00000000 );
  738. //WriterStream.Write( (ushort)0x0000 );
  739. //WriterStream.Write( (uint)0x00000000 );
  740. }
  741. }
  742. #endregion
  743. #region zh-CHS ClearObjectAck Àà | en ClearObjectAck Class
  744. /// <summary>
  745. ///
  746. /// </summary>
  747. public sealed class ClearObjectAck : Packet
  748. {
  749. /// <summary>
  750. ///
  751. /// </summary>
  752. public ClearObjectAck()
  753. : base( 0x794, 8 /*6 + 2*/ )
  754. {
  755. WriterStream.Write( (ushort)8 /*6 + 2*/ ); // ×ֶδóС
  756. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  757. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  758. //////////////////////////////////////////////////////////////////////////
  759. //WriterStream.Write( (ushort)0x0 );
  760. }
  761. }
  762. #endregion
  763. #region zh-CHS ClearUserAck Àà | en ClearUserAck Class
  764. /// <summary>
  765. ///
  766. /// </summary>
  767. public sealed class ClearUserAck : Packet
  768. {
  769. /// <summary>
  770. ///
  771. /// </summary>
  772. public ClearUserAck()
  773. : base( 0x794, 8 /*6 + 2*/ )
  774. {
  775. WriterStream.Write( (ushort)8 /*6 + 2*/ ); // ×ֶδóС
  776. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  777. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  778. //////////////////////////////////////////////////////////////////////////
  779. //WriterStream.Write( (ushort)0x0 );
  780. }
  781. }
  782. #endregion
  783. #region zh-CHS CSReadyAck Àà | en CSReadyAck Class
  784. /// <summary>
  785. ///
  786. /// </summary>
  787. public sealed class CSReadyAck : Packet
  788. {
  789. /// <summary>
  790. ///
  791. /// </summary>
  792. public CSReadyAck()
  793. : base( 0x0, 0 )
  794. {
  795. }
  796. }
  797. #endregion
  798. #region zh-CHS CSCharSelectAck Àà | en CSCharSelectAck Class
  799. /// <summary>
  800. ///
  801. /// </summary>
  802. public sealed class CSCharSelectAck : Packet
  803. {
  804. /// <summary>
  805. ///
  806. /// </summary>
  807. public CSCharSelectAck()
  808. : base( 0x0, 0 )
  809. {
  810. }
  811. }
  812. #endregion
  813. #region zh-CHS CharSelectAck Àà | en CharSelectAck Class
  814. /// <summary>
  815. ///
  816. /// </summary>
  817. public sealed class CharSelectAck : Packet
  818. {
  819. /// <summary>
  820. ///
  821. /// </summary>
  822. public CharSelectAck()
  823. : base( 0x505, 10 /*6 + 4*/ )
  824. {
  825. WriterStream.Write( (ushort)10 /*6 + 4*/ ); // ×ֶδóС
  826. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  827. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  828. WriterStream.Write( (uint)0x0 );
  829. }
  830. }
  831. #endregion
  832. #region zh-CHS PingAck Àà | en PingAck Class
  833. /// <summary>
  834. ///
  835. /// </summary>
  836. public sealed class PingAck : Packet
  837. {
  838. /// <summary>
  839. ///
  840. /// </summary>
  841. public PingAck( ushort iPing )
  842. : base( 0x0700, 8 /*6 + 2*/ )
  843. {
  844. WriterStream.Write( (ushort)10 /*6 + 2*/ ); // ×ֶδóС
  845. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  846. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  847. WriterStream.Write( (ushort)iPing );
  848. }
  849. }
  850. #endregion
  851. #region zh-CHS UserDiedAck Àà | en UserDiedAck Class
  852. /// <summary>
  853. ///
  854. /// </summary>
  855. public sealed class UserDiedAck : Packet
  856. {
  857. /// <summary>
  858. ///
  859. /// </summary>
  860. public UserDiedAck( ROSEMobile character )
  861. : base( 0x07A8, 58 /*6 + 52 */)
  862. {
  863. WriterStream.Write( (ushort)58 /*6 + 52*/ ); // ×ֶδóС
  864. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  865. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  866. WriterStream.Write( (ushort)character.m_iClientID );
  867. WriterStream.Write( (ushort)character.m_posMapID );
  868. WriterStream.Write( (float)character.X * 100 );
  869. WriterStream.Write( (float)character.Y * 100 );
  870. if ( character.m_stance == 0x04 )
  871. WriterStream.Write( (ushort)0x0201 );
  872. else
  873. WriterStream.Write( (ushort)0x0001 );
  874. for ( int iIndex = 0; iIndex < 15; iIndex++ )
  875. {
  876. // Clean Buffs
  877. }
  878. }
  879. }
  880. #endregion
  881. #region zh-CHS WeightAck Àà | en UserDiedAck Class
  882. /// <summary>
  883. ///
  884. /// </summary>
  885. public sealed class WeightAck : Packet
  886. {
  887. /// <summary>
  888. ///
  889. /// </summary>
  890. public WeightAck( ROSEMobile character, long iWeight )
  891. : base( 0x0762, 9 /*6 + 3 */)
  892. {
  893. WriterStream.Write( (ushort)9 /*6 + 3*/ ); // ×ֶδóС
  894. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  895. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  896. WriterStream.Write( (ushort)character.m_iClientID );
  897. WriterStream.Write( (byte)iWeight );
  898. }
  899. }
  900. #endregion
  901. #region zh-CHS StopCharAck Àà | en StopCharAck Class
  902. /// <summary>
  903. ///
  904. /// </summary>
  905. public sealed class StopCharAck : Packet
  906. {
  907. /// <summary>
  908. ///
  909. /// </summary>
  910. public StopCharAck( ROSEMobile character )
  911. : base( 0x0770, 18 /*6 + 12*/ )
  912. {
  913. WriterStream.Write( (ushort)18 /*6 + 12*/ ); // ×ֶδóС
  914. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  915. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  916. WriterStream.Write( (ushort)character.m_iClientID ); // USER ID
  917. WriterStream.Write( (float)( character.X * 100 ) ); // POSITION X
  918. WriterStream.Write( (float)( character.Y * 100 ) ); // POSITION Y
  919. WriterStream.Write( (ushort)0x0000 ); // POSITION Z (NOT USED)
  920. }
  921. }
  922. #endregion
  923. #region zh-CHS DoEmoteAck Àà | en DoEmoteAck Class
  924. /// <summary>
  925. ///
  926. /// </summary>
  927. public sealed class DoEmoteAck : Packet
  928. {
  929. /// <summary>
  930. ///
  931. /// </summary>
  932. public DoEmoteAck( ushort iUshort1, ushort iUshort2, ROSEMobile character )
  933. : base( 0x781, 12 /*6 + 6*/ )
  934. {
  935. WriterStream.Write( (ushort)12 /*6 + 6*/ ); // ×ֶδóС
  936. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  937. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  938. WriterStream.Write( (ushort)iUshort1 );
  939. WriterStream.Write( (ushort)iUshort2 );
  940. WriterStream.Write( (ushort)character.m_iClientID );
  941. }
  942. }
  943. #endregion
  944. #region zh-CHS ChangeStanceAck Àà | en ChangeStanceAck Class
  945. /// <summary>
  946. ///
  947. /// </summary>
  948. public sealed class ChangeStanceAck : Packet
  949. {
  950. /// <summary>
  951. ///
  952. /// </summary>
  953. public ChangeStanceAck( ROSEMobile character )
  954. : base( 0x782, 9 /*6 + 3*/ )
  955. {
  956. WriterStream.Write( (ushort)9 /*6 + 3*/ ); // ×ֶδóС
  957. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  958. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  959. WriterStream.Write( (ushort)character.m_iClientID );
  960. WriterStream.Write( (byte)character.m_stance );
  961. WriterStream.Write( (ushort)character.mspeed );
  962. }
  963. }
  964. #endregion
  965. #region zh-CHS NormalChatAck Àà | en NormalChatAck Class
  966. /// <summary>
  967. ///
  968. /// </summary>
  969. public sealed class NormalChatAck : Packet
  970. {
  971. /// <summary>
  972. ///
  973. /// </summary>
  974. public NormalChatAck( ROSEMobile character, string strMessage )
  975. : base( 0x783, 0 /*6 + ?*/ )
  976. {
  977. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  978. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  979. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  980. WriterStream.Write( (ushort)character.m_iClientID );
  981. WriterStream.WriteAsciiNull( strMessage );
  982. }
  983. }
  984. #endregion
  985. #region zh-CHS WhisperAck Àà | en WhisperAck Class
  986. /// <summary>
  987. ///
  988. /// </summary>
  989. public sealed class WhisperAck : Packet
  990. {
  991. /// <summary>
  992. ///
  993. /// </summary>
  994. public WhisperAck( ROSEMobile character, string strMessage )
  995. : base( 0x0784, 0 /*6 + ?*/ )
  996. {
  997. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  998. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  999. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1000. //////////////////////////////////////////////////////////////////////////
  1001. WriterStream.WriteAsciiNull( character.m_strCharacter );
  1002. WriterStream.WriteAsciiNull( strMessage );
  1003. //////////////////////////////////////////////////////////////////////////
  1004. WriterStream.Seek( 0, SeekOrigin.Begin );
  1005. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  1006. }
  1007. }
  1008. #endregion
  1009. #region zh-CHS ShoutAck Àà | en ShoutAck Class
  1010. /// <summary>
  1011. ///
  1012. /// </summary>
  1013. public sealed class ShoutAck : Packet
  1014. {
  1015. /// <summary>
  1016. ///
  1017. /// </summary>
  1018. public ShoutAck( ROSEMobile character, string strMessage )
  1019. : base( 0x0785, 0 /*6 + ?*/ )
  1020. {
  1021. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1022. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1023. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1024. //////////////////////////////////////////////////////////////////////////
  1025. WriterStream.WriteAsciiNull( character.m_strCharacter );
  1026. WriterStream.WriteAsciiNull( strMessage );
  1027. //////////////////////////////////////////////////////////////////////////
  1028. WriterStream.Seek( 0, SeekOrigin.Begin );
  1029. WriterStream.Write( (ushort)WriterStream.Length ); // ×ֶδóС
  1030. }
  1031. }
  1032. #endregion
  1033. #region zh-CHS StartAttackAck Àà | en StartAttackAck Class
  1034. /// <summary>
  1035. ///
  1036. /// </summary>
  1037. public sealed class StartAttackAck : Packet
  1038. {
  1039. /// <summary>
  1040. ///
  1041. /// </summary>
  1042. public StartAttackAck()
  1043. : base( 0x0, 6 + 36 )
  1044. {
  1045. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1046. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1047. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1048. }
  1049. }
  1050. #endregion
  1051. #region zh-CHS NPCBuyAck Àà | en NPCBuyAck Class
  1052. /// <summary>
  1053. ///
  1054. /// </summary>
  1055. public sealed class NPCBuyAck : Packet
  1056. {
  1057. /// <summary>
  1058. ///
  1059. /// </summary>
  1060. public NPCBuyAck()
  1061. : base( 0x717, 0 /*6 + ?*/ )
  1062. {
  1063. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1064. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1065. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1066. }
  1067. }
  1068. #endregion
  1069. #region zh-CHS DoDropAck Àà | en DoDropAck Class
  1070. /// <summary>
  1071. ///
  1072. /// </summary>
  1073. public sealed class DoDropAck : Packet
  1074. {
  1075. /// <summary>
  1076. ///
  1077. /// </summary>
  1078. public DoDropAck()
  1079. : base( 0x0, 0 /*6 + ?*/ )
  1080. {
  1081. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1082. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1083. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1084. }
  1085. }
  1086. #endregion
  1087. #region zh-CHS ChangeEquipAck Àà | en ChangeEquipAck Class
  1088. /// <summary>
  1089. ///
  1090. /// </summary>
  1091. public sealed class ChangeEquipAck : Packet
  1092. {
  1093. /// <summary>
  1094. ///
  1095. /// </summary>
  1096. public ChangeEquipAck()
  1097. : base( 0x0, 0 /*6 + ?*/ )
  1098. {
  1099. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1100. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1101. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1102. }
  1103. }
  1104. #endregion
  1105. #region zh-CHS PickDropAck Àà | en PickDropAck Class
  1106. /// <summary>
  1107. ///
  1108. /// </summary>
  1109. public sealed class PickDropAck : Packet
  1110. {
  1111. /// <summary>
  1112. ///
  1113. /// </summary>
  1114. public PickDropAck()
  1115. : base( 0x0, 0 /*6 + ?*/ )
  1116. {
  1117. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1118. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1119. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1120. }
  1121. }
  1122. #endregion
  1123. #region zh-CHS GateAck Àà | en GateAck Class
  1124. /// <summary>
  1125. ///
  1126. /// </summary>
  1127. public sealed class GateAck : Packet
  1128. {
  1129. /// <summary>
  1130. ///
  1131. /// </summary>
  1132. public GateAck()
  1133. : base( 0x0, 0 /*6 + ?*/ )
  1134. {
  1135. WriterStream.Write( (ushort)0 /*6 + ?*/ ); // ×ֶδóС
  1136. WriterStream.Write( (ushort)base.PacketID ); // ×ֶαàºÅ
  1137. WriterStream.Write( (ushort)0x00 ); // ×ֶα£Áô
  1138. }
  1139. }
  1140. #endregion
  1141. #region zh-CHS AddStatsAck Àà | en AddStatsAck Class
  1142. /// <summary>
  1143. ///
  1144. /// </summary>
  1145. publi