Пример #1
0
        public static void HandlePlayerLogin(ref PacketReader packet, ref WorldClass session)
        {
            byte[] guidMask  = { 6, 3, 0, 5, 7, 2, 1, 4 };
            byte[] guidBytes = { 1, 0, 3, 2, 4, 7, 5, 6 };

            BitUnpack GuidUnpacker = new BitUnpack(packet);

            ulong guid = GuidUnpacker.GetGuid(guidMask, guidBytes);

            Log.Message(LogType.DEBUG, "Character with Guid: {0}, AccountId: {1} tried to enter the world.", guid, session.Account.Id);

            session.Character = new Character(guid, ref session);
            WorldMgr.Session  = session;

            SpellMgr.LoadSpells();
            WorldMgr.WriteAccountData(AccountDataMasks.CharacterCacheMask, ref session);

            PacketWriter motd = new PacketWriter(LegacyMessage.MessageOfTheDay);

            motd.WriteUInt32(3);

            motd.WriteCString("Arctium MoP test");
            motd.WriteCString("Welcome to our MoP server test.");
            motd.WriteCString("Your development team =)");
            session.Send(motd);

            SpellHandler.SendSendKnownSpells();
            UpdateHandler.HandleUpdateObject(ref packet, ref session);
        }
Пример #2
0
        public static void SendSendKnownSpells()
        {
            Character pChar = GetSession().Character;

            if (pChar.SpellList.Count == 0)
            {
                SpellMgr.LoadSpells();
            }

            PacketWriter writer  = new PacketWriter(LegacyMessage.SendKnownSpells);
            BitPack      BitPack = new BitPack(writer);

            BitPack.Write(1);
            BitPack.Write <uint>((uint)pChar.SpellList.Count, 24);
            BitPack.Flush();

            pChar.SpellList.ForEach(spell =>
                                    writer.WriteUInt32(spell.SpellId));

            GetSession().Send(writer);
        }