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 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); } }