Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using ProtoBuf;
- using System.Linq;
- using System.Collections.Generic;
- using System.IO;
- namespace UchihaFamily.Network.GamePackets
- {
- public class TryTrip : Interfaces.IPacket
- {
- [ProtoContract]
- public class TryTripQuery
- {
- [ProtoMember(1)]
- public uint Attacker;
- [ProtoMember(2)]
- public uint Attacked;
- [ProtoMember(3)]
- public ushort X;
- [ProtoMember(4)]
- public ushort Y;
- [ProtoMember(5, IsRequired = true)]
- public ushort SpellID;
- [ProtoMember(6, IsRequired = true)]
- public ushort SpellLevel;
- [ProtoMember(7, IsRequired = true)]
- public uint NextSpell;
- [ProtoMember(8, IsRequired = true)]
- public byte LevelJH;
- [ProtoMember(9, IsRequired = true)]
- public byte SpellEffect;
- [ProtoMember(10)]
- public DamageClass Damageclass;
- }
- [ProtoContract]
- public class DamageClass
- {
- [ProtoMember(1, IsRequired = true)]
- public uint UID;
- [ProtoMember(2, IsRequired = true)]
- public uint Damage;
- [ProtoMember(3, IsRequired = true)]
- public bool Hit;
- [ProtoMember(4, IsRequired = true)]
- public MsgInteract.InteractEffects Effect;
- [ProtoMember(5)]
- public uint un3;
- [ProtoMember(6, IsRequired = true)]
- public ushort newX;
- [ProtoMember(7, IsRequired = true)]
- public ushort newY;
- public static implicit operator uint(DamageClass dmg)
- {
- return dmg.Damage;
- }
- public static implicit operator DamageClass(uint dmg)
- {
- return new DamageClass()
- {
- Damage = dmg,
- Hit = true
- };
- }
- }
- public MsgInteract.InteractEffects Effect1
- {
- get;
- set;
- }
- public MsgInteract.InteractEffects2 Effect2
- {
- get;
- set;
- }
- public TryTripQuery pQuery;
- public TryTrip(bool Create)
- {
- if (Create)
- {
- pQuery = new TryTripQuery();
- }
- }
- public uint Attacker
- {
- get { return pQuery.Attacker; }
- set { pQuery.Attacker = value; }
- }
- public uint Attacked
- {
- get { return pQuery.Attacked; }
- set { pQuery.Attacked = value; }
- }
- public ushort SpellID
- {
- get { return pQuery.SpellID; }
- set { pQuery.SpellID = value; }
- }
- public ushort SpellLevel
- {
- get { return pQuery.SpellLevel; }
- set { pQuery.SpellLevel = value; }
- }
- public SafeDictionary<uint, DamageClass> Targets = new SafeDictionary<uint, DamageClass>();
- public void Deserialize(byte[] buffer)
- {
- this.pQuery = buffer.ConvertToProto<TryTripQuery>();
- }
- public uint Damage
- {
- get { return pQuery.Damageclass.Damage; }
- set { pQuery.Damageclass.Damage = value; }
- }
- public uint Damage1
- {
- get { return pQuery.Damageclass.Damage; }
- set { pQuery.Damageclass.Damage = value; }
- }
- public uint Damage2
- {
- get { return pQuery.Damageclass.Damage; }
- set { pQuery.Damageclass.Damage = value; }
- }
- public MsgInteract.InteractEffects Eff1
- {
- get;
- set;
- }
- public MsgInteract.InteractEffects Eff2
- {
- get;
- set;
- }
- public MsgInteract.InteractEffects Eff3
- {
- get;
- set;
- }
- public byte Count
- {
- get { return pQuery.SpellEffect; }
- set { pQuery.SpellEffect = value; }
- }
- public byte[] ToArray()
- {
- foreach (KeyValuePair<uint, DamageClass> target in Targets)
- {
- for (int x = 0; x < 3; x++)
- {
- pQuery.Damageclass = new DamageClass();
- pQuery.Damageclass.UID = target.Key;
- pQuery.Damageclass.Damage = target.Value.Damage;
- pQuery.Damageclass.Hit = target.Value.Hit;
- pQuery.Damageclass.Effect = target.Value.Effect;
- pQuery.Damageclass.newX = target.Value.newX;
- pQuery.Damageclass.newY = target.Value.newY;
- }
- }
- return Kernel.FinalizeProtoBuf(pQuery, (ushort)MsgTypes.MsgMagicEffect);
- }
- public void Send(Client.GameState client)
- {
- client.Send(ToArray());
- }
- internal TryTrip AddTarget(uint uid, DamageClass damage, MsgInteract attack)
- {
- if (attack != null)
- {
- damage.Effect = attack.Effect;
- }
- Targets.Add(uid, damage);
- return this;
- }
- }
- public class MsgMagicEffect : Interfaces.IPacket
- {
- [ProtoContract]
- public class MagicEffectQuery
- {
- [ProtoMember(1)]
- public uint Attacker;
- [ProtoMember(2)]
- public uint Attacked;
- [ProtoMember(3)]
- public ushort X;
- [ProtoMember(4)]
- public ushort Y;
- [ProtoMember(5, IsRequired = true)]
- public ushort SpellID;
- [ProtoMember(6, IsRequired = true)]
- public ushort SpellLevel;
- [ProtoMember(7, IsRequired = true)]
- public uint NextSpell;
- [ProtoMember(8, IsRequired = true)]
- public byte LevelJH;
- [ProtoMember(9, IsRequired = true)]
- public byte SpellEffect;
- [ProtoMember(10)]
- public DamageClass Damageclass;
- }
- [ProtoContract]
- public class DamageClass
- {
- [ProtoMember(1, IsRequired = true)]
- public uint UID;
- [ProtoMember(2, IsRequired = true)]
- public uint Damage;
- [ProtoMember(3, IsRequired = true)]
- public bool Hit;
- [ProtoMember(4, IsRequired = true)]
- public MsgInteract.InteractEffects Effect;
- [ProtoMember(5)]
- public uint un3;
- [ProtoMember(6, IsRequired = true)]
- public ushort newX;
- [ProtoMember(7, IsRequired = true)]
- public ushort newY;
- public static implicit operator uint(DamageClass dmg)
- {
- return dmg.Damage;
- }
- public static implicit operator DamageClass(uint dmg)
- {
- return new DamageClass()
- {
- Damage = dmg,
- Hit = true
- };
- }
- }
- public MagicEffectQuery pQuery;
- public MsgMagicEffect(bool Create)
- {
- if (Create)
- {
- pQuery = new MagicEffectQuery();
- }
- }
- public uint Attacker
- {
- get { return pQuery.Attacker; }
- set { pQuery.Attacker = value; }
- }
- public uint Attacker1 //x
- {
- get { return pQuery.Attacked; }
- set { pQuery.Attacked = value; }
- }
- public ushort X
- {
- get { return pQuery.X; }
- set { pQuery.X = value; }
- }
- public ushort Y
- {
- get { return pQuery.Y; }
- set { pQuery.Y = value; }
- }
- public ushort SpellID
- {
- get { return pQuery.SpellID; }
- set { pQuery.SpellID = value; }
- }
- public ushort SpellLevel
- {
- get { return pQuery.SpellLevel; }
- set { pQuery.SpellLevel = value; }
- }
- public byte LevelHu
- {
- get { return pQuery.LevelJH; }
- set { pQuery.LevelJH = value; }
- }
- public byte SpellEffect
- {
- get { return pQuery.SpellEffect; }
- set { pQuery.SpellEffect = value; }
- }
- public byte SpecialEffect
- {
- get { return pQuery.SpellEffect; }
- set { pQuery.SpellEffect = value; }
- }
- public MsgInteract.InteractEffects Effect { get; set; }
- public MsgInteract.InteractEffects2 Effect2 { get; set; }
- public SafeDictionary<uint, DamageClass> Targets = new SafeDictionary<uint, DamageClass>();
- public void Deserialize(byte[] buffer)
- {
- this.pQuery = buffer.ConvertToProto<MagicEffectQuery>();
- }
- private const int TargetLimit = 30;
- public byte[] ToArray()
- {
- if (Targets.Count <= TargetLimit)
- {
- if (Kernel.GamePool.ContainsKey(Attacker))
- if (Kernel.GamePool[Attacker].Spells != null)
- if (Kernel.GamePool[Attacker].Spells[SpellID] != null)
- LevelHu = Kernel.GamePool[Attacker].Spells[SpellID].LevelHu2;
- foreach (KeyValuePair<uint, DamageClass> target in Targets)
- {
- pQuery.Damageclass = new DamageClass();
- pQuery.Damageclass.UID = target.Key;
- pQuery.Damageclass.Damage = target.Value.Damage;
- pQuery.Damageclass.Hit = target.Value.Hit;
- pQuery.Damageclass.Effect = target.Value.Effect;
- pQuery.Damageclass.newX = target.Value.newX;
- pQuery.Damageclass.newY = target.Value.newY;
- }
- return Kernel.FinalizeProtoBuf(pQuery, (ushort)MsgTypes.MsgMagicEffect);
- }
- else
- {
- var array = Targets.ToArray();
- for (int i = 0; i < array.Length; i += TargetLimit)
- {
- int targets = array.Length - i;
- if (targets > TargetLimit) targets = TargetLimit;
- if (Kernel.GamePool.ContainsKey(Attacker))
- if (Kernel.GamePool[Attacker].Spells != null)
- if (Kernel.GamePool[Attacker].Spells[SpellID] != null)
- LevelHu = Kernel.GamePool[Attacker].Spells[SpellID].LevelHu2;
- for (int j = 0; j < targets; j++)
- {
- KeyValuePair<uint, DamageClass> target = array[i + j];
- pQuery.Damageclass = new DamageClass();
- pQuery.Damageclass.UID = target.Key;
- pQuery.Damageclass.Damage = target.Value.Damage;
- pQuery.Damageclass.Hit = target.Value.Hit;
- pQuery.Damageclass.Effect = target.Value.Effect;
- pQuery.Damageclass.newX = target.Value.newX;
- pQuery.Damageclass.newY = target.Value.newY;
- }
- }
- return Kernel.FinalizeProtoBuf(pQuery, (ushort)MsgTypes.MsgMagicEffect);
- }
- }
- public void Send(Client.GameState client)
- {
- client.Send(ToArray());
- }
- internal MsgMagicEffect AddTarget(Interfaces.IMapObject obj, DamageClass damage, MsgInteract attack)
- {
- if (attack != null)
- {
- damage.Effect = attack.Effect;
- }
- if (obj.MapObjType == Game.MapObjectType.SobNpc)
- {
- var attacked = obj as MsgNpcInfoEX;
- Targets.Add(attacked.UID, damage);
- }
- else if (obj.MapObjType == Game.MapObjectType.Player || obj.MapObjType == Game.MapObjectType.Monster)
- {
- var attacked = obj as Game.Player;
- Targets.Add(attacked.UID, damage);
- }
- return this;
- }
- internal MsgMagicEffect AddTarget(uint uid, DamageClass damage, MsgInteract attack)
- {
- if (attack != null)
- {
- damage.Effect = attack.Effect;
- }
- Targets.Add(uid, damage);
- return this;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement