В принципе в некоторых функциях разобрался
но..
что главное то, что так и не могу разобраться до конца в том,как узнать находится ли аккаунт в базе данных или нет или верен ли введенный пароль игрока в диалог или нет :pardon:
Вид для печати
В принципе в некоторых функциях разобрался
но..
что главное то, что так и не могу разобраться до конца в том,как узнать находится ли аккаунт в базе данных или нет или верен ли введенный пароль игрока в диалог или нет :pardon:
вот пример моей функции
рекомендую посмотреть :smile:PHP код:
stock bool:IsAFexistAccount(name[])
{
new query[70];
format(query, sizeof query, "select id from table where name = '%s'", name); // запрос надо переделать под себя
new Cache:result = mysql_query(_, query);
new rows = cache_num_rows();
cache_delete(result);
return rows ? (true) : (false);
}
http://wiki.sa-mp.com/wiki/MySQL/R33
Ну в OnPlayerConnect что-то типа
И в колбэкеPHP код:
new string[50+MAX_PLAYER_NAME];
format(string, sizeof(string),"SELECT * FROM `Account` WHERE `NickName` = '%s' LIMIT 0,1", pNick(playerid));
mysql_function_query(iMySQL, string, true, "FindPlayerInTable", "i", playerid);//true - включаем кэширование запроса и тем самым мы сможем работать с данными, которые вернёт таблица
Пароль точно так же проверяется. Только можно прямо в диалоге выше занести пароль от аккаунта в переменную и потом уже проверять значение той самой переменной, а не посылать каждый раз запрос в БДPHP код:
forward FindPlayerInTable(playerid);
public FindPlayerInTable(playerid)
{
new rows, fields;
cache_get_data(rows, fields);// Проверяем сколько столбцов и строк "откликнулось" на запрос и можно регистрировать игрока
if(!rows)//Если нуль - значит аккаунт не найден
{
print("Аккаунт не найден");
}
else//Иначе хоть 1 столбец подходит под условие запроса и игрок зарегистрирован уже
{
}
return 1;
}
С паролем нормально или что-то не так?
:pardon:PHP код:
case 2:
{
if(!response) return SendClientMessage(playerid,COLOR_GREEN,"Вы вышли");
if(!strlen(inputtext))
{
format(Dialog_Enter,sizeof(Dialog_Enter),"\t%s добро пожаловать на сервер!\n\n\nВведите пароль:",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid,2, DIALOG_STYLE_PASSWORD,"\tАвторизация",Dialog_Enter,"Ок","Отмена");
}
else
{
mysql_format(MySQL_ID,MySQL_Data,78+MAX_PLAYER_NAME,"SELECT * FROM "Base" WHERE `Name` = '%e' AND `password` = '%e'", PlayerInfo[playerid][pName], pPassword);
mysql_function_query(MySQL_ID,MySQL_Data, true, "OnPlayerLogin","s", playerid);
}
}
}
return 1;
}
void OnPlayerLogin(playerid)
{
new rows,fields;
cache_get_data(rows, fields);
if(!rows)
{
format(Dialog_Enter,sizeof(Dialog_Enter),"Ваш ник зарегистрирован\n\nЛогин: %s\nВы ввели неверный пароль!\nПопробуйте еще раз:",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD,"Авторизация",Dialog_Enter,"Вход","Отмена");
return 1;
}
PlayerLogged{playerid} = true;
SpawnPlayer(playerid);
return 1;
}
а?PHP код:
WHERE BINARY
Ну так а что говорит проверка кода в боевых условиях?
Ну запусти сервер и проверь, работает код или нет