コード例 #1
0
ファイル: CastSpellDispatcher.cs プロジェクト: hazzik/uwow2
        public void Dispatch(ISession session, IPacket packet)
        {
            BinaryReader reader    = packet.CreateReader();
            byte         castCount = reader.ReadByte();
            uint         spellId   = reader.ReadUInt32();
            byte         unklags   = reader.ReadByte();


            IPacket      pkt    = WorldPacketFactory.Create(WMSG.SMSG_SPELL_START);
            BinaryWriter writer = pkt.CreateWriter();

            writer.WritePackGuid(session.Player.Guid);
            writer.WritePackGuid(session.Player.Guid);
            writer.Write(castCount);
            writer.Write(spellId);
            writer.Write(0);             //cast flags
            writer.Write(0);             //ticks count
            writer.Write(0);             //targetflags
            session.Send(pkt);

            Thread.Sleep(5000);
            pkt    = WorldPacketFactory.Create(WMSG.SMSG_SPELL_GO);
            writer = pkt.CreateWriter();
            writer.WritePackGuid(session.Player.Guid);
            writer.WritePackGuid(session.Player.Guid);
            writer.Write(castCount);
            writer.Write(spellId);
            writer.Write(0);             //cast flags
            writer.Write(0);             //ticks count
            writer.Write((byte)1);       //hit count
            writer.Write(session.Player.Guid);
            writer.Write((byte)0);       //miss count
            writer.Write(0);             // targetflags
            session.Send(pkt);
        }
コード例 #2
0
        private static IPacket GetUpdateAccountDataCompletePkt(AccountDataType type)
        {
            IPacket      packet = WorldPacketFactory.Create(WMSG.SMSG_UPDATE_ACCOUNT_DATA_COMPLETE);
            BinaryWriter writer = packet.CreateWriter();

            writer.Write((uint)type);
            writer.Write(0);
            return(packet);
        }
コード例 #3
0
        private IPacket GetPowerUpdatePkt(uint value)
        {
            IPacket      packet = WorldPacketFactory.Create(WMSG.SMSG_POWER_UPDATE);
            BinaryWriter writer = packet.CreateWriter();

            writer.WritePackGuid(Guid);
            writer.Write((byte)PowerType);
            writer.Write(value);
            return(packet);
        }
コード例 #4
0
        public IPacket GetCharEnumPkt()
        {
            IPacket      p = WorldPacketFactory.Create(WMSG.SMSG_CHAR_ENUM);
            BinaryWriter w = p.CreateWriter();

            w.Write((byte)players.Count);
            foreach (Player player in players)
            {
                w.Write(player.Guid);
                w.WriteCString(player.Name);
                w.Write((byte)player.Race);
                w.Write((byte)player.Classe);
                w.Write((byte)player.Gender);
                w.Write(player.Skin);
                w.Write(player.Face);
                w.Write(player.HairStyle);
                w.Write(player.HairColor);
                w.Write(player.FacialHair);
                w.Write((byte)player.Level);

                w.Write(player.ZoneId);
                w.Write(player.MapId);
                w.Write(player.PosX);
                w.Write(player.PosY);
                w.Write(player.PosZ);
                w.Write(player.GuildMember.With(x => x.Guild.Id));

                uint flag = 0x00000000;
                w.Write(flag);
                w.Write((byte)0);
                w.Write(player.PetDisplayId);
                w.Write(player.PetLevel);
                w.Write(player.PetCreatureFamily);
                w.Write(0);
                for (int i = 0; i < 23; i++)
                {
                    Item item = player.Inventory[i];
                    if (item != null)
                    {
                        w.Write(item.Template.DisplayId);
                        w.Write((byte)item.Template.InventoryType);
                        w.Write(0);
                    }
                    else
                    {
                        w.Write(0);
                        w.Write((byte)0);
                        w.Write(0);
                    }
                }
            }
            return(p);
        }
コード例 #5
0
ファイル: UpdatePacketBuilder.cs プロジェクト: hazzik/uwow2
        public IPacket Build()
        {
            IPacket      result = WorldPacketFactory.Create(WMSG.SMSG_UPDATE_OBJECT);
            BinaryWriter writer = result.CreateWriter();

            writer.Write(updateBlocks.Count);
            foreach (IUpdateBlock updater in updateBlocks)
            {
                writer.Write((byte)updater.UpdateType);
                updater.Write(writer);
            }
            return(result);
        }
