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.0 kB

HITS: 340

  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\\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 (PrizeInfos.ContainsKey(id))
  47. PrizeInfo = PrizeInfos[uint.Parse(split[1])];
  48. else
  49. {
  50. PrizeInfo = new PrizeInfo();
  51. PrizeInfo.UID = id;
  52. PrizeInfos.Add(id, PrizeInfo);
  53. }
  54. }
  55. else
  56. {
  57. if (split[0] == "prizeItemType")
  58. PrizeInfo.prizeItemType = uint.Parse(split[1]);
  59. else if (split[0] == "needDays")
  60. PrizeInfo.needDays = uint.Parse(split[1]);
  61. }
  62. }
  63. Daily = Database.ConquerItemInformation.BaseInformations.Values
  64. .Where(p => (p.ID >= 188105 && p.ID <= 192785)).ToArray();
  65. Console.WriteLine("signin loaded.");
  66. }
  67. public byte[] Packet;
  68. public DailySignIn(bool create)
  69. {
  70. if (create)
  71. {
  72. Packet = new byte[12 + 8];
  73. Writer.WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
  74. Writer.WriteUInt16(3200, 2, Packet);
  75. }
  76. }
  77. public enum Action
  78. {
  79. SignIn,
  80. LateSignIn,
  81. Claim,
  82. Info
  83. }
  84. public Action Type
  85. {
  86. get { return (Action)Packet[4]; }
  87. set { WriteByte((byte)value, 4, Packet); }
  88. }
  89. public byte Claimed
  90. {
  91. get { return Packet[5]; }
  92. set { WriteByte(value, 5, Packet); }
  93. }
  94. public ushort LateSignChance
  95. {
  96. get { return BitConverter.ToUInt16(Packet, 6); }
  97. set { WriteUInt16(value, 6, Packet); }
  98. }
  99. public uint CumulativeDays
  100. {
  101. get { return BitConverter.ToUInt32(Packet, 8); }
  102. set { WriteUInt32(value, 8, Packet); }
  103. }
  104. public byte[] ToArray()
  105. {
  106. return Packet;
  107. }
  108. public void Deserialize(byte[] buffer)
  109. {
  110. Packet = buffer;
  111. }
  112. public void Send(Client.GameState client)
  113. {
  114. client.Send(Packet);
  115. }
  116. }
  117. }

comments powered by Disqus