ToPsxmirex
Компетентный
Вообщем написал регистрацию с урока и решил поменять паблики с урока на паблики с мода. Всё получилось без ошибок после двух минут чистки ненужного хлама. Вообщем. Проблема в том, что когда регистрируешся, то сразу идёт авторизация и пароль считывает верно. Но вот если произайдёт рестарт сервера, то пароль считываться не будет. Пересмотрел всё. Понять не смог.
PHP:
public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new string[64], pname[MAX_PLAYER_NAME], var[32];
GetPlayerName(playerid, pname, sizeof(pname));
format(string, sizeof(string), "Users/%s.ini", pname);
new File: hFile = fopen(string, io_write);
if (hFile)
{
strmid(SI[playerid][pKey], password, 0, strlen(password), 255);
format(var, 32, "Key = %s\n", SI[playerid][pKey]);fwrite(hFile, var);
format(var, 32, "X = %.1f\n",SI[playerid][pX]);fwrite(hFile, var);
format(var, 32, "Y = %.1f\n",SI[playerid][pY]);fwrite(hFile, var);
format(var, 32, "Z = %.1f\n",SI[playerid][pZ]);fwrite(hFile, var);
fclose(hFile), ACC[playerid] = 1;
D(playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", LoginText, "Далее", "Выход");
}
}
return 1;
}
PHP:
public OnPlayerLogin(playerid,password[])
{
new string[64], pname[MAX_PLAYER_NAME], PassData[256], keytmp[256], valtmp[256],
key[256], val[256], Data[256];
GetPlayerName(playerid, pname, sizeof(pname));
format(string, sizeof(string), "Users/%s.ini", pname);
new File: UserFile = fopen(string, io_read);
if(UserFile)
{
fread(UserFile, PassData, sizeof(PassData));
keytmp = ini_GetKey(PassData);
if(strcmp(keytmp, "Key", true) == 0) valtmp = ini_GetValue( PassData ), strmid(SI[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
if(strcmp(SI[playerid][pKey],password, true ) == 0 )
{
while(fread(UserFile, Data, sizeof(Data)))
{
key = ini_GetKey(Data);
if( strcmp( key , "Admin" , true ) == 0 ) { val = ini_GetValue( Data ); SI[playerid][pAdmin] = strval( val ); }
if( strcmp( key , "X" , true ) == 0 ) { val = ini_GetValue( Data ); SI[playerid][pX] = floatstr( val ); }
if( strcmp( key , "Y" , true ) == 0 ) { val = ini_GetValue( Data ); SI[playerid][pY] = floatstr( val ); }
if( strcmp( key , "Z" , true ) == 0 ) { val = ini_GetValue( Data ); SI[playerid][pZ] = floatstr( val ); }
}
fclose(UserFile);
}
else
{
if(WARNING[playerid] == 3) KM(playerid, "Сторожевой бот", "Не смог авторизоваться");
else M(playerid, GREY, "* Пароль неверный."), WARNING[playerid] ++, D(playerid, 1, DIALOG_STYLE_PASSWORD, "Авторизация", LoginText, "Далее", "Выход");
fclose(UserFile);
return 1;
}
EM(playerid, 50);
SendClientMessage(playerid, SIMPLE, "* Вы авторизовались на сервере.");
LOGIN[playerid] = 1;
SpawnPlayer(playerid);
}
return 1;
}
