Exemplo n.º 1
0
        public static void HandlePlayerLogin(ref PacketReader packet, WorldClass session)
        {
            byte[] guidMask  = { 4, 2, 7, 1, 0, 5, 6, 3 };
            byte[] guidBytes = { 5, 0, 1, 6, 7, 2, 3, 4 };

            BitUnpack GuidUnpacker = new BitUnpack(packet);

            packet.Skip(4);

            var guid = GuidUnpacker.GetPackedValue(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);

            if (!WorldMgr.AddSession(guid, ref session))
            {
                Log.Message(LogType.Error, "A Character with Guid: {0} is already logged in", guid);
                return;
            }

            WorldMgr.WriteAccountDataTimes(AccountDataMasks.CharacterCacheMask, ref session);

            MiscHandler.HandleMessageOfTheDay(ref session);
            TimeHandler.HandleLoginSetTimeSpeed(ref session);
            SpecializationHandler.HandleUpdateTalentData(ref session);
            SpellHandler.HandleSendKnownSpells(ref session);
            MiscHandler.HandleUpdateActionButtons(ref session);

            if (session.Character.LoginCinematic)
            {
                CinematicHandler.HandleStartCinematic(ref session);
            }

            ObjectHandler.HandleUpdateObjectCreate(ref session);
        }