Problиme systиme d'enregistrement "YSI"
#1

Bonjour / Bonsoir

Comme dit le titre, j'ai un problиme sur ce systиme, c'est que mon mot de passe ne s'enregistre pas dans mon UserPath (fichier concernant mot mot de passe, Adminlevel, Cash,........), j'ai dйjа crйй un compte mais la valeur de mon mot de passe reste toujours а 0

Merci de m'aider et bonne journйe/soirйe.

Cordialement,MEGHNI

PHP Code:
#include <zcmd>
#include <YSI\y_ini>
//////////////////////Couleur//////////////////////////////
#define COLOR_JAUNE              0xFFFF00AA
#define COLOR_ROUGE_FONCE                  0xAA3333AA
#define COLOR_ROUGE             0xFF0000AA
#define COLOR_CYAN             0x33CCFFAA
#define COLOR_ORANGE            0xFFA500AA
#define COLOR_ARGENT             0x666666
#define COLOR_VERT              0x00FF00FF
#define COLOR_BLEU              0x13DCECFF
#define COLOR_NOIR                  0x000000
#define COLOR_BLANC         0xFFFFFFAA
#define COL_ROUGE   "{FF0000}"
#define COL_BLANC   "{FFFFFF}"
#define COL_CYAN    "{00CCCC}"
#define COL_ARGENT  "{666666}"
#define COL_VERT    "{009900}"
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4
/////////////////////////////////////////////////////////
#define PATH "/Comptes/%s.ini"
new Logged[MAX_PLAYERS];
new 
IsSpawned[MAX_PLAYERS];
new 
aDisconnectNames[][32] = {
    
"Timeout",
    
"Quit",
    
"Kick/Ban"
};
enum pJoueur
{
    
pPass,
    
pAdmin,
    
pCash,
    
pScore,
    
pDeaths,
    
pKills
}
new 
InfoJoueur[MAX_PLAYERS][pJoueur];
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
    
INI_Int("Mot de Passe",InfoJoueur[playerid][pPass]);
    
INI_Int("Niveau d'administration",InfoJoueur[playerid][pAdmin]);
    
INI_Int("Argent",InfoJoueur[playerid][pCash]);
    
INI_Int("Score",InfoJoueur[playerid][pScore]);
    
INI_Int("Kills",InfoJoueur[playerid][pKills]);
    
INI_Int("Deaths",InfoJoueur[playerid][pDeaths]);
    return 
1;
}
stock UserPath(playerid)
{
    new 
string[128],playername[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,playername,sizeof(playername));
    
format(string,sizeof(string),PATH,playername);
    return 
string;
}
stock udb_hash(buf[]) {
    new 
length=strlen(buf);
    new 
s1 1;
    new 
s2 0;
    new 
n;
    for (
n=0n<lengthn++)
    {
        
s1 = (s1 buf[n]) % 65521;
        
s2 = (s2 s1)     % 65521;
    }
    return (
s2 << 16) + s1;
}
main()
{
    print(
"\n----------------------------------");
    print(
"MEGHNI");
    print(
"----------------------------------\n");
}
public 
OnGameModeInit()
{
    
SetGameModeText("MEGHNI");
    
/////////////////Team Anti-Terroriste///////////////////////
    
AddPlayerClass(280,-1631.9373,653.4382,-5.2422,359.4814,22,1000,32,1000,31,2000); //Anti
    
AddPlayerClass(285,-1631.9373,653.4382,-5.2422,359.4814,22,1000,32,1000,31,2000); // Anti
    
AddPlayerClass(287,-1631.9373,653.4382,-5.2422,359.4814,22,1000,32,1000,31,2000); // Anti
    
AddPlayerClass(164,-1631.9373,653.4382,-5.2422,359.4814,22,1000,32,1000,31,2000); // Anti
    ///////////////////////Team Terroriste////////////////////////
    
AddPlayerClass(7,-1577.6412,683.4985,7.1875,178.3397,30,1000,34,10000,23,1000); // Terro
    
AddPlayerClass(23,-1577.6412,683.4985,7.1875,178.3397,30,1000,34,10000,23,1000); // Terro
    
AddPlayerClass(28,-1577.6412,683.4985,7.1875,178.3397,30,1000,34,10000,23,1000); // Terro
    
AddPlayerClass(100,-1577.6412,683.4985,7.1875,178.3397,30,1000,34,10000,23,1000); // Terro
    
return 1;
}
public 
OnGameModeExit()
{
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    new 
pname[MAX_PLAYER_NAME], string[222];
    
GetPlayerName(playerid,pname,sizeof(pname));
    
format(string,sizeof(string),"%s(%d) s'est connectй au serveur",pname,playerid);
    
SendClientMessageToAll(0xFFFFFF,string);
//////////////////////////////////////////////////////////////////
    
if(fexist(UserPath(playerid)))
    {
    
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
    
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Connection","Veuillez entrer votre mot de passe","connexion","Quitter");
    }
    else
    {
    
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Enregistrement","Veuillez taper un mot de passe pour vous enregistrer","s'enregistrer","Quitter");
    }
    return 
1;
    }
    
    
