Example #1
0
        /// <summary>
        /// Handles the contents of a network message.
        /// </summary>
        /// <param name="message">The message to handle.</param>
        /// <param name="connection">A reference to the connection from where this message is comming from, for context.</param>
        public override void HandleRequest(INetworkMessage message, IConnection connection)
        {
            var playerLogoutInfo = message.ReadManagementPlayerLogoutInfo();

            using (var otContext = new OpenTibiaDbContext())
            {
                var playerRecord = otContext.Players.Where(p => p.Account_Id == playerLogoutInfo.AccountId).FirstOrDefault();

                if (playerRecord != null)
                {
                    playerRecord.Level     = playerLogoutInfo.Level;
                    playerRecord.Vocation  = playerLogoutInfo.Vocation;
                    playerRecord.Residence = playerLogoutInfo.Residence;
                    playerRecord.Lastlogin = playerLogoutInfo.LastLogin;

                    playerRecord.Online = 0;

                    var onlineRecord = otContext.Online.Where(o => o.Name.Equals(playerRecord.Charname)).FirstOrDefault();

                    if (onlineRecord != null)
                    {
                        otContext.Online.Remove(onlineRecord);
                    }

                    otContext.SaveChanges();

                    this.ResponsePackets.Add(new DefaultNoErrorPacket());
                }
            }
        }