Alex_Jemison
Умник
При вводе текста в диалог авторизации он закрывается. В логах вылезает такая ошибка:
Скрин базы данных :
А теперь перейдем к коду:
public OnPlayerConnect :
CheckRegistration:
Диалог авторизации :
Загрузка аккаунта:
( Хотя сюда код не доходит )
PHP:
[18:20:46] [ERROR] cache_get_value_name: field 'Password' not found
А теперь перейдем к коду:
public OnPlayerConnect :
PHP:
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
TogglePlayerSpectating(playerid, 1);
static const fmt_query[] = "SELECT `id` FROM `accounts` WHERE `Name` ='%s'";
new query[sizeof(fmt_query) +(-2+MAX_PLAYER_NAME)];
format(query, sizeof(query), fmt_query, PlayerInfo[playerid][pName]);
mysql_tquery(mysql, query, "CheckRegistration", "i", playerid);
WrongPassword[playerid] = 3;
return 1;
}
PHP:
forward CheckRegistration(playerid);
public CheckRegistration(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows)
{
cache_get_value_name(0,"Password",PlayerInfo[playerid][pPassword],64);
ShowLogin(playerid);
}
else ShowRegistration(playerid);
}
PHP:
case 6:
{
if(response)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, COLOR_GOLD, ">> {FFFFFF}Для авторизации введите пароль");
ShowLogin(playerid);
return 1;
}
if(!strcmp(PlayerInfo[playerid][pPassword], inputtext))
{
static const fmt_query[] = "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Password` = '%s' ";
new query[sizeof(fmt_query) +(-2+MAX_PLAYER_NAME)+(-2+30)];
format(query, sizeof(query), fmt_query, PlayerInfo[playerid][pName],PlayerInfo[playerid][pPassword]);
mysql_tquery(mysql, query, "PlayerLogin", "i", playerid);
}
else
{
new string[70];
WrongPassword[playerid]--;
if(WrongPassword[playerid] > 0)
{
format(string, sizeof(string), ">> {FFFFFF}Вы ввели неправильный пароль. У вас осталось %d попыток !", GetPVarInt(playerid, "WrongPassword"));
SendClientMessage(playerid, COLOR_GOLD, string);
}
if(WrongPassword[playerid] == 0)
{
SendClientMessage(playerid, COLOR_RED, ">> {FFFFFF}Вы использовали все попытки для входа");
}
ShowLogin(playerid);
}
}
else
{
SendClientMessage(playerid, COLOR_RED, ">> Для выхода из игры используйте /quit");
return Kick(playerid);
}
}
( Хотя сюда код не доходит )
PHP:
forward PlayerLogin(playerid);
public PlayerLogin(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows)
{
cache_get_value_name_int(0, "ID", PlayerInfo[playerid][pID]);
cache_get_value_name(0, "Email", PlayerInfo[playerid][pEmail], 64);
cache_get_value_name(0,"Password",PlayerInfo[playerid][pPassword],64);
cache_get_value_name_int(0, "Skin", PlayerInfo[playerid][pSkin]);
cache_get_value_name_int(0, "Sex", PlayerInfo[playerid][pSex]);
cache_get_value_name_int(0, "Race", PlayerInfo[playerid][pRace]);
cache_get_value_name_int(0, "Referal", PlayerInfo[playerid][pReferal]);
cache_get_value_name(0, "RegIP", PlayerInfo[playerid][pRegIP], 12);
cache_get_value_name(0, "RegData", PlayerInfo[playerid][pRegData], 15);
TogglePlayerSpectating(playerid, 0);
SetPVarInt(playerid, "Logged", 1);
SendClientMessage(playerid, COLOR_GOLD, ">> {FFFFFF}Вы успешно авторизовались !");
SpawnPlayer(playerid);
}
return 1;
}
