• 10 Juillet 2025, 21:30:22


Auteur Sujet: [Assistance] Problème d'enregistrement  (Lu 1591 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Glink

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
[Assistance] Problème d'enregistrement
« le: 06 Mai 2013, 00:40:39 »
Demande d'aide
Bonjour/Bonsoir,
Avant toute chose je tiens à préciser que je ne suis pas débutant, sans doute pas professionnel mais expérimenté.
Mon problème s'axe sur le gamemode Carson City, d'initiale LARP déplacé à Fort Carson.
Ce soucis est le suivant :
Lors d'une inscription, le fichier .ini se créer bien, comportant les informations, aucun soucis de ce côté. La personne peut donc jouer une fois inscrite. Mais, à la reconnexion, le compte est perdu, mais le fichier est encore existant.
J'ai trouvé cette faille surprenante, mais ayant un peu recherché, j'ai compris que cela s'agissait d'un soucis de nombre de caractères, la limite étant de 12. J'ai donc penché pour un soucis de string, il s'agissait dans le callback OnPlayerLogin, d'un string 64. Je l'ai donc modifié à 24, 128, 250, et 256. Les quatres sans résultats, ma seconde solution aurait été de modifié le MAX_PLAYER_NAME en MAX_PLAYER_NAME+1, mais aucune amélioration.
Je comptais donc, ne pouvant trouver seul, vous demander assistance.
J'ai fais les recherches nécessaire, j'ai trouvé une multitude de posts similaires, mais aucun n'était performant.
Merci par avance, si vous nécessitez d'extrait de code, je suis tout ouïe.

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #1 le: 06 Mai 2013, 18:28:27 »
Effectivement, sans code, on ne peut rien faire. Le soucis doit venir du chemin de lecture lors de la (tentative de) connexion. ;)

Hors ligne Glink

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #2 le: 06 Mai 2013, 18:37:21 »
Sans doute du Callback de connexion, voici.
public OnPlayerLogin(playerid,password[])
{
new tmp2[256];
    new string2[64];
new playername2[MAX_PLAYER_NAME];
new playernamesplit[3][MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
split(playername2, playernamesplit, '_');
format(string2, sizeof(string2), "users/%s.ini", playername2);
new File: UserFile = fopen(string2, io_read);
if ( UserFile )
{
    new PassData[256];
    new keytmp[256], valtmp[256];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
}
if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 )
{
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
{
(Suite : pInfos)

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #3 le: 06 Mai 2013, 22:32:20 »
Salut,

avant toute choses si tu te dis expérimentés, tu dois maitrisés les printf quand même ? :p mets en un peu partout histoire de renvoyer tes variables voir si tu as les bonnes données.

Je vois que tu split le nom, mais envoie nous ton enregistrement stp.

A+, Sam.
:medieval_sword2:

Hors ligne Glink

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #4 le: 06 Mai 2013, 22:43:52 »
Les données sont bonnes, les fichiers sont valides etc...
Voici l'enregistrement.
public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new string3[64];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "users/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
[...] Variables : informations joueur

fclose(hFile);
new loginstring[256];
new loginname[64];
GetPlayerName(playerid,loginname,sizeof(loginname));
format(loginstring,sizeof(loginstring),"Bienvenue, %s\nVotre compte a été detecté sur le serveur.\nEntrez donc votre mot de passe afin de pouvoir jouer.",loginname);
ShowPlayerDialog(playerid,12346,DIALOG_STYLE_INPUT,"Connexion",loginstring,"Connexion","Quitter");
}

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #5 le: 06 Mai 2013, 23:34:43 »
Regarde dans l'enregistrement tu créé un fichier avec le nom du joueur, et ensuite quand tu load le compte tu vérifie si

split(playername2, playernamesplit, '_');
format(string2, sizeof(string2), "users/%s.ini", playername2);

en gros, tu récupère le premier prénom du joueur. Donc les données stockés dans tes variables ne sont pas bonnes, apprend à vérifier ton script ;)

vincentdu90

  • Invité
Re : [Assistance] Problème d'enregistrement
« Réponse #6 le: 06 Mai 2013, 23:59:57 »
Le prototype du split est le suivant :

Code: (Pawn) [Sélectionner]
stock split(const strsrc[], strdest[][], delimiter)
Donc rien qu'au mot-clé const on sait d'ors et déjà que playername2 ne sera pas modifiée or playername2 contient le nom du joueur donc sa condition est bonne. Même si on pourrait s'en assurer avec un print().
Cependant même si le split n'est pas d'une grande utilité, pour le moment, comme il ne l'utilise pas pour ouvrir le fichier (donc il ne se sert pas de playernamesplit) cela ne peut être la source du problème.

Hors ligne Glink

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #7 le: 07 Mai 2013, 12:15:10 »
Exact vincentdu90.
Je n'ai pas à apprendre à le vérifier si j'ai la certitude de l'avoir fait.
A toi aussi de réfléchir chère chneubeul.

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #8 le: 07 Mai 2013, 20:47:31 »
Salut,

"Je n'ai pas à apprendre à le vérifier si j'ai la certitude de l'avoir fait."

Je ne t'ai rien dit de mal ;) Il est vrai que j'ai pas fait attention que dans le format il y le playernamesplit n'étais pas utilisés puisque s'il étais là dans la logique pour moi c'étais utilisés. Mais pour te répondre Vincent, la constante non n'est pas modifier mais essaye de print la dest, tu verras que tu vas récupérer une chaine de chaine de caractère avant ou après le splitter.. l'intêret du split non ? :p

Quand tu print le string2 c'est bien la bonne chaine ?



Hors ligne Glink

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #9 le: 07 Mai 2013, 23:30:16 »
Problème résolu.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : [Assistance] Problème d'enregistrement
« Réponse #10 le: 08 Mai 2013, 00:27:34 »
Peut-être qu'en donnant la solution du problème, ça pourrai en aider d'autres ...


++


Adju ♥
(-_-)