17.12.2013, 20:12
Hello everyone.
I am currently working on a login/register system using y_ini and whirlpool.
I more or less made the system already. My problem is though, that when I log in, it does not recognize my password, and gives me the "Incorrect password" dialog that I made.
My code looks like this...
On top of the script:
OnPlayerConnect:
OnDialogResponse:
Hope someone out there can spot my mistake, because I can't. Thanks in advance.
I am currently working on a login/register system using y_ini and whirlpool.
I more or less made the system already. My problem is though, that when I log in, it does not recognize my password, and gives me the "Incorrect password" dialog that I made.
My code looks like this...
On top of the script:
pawn Код:
enum pInfo
{
pPassword[129]
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_String("password", PlayerInfo[playerid][pPassword], 129);
return 1;
}
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"Users/%s.ini",playername);
return string;
}
pawn Код:
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
if(!fexist(UserPath(playerid)))
{
new string[367 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is not registered. Please enter a Password to Register",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "{FFFF00}Requested username: {FFFFFF}%s\nThis username is: {009900}Available\n\n{AF0000}We suggest that you don't register\nwith an RP name (Firstname_Lastname)\nbecause you can manage multiple\ncharacters from one account.\nThe name you register now will not\nbe your in-game name.\n\n{FFFFFF}By registering,\nyou agree to our terms of use.\n\n{FFFF00}Enter a Password to register",name);
ShowPlayerDialog(playerid, MENU_REGISTER, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Register", "Quit");
}
else
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new string[80 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is already registered. Please log in with your Password",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
SendClientMessage(playerid, COLOR_GREY, "-MSG- Not your account? Then relog with another name");
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\nEnter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch ( dialogid )
{
case MENU_REGISTER:
{
if (!response)
{
SendClientMessage(playerid, COLOR_DARKRED, "-MSG- You must register in order to play on this server");
Kick(playerid);
}
else
{
if(strlen(inputtext) > 20 || strlen(inputtext) < 5)
{
new string[170 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
format(string, sizeof(string), "{FFFF00}Requested username: {FFFFFF}%s\n\n{AF0000}Password must be 5-20 characters\n\n{FFFFFF}By registering,\nyou agree to our terms of use.\n\n{FFFF00}Enter a Password to register",name);
ShowPlayerDialog(playerid, MENU_REGISTER, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Register", "Quit");
}
else
{
new buf[129];
WP_Hash(buf, sizeof(buf), inputtext);
new INI:iniFile = INI_Open(UserPath(playerid));
INI_SetTag(iniFile, "GENERAL");
INI_WriteString(iniFile, "password", buf);
INI_WriteInt(iniFile, "admin_level", 0);
INI_WriteInt(iniFile, "permanent_banned", 0);
INI_Close(iniFile);
}
}
}
case MENU_LOGIN:
{
if (!response)
{
SendClientMessage(playerid, COLOR_DARKRED, "-MSG- You must log in in order to play on this server");
Kick(playerid);
}
else
{
new buf[129];
WP_Hash(buf, sizeof(buf), inputtext);
if(!strcmp(buf, PlayerInfo[playerid][pPassword], false))
{
new string[100 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\n{AF0000}Incorrect password!\n\n{FFFF00}Enter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "-MSG- Welcome back!");
}
}
}
}
return 1;
}