////////////////////////////////////////////////////////////////////////
    
public OnPlayerDisconnect(playeridreason)
{
    new 
Nom[MAX_PLAYER_NAME+1];
    new 
string[128];
    
GetPlayerName(playeridNomsizeof(Nom));
    
format(string,sizeof(string), "%s(%d) Vient de se dйconnecter !",Nom,playerid,aDisconnectNames[reason]);
    
SendClientMessageToAll(COLOR_JAUNEstring);
    if(
Logged[playerid] == 1)
    {
        new 
INI:File INI_Open(UserPath(playerid));
        
INI_SetTag(File,"data");
                
INI_WriteInt(File,"Mot de passe",InfoJoueur[playerid][pPass]);
        
INI_WriteInt(File,"AdminLevel",InfoJoueur[playerid][pAdmin]);
        
INI_WriteInt(File,"Argent",GetPlayerMoney(playerid));
        
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
        
INI_WriteInt(File,"Kills",InfoJoueur[playerid][pKills]);
        
INI_WriteInt(File,"Deaths",InfoJoueur[playerid][pDeaths]);
        
INI_Close(File);
        return 
1;
    }
    
    return 
1;
}
//////////////////////////////////////////////////////////////////////////////////////////
public OnPlayerDeath(playeridkilleridreason)
{
    
IsSpawned[playerid] =0;
    
InfoJoueur[killerid][pKills]++;
    
InfoJoueur[playerid][pDeaths]++;
    return 
1;
}
/////////////////////////////////////////////////////////////////////////////
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch (
dialogid)
    {
        case 
DIALOG_REGISTER:
        {
            if (!
response) return Kick(playerid);
            if (
response)
            {
                if(!
strlen(inputtext)) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Enregistrement","Veuillez йcrire un mot de passe correct","s'enregistrer","Quitter");
                new 
INI:File INI_Open(UserPath(playerid));
                
INI_SetTag(File,"data");
                
INI_WriteInt(File,"Mot de passe",InfoJoueur[playerid][pPass]);
                
INI_WriteInt(File,"Niveau d'administration",InfoJoueur[playerid][pAdmin]);
                
INI_WriteInt(File,"Argent",InfoJoueur[playerid][pCash]);
                
INI_WriteInt(File,"Score",InfoJoueur[playerid][pScore]);
                
INI_WriteInt(File,"Deaths",InfoJoueur[playerid][pDeaths]);
                
INI_WriteInt(File,"Kills",InfoJoueur[playerid][pKills]);
                
INI_Close(File);
                
ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"Success!","Vous vous кtes enregistrй avec succиs, Vous кtes а prйsent connectй !","Ok","");
                
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
                
Logged[playerid] =1;
            }
        }
    case 
