Проблема при вводе пароля. -
pomidor - 30.08.2012
Вот код диалога, который сверяет пароль введёный игроком с паролем записанным в файле. Если я ввожу правильный пароль, в чате пишется
Вы вошли в игру!. Если я специально пишу неправильный пароль, то в чате пишется
Пароль неверный!. Но если я ничего не напишу в окошко и нажму "Ок", то напишет
Вы вошли в игру!. Почему так? Этого ведь не должно, помогите исправить.
PHP код:
if(dialogid == 1)
{
if(response)
{
new name[25];
new string[31];
new password[31];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s.ini", name);
new iniFile = ini_openFile(string);
ini_getString(iniFile, "password", password);
if(strcmp(password,inputtext,true) == 0)
{
SendClientMessage(playerid,COLOR_GREEN,"Вы вошли в игру!");
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Пароль неверный!");
ini_closeFile(iniFile);
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Отказ от авторизации!");
ini_closeFile(iniFile);
Kick(playerid);
}
}
Re: Проблема при вводе пароля. -
Alexander_Petrov - 30.08.2012
pawn Код:
if(strcmp(password,inputtext,true) == 0 && strlen(inputtext) > 0)
Re: Проблема при вводе пароля. -
ZiGGi - 31.08.2012
В strcmp есть баг, поэтому ******(вроде) предлогает использовать это:
pawn Код:
stock strcmpEx(const string1[], const string2[], bool:ignorecase=false, length=cellmax)
{
if (string1[0])
{
if (string2[0])
{
return strcmp(string1, string2, ignorecase, length);
}
else
{
// Positive as st1 is greater (strcmp spec).
return 1;
}
}
else
{
if (string2[0])
{
// Negative as str2 is greater.
return -1;
}
else
{
// The strings are the same (empty).
return 0;
}
}
}
#define strcmp strcmpEx
Re: Проблема при вводе пароля. -
stabker - 31.08.2012
Сделайте вот так:
pawn Код:
if(dialogid == 1)
{
if(response)
{
if(!strlen(inputtext))return Сюда ShowPlayerDialog который требует пароль;
new name[25];
new string[31];
new password[31];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s.ini", name);
new iniFile = ini_openFile(string);
ini_getString(iniFile, "password", password);
if(strcmp(password,inputtext,true) == 0)
{
SendClientMessage(playerid,COLOR_GREEN,"Вы вошли в игру!");
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Пароль неверный!");
ini_closeFile(iniFile);
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Отказ от авторизации!");
ini_closeFile(iniFile);
Kick(playerid);
}
}
Re: Проблема при вводе пароля. -
pomidor - 04.09.2012
Всем спасибо, проблему решил!