Problиme systиme d'enregistrement "YSI" -
MEGHNI - 09.06.2014
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=0; n<length; n++)
{
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(playerid, classid)
{
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(playerid, reason)
{
new Nom[MAX_PLAYER_NAME+1];
new string[128];
GetPlayerName(playerid, Nom, sizeof(Nom));
format(string,sizeof(string), "%s(%d) Vient de se dйconnecter !",Nom,playerid,aDisconnectNames[reason]);
SendClientMessageToAll(COLOR_JAUNE, string);
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(playerid, killerid, reason)
{
IsSpawned[playerid] =0;
InfoJoueur[killerid][pKills]++;
InfoJoueur[playerid][pDeaths]++;
return 1;
}
/////////////////////////////////////////////////////////////////////////////
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
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;
}
Re : Problиme systиme d'enregistrement "YSI" -
S4t3K - 09.06.2014
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.
Re : Problиme systиme d'enregistrement "YSI" -
MEGHNI - 09.06.2014
Je la dйfinis comme зa : #define MAX_PASSWORD_SIZE ?
Re : Problиme systиme d'enregistrement "YSI" -
S4t3K - 09.06.2014
#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)
Re : Problиme systиme d'enregistrement "YSI" -
MEGHNI - 09.06.2014
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
Re : Problиme systиme d'enregistrement "YSI" -
S4t3K - 09.06.2014
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.
Re : Problиme systиme d'enregistrement "YSI" -
Ramoboss - 10.06.2014
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й ^^
Re : Problиme systиme d'enregistrement "YSI" -
S4t3K - 10.06.2014
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.
Re : Problиme systиme d'enregistrement "YSI" -
Chipardeur - 10.06.2014
Il me semble que y_ini ne prend pas en compte les espaces, peut-кtre la raison du problиme ?
Re : Problиme systиme d'enregistrement "YSI" -
MEGHNI - 10.06.2014
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