public void AddTitle(Client.GameState client, short _type, short _id, bool equipped = false, int TimeInSeconds = 0) { if (StorageManager.Wing<bool>(_type, _id)) { if (!client.Player.Wings.ContainsValue((uint)_id)) client.Player.Wings.Add((uint)_type, (uint)_id); else return; } else { if (!client.Player.WTitles.ContainsValue((uint)_id)) client.Player.WTitles.Add((uint)_type, (uint)_id); else return; } client.Player.UTitlePoints += StorageManager.GetTitlePoints(_type, _id); var pkt = new TitleStorageProto() { ActionId = Action.Update, Points = client.Player.UTitlePoints, Value = new TitleValue() { Type = _type, Id = _id, Equipped = equipped, Time = TimeInSeconds, } }; client.Send(FinalizeProtoBuf(pkt)); if (equipped) { if (StorageManager.Wing<bool>(_type, _id)) { client.Player.EquippedWing = StorageManager.Wing<int>(_type, _id); client.Player.NowEquippedWing.Clear(); client.Player.NowEquippedWing.Add(_type + "~" + _id); } else if (StorageManager.Title<bool>(_type, _id)) { client.Player.EquippedTitle = StorageManager.Title<int>(_type, _id); client.Player.NowEquippedTitle.Clear(); client.Player.NowEquippedTitle.Add(_type + "~" + _id); } } }
public void RemoveTitle(Client.GameState client, short _type, short _id, bool equipped = false) { if (StorageManager.Wing<bool>(_type, _id)) { if (client.Player.Wings.ContainsValue((uint)_id)) { client.Player.Wings.Remove((uint)_type); if (client.Player.EquippedWing == StorageManager.Wing<int>(_type, _id)) { client.Player.EquippedWing = 0; client.Player.NowEquippedWing.Clear(); var pkt = new TitleStorageProto() { ActionId = Action.Unequip, Id = _id, Type = _type, Points = client.Player.UTitlePoints, Value = new TitleValue() { Type = _type, Id = _id, Equipped = false } }; client.Send(FinalizeProtoBuf(pkt)); } client.Player.UTitlePoints -= StorageManager.GetTitlePoints(_type, _id); var pkt2 = new TitleStorageProto() { ActionId = Action.RemoveTitle, Id = _id, Type = _type, Points = client.Player.UTitlePoints, Value = new TitleValue() { Type = _type, Id = _id, Equipped = false } }; client.Send(FinalizeProtoBuf(pkt2)); } else return; } else { if (client.Player.WTitles.ContainsValue((uint)_id)) { client.Player.WTitles.Remove((uint)_type); if (client.Player.EquippedTitle == StorageManager.Title<int>(_type, _id)) { client.Player.EquippedTitle = 0; client.Player.NowEquippedTitle.Clear(); var pkt = new TitleStorageProto() { ActionId = Action.Unequip, Id = _id, Type = _type, Points = client.Player.UTitlePoints, Value = new TitleValue() { Type = _type, Id = _id, Equipped = false } }; client.Send(FinalizeProtoBuf(pkt)); } client.Player.UTitlePoints -= StorageManager.GetTitlePoints(_type, _id); var pkt2 = new TitleStorageProto() { ActionId = Action.RemoveTitle, Id = _id, Type = _type, Points = client.Player.UTitlePoints, Value = new TitleValue() { Type = _type, Id = _id, Equipped = false } }; client.Send(FinalizeProtoBuf(pkt2)); } else return; } }
public byte[] FinalizeProtoBuf(TitleStorageProto titleStorageProto) { using (var memoryStream = new MemoryStream()) { Serializer.SerializeWithLengthPrefix(memoryStream, titleStorageProto, PrefixStyle.Fixed32); var pkt = new byte[8 + memoryStream.Length]; memoryStream.ToArray().CopyTo(pkt, 0); Writer.Write((ushort)memoryStream.Length, 0, pkt); Writer.Write((ushort)3301, 2, pkt); return pkt; } } public TitleStorageProto Info;