GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: rapido le 11 Août 2010, 16:16:27
-
Salut , Voila j'ai bien avancer , mais Je suis entrain de faire un Dialog pour AOD au lieu de /register
Mais dans le dialog de /login Bah quand on rentre notre mot de pass Bah sa marche j'en ai tester un autre et sa fonctionne
Et donc mon Probleme c'est que j'arrive pas a faire Charger le Mot de pass Du joueur Savez Comment faire ?
Merci
-
Salut :),
Pourrais-tu nous donner plus d'infos sur tes mots de passe ? (Ou sont-il stocker, etc) ;).
++
Tux
-
Bah Si tu connais AdminOfDuty Tu doit Savoir Ou ils se stock ScriptFiles/Admin/users/PSEUDO.ini
-
Je vois un peu comment est construit Admin On Duty... Eh ben, pour savoir si un mot de passe correspondant à celui qu'on a entrer, c'est d'utiliser un GetPVarString de cette façon:
Dans la condition de L'ID de ton dialog de connexion, ajoute ceci:
new Temp[128];
GetPVarString(playerid, "S_Password", Temp, 128);
if(strcmp(Temp, inputtext) == 0)
{
// Ici, on Log le joueur
}
else
{
// Ici, on met ce qu'on doit faire lorsque le joueur se trompe
}Je l'ai fais sur le forum, je ne promet pas la qualité ;).
++
Tux
-
Et Comment on fait Pour que quand le Joueurs Rejoins Bah Sa Envoie Direct Sur Le Dialog Car Si Je met 2 fois le même Dialog Un Dans OnPlayerDialog Et dans OnPlayerConnect Sa servira A rien ?
Merci
-
Perssonellement la façon la plus simple :
Dans OnPlayerConnect :
ShowPlayerDialog(playerid,DIALOGID+1,DIALOG_STYLE_INPUT,"Login","Entre ton Mot de passe","Login","Sortir");
Dans OnDialogResponse :
if(dialogid==DIALOGID+1)
{
if(response)
{
new string[128];
format(string, sizeof(string), "/login %s",inputtext);
OnPlayerCommandText(playerid,string);
}
}
-
Perssonellement la façon la plus simple :
Dans OnPlayerConnect :
ShowPlayerDialog(playerid,DIALOGID+1,DIALOG_STYLE_INPUT,"Login","Entre ton Mot de passe","Login","Sortir");
Dans OnDialogResponse :
if(dialogid==DIALOGID+1)
{
if(response)
{
new string[128];
format(string, sizeof(string), "/login %s",inputtext);
OnPlayerCommandText(playerid,string);
}
}
Justement le problème c'est que si le joueur se trompe, le Dialog ne se re affichera pas. Le joueur devra donc faire la commande /login après. Sauf si c'est ce que veut rapido ;).
++
Tux
-
Nn Moi Je veut Que lorseque le joueurs se trompe de Mot de pass Bah le Dialog Réaparait
====EDIT======
Voici , Ce que moi j'ai fait au total Mais Sans Résultat Positif
DansOnPlayerConnect :
switch(AutoLoginCheck(playerid, GetIP(playerid)))
{
case -1:
{
new string[128];
ShowPlayerDialog(playerid, 30, DIALOG_STYLE_INPUT, "Système de comptes", string, "Enregistrer", "Annuler");
}
case 1:
{
ShowPlayerDialog(playerid,31,DIALOG_STYLE_INPUT,"Login","Entre ton Mot de passe","Login","Sortir");
}
}
Dans OnPlayerDialog :
if(dialogid == 30)
{
if(response)
{
//new file[128];
new string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(strlen(inputtext) == 30)
{
format(string, sizeof string, "Bienvenue %s ! \nVous n'avez pas de compte sur notre serveur. \n\nVeulliez vous enregistrer !", name);
ShowPlayerDialog(playerid, 30, DIALOG_STYLE_INPUT, "Système de comptes", string, "Enregistrer", "Annuler");
return 0;
}
switch(CreateUserFile(playerid))
{
case 1:
{
SendSucessMessage(playerid, "Compte créé avec sucess");
//format(string, sizeof string, "Bienvenue %s ! \nVous avez un compte sur notre serveur. \n\nVeulliez vous connecter !", name);
ShowPlayerDialog(playerid, 31, DIALOG_STYLE_INPUT, "Système de comptes", string, "Connection", "Annuler");
//TogglePlayerSpectating(playerid,0);
GetPlayerName(playerid, name, sizeof(name));
printf("%s viens de s'enregistrer !", name);
}
}
}
}
if(dialogid == 31)
{
if(response)
{
//new file[128];
new string[128];
new PlayerName[24];
if(strlen(inputtext) == 31)
{
GetPlayerName(playerid, PlayerName, sizeof PlayerName);
format(string, sizeof string, "Bienvenue %s ! \nVous avez un compte sur notre serveur. \n\nVeulliez vous connecter !", PlayerName);
ShowPlayerDialog(playerid, 31, DIALOG_STYLE_INPUT, "Système de comptes", string, "Connection", "Annuler");
return 0;
}
new Temp[128];
GetPVarString(playerid, "S_Password", Temp, 128);
if(strcmp(Temp, inputtext) == 0)
{
LoadUserFile(playerid);
SendSucessMessage(playerid, "Tu est Mintenant Loggé!");
TogglePlayerSpectating(playerid, 0);
}
else
{
SendErrorMessage(playerid, "Mauvais mot de passe!.");// Ici, on met ce qu'on doit faire lorsque le joueur se trompe
ShowPlayerDialog(playerid,31,DIALOG_STYLE_INPUT,"Login","Entre ton Mot de passe","Login","Sortir");
}
}
}
Voila Mais J'ai pas fait D'erreur Tout juste mais Pas Résultat Positif Malheureusement
Merci de me donner un coup de main car je galaire :)
++
-
J'ai pris plus de temps pour régarder le FS de Sim, et là :blink. Je reste sans mot, j'espère que Sim viendra t'éclairer ;).
++
Tux
-
Ah Oui C'est sur c'est pas facile
-
Tu à juste à aller dans la command /login et mettre ça à la place du message d'érreur :
ShowPlayerDialog(playerid,DIALOGID+1,DIALOG_STYLE_INPUT,"Login","Mot de passe inccorect","Login","Sortir");J'ai pris plus de temps pour régarder le FS de Sim, et là :blink. Je reste sans mot, j'espère que Sim viendra t'éclairer ;).
++
Tux
C'est vraiment très facile je parle pas de mon astuce qui est juste un moyen rapide et non le meilleur moyen mais ça te fait gagner du temp .
-
Salut,
j'avoue qu'il n'est pas super simple, c'est un ennui très important, je vais essayer d'en faire une v2 dans les prochains....jour...semaines ou mois
(désolé, mais ça risque d'attendre un petit moment)
ce que je te conseillerais, c'est d'afficher le dialog à la connexion (selon le cas), dans OnDialogResponse renvoyer à la commande, bref comme coco76 te recommandait
ET, modifier légèrement la commande /login pour afficher le dialog à nouveau si le joueur n'entre pas le bon mot de passe
EDIT: coco t'es trop rapide :) ;)
++Sim++
-
Donc Se que vous me dite , c'est que si le joueurs ce trompe de mot de passe il doit faire /login et sa le renvoie sur le Dialog (Si cela est exact)
Ya pas une autre possibliter de réaficher le Dialog si il se trompe ?
-
Salut,
non, ce n'est pas ce qu'on te dit. On te dit simplement d'appeler /login comme coco76 te disait de le faire quand le joueur donne la réponse au dialog. Ensuite, dans la commande /login, si le mot de passe n'est pas bon, tu appelle le dialog au lieu d'envoyer le message d'erreur
++Sim++
-
Ha Oui , J'avais déja essayer mais comment je parvient a appeler la commande /login
Double post
DSL Pour le Double Post , Mais j'arrive pas :(
Un Coup de main c'est Dur ???
Ce P**** de Login la Fouuu :closedeyes