Пример #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 SendEnterWorldIpeResponseResponse(IRealmClient client)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.EnterWorldIpeResponse)) //1021
     {
         packet.WriteInt32(-1);                                                       //value name : unk4 default value : -1Len : 4
         if (client.AddrTemp.Contains("192.168."))
         {
             packet.WriteFixedAsciiString(RealmServerConfiguration.ExternalAddress, 20);
         }
         else
         {
             packet.WriteFixedAsciiString(RealmServerConfiguration.RealExternalAddress, 20); //"127.0.0.1", 20);//"10.8.0.10", 20);//RealmServerConfiguration.ExternalAddress, 20);//{ip}default value :  Len : 20
         }
         packet.WriteUInt16(RealmServerConfiguration.Port);                                  //15001);//RealmServerConfiguration.Port);//{port}default value : 15603 Len : 2
         packet.WriteInt16((short)client.ActiveCharacter.Map.MapTemplate.RealId);            //{location}default value : 3 Len : 2
         packet.WriteInt16((short)(client.ActiveCharacter.Asda2Position.X));                 //{x}default value : 0 Len : 2
         packet.WriteInt16((short)(client.ActiveCharacter.Asda2Position.Y));                 //{y}default value : 0 Len : 2
         var auras = new Spells.Auras.Aura[28];
         var it    = 0;
         foreach (var visibleAura in client.ActiveCharacter.Auras.ActiveAuras)
         {
             if (visibleAura.TicksLeft <= 0)
             {
                 continue;
             }
             auras[it++] = visibleAura;
             if (auras.Length <= it)
             {
                 break;
             }
         }
         for (int i = 0; i < 28; i += 1)
         {
             var spell = auras[i];
             packet.WriteInt16(spell == null ? -1 : spell.Spell.RealId);   //{guid}default value : 0 Len : 2
             packet.WriteInt16(spell == null ? -1 : spell.Spell.RealId);   //{durationSec}default value : 0 Len : 2
             packet.WriteByte(spell == null ? 0 : 1);                      //value name : unk1 default value : 0Len : 1
             packet.WriteByte(0);                                          //value name : unk1 default value : 0Len : 1
             packet.WriteByte(2);                                          //value name : unk1 default value : 2Len : 1
             packet.WriteInt16(spell == null ? 0 : spell.Duration / 1000); //{skillId}default value : -1 Len : 2
             packet.WriteByte(1);                                          //value name : unk14 default value : 1Len : 1
             packet.WriteInt16(1);                                         //value name : unk2 default value : 1Len : 2
         }
         var pbs       = new FunctionItemBuff[15];
         var interator = 0;
         foreach (var functionItemBuff in client.ActiveCharacter.PremiumBuffs)
         {
             if (functionItemBuff.Value.IsLongTime)
             {
                 continue;
             }
             pbs[interator++] = functionItemBuff.Value;
         }
         for (int i = 0; i < 15; i += 1)
         {
             var buff = pbs[i];
             packet.WriteInt32(-1); //buff == null?-1:buff.ItemId);//{itemId}default value : 0 Len : 4
             packet.WriteInt32(-1); //(int) (buff == null ? -1 : buff.Duration));//{duration}default value : 0 Len : 4
             packet.WriteInt16(-1); //buff == null ? -1 : buff.Template.ValueOnUse);//{funcValue}default value : 0 Len : 2
             packet.WriteInt32(-1); //value name : unk4 default value : -1Len : 4
             packet.WriteInt32(0);  //value name : unk4 default value : 0Len : 4
             packet.WriteInt16(-1); //value name : unk2 default value : -1Len : 2
         }
         client.Send(packet);
     }
 }