public static void SendMonstrStateChangedResponse(NPC npc, Asda2NpcState state) { using (var packet = new RealmPacketOut(RealmServerOpCode.MonstrStateChanged)) //4017 { packet.WriteSkip(stab6); //value name : stab6 default value : stab6Len : 2 packet.WriteInt16(npc.UniqIdOnMap); //{mobId}default value : 253 Len : 2 packet.WriteInt32((int)state); //{status}default value : 0 Len : 4 for (int i = 0; i < 28; i += 1) { Spells.Auras.Aura aura = null; if (npc.Auras.ActiveAuras.Length > i) { aura = npc.Auras.ActiveAuras[i].TicksLeft == 0 ? null : npc.Auras.ActiveAuras[i]; //npc.Auras.VisibleAuras[i]; } packet.WriteInt16(aura == null?-1:aura.Spell.RealId); //{effect}default value : -1 Len : 2 } for (int i = 0; i < 28; i += 1) { Spells.Auras.Aura aura = null; if (npc.Auras.ActiveAuras.Length > i) { aura = npc.Auras.ActiveAuras[i]; //npc.Auras.VisibleAuras[i]; } packet.WriteByte(aura == null?0:1); //{effectExist}default value : 0 Len : 1 } packet.WriteInt32(npc.Health); //{hp}default value : 0 Len : 4 packet.WriteInt16((short)npc.Position.X); //{x}default value : 74 Len : 2 packet.WriteInt16((short)npc.Position.Y); //{y}default value : 246 Len : 2 npc.SendPacketToArea(packet, false, true); } }
public static void SendMonstrStateChangedResponse(NPC npc, Asda2NpcState state) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.MonstrStateChanged)) { packet.WriteSkip(Asda2CombatHandler.stab6); packet.WriteInt16(npc.UniqIdOnMap); packet.WriteInt32((int)state); for (int index = 0; index < 28; ++index) { Aura aura = (Aura)null; if (npc.Auras.ActiveAuras.Length > index) { aura = npc.Auras.ActiveAuras[index].TicksLeft == 0 ? (Aura)null : npc.Auras.ActiveAuras[index]; } packet.WriteInt16(aura == null ? -1 : (int)aura.Spell.RealId); } for (int index = 0; index < 28; ++index) { Aura aura = (Aura)null; if (npc.Auras.ActiveAuras.Length > index) { aura = npc.Auras.ActiveAuras[index]; } packet.WriteByte(aura == null ? 0 : 1); } packet.WriteInt32(npc.Health); packet.WriteInt16((short)npc.Position.X); packet.WriteInt16((short)npc.Position.Y); npc.SendPacketToArea(packet, false, true, Locale.Any, new float?()); } }