J'ai énormément du mal à trouver des sujets sur les jeux en ligne, à part des tutos avec des requêtes faites en PHP et moi ça me convient pas !
Alors j'avais d'abord l'idée qu'à la connexion le joueur doit envoyer une Cmd sous les 2s avant d'être kick mais je n'aimes pas l'idée d'avoir un joueur inexistant être connecté même pendant 2s.
J'ai alors le client qui ce connecte après avoir mis ces identifiants, j'ai retirer l'auto creat player et j'arrive à mon soucis !
Impossible de déconnecter le client si le login n'est pas bon.
D'abord dès que OnClientConnect dans mon NetworkManager est lancé j'appel la commande:
Code : Tout sélectionner
public override void OnClientConnect(NetworkConnection conn) {
m_Connexion.GetComponent<Connexion>().CmdConnexion(m_UIPseudo.text, m_UIPassword.text);
base.OnClientConnect(conn);
}
Code : Tout sélectionner
[Command]
public void CmdConnexion(string pseudo, string password) {
//con = MysqlConnection qui est bien connecter sur la base de donneé
MySqlConnection con = _Serveur.GetComponent<Serveur>().con;
MySqlCommand CmdSql = new MySqlCommand("SELECT * FROM `joueurs` WHERE `Pseudo` = '" + pseudo + "'", con);
MySqlDataReader MyReader = CmdSql.ExecuteReader();
string data = null;
while (MyReader.Read()) {
data = MyReader["password"].ToString();
if (data != null) break;
}
MyReader.Close();
// Ceci fonctionne sans soucis !
if (data == null) { // Aucune personne n'a ce pseudo
} else if (data == password) { // Compte bon et même mot de passe
} else if (data != password) { // Compte bon mais pas ce mot de passe
connectionToClient.Disconnect(); // L'erreur est ici ! Ceci ne marche pas sans avoir un joueur :/
}
}
Merci de m'avoir lu !
Cordialement