Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±

    Не видит обновлённый пароль.

    Доброго времени суток.
    В общем проблема такая: Игрок может поменять в игре свой пароль при помощи команды /setpass.
    PHP код:
    if(!strcmp(cmdtext"/setpass"true))
    {
      
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Изменение пароля""Введите новый пароль:""Изменить""Отмена");
      return 
    1;

    Пароль в базе данных не сохраняется, так как обновлять его после каждого выхода из игры - неудачная мысль, ну или скорее глупая.
    Поэтому, мы обновляем пароль сразу после изменения.
    PHP код:
    if(dialogid == 1)
    {
      if(
    response)
      {
        if(!
    strlen(inputtext)) return SendClientMessage(playerid0xBF0000FF"Вы ничего не ввели.");
        else if(
    strlen(inputtext) < || strlen(inputtext) > 20) return SendClientMessage(playerid0xBF0000FF"Пароль не должен содержать менее 6 символов и более 20 символов. ");
        new 
    tsql[100];
        
    format(tsqlsizeof(tsql), "UPDATE `accounts` SET `Password` = '%s' WHERE `Nickname` = '%s'"inputtextnick(playerid));
        
    mysql_function_query(сonnect_basetsqlfalse""""); 
        
    Info[playerid][Password] = strlen(inputtext);
        
    SendClientMessage(playerid0xFFFFFFFF"Вы изменили пароль.");
        
    printf("Пароль: %s"inputtext);
        return 
    1;
      }
      else return 
    1;

    Все проверки работают. В базе новый пароль обновляется успешно.
    Но в логах отображается старый пароль. Я пытался использовать strins, но ничего не получилось.
    При загрузке аккаунта - всё отображается нормально. А если смотреть по логам, то нет.

  2. #2
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Что за логи?

  3. #3
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    PHP код:
    const MAX_PLAYER_PASSWORD 14 // т.к: нельзя меньше 6 и больше 20, получаем 20 - 6 = 14 
    PHP код:
    if(!strcmp(cmdtext"/setpass"true))
    {
        
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Изменение пароля""Введите новый пароль:""Изменить""Отмена");
        return 
    1;

    PHP код:
    if(dialogid == 1)
    {
      if(
    response)
      {
        if(!
    strlen(inputtext)) 
            return 
    SendClientMessage(playerid0xBF0000FF"Вы ничего не ввели.");
        else if(
    strlen(inputtext) < || strlen(inputtext) > 20
            return 
    SendClientMessage(playerid0xBF0000FF"Пароль не должен содержать менее 6 символов и более 20 символов. ");
        
    Info[playerid][Password] = "\0";
        
    strins(Info[playerid][Password], inputtext0);

        static 
    query[] = "UPDATE `accounts` SET `Password` = '%e' WHERE `Nickname` = '%e'";
        new 
    fmt_query[sizeof(query) - MAX_PLAYER_NAME MAX_PLAYER_PASSWORD 1];
        
    format(fmt_querysizeof(fmt_query), queryInfo[playerid][Password], nick(playerid));
        
    mysql_function_query(сonnect_basefmt_queryfalse""""); 
        
    SendClientMessage(playerid0xFFFFFFFF"Вы изменили пароль.");
        
    printf("Пароль: %s"Info[playerid][Password]);
        return 
    1;
      }
      else return 
    1;

    Последний раз редактировалось $continue$; 07.02.2016 в 16:00.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. Пользователь сказал cпасибо:
    Роуди. (07.02.2016)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •