Advertisement
XConquer

sssss

Dec 15th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.34 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using CODraken.Client;
  6. using CODraken.Network;
  7. using CODraken.Network.GamePackets;
  8. using CODraken.Database;
  9. using System.IO;
  10. using CODraken.Game;
  11.  
  12. namespace CODraken.ScarletBlade
  13. {
  14. public class Inbox : Network.Writer, Interfaces.IPacket
  15. {
  16. public static void SendInbox(GameState client , bool On)
  17. {
  18.  
  19. byte[] test = new byte[12 + 8];
  20. Writer.WriteUshort((ushort)(test.Length - 8), 0, test);
  21. Writer.WriteUshort(1047, 2, test);
  22. if (On)
  23. Writer.Byte(3, 4, test);
  24. else
  25. Writer.Byte(2, 4, test);
  26. client.Send(test);
  27. }
  28.  
  29. public class PrizeInfo
  30. {
  31. public void WriteItem(BinaryWriter writer)
  32. {
  33. writer.Write(ID); //= reader.ReadUInt32();
  34. writer.Write(Time);
  35. writer.Write(Sender);
  36. writer.Write(Subject);
  37. writer.Write(Message);
  38. writer.Write(goldprize);
  39. writer.Write(cpsprize);
  40. writer.Write(Attackment);
  41. writer.Write(itemprize.UID);
  42. }
  43. public PrizeInfo ReadItem(BinaryReader reader)
  44. {
  45. ID = reader.ReadUInt32();//4
  46. Time = reader.ReadUInt32();//8
  47. Sender = reader.ReadString();//10
  48. Subject = reader.ReadString();//12
  49. Message = reader.ReadString();//14
  50. goldprize = reader.ReadUInt32();//18
  51. cpsprize = reader.ReadUInt32();//22
  52. Attackment = reader.ReadUInt32();//22
  53. itemprize = Database.ConquerItemTable.LoadItem(reader.ReadUInt32());
  54. Database.ItemAddingTable.GetAddingsForItem(itemprize);
  55. return this;
  56. }
  57. public uint ID;
  58. public uint Time;
  59. public string Sender;
  60. public string Subject;
  61. public string Message;
  62. // public bool MessageOrGift;
  63. public ConquerItem itemprize;
  64. public uint Attackment;
  65. public uint goldprize;
  66. public uint cpsprize;
  67. }
  68. Random R = new Random();
  69. public static void AddPrize(Client.GameState client, string Sender = "ScarletBlade", string Subject = "Inbox Test", string Message = "Message...", uint money = 500000, uint cps = 500000, uint Time = 600, uint attachment = 0, ConquerItem item = null)
  70. {
  71. int id = 0;
  72. do
  73. {
  74. id = Kernel.Random.Next();
  75. }
  76. while (client.Prizes.ContainsKey((uint)id));
  77.  
  78. ScarletBlade.Inbox.PrizeInfo prize = new ScarletBlade.Inbox.PrizeInfo();
  79. prize.ID = (uint)id;
  80. prize.Sender = Sender;
  81. prize.Subject = Subject;
  82. prize.Message = Message;
  83. prize.goldprize = money;
  84. prize.cpsprize = cps;
  85. prize.Time = Time;
  86. prize.itemprize = item;
  87. prize.Attackment = attachment;
  88. client.Prizes.Add(prize.ID, prize);
  89. if (client.Prizes.Count > 0)
  90. SendInbox(client, true);
  91. }
  92. ///////////////////////////////////////////////////
  93. ///////////////////////////////////////////////////
  94. public static void Load(Client.GameState client)
  95. {
  96. using (var cmd = new MySqlCommand(MySqlCommandType.SELECT))
  97. {
  98. cmd.Select("prizes").Where("UID", client.Player.UID);
  99. using (MySqlReader rdr = new MySqlReader(cmd))
  100. {
  101. if (rdr.Read())
  102. {
  103. byte[] data = rdr.ReadBlob("Prizes");
  104. if (data.Length > 0)
  105. {
  106. using (var stream = new MemoryStream(data))
  107. using (var reader = new BinaryReader(stream))
  108. {
  109. int count = reader.ReadByte();
  110. for (uint x = 0; x < count; x++)
  111. {
  112. PrizeInfo item = new PrizeInfo();
  113. item = item.ReadItem(reader);
  114. client.Prizes.Add(item.ID, item);
  115. }
  116. }
  117. }
  118. }
  119. else
  120. {
  121. using (var command = new MySqlCommand(MySqlCommandType.INSERT))
  122. {
  123. command.Insert("prizes").Insert("UID", client.Player.UID).Insert("Name", client.Player.Name);
  124. command.Execute();
  125. }
  126. }
  127. }
  128. }
  129. }
  130. ///////////////////////////////////////////////////
  131. ///////////////////////////////////////////////////
  132. public static void Save(Client.GameState client)
  133. {
  134. MemoryStream stream = new MemoryStream();
  135. BinaryWriter writer = new BinaryWriter(stream);
  136. writer.Write((byte)client.Prizes.Count);
  137. foreach (var prize in client.Prizes.Values)
  138. prize.WriteItem(writer);
  139. string SQL = "UPDATE `prizes` SET Prizes=@Prizes where UID = " + client.Player.UID + " ;";
  140. byte[] rawData = stream.ToArray();
  141. using (var conn = DataHolder.MySqlConnection)
  142. {
  143. conn.Open();
  144. using (var cmd = new MySql.Data.MySqlClient.MySqlCommand())
  145. {
  146. cmd.Connection = conn;
  147. cmd.CommandText = SQL;
  148. cmd.Parameters.AddWithValue("@Prizes", rawData);
  149. cmd.ExecuteNonQuery();
  150. }
  151. }
  152. }
  153. ///////////////////////////////////////////////////
  154. ///////////////////////////////////////////////////
  155.  
  156.  
  157. byte[] Buffer;
  158. public Inbox()
  159. {
  160. Buffer = new byte[20];
  161. Ushort((ushort)(Buffer.Length - 8), 0, Buffer);
  162. Ushort(1046, 2, Buffer);
  163. }
  164.  
  165. public uint Count { get { return CODraken.BitConverter.ReadUint(Buffer, 4); } set { WriteUint(value, 4, Buffer); } }
  166.  
  167. public uint Page { get { return CODraken.BitConverter.ReadUint(Buffer, 8); } set { WriteUint(value, 8, Buffer); } }
  168.  
  169. public uint unknown { get { return CODraken.BitConverter.ReadUint(Buffer, 12); } set { WriteUint(value, 12, Buffer); } }
  170.  
  171. List<ScarletBlade.Inbox.PrizeInfo> list = new List<ScarletBlade.Inbox.PrizeInfo>();
  172. public void check(GameState client, uint page)
  173. {
  174. List<ScarletBlade.Inbox.PrizeInfo> prizes = client.Prizes.Values.ToList();
  175. list.Clear();
  176. for (int i = (int)page; i < page + 7; i++)
  177. {
  178. if (i < prizes.Count)
  179. {
  180.  
  181.  
  182. list.Add(prizes[i]);
  183. }
  184. }
  185. if (list.Count > 0)
  186. {
  187. Buffer = new byte[20 + 92 * list.Count];
  188. Ushort((ushort)(Buffer.Length - 8), 0, Buffer);
  189. Ushort(1046, 2, Buffer);
  190. Count = (uint)list.Count;
  191. Page = page;
  192. unknown = (uint)prizes.Count;
  193. for (int i = 0; i < list.Count; i++)
  194. Apend(list[i], client);
  195. }
  196.  
  197. }
  198. ushort offset = 16;
  199. public void Apend(PrizeInfo prize, GameState C)
  200. {
  201. Uint(prize.ID, offset, Buffer);//uid
  202. offset += 4;
  203. String(prize.Sender, offset, Buffer);//sender
  204. offset += 32;
  205. String(prize.Subject, offset, Buffer);//Subject
  206. offset += 32;
  207.  
  208. Uint(prize.goldprize, offset, Buffer);//attachment
  209. offset += 4;
  210.  
  211. Uint(prize.cpsprize, offset, Buffer);//attachment
  212. offset += 4;
  213.  
  214. Uint(prize.Time, offset, Buffer);//Time
  215. offset += 4;
  216. if (prize.itemprize != null)
  217. {
  218. Uint(prize.itemprize.UID, offset, Buffer);// image
  219. prize.itemprize.Mode = (Enums.ItemMode)11; //Enums.ItemMode.Inbox;
  220. prize.itemprize.Send(C);
  221. }
  222. offset += 4;
  223.  
  224. // Uint(prize.MessageOrGift == true ? (byte)1 : (byte)0, offset, Buffer);//attachment
  225. Uint(prize.Attackment, offset, Buffer);//attachment
  226. offset += 4;
  227.  
  228. }
  229. public void Send(GameState client)
  230. {
  231. client.Send(this.ToArray());
  232. }
  233.  
  234. public void Deserialize(byte[] Data)
  235. {
  236. Buffer = Data;
  237. }
  238.  
  239. public byte[] ToArray()
  240. {
  241. return Buffer;
  242. }
  243.  
  244.  
  245. }
  246. }
  247.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement