Esempio n. 1
0
        /// <summary>
        /// Verifica o número de tentativas e envia mensagens de erro.
        /// </summary>
        /// <param name="pData"></param>
        public static void TryingToAccess(PlayerData pData)
        {
            // se realizar 3 tentativas de login, desconecta o usuário que já está logado e permite que o novo se conecte
            if (pData.LoginAttempt >= Settings.MAX_ATTEMPT)
            {
                //Desconecta o usuario em todos os servidores
                WorldPacket.PlayerDisconnect(pData);

                // ##################### MUDAR PARA WORLD SERVER #####################
                //Desconecta o usuario no servidor de login (se houver) pelo cliente
                var hexid = Authentication.FindByAccount(pData.Username)?.HexID;

                if (!string.IsNullOrEmpty(hexid))
                {
                    LoginPacket.Message(hexid, (int)PacketList.Disconnect);
                }
                //######################################################################

                //se conectado ao login server, limpa os dados do usuario conectado da lista para o novo login
                if (Authentication.IsConnected(pData.Username))
                {
                    Authentication.FindByAccount(pData.Username)?.Clear();
                }

                //reseta o contador
                pData.LoginAttempt = 0;

                // envia msg
                LoginPacket.Message(pData.HexID, (int)PacketList.LoginServer_Client_AlreadyLoggedIn);
            }
            else
            {
                // Envia mensagem que o usuário já está conectado
                LoginPacket.Message(pData.HexID, (int)PacketList.LoginServer_Client_AlreadyLoggedIn);
            }
        }