Untitled


SUBMITTED BY: Guest

DATE: Aug. 19, 2017, 9:39 p.m.

FORMAT: Text only

SIZE: 11.5 kB

HITS: 279

  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Collections.Generic;
  5. using COServer.Client;
  6. namespace COServer.Network.GamePackets
  7. {
  8. public unsafe class MsgRank : Writer, Interfaces.IPacket
  9. {
  10. public void AppendP(uint rank, uint amount, uint uid, string name, uint lvl, uint clas, uint pho)
  11. {
  12. int offset = current * 80 + 24;
  13. if (offset + 80 <= Buffer.Length)
  14. {
  15. current++;
  16. Count = (uint)current;
  17. WriteUInt32(rank, offset, Buffer); offset += 8;
  18. WriteUInt32(amount, offset, Buffer); offset += 8;
  19. WriteUInt32(uid, offset, Buffer); offset += 4;
  20. WriteUInt32(uid, offset, Buffer); offset += 4;
  21. WriteString(name, offset, Buffer); offset += 16;
  22. WriteString(name, offset, Buffer); offset += 16;
  23. WriteUInt32(lvl, offset, Buffer); offset += 4;
  24. WriteUInt32(clas, offset, Buffer); offset += 4;
  25. WriteUInt32(pho, offset, Buffer);
  26. }
  27. }
  28. public const uint
  29. Ranking = 1,
  30. QueryCount = 2,
  31. InformationRequest = 5,
  32. TotemRank = 6;
  33. public const uint
  34. RoseFairy = 30000002,
  35. LilyFairy = 30000102,
  36. OrchidFairy = 30000202,
  37. TulipFairy = 30000302,
  38. Kiss = 30000402,
  39. Love = 30000502,
  40. Tins = 30000602,
  41. Jade = 30000702,
  42. PrestigeHighWall = 312500,
  43. Chi = 60000000,
  44. DragonChi = 60000001,
  45. PhoenixChi = 60000002,
  46. TigerChi = 60000003,
  47. TurtleChi = 60000004,
  48. InnerPower = 70000000,
  49. Prestige = 80000000,
  50. PrestigeTrojan = 80000001,
  51. PrestigeWarrior = 80000002,
  52. PrestigeArcher = 80000003,
  53. PrestigeNinja = 80000004,
  54. PrestigeMonk = 80000005,
  55. PrestigePirate = 80000006,
  56. PrestigeDWarrior = 80000007,
  57. PrestigeWater = 80000008,
  58. PrestigeFir1e = 80000009,
  59. Prestigewing = 80000010;
  60. byte[] Buffer;
  61. int current;
  62. public MsgRank(bool Create, uint entries = 1)
  63. {
  64. if (Create)
  65. {
  66. Buffer = new byte[(entries * 80) + 24 + 8];
  67. WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
  68. WriteUInt16((ushort)MsgTypes.MsgRank, 2, Buffer);
  69. }
  70. }
  71. public uint Mode
  72. {
  73. get { return BitConverter.ToUInt32(Buffer, 4); }
  74. set { WriteUInt32(value, 4, Buffer); }
  75. }
  76. public uint RankingType
  77. {
  78. get { return BitConverter.ToUInt32(Buffer, 8); }
  79. set { WriteUInt32(value, 8, Buffer); }
  80. }
  81. public ushort RegisteredCount
  82. {
  83. get { return BitConverter.ToUInt16(Buffer, 12); }
  84. set { WriteUInt16(value, 12, Buffer); }
  85. }
  86. public ushort Page
  87. {
  88. get { return BitConverter.ToUInt16(Buffer, 14); }
  89. set { WriteUInt16(value, 14, Buffer); }
  90. }
  91. public uint Count
  92. {
  93. get { return BitConverter.ToUInt32(Buffer, 16); }
  94. set { WriteUInt32(value, 16, Buffer); }
  95. }
  96. public void Append(uint rank, uint amount, uint uid, string name, byte level = 0, byte Class = 0, uint mesh = 0, bool toper = false)
  97. {
  98. if (!toper)
  99. {
  100. int offset = current * 80 + 96;
  101. if (offset + 80 <= Buffer.Length)
  102. {
  103. current++;
  104. Count = (uint)current;
  105. WriteUInt32(rank, offset, Buffer); offset += 8;
  106. WriteUInt32(amount, offset, Buffer); offset += 8;
  107. WriteUInt32(uid, offset, Buffer); offset += 4;
  108. WriteUInt32(uid, offset, Buffer); offset += 4;
  109. WriteString(name, offset, Buffer); offset += 16;
  110. WriteString(name, offset, Buffer); offset += 16;
  111. WriteUInt32(level, offset, Buffer); offset += 4;
  112. WriteUInt32(Class, offset, Buffer); offset += 4;
  113. WriteUInt64(mesh, offset, Buffer); offset += 8;
  114. }
  115. }
  116. else
  117. {
  118. int offset = 24;
  119. WriteUInt32(1, offset, Buffer); offset += 8;
  120. WriteUInt32(amount, offset, Buffer); offset += 8;
  121. WriteUInt32(80000000, offset, Buffer); offset += 4;
  122. WriteUInt32(uid, offset, Buffer); offset += 4;
  123. WriteString(name, offset, Buffer); offset += 16;
  124. WriteString(name, offset, Buffer); offset += 16;
  125. WriteUInt32(level, offset, Buffer); offset += 4;
  126. WriteUInt32(Class, offset, Buffer); offset += 4;
  127. WriteUInt64(mesh, offset, Buffer); offset += 8;
  128. }
  129. }
  130. public void Appendd(uint rank, uint amount, uint uid, string name, uint Type = 0, uint level = 0, uint Class = 0, uint face = 0)
  131. {
  132. int offset = current * 80 + 24;
  133. if (offset + 80 <= Buffer.Length)
  134. {
  135. current++;
  136. Count = (uint)current;
  137. Writer.WriteUInt32(rank, offset, Buffer);
  138. offset += 8;
  139. Writer.WriteUInt32(amount, offset, Buffer);
  140. offset += 8;
  141. Writer.WriteUInt32(Type, offset, Buffer);
  142. offset += 4;
  143. Writer.WriteUInt32(uid, offset, Buffer);
  144. offset += 4;
  145. Writer.WriteString(name, offset, Buffer);
  146. offset += 0x10;
  147. Writer.WriteString(name, offset, Buffer);
  148. offset += 0x10;
  149. Writer.WriteUInt32(level, offset, Buffer);
  150. offset += 4;
  151. Writer.WriteUInt32(Class, offset, Buffer);
  152. offset += 4;
  153. Writer.WriteUInt32(face, offset, Buffer);
  154. offset += 8;
  155. }
  156. }
  157. public void Append(uint amount, uint uid, string name, byte level = 0, byte Class = 0, uint mesh = 0)
  158. {
  159. int offset = current * 80 + 24;
  160. if (offset + 80 <= Buffer.Length)
  161. {
  162. current++;
  163. WriteUInt64(1, offset, Buffer); offset += 8;
  164. WriteUInt64(amount, offset, Buffer); offset += 8;
  165. WriteUInt32(80000000 + (uint)(current - 1), offset, Buffer); offset += 4;
  166. WriteUInt32(uid, offset, Buffer); offset += 4;
  167. WriteString(name, offset, Buffer); offset += 16;
  168. WriteString(name, offset, Buffer); offset += 16;
  169. WriteUInt32(level, offset, Buffer); offset += 4;
  170. WriteUInt32(Class, offset, Buffer); offset += 4;
  171. WriteUInt64(mesh, offset, Buffer); offset += 8;
  172. }
  173. }
  174. public void Append(uint rank, uint amount, uint uid, string name)
  175. {
  176. int offset = current * 80 + 24;
  177. if (offset + 80 <= Buffer.Length)
  178. {
  179. current++;
  180. Count = (uint)current;
  181. Write(rank, offset, Buffer);
  182. offset += 8;
  183. Write(amount, offset, Buffer);
  184. offset += 8;
  185. Write(uid, offset, Buffer);
  186. offset += 4;
  187. Write(uid, offset, Buffer);
  188. offset += 4;
  189. Writer.Write(name, offset, Buffer);
  190. offset += 16;
  191. Writer.Write(name, offset, Buffer);
  192. offset += 16;
  193. }
  194. }
  195. public void Append(uint rank, uint amount, uint uid, string name, byte level = 0, byte Class = 0, uint mesh = 0)
  196. {
  197. int offset = current * 80 + 24;
  198. if (offset + 80 <= Buffer.Length)
  199. {
  200. current++;
  201. Count = (uint)current;
  202. WriteUInt32(rank, offset, Buffer); offset += 8;
  203. WriteUInt32(amount, offset, Buffer); offset += 8;
  204. WriteUInt32(uid, offset, Buffer); offset += 4;
  205. WriteUInt32(uid, offset, Buffer); offset += 4;
  206. Write(name, offset, Buffer); offset += 16;
  207. Write(name, offset, Buffer); offset += 16;
  208. WriteUInt32(level, offset, Buffer); offset += 4;
  209. WriteUInt32(Class, offset, Buffer); offset += 4;
  210. WriteUlong(mesh, offset, Buffer); offset += 4;
  211. }
  212. }
  213. public void Append(uint rank, uint amount, uint uid, string name, byte level, byte Class, uint mesh, uint RankID)
  214. {
  215. int offset = current * 80 + 24;
  216. if (offset + 80 <= Buffer.Length)
  217. {
  218. current++;
  219. Count = (uint)current;
  220. WriteUInt32(rank, offset, Buffer); offset += 8;
  221. WriteUInt32(amount, offset, Buffer); offset += 8;
  222. WriteUInt32(RankID, offset, Buffer); offset += 4;
  223. WriteUInt32(uid, offset, Buffer); offset += 4;
  224. WriteString(name, offset, Buffer); offset += 16;
  225. WriteString(name, offset, Buffer); offset += 16;
  226. WriteUInt32(level, offset, Buffer); offset += 4;
  227. WriteUInt32(Class, offset, Buffer); offset += 4;
  228. WriteUlong(mesh, offset, Buffer); offset += 8;
  229. }
  230. }
  231. public void Reset()
  232. {
  233. current = 0;
  234. }
  235. public void Send(Client.GameState client)
  236. {
  237. client.Send(Buffer);
  238. }
  239. public byte[] ToArray()
  240. {
  241. return Buffer;
  242. }
  243. public void Deserialize(byte[] _buffer)
  244. {
  245. Buffer = _buffer;
  246. if (Count == 0)
  247. {
  248. byte[] buffer = new byte[104 + 8];
  249. Buffer.CopyTo(buffer, 0);
  250. WriteUInt16(104, 0, buffer);
  251. Buffer = buffer;
  252. }
  253. }
  254. public void Append2(uint rank, uint amount, uint uid, string name, byte level, ushort Class, uint mesh, bool Main = false)
  255. {
  256. int offset = current * 80 + 24;
  257. if (offset + 80 <= Buffer.Length)
  258. {
  259. current++;
  260. Count = (uint)current;
  261. Write(rank, offset, Buffer);
  262. offset += 8;
  263. Write(amount, offset, Buffer);
  264. offset += 8;
  265. if (Main)
  266. Write((80000000 + rank) - 1, offset, Buffer);
  267. else
  268. Write(uid, offset, Buffer);
  269. offset += 4;
  270. Write(uid, offset, Buffer);
  271. offset += 4;
  272. Writer.Write(name, offset, Buffer);
  273. offset += 16;
  274. Writer.Write(name, offset, Buffer);
  275. offset += 16;
  276. Writer.Write(level, offset, Buffer);
  277. offset += 4;
  278. Writer.Write(Class, offset, Buffer);
  279. offset += 4;
  280. Writer.Write(mesh, offset, Buffer);
  281. offset += 8;
  282. }
  283. }
  284. }
  285. }

comments powered by Disqus