Риктик
Ученик
Привет, я хотел сделать команду для того чтобы изменить свой пароль.
Но так как я сделал регистрацию, с использованием соли.
Я не могу просто так сделать команду.
В конце регистрации:
Но так как я сделал регистрацию, с использованием соли.
Я не могу просто так сделать команду.
Код:
case DLG_REG:
{
if(!response) return Kick(playerid);
if(!(strlen(inputtext) >= 8 && strlen(inputtext) <= 22))
{
SCM(playerid, COLOR_LIGHTRED, "Длина пароля должна быть не менее 8 и не более 22 символов.");
format(str, sizeof(str), "{FFFFFF}Добро пожаловать на наш сервер, ваш ник: %s[%i]\nДанный аккаунт не зарегистрирован, для регистрации введите пароль\nв поле ниже:\n", player_info[playerid][name], playerid);
return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{ff9300}Регистрация", str, "Далее", "Отмена");
}
for(new i = 0; i < strlen(inputtext); i++)
{
switch(inputtext[i])
{
case 'a'..'z', 'A'..'Z', '0'..'9': continue;
default:
{
SCM(playerid, COLOR_LIGHTRED, "Длина пароля должна быть не менее 8 и не более 22 символов.");
format(str, sizeof(str), "{FFFFFF}Добро пожаловать на наш сервер, ваш ник: %s[%i]\nДанный аккаунт не зарегистрирован, для регистрации введите пароль\nв поле ниже:\n", player_info[playerid][name], playerid);
return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{ff9300}Регистрация", str, "Далее", "Отмена");
}
}
}
new hsalt[11];
for(new i; i < 10; i++)
{
hsalt[i] = random(79) + 47;
}
hsalt[10] = 0;
SHA256_PassHash(inputtext, hsalt, player_info[playerid][pass], 65);
strmid(player_info[playerid][salt], hsalt, 0, 11, 11);
SPD(playerid, DLG_REG_GENDER, DIALOG_STYLE_MSGBOX, "{ff9300}Регистрация", "{FFFFFF}Выберите пол вашего персонажа:", "Ìóæñêîé", "Æåíñêèé");
}
В конце регистрации:
Код:
case DLG_REG_AGE:
{
if(!response) return Kick(playerid);
for(new i = 0; i < strlen(inputtext); i++)
{
switch(inputtext[i])
{
case '0'..'9': continue;
default:
{
SCM(playerid, COLOR_LIGHTRED, "Возраст персонажа необходимо вводить цифрами.");
return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "{ff9300}Регистрация", "{FFFFFF}Введите возраст вашего персонажа (от 21 до 99):", "Далее", "Отмена");
}
}
}
if(!(strval(inputtext) >= 21 && strval(inputtext) <= 99))
{
SCM(playerid, COLOR_LIGHTRED, "Возраст персонажа должен быть не меньше 21 и не более 99 лет.");
return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "{ff9300}Регистрация", "{FFFFFF}Введите возраст вашего персонажа (от 21 до 99):", "Далее", "Отмена");
}
player_info[playerid][age] = strval(inputtext);
switch(player_info[playerid][age])
{
case 21..49:
{
if(player_info[playerid][gender] == 1)
{
switch(player_info[playerid][race])
{
case 1:
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 14;
case 1: player_info[playerid][skin] = 26;
case 2: player_info[playerid][skin] = 35;
case 3: player_info[playerid][skin] = 44;
}
}
case 2:
{
switch(random(4))
{
case 0: player_info[playerid][skin] = 4;
case 1: player_info[playerid][skin] = 14;
case 2: player_info[playerid][skin] = 18;
case 3: player_info[playerid][skin] = 19;
}
}
case 3:
{
switch(random(2))
{
case 0: player_info[playerid][skin] = 58;
case 1: player_info[playerid][skin] = 229;
}
}
}
}
if(player_info[playerid][gender] == 2)
{
switch(player_info[playerid][race])
{
case 1:
{
switch(random(2))
{
case 0: player_info[playerid][skin] = 56;
case 1: player_info[playerid][skin] = 226;
}
}
case 2:
{
player_info[playerid][skin] = 69;
}
case 3:
{
player_info[playerid][skin] = 55;
}
}
}
}
case 50..99:
{
if(player_info[playerid][gender] == 1)
{
switch(player_info[playerid][race])
{
case 1:
{
switch(random(2))
{
case 0: player_info[playerid][skin] = 160;
case 1: player_info[playerid][skin] = 94;
}
}
case 2:
{
switch(random(2))
{
case 0: player_info[playerid][skin] = 134;
case 1: player_info[playerid][skin] = 136;
}
}
case 3:
{
player_info[playerid][skin] = 210;
}
}
}
if(player_info[playerid][gender] == 2)
{
switch(player_info[playerid][race])
{
case 1:
{
switch(random(2))
{
case 0: player_info[playerid][skin] = 199;
case 1: player_info[playerid][skin] = 232;
}
}
case 2:
{
player_info[playerid][skin] = 218;
}
case 3:
{
player_info[playerid][skin] = 196;
}
}
}
}
}
player_info[playerid][regip][0] = EOS;
GetPlayerIp(playerid, player_info[playerid][regip], 16);
player_info[playerid][regdate][0] = EOS;
new yx, mx, dx, tempdate[11];
getdate(yx, mx, dx);
format(tempdate, sizeof(tempdate), "%d.%d.%d", dx, mx, yx);
strins(player_info[playerid][regdate], tempdate, 0);
query[0] = EOS;
mysql_format(dbHandle, query, sizeof(query), "INSERT INTO `accounts` (`name`, `password`, `gender`, `age`, `skin`, `race`, `regip`, `regdate`) VALUES ('%e', '%e', '%d', '%d', '%d', '%d', '%e', '%e')", player_info[playerid][name], player_info[playerid][pass], player_info[playerid][gender], player_info[playerid][age], player_info[playerid][skin], player_info[playerid][race], player_info[playerid][regip], player_info[playerid][regdate]);
mysql_tquery(dbHandle, query);
query[0] = EOS;
mysql_format(dbHandle, query, sizeof(query), "UPDATE `accounts` SET `salt` = '%e' WHERE `name` = '%e'", player_info[playerid][salt], player_info[playerid][name]);
mysql_tquery(dbHandle, query);
query[0] = EOS;
mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%e'", player_info[playerid][name]);
mysql_tquery(dbHandle, query, "CheckAccountFromMysql", "i", playerid);
}
Код:
enum PLAYER_INFO
{
id,
name[MAX_PLAYER_NAME + 1],
pass[64+1],
salt[11],
gender,
age,
skin,
race,
level,
money,
hp,
isemail,
email[60],
regip[16],
regdate[11],
isban,
isonline,
warns,
daytime,
afktime,
mineskill,
job,
isauth,
authkey[17],
authip[16],
authtype,
tankerskill,
exp,
hunger,
waterneed,
member,
rank,
leader,
fracwarn,
hospital,
suspect,
jail,
jailtime,
drivelic,
bizlic,
cardname[25],
cardbirth[11],
cardplace[30],
carddate[11],
iscard,
questtype,
fuelholderid,
shopholderid,
mute,
mutetime,
vmutetime,
bank,
isbcard,
deposittype,
depositsum,
depositsumfirst,
depositcount,
farmskill,
lighter, // çàæèãàëêà
cigarettes, // ñèãàðåòû
chips, // ÷èïñû
sprunk, // ñïðàéò
mask, // ìàñêà
armour, // áðîíèæåëåò
lticket, // ëîòåðåéíûå áèëåòû
meds, // àïòå÷êè
cshopholderid,
}
new player_info[MAX_PLAYERS][PLAYER_INFO];
