public Matcher(Person[] people, Person[] offLimitsPeople) { _receivers = new Receivers(people); _givers = new Givers(people, offLimitsPeople); }
public FlowerSystem(byte[] BasePacket, Receivers.ClientState Caller) { Packet = new FlowerPacket(false); Packet.Deserialize(BasePacket); if (!Kernel.GamePool.ContainsKey(Packet.UID1)) return; if (Caller.Entity.Level < 50) return; if (Caller.Entity.Body == 2001 || Caller.Entity.Body == 2002) return; if (Kernel.GamePool[Packet.UID1].Entity.Body == 1003 || Kernel.GamePool[Packet.UID1].Entity.Body == 1004) return; if (Packet.ItemUID == 0) { if (Caller.Entity.Flowers.LastFlowerSent == null) Caller.Entity.Flowers.LastFlowerSent = DateTime.Now.Subtract(TimeSpan.FromDays(1)); if (Packet.FlowerType != FlowerType.RedRoses && Packet.Amount != 1) return; if (Caller.Entity.Flowers.LastFlowerSent.AddDays(1) <= DateTime.Now) { Caller.Entity.Flowers.LastFlowerSent = DateTime.Now; FlowerPacket NewPacket = new FlowerPacket(true); NewPacket.SenderName = Caller.Entity.Name; NewPacket.ReceiverName = Kernel.GamePool[Packet.UID1].Entity.Name; NewPacket.SendAmount = 1; NewPacket.SendFlowerType = FlowerType.RedRoses; Kernel.GamePool[Packet.UID1].Send(NewPacket); Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses++; Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses2day++; } else Caller.Send(Constants.OneFlowerADay); } else { IConquerItem Item; if (Caller.Inventory.TryGetValue(Packet.ItemUID, out Item)) { if (Item.Durability != Packet.Amount) return; FlowerType Flower = FlowerType.Unknown; switch (Item.ID / 1000) { case 751: Flower = FlowerType.RedRoses; break; case 752: Flower = FlowerType.Lilies; break; case 753: Flower = FlowerType.Orchids; break; case 754: Flower = FlowerType.Tulips; break; } if (Flower != FlowerType.Unknown) { switch (Flower) { case FlowerType.RedRoses: Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses2day += Packet.Amount; break; case FlowerType.Lilies: Kernel.GamePool[Packet.UID1].Entity.Flowers.Lilies += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Lilies2day += Packet.Amount; break; case FlowerType.Orchids: Kernel.GamePool[Packet.UID1].Entity.Flowers.Orchads += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Orchads2day += Packet.Amount; break; case FlowerType.Tulips: Kernel.GamePool[Packet.UID1].Entity.Flowers.Tulips += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Tulips2day += Packet.Amount; break; } FlowerPacket NewPacket = new FlowerPacket(true); NewPacket.SenderName = Caller.Entity.Name; NewPacket.ReceiverName = Kernel.GamePool[Packet.UID1].Entity.Name; NewPacket.SendAmount = Packet.Amount; NewPacket.SendFlowerType = Flower; Kernel.GamePool[Packet.UID1].Send(NewPacket); Caller.Inventory.Remove(Item, Enums.ItemUse.Remove); Database.ConquerItemTable.RemoveItem(Item.UID); } } } }
public Text(ulong timestep, bool useMask, byte[] payload, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, payload, receivers, groupId, isStream) { }
public Handle(byte[] packet, Receivers.ClientState client) { #region Variables byte Type = packet[4]; uint ItemUID = BitConverter.ToUInt32(packet, 8); uint RefineryUID = BitConverter.ToUInt32(packet, 12); Interfaces.IConquerItem Main = null; Interfaces.IConquerItem Minor = null; #endregion #region Refinery if (Type == 0) { #region Main Item Main = client.Equipment.TryGetItem(ItemUID); if (Main == null) { client.Send(new Message("You need to be wearing the target item to refine", Color.Red, Message.TopLeft)); return; } #endregion #region Minor Item client.Inventory.TryGetItem(RefineryUID, out Minor); #endregion if (Minor != null) { ConquerItemInformation Info = new ConquerItemInformation(Minor.ID, 0); if (Info != null) { #region Info Split string[] RefineryInfo = Info.BaseInformation.FinalDescription.Split('~'); #endregion #region Safe RefineryName string RefineryName = Info.BaseInformation.Name.Replace("Material", ""); RefineryName = RefineryName.Replace("(Super)", ""); RefineryName = RefineryName.Replace("(Unique)", ""); RefineryName = RefineryName.Replace("(Refined)", ""); RefineryName = RefineryName.Replace("(Elite)", ""); RefineryName = RefineryName.Replace("(Normal)", ""); #endregion #region Set Info RefineryID RefineryType = RefineryID.None; byte RefineryLevel = byte.Parse(RefineryInfo[1]); string ItemType = Info.BaseInformation.Description; ushort RefineryPercent = 0; switch (RefineryName) { case "Block": RefineryType = RefineryID.Block; break; case "Detoxication": RefineryType = RefineryID.Detoxication; break; case "Breakthrough": RefineryType = RefineryID.Breaktrough; break; case "CriticalStrike": RefineryType = RefineryID.Critical; break; case "Intensification": RefineryType = RefineryID.Intensificaiton; break; default: Console.WriteLine("Uknown refinery item " + RefineryName); return; } RefineryPercent = getPercentage(RefineryName, ItemType, RefineryLevel); if (RefineryPercent <= 0) return; #endregion #region Switch RefineryType #region Allow Refinery bool AllowedRefinery = false; switch (ItemType) { case "Headgear": if (Main.Position == 1) AllowedRefinery = true; break; case "Necklace": if (Main.Position == 2) AllowedRefinery = true; break; case "Armor": if (Main.Position == 3) AllowedRefinery = true; break; case "Bracelet": case "Ring": if (Main.Position == 6) AllowedRefinery = true; break; case "1-Handed": if (Main.Position == 4 || Main.Position == 5) if (Main.ID >= 410000 && Main.ID < 500000) AllowedRefinery = true; break; case "2-Handed": if (Main.Position == 4) if (Main.ID >= 510000 && Main.ID < 600000) AllowedRefinery = true; break; case "Bow": if (Main.Position == 4) if (Main.ID >= 500000 && Main.ID < 501000) AllowedRefinery = true; break; case "Shield": if (Main.Position == 5) if (Main.ID >= 900000 && Main.ID < 901000) AllowedRefinery = true; break; case "Boots": if (Main.Position == 8) AllowedRefinery = true; break; default: AllowedRefinery = false; break; } if (!AllowedRefinery) { client.Send(new Message("You can't refine the target item!", Color.Red, Message.TopLeft)); return; } #endregion if (RefineryType != RefineryID.None) { Main.RefineryLevel = RefineryLevel; Main.RefineryPart = (uint)RefineryType; Main.RefineryPercent = RefineryPercent; Main.Send(client); ConquerItemTable.RefineryUpdate(Main, client); client.Inventory.Remove(Minor, Enums.ItemUse.Remove); } #endregion } else { client.Send(new Message("You can't use this item to refine!", Color.Red, Message.TopLeft)); Console.WriteLine("Minor refinery info is null"); return; } } else { client.Send(new Message("You can't use this item to refine!", Color.Red, Message.TopLeft)); Console.WriteLine("Minor refinery is null"); return; } } #endregion #region Purify else if (Type == 1) { client.Inventory.TryGetItem(ItemUID, out Main); client.Inventory.TryGetItem(RefineryUID, out Minor); if (Main == null) return; if (Minor == null) return; if (client.Inventory.Contains(1088001, 15)) { Main.Mode = Enums.ItemMode.Update; Main.SoulPart = Minor.ID; Main.SoulStarted = DateTime.Now; Main.Send(client); Main.Mode = Enums.ItemMode.Default; ConquerItemTable.SoulUpdate(Main, client); client.Inventory.Remove(Minor, Enums.ItemUse.Remove); client.Inventory.Remove(1088001, 15); client.Send(packet); } else { client.Send(new Message("You don't have 15 meteors!", Color.Red, Message.TopLeft)); return; } } #endregion }
public void AddReceiver(User receiver, bool isRead = false) { Receivers.Add(receiver); IsRead[receiver.Email] = isRead; }
public ConnectionClose(ulong timestep, bool useMask, BMSByte payload, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, payload, receivers, groupId, isStream) { }
public void RemoveReceiver(Action <byte> receiver) { Receivers.Remove(receiver); }
public void AddReceiver(Action <byte> receiver) { Receivers.Add(receiver); }
public void SoloReceiver(Action <byte> receiver) { Receivers.RemoveAll(p => true); AddReceiver(receiver); }
public Action <byte> GetCurrentReceiver() { return(Receivers.First(p => true)); }
public Ping(ulong timestep, bool useMask, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, receivers, groupId, isStream) { }