DIALOG_LOGIN:
    {
    if(!
response) return Kick(playerid);
    if (
response)
    {
    if(
udb_hash(inputtext) == InfoJoueur[playerid][pPass])
    {
    
INI_ParseFile(UserPath(playerid),"LoadUser_%s", .bExtra true, .extra playerid);
    
SetPlayerScore(playerid,InfoJoueur[playerid][pScore]);
    
GivePlayerMoney(playerid,InfoJoueur[playerid][pCash]);
    
Logged[playerid] = 1;
    }
    else if (
udb_hash(inputtext) != InfoJoueur[playerid][pPass]) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Connexion","Vous avez entrй un mot de passe incorrect.Veuillez rйessayer.","connexion","Quitter");
    }
    return 
1;
    }
}
    return 
1;

Reply
#2

Bah c'est normal, tu dйclares pPass en tant qu'entier alors que la variable est faite pour recevoir des caractиres alphanumйriques.

Dйclare pPass comme зa :

pPass[MAX_PASSWORD_SIZE]

Tu devras йgalement dйfinir MAX_PASSWORD_SIZE, et tu devras te servir de INI_String, pas de INI_Int.
Reply
#3

Je la dйfinis comme зa : #define MAX_PASSWORD_SIZE ?
Reply
#4

#define MAX_PASSWORD_SIZE 128 par exemple, remplace 128 par la taille maximum d'un mot de passe sur ton serveur (c'est toi qui choisit cette taille)
Reply
#5

Ok, je vais le faire !

EDIT: J'ai dйfini ce que tu m'as demandй, j'ai mis la taille, mais зa marche pas, quand j'ai mit INI_String, зa m'a mit des erreurs
Reply
#6

Nulle part, c'est зa la programmation : commencer de rien.
Tu crйes ce que tu veux, et en l'occurence lа je veux que tu crйes une directive de prйprocesseur qui dйfinit MAX_PASSWORD_SIZE а 128.
Reply
#7

S4t3k il comprend pas ces choses encore, il en est toujours a /beer et /pisser, j'essai de lui apprendre un peu mais bon il йcoute pas, il refait les erreurs que je lui expliquй et expliquй plusieurs fois ^^
exemple, l'indentation je lui ai expliquй comment, il fait toujours comme sa :
pawn Code:
public OnPlayerSpawn(playerid)
{
if(XXXX == 1)
{
blabla
blabla
blabla
blabla
}
return 1;
}
il fait tout a la mкme ligne, et de ce fait il en oublie des accolades, et a chaque fois je me retrouve a lui faire l'indentation ^^
FAUT APPUYER SUR TAB POUR SAUTER MEGHNI !!!!!!!

bon, pour ton problиme, je vais supposer le truc le plus bкte ok ?
tu a crйe le dossier Comptes dans scriptfiles ? et attention il doit кtre exactement comme dans le script, Comptes ^^

sinon s4t3k, pour pPass, pas la peine le prй-processeur ^^
il peut faire :

pawn Code:
enum pJoueur
{
    pPass[128],
    pAdmin,
    pCash,
    pScore,
    pDeaths,
    pKills
}
et sa marchй j'ai testй ^^
Reply
#8

Ouai зa marche mais si il veut changer la taille d'un mot de passe (pour le rendre plus petit par exemple), il devra redйfinir la taille de chaque array ayant contenu un mot de passe pour pas manger d'erreurs.
Reply
#9

Il me semble que y_ini ne prend pas en compte les espaces, peut-кtre la raison du problиme ?
Reply
#10

non je pense pas Chipardeur.
Mon problиme n'est toujours pas rйsolu.
Le problиme c'est que j'ai bien lu le tutoriel qui est en franзais, j'ai bien vйrifiй des choses manquantes, mais aucune de ces derniиres n'est manquantes, et le problиme veut pas partir.


EDIT:je viens а peine de modifier la ligne dans
PHP Code:
     INI_WriteInt(File,"Mot de passe",InfoJoueur[playerid][pPass]); 
en celle ci :
PHP Code:
    INI_WriteInt(File,"MotdePasse",udb_hash(inputtext)); 
maintenant, quand je tape un mot de passe par exemple test, et quand je go voir mon fichier d'enregistrement, je vois un mot de passe qui contient des chiffres (je sais pas oщ ce mot de passe est surgit)

Je crois que le problиme vient de systиme de hash
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)