• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Команда для смены пароля с использованием Salt

Риктик

Ученик
Привет, я хотел сделать команду для того чтобы изменить свой пароль.

Но так как я сделал регистрацию, с использованием соли.
Я не могу просто так сделать команду.

Код:
        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];
 
Сверху Снизу