using Conquer_Online_Server.Network; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Conquer_Online_Server { public class DailySignIn : Writer, Interfaces.IPacket { public static void Reload(Client.GameState client) { DailySignIn signin = new DailySignIn(true); signin.Type = Action.Info; signin.Claimed = client.SignClaim; signin.CumulativeDays = client.CumulativeDays; signin.LateSignChance = client.LateSignChance; client.Send(signin); } static Database.ConquerItemBaseInformation[] Daily; public class PrizeInfo { public uint UID; public uint prizeItemType; public uint needDays; } public static SafeDictionary PrizeInfos; public static uint RandomPrizes() { return Daily[Kernel.Random.Next(Daily.Length)].ID; } public static void Load() { PrizeInfos = new SafeDictionary(); string[] text = File.ReadAllLines("database\\signin.ini"); PrizeInfo PrizeInfo = new PrizeInfo(); for (int x = 0; x < text.Length; x++) { string line = text[x]; string[] split = line.Split('='); if (line.StartsWith("[") && line.EndsWith("]") && !line.Contains("Prize")) { string numbers = line.Replace("[", "").Replace("]", ""); uint id = uint.Parse(numbers); if (PrizeInfos.ContainsKey(id)) PrizeInfo = PrizeInfos[uint.Parse(split[1])]; else { PrizeInfo = new PrizeInfo(); PrizeInfo.UID = id; PrizeInfos.Add(id, PrizeInfo); } } else { if (split[0] == "prizeItemType") PrizeInfo.prizeItemType = uint.Parse(split[1]); else if (split[0] == "needDays") PrizeInfo.needDays = uint.Parse(split[1]); } } Daily = Database.ConquerItemInformation.BaseInformations.Values .Where(p => (p.ID >= 188105 && p.ID <= 192785)).ToArray(); Console.WriteLine("signin loaded."); } public byte[] Packet; public DailySignIn(bool create) { if (create) { Packet = new byte[12 + 8]; Writer.WriteUInt16((ushort)(Packet.Length - 8), 0, Packet); Writer.WriteUInt16(3200, 2, Packet); } } public enum Action { SignIn, LateSignIn, Claim, Info } public Action Type { get { return (Action)Packet[4]; } set { WriteByte((byte)value, 4, Packet); } } public byte Claimed { get { return Packet[5]; } set { WriteByte(value, 5, Packet); } } public ushort LateSignChance { get { return BitConverter.ToUInt16(Packet, 6); } set { WriteUInt16(value, 6, Packet); } } public uint CumulativeDays { get { return BitConverter.ToUInt32(Packet, 8); } set { WriteUInt32(value, 8, Packet); } } public byte[] ToArray() { return Packet; } public void Deserialize(byte[] buffer) { Packet = buffer; } public void Send(Client.GameState client) { client.Send(Packet); } } }