예제 #1
0
        public static void HandleEnterGameServerReq(WorldSession session, ClientEnterGameServerReq enterGameServerReq)
        {
            AccountModel account = DatabaseManager.Instance.AuthDatabase.GetAccount(
                enterGameServerReq.AccountId, enterGameServerReq.SessionKey);

            if (account == null)
            {
                return;
            }

            CharacterModel character = DatabaseManager.Instance.CharacterDatabase.GetCharacter(
                enterGameServerReq.AccountId, enterGameServerReq.CharacterId);

            if (character == null)
            {
                return;
            }

            session.Authenticate(account);
            session.Accept(character);

            DateTimeOffset now = DateTimeOffset.Now;

            session.SendMessage(new ServerWorldCurDate
            {
                Timestamp = (ulong)now.ToUnixTimeSeconds(),
                Year      = (ushort)now.Year,
                Month     = (ushort)now.Month,
                Day       = (ushort)now.Day,
                Hour      = (ushort)now.Hour,
                Minute    = (ushort)now.Minute,
                Second    = (ushort)now.Second
            });

            session.SendMessage(new ServerWorldVersion
            {
                Unknown2 = 1,
                Unknown3 = 0x0322,
                Unknown4 = 0x3BBB
            });

            // ServerEventDayEventBoosterList
            // 0x1753

            session.SendMessage(new ServerEnterGameServerRes
            {
                Result   = 1,
                Position = new WorldPosition
                {
                    MapId       = character.MapId,
                    Origin      = new Vector3(character.X, character.Y, character.Z),
                    Orientation = character.O
                }
            });
        }