コード例 #6
0
        private static IPacket GetUpdateAccountDataPkt(AccpuntData accpuntData)
        {
            IPacket      packet = WorldPacketFactory.Create(WMSG.SMSG_UPDATE_ACCOUNT_DATA);
            BinaryWriter writer = packet.CreateWriter();

            writer.Write(accpuntData.Guid);
            writer.Write((uint)accpuntData.Type);
            writer.Write(accpuntData.Time.ToUnixTimestamp());
            writer = new BinaryWriter(new DeflaterOutputStream(writer.BaseStream));
            writer.WriteCString(accpuntData.Data);
            writer.Flush();
            return(packet);
        }
コード例 #7
0
        private static IPacket GetCorpseQuery(Corpse corpse)
        {
            IPacket      pkt    = WorldPacketFactory.Create(WMSG.MSG_CORPSE_QUERY);
            BinaryWriter writer = pkt.CreateWriter();

            writer.Write((byte)1);
            writer.Write(corpse.MapId);
            writer.Write(corpse.PosX);
            writer.Write(corpse.PosY);
            writer.Write(corpse.PosZ);
            writer.Write(corpse.MapId);
            return(pkt);
        }
コード例 #8
0
ファイル: MoveHandlers.cs プロジェクト: hazzik/uwow2
        private static IPacket GetMoveResponce(IPacket packet)
        {
            BinaryReader reader = packet.CreateReader();

            reader.BaseStream.Seek(0, SeekOrigin.Begin);
            byte[] bytes = reader.ReadBytes(packet.Size);

            IPacket      responce = WorldPacketFactory.Create((WMSG)packet.Code);
            BinaryWriter w        = responce.CreateWriter();

            w.Write(bytes);
            return(responce);
        }
コード例 #9
0
ファイル: JoinChannel.cs プロジェクト: hazzik/uwow2
        public void Dispatch(ISession session, IPacket packet)
        {
            JoinChannelMsg msg = packet.Read(reader => new JoinChannelMsg
            {
                ChannelId  = reader.ReadUInt32(),
                Unk1       = reader.ReadByte(),
                Unk2       = reader.ReadByte(),
                ChanneName = reader.ReadCString(),
                Password   = reader.ReadCString()
            });

            var pkt    = WorldPacketFactory.Create(WMSG.SMSG_CHANNEL_NOTIFY);
            var writer = pkt.CreateWriter();

            writer.Write((byte)ChannelNotification.YouJoined);
            writer.WriteCString(msg.ChanneName);
            writer.Write((byte)0);
            writer.Write(msg.ChannelId);
            writer.Write(0);
            session.Send(pkt);
            Console.WriteLine("{0} {1} {2} {3} {4}", msg.ChannelId, msg.Unk1, msg.Unk2, msg.ChanneName, msg.Password);
        }
コード例 #10
0
ファイル: MessageChat.cs プロジェクト: hazzik/uwow2
        public void Dispatch(ISession session, IPacket packet)
        {
            BinaryReader reader   = packet.CreateReader();
            var          type     = (MessageType)reader.ReadUInt32();
            uint         language = reader.ReadUInt32();
            string       channel  = type == MessageType.Channel || type == MessageType.Whisper
                                 ? reader.ReadCString()
                                 : string.Empty;
            string message = reader.ReadCString();

            var pkt    = WorldPacketFactory.Create(WMSG.SMSG_MESSAGECHAT);
            var writer = pkt.CreateWriter();

            writer.Write((byte)type);
            writer.Write((uint)0);
            writer.Write(session.Player.Guid);
            writer.Write(0);

/*
 *          if (target != null)
 *              writer.WritePascalString(target);
 */
            writer.Write((ulong)0);
            writer.WritePascalString(message);
            writer.Write((byte)0);

            var players = ObjectManager.GetPlayersNear(session.Player);

            foreach (var player in players)
            {
                player.Session.Send(pkt);
            }


            Console.WriteLine("{0} {1} {2} {3}", type, language, channel, message);
        }