示例#1
0
        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);
            }
        }
示例#2
0
        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?());
            }
        }