DailySignIn.cs


SUBMITTED BY: DavidEid

DATE: Aug. 6, 2017, 6:56 a.m.

UPDATED: Aug. 6, 2017, 7:21 a.m.

FORMAT: C#

SIZE: 4.1 kB

HITS: 348

  1. using Conquer_Online_Server.Network;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Conquer_Online_Server
  9. {
  10. public class DailySignIn : Writer, Interfaces.IPacket
  11. {
  12. public static void Reload(Client.GameState client)
  13. {
  14. DailySignIn signin = new DailySignIn(true);
  15. signin.Type = Action.Info;
  16. signin.Claimed = client.SignClaim;
  17. signin.CumulativeDays = client.CumulativeDays;
  18. signin.LateSignChance = client.LateSignChance;
  19. client.Send(signin);
  20. }
  21. static Database.ConquerItemBaseInformation[] Daily;
  22. public class PrizeInfo
  23. {
  24. public uint UID;
  25. public uint prizeItemType;
  26. public uint needDays;
  27. }
  28. public static SafeDictionary<uint, PrizeInfo> PrizeInfos;
  29. public static uint RandomPrizes()
  30. {
  31. return Daily[Kernel.Random.Next(Daily.Length)].ID;
  32. }
  33. public static void Load()
  34. {
  35. PrizeInfos = new SafeDictionary<uint, PrizeInfo>();
  36. string[] text = File.ReadAllLines("database\\TQServer\\signin.ini");
  37. PrizeInfo PrizeInfo = new PrizeInfo();
  38. for (int x = 0; x < text.Length; x++)
  39. {
  40. string line = text[x];
  41. string[] split = line.Split('=');
  42. if (line.StartsWith("[") && line.EndsWith("]") && !line.Contains("Prize"))
  43. {
  44. string numbers = line.Replace("[", "").Replace("]", "");
  45. uint id = uint.Parse(numbers);
  46. //if (numbers.Length > 1)
  47. // id += uint.Parse(numbers[1]);
  48. if (PrizeInfos.ContainsKey(id))
  49. PrizeInfo = PrizeInfos[uint.Parse(split[1])];
  50. else
  51. {
  52. PrizeInfo = new PrizeInfo();
  53. PrizeInfo.UID = id;
  54. PrizeInfos.Add(id, PrizeInfo);
  55. }
  56. }
  57. else
  58. {
  59. if (split[0] == "prizeItemType")
  60. PrizeInfo.prizeItemType = uint.Parse(split[1]);
  61. else if (split[0] == "needDays")
  62. PrizeInfo.needDays = uint.Parse(split[1]);
  63. }
  64. }
  65. Daily = Database.ConquerItemInformation.BaseInformations.Values
  66. .Where(p => (p.ID >= 188105 && p.ID <= 192785)).ToArray();
  67. Console.WriteLine("signin loaded.");
  68. }
  69. public byte[] Packet;
  70. public DailySignIn(bool create)
  71. {
  72. if (create)
  73. {
  74. Packet = new byte[12 + 8];
  75. Writer.WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
  76. Writer.WriteUInt16(3200, 2, Packet);
  77. }
  78. }
  79. public enum Action
  80. {
  81. SignIn,
  82. LateSignIn,
  83. Claim,
  84. Info
  85. }
  86. public Action Type
  87. {
  88. get { return (Action)Packet[4]; }
  89. set { WriteByte((byte)value, 4, Packet); }
  90. }
  91. public byte Claimed
  92. {
  93. get { return Packet[5]; }
  94. set { WriteByte(value, 5, Packet); }
  95. }
  96. public ushort LateSignChance
  97. {
  98. get { return BitConverter.ToUInt16(Packet, 6); }
  99. set { WriteUInt16(value, 6, Packet); }
  100. }
  101. public uint CumulativeDays
  102. {
  103. get { return BitConverter.ToUInt32(Packet, 8); }
  104. set { WriteUInt32(value, 8, Packet); }
  105. }
  106. public byte[] ToArray()
  107. {
  108. return Packet;
  109. }
  110. public void Deserialize(byte[] buffer)
  111. {
  112. Packet = buffer;
  113. }
  114. public void Send(Client.GameState client)
  115. {
  116. client.Send(Packet);
  117. }
  118. }
  119. }

comments powered by Disqus