Exemple #1
0
        /// <summary>
        /// Disconnects the client
        /// </summary>
        /// <param name="disconnecting">if <c>true</c>, the function won't call Socket.Disconnect</param>
        public void Disconnect(bool disconnecting = false)
        {
            lock (this)
            {
                if (!disconnecting)
                {
                    m_SocketContext.Disconnect();
                }

                if (!m_blDisconnected)
                {
                    if (m_PingTimer.IsRunning)
                    {
                        m_PingTimer.Stop();
                    }
                    m_blDisconnected = true;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Disconnects the client
        /// </summary>
        /// <param name="disconnecting">if <c>true</c>, the function won't call Socket.Disconnect</param>
        public void Disconnect(bool disconnecting = false)
        {
            lock (this)
            {
                if (!disconnecting)
                {
                    m_SocketContext.Disconnect();
                }

                if (!m_blDisconnected)
                {
                    Globals.GlobalDB.ExecuteCommandAsync("DELETE FROM _ActiveSessions WHERE UserSID = {0}", m_AccountInfo.SID);

                    if (m_PingTimer.IsRunning)
                    {
                        m_PingTimer.Stop();
                    }

                    if (m_Character != null && m_Character.m_isIngame)
                    {
                        lock (m_Character.m_lock)
                        {
                            if (m_Character.m_movementTimer.IsRunning)
                            {
                                m_Character.m_movementTimer.Stop();
                            }
                        }
                        m_Character.Disappear(false);
                        Globals.ShardDB.ExecuteCommandAsync(String.Format("UPDATE _Char SET LatestRegion = {0}, PosX = {1}, PosY = {2}, PosZ = {3} WHERE CharID = {4}", m_Character.m_region, m_Character.m_position.X, m_Character.m_position.Y, m_Character.m_position.Z, m_Character.m_charId));
                    }

                    m_Character = null;
                    m_AccountInfo.Characters = null;
                    m_AccountInfo            = default(AccountInfo);

                    m_blDisconnected = true;
                }
            }
        }