ra132132ji
Нуль
- Регистрация
- 15 Апр 2017
- Сообщения
- 3
- Лучшие ответы
- 0
- Репутация
- 3
Доброго времени суток, уважаемые пользователи портала. Представляю Вам полноценную систему регистрации, а также авторизации.
[HR][/HR]
Ко всем переменным:
public OnGameModeInit():
public OnGameModeExit():
public OnPlayerConnect(playerid):
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
В конец:
База данных:
[HR][/HR]
Ко всем переменным:
PHP:
new database;
new bool:authorization[MAX_PLAYERS];
enum player_information
{
p_name[MAX_PLAYER_NAME],
p_password[20 + 1],
p_email[50 + 1],
p_referral[MAX_PLAYER_NAME],
p_sex,
p_skin,
p_score
}
new p_i[MAX_PLAYERS][player_information];
PHP:
database = mysql_connect("localhost", "root", "database", "");
PHP:
mysql_close(database);
PHP:
GetPlayerName(playerid, p_i[playerid][p_name], MAX_PLAYER_NAME);
static const fmt_str[] = "SELECT * FROM `accounts` WHERE `p_name` = '%s'";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
mysql_function_query(database, string, 1, "p_check", "i", playerid);
PHP:
switch(dialogid)
{
case 0:
{
if(!response)
return Kick(playerid);
if(!strlen(inputtext))
{
static const fmt_str[] =
"\
{F2BC58}%s{FFFFFF}, добро пожаловать на {F2BC58}Server-Rp.Ru{FFFFFF}.\
\nВаш аккаунт не найден в базе данных, поэтому Вам\
\nнужно пройти регистрацию. Введите пароль в поле.\
";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", string, "Далее", "");
return 1;
}
if(strlen(inputtext) < 6 || strlen(inputtext) > 20)
return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{F2BC58}Регистрация.", "{FFFFFF}Пароль должен содержать от 6 до 20 символов и букв.", "Далее", "");
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я', ' ':
return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{F2BC58}Регистрация.", "{FFFFFF}Ваш пароль не должен содержать русских букв.", "Далее", "");
}
strmid(p_i[playerid][p_password], inputtext, 0, strlen(inputtext), 20);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", "{FFFFFF}Введите Ваш действующий электронный адрес.", "Далее", "");
}
case 1:
{
if(!response)
return Kick(playerid);
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", "{FFFFFF}Введите Ваш действующий электронный адрес.", "Далее", "");
if(strlen(inputtext) < 10 || strlen(inputtext) > 50)
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "{F2BC58}Регистрация.", "{FFFFFF}Почта должна содержать от 10 до 50 символов и букв.", "Далее", "");
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я', ' ':
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "{F2BC58}Регистрация.", "{FFFFFF}Ваша почта не должна содержать русских букв.", "Далее", "");
}
strmid(p_i[playerid][p_email], inputtext, 0, strlen(inputtext), 50);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", "{FFFFFF}Введите ник игрока, который пригласил Вас на наш сервер.", "Далее", "");
}
case 2:
{
if(!response)
return Kick(playerid);
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", "{FFFFFF}Введите ник игрока, который пригласил Вас на наш сервер.", "Далее", "");
if(strlen(inputtext) < 1 || strlen(inputtext) > 24)
return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", "{FFFFFF}Введите ник игрока, который пригласил Вас на наш сервер.", "Далее", "");
strmid(p_i[playerid][p_referral], inputtext, 0, strlen(inputtext), MAX_PLAYER_NAME);
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "{F2BC58}Регистрация.", "{FFFFFF}Выберите Ваш пол.", "Мужской", "Женский");
}
case 3:
{
if(!response)
{
p_i[playerid][p_sex] = 1;
p_i[playerid][p_skin] = 13;
}
else
{
p_i[playerid][p_sex] = 2;
p_i[playerid][p_skin] = 230;
}
p_i[playerid][p_score] = 1;
authorization[playerid] = true;
static const fmt_str[] = "INSERT INTO `accounts` (`p_name`, `p_password`, `p_email`, `p_referral`, `p_sex`, `p_skin`, `p_score`) VALUES ('%s', '%s', '%s', '%s', '%d', '%d', '%d')";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME - 2 + 20 + 1 - 2 + 50 + 1 - 2 + MAX_PLAYER_NAME - 2 + 2 - 2 + 4 - 2 + 5];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name], p_i[playerid][p_password], p_i[playerid][p_email], p_i[playerid][p_referral], p_i[playerid][p_sex], p_i[playerid][p_skin], p_i[playerid][p_score]);
mysql_function_query(database, string, 0, "", "");
SpawnPlayer(playerid);
}
case 4:
{
if(!response)
return Kick(playerid);
if(!strlen(inputtext))
{
static const fmt_str[] =
"\
{F2BC58}%s{FFFFFF}, добро пожаловать на {F2BC58}Server-Rp.Ru{FFFFFF}.\
\nВаш аккаунт найден в базе данных, поэтому Вам нужно\
\nпройти авторизацию. Введите свой пароль в поле.\
";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_PASSWORD, "{F2BC58}Авторизация.", string, "Далее", "");
return 1;
}
static const fmt_str[] = "SELECT * FROM `accounts` WHERE `p_name` = '%s' AND `p_password` = '%s'";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME - 2 + 20 + 1];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name], inputtext);
mysql_function_query(database, string, 1, "p_login", "i", playerid);
}
}
PHP:
forward p_check(playerid);
public p_check(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
static const fmt_str[] =
"\
{F2BC58}%s{FFFFFF}, добро пожаловать на {F2BC58}Server-Rp.Ru{FFFFFF}.\
\nВаш аккаунт найден в базе данных, поэтому Вам нужно\
\nпройти авторизацию. Введите свой пароль в поле.\
";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_PASSWORD, "{F2BC58}Авторизация.", string, "Далее", "");
}
else
{
static const fmt_str[] =
"\
{F2BC58}%s{FFFFFF}, добро пожаловать на {F2BC58}Server-Rp.Ru{FFFFFF}.\
\nВаш аккаунт не найден в базе данных, поэтому Вам\
\nнужно пройти регистрацию. Введите пароль в поле.\
";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "{F2BC58}Регистрация.", string, "Далее", "");
}
return 1;
}
forward p_login(playerid);
public p_login(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
cache_get_field_content(0, "p_email", p_i[playerid][p_email], database, 50);
cache_get_field_content(0, "p_referral", p_i[playerid][p_referral], database, MAX_PLAYER_NAME);
p_i[playerid][p_sex] = cache_get_field_content_int(0, "p_sex");
p_i[playerid][p_skin] = cache_get_field_content_int(0, "p_skin");
p_i[playerid][p_score] = cache_get_field_content_int(0, "p_score");
authorization[playerid] = true;
SpawnPlayer(playerid);
}
else
{
static const fmt_str[] =
"\
{F2BC58}%s{FFFFFF}, добро пожаловать на {F2BC58}Server-Rp.Ru{FFFFFF}.\
\nВаш аккаунт найден в базе данных, поэтому Вам нужно\
\nпройти авторизацию. Введите свой пароль в поле.\
";
new string[sizeof(fmt_str) - 2 + MAX_PLAYER_NAME];
format(string, sizeof(string), fmt_str, p_i[playerid][p_name]);
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_PASSWORD, "{F2BC58}Авторизация.", string, "Далее", "");
}
return 1;
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
.
PHP: