Вопросы

Вступление: Приветствую, я захотел полностью переделать свой скрипт, не знаю как это у меня получится но не суть.

 

Вопрос: Как сделать запрос в базу, и как придать переменной resultat форму пароля? То есть, контекст такой: Игрок вводит пароль, в базу dbHandle отправляется запрос на получение из таблицы users строки password у определенного id - Если resultat = 1 (правильный пароль), тогда игрока запускает. Если же другой, шлет его и выдает ShowLogin() на перепроверку пароля. 

 

Недоделка: 

  открыть спойлер

 

Поделиться сообщением


Ссылка на сообщение

7 ответов на этот вопрос

  • 0
Vlad0s1k
Освоившийся

@VDOVA Ответ от ии:

Ваш первый шаг - это выполнить запрос к базе данных, чтобы получить пароль от пользователя. Вот пример как можно это сделать на Pawn (язык, используемый в SA-MP):

new id = GetPlayerId(playerid); // получаем id игрока
new password[50]; // переменная для хранения пароля из базы данных
format(query, sizeof(query), "SELECT password FROM users WHERE id = %d", id); // собираем запрос к базе данных для получения пароля
mysql_function_query(dbHandle, query); // отправляем запрос к базе данных

forward OnPlayerGetPassword(playerid, result, password); // ожидаем ответа от базы данных

 

Затем, после выполнения запроса, вам нужно обработать результат и сравнить введенный игроком и полученный из базы данных пароль. Вот пример, как это можно сделать:

  открыть спойлер

Обратите внимание, что в этом примере используется функция `GetPlayerPassword(playerid)`, которая должна быть вашей собственной функцией для получения введенного игроком пароля. Вы должны также иметь свою собственную функцию `ShowLogin(playerid)`, которая будет отображать форму ввода пароля.

 

Не забудьте подставить в примеры свои собственные функции и добавить обработку ошибок, чтобы ваш код был полностью функциональным.

Отредактировано пользователем Cawfee

Заметка от Cawfee , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Поделиться сообщением


Ссылка на сообщение
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev
case DLG_LOG: {
    if(response) {
        static const fmt_query[] = "SELECT `password` FROM `users` WHERE `name` = '%s'";

        new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)], 
            Cache:resultat,
            tmp_password[32];

        format(query, sizeof(query), fmt_query, player_info[playerid][PASSWORD]);
        resultat = mysql_query(dbHandle, query, true);

        cache_get_value_name_int(0"password", tmp_password); //функция под MySQL R40+
        cache_delete(resultat);

        if(!strcmp(inputtext, tmp_password, true)) {
            SCM(playerid, COLOR_WHITE, "Пароль верный!");
            return SpawnPlayer(playerid);
        }
        else {
            SCM(playerid, COLOR_RED, "Не верный!");
            return ShowLogin(playerid);
        }
    }
    else {
        SCM(playerid, COLOR_WHITE, "{ff0000}[SERVER]{FFFFFF}:{FFFFFF} (/q).");
        SPD(playerid, -10" "" "" """);
        return Kick(playerid);
    }
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Sleash
Завсегдатый

@VDOVA Если я не ошибаюсь, то mysql_tquery передаёт результат в указанный callback, а для работы с кэшем сразу после запроса надо использовать mysql_query:

  открыть спойлер

Если же использовать mysql_tquery и callback под него, то код будет так:

  открыть спойлер

 

Отредактировано пользователем Sleash

Поделиться сообщением


Ссылка на сообщение
  • 0

@Sleash 

 

388:  new db_password[sizeof(player_info[playerid][PASSWORD]);

 

C:\Users\Åâãåíèÿ\Desktop\Ðåçåðà\gamemodes\project.pwn(388) : error 001: expected token: "]", but found "-identifier-"
C:\Users\Åâãåíèÿ\Desktop\Ðåçåðà\gamemodes\project.pwn(388) : warning 215: expression has no effect
C:\Users\Åâãåíèÿ\Desktop\Ðåçåðà\gamemodes\project.pwn(388) : error 001: expected token: ";", but found "]"
C:\Users\Åâãåíèÿ\Desktop\Ðåçåðà\gamemodes\project.pwn(388) : error 029: invalid expression, assumed zero
C:\Users\Åâãåíèÿ\Desktop\Ðåçåðà\gamemodes\project.pwn(388) : fatal error 107: too many error messages on one line

Поделиться сообщением


Ссылка на сообщение
  • 0
Sleash
Завсегдатый
new db_password[64];

Учитывая мои проблемности с получением размера элемента из Enum, проще задать постоянную длину пароля.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Sleash Вообще не помогает, можем как то связатся что бы ты лично просмотрел ошибки и помог? Сейчас я ухожу на тренировку. Так что если сможешь, оставь свои контакты, вк, дс, не важно. Я сижу уже 3-4 день над одной проблемой... Будет очень грустно если я ее не решу.

Поделиться сообщением


Ссылка на сообщение
  • 0
Sleash
Завсегдатый

@VDOVA 
1) Мы можем поговорить в личных сообщениях через мессенджер форума
2) Если же Вы хотите ВК, то ссылка на мой профиль есть на странице моего форумного аккаунта

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

  • Похожий контент

    • whccompany
      От whccompany
      World Hosting Corporations 
                                                                GTA Game Host 
                                               CRMP PC& Mobile Project 
                                           Rostov Role Play | Rostov RP 
      Друзья, нашему проекту срочно требуется маппер для масштабного маппинга, нам требуется сделать:
      1) Городской маппинг (удалить города и создать новые города, сначало необходимо создать город Ростов-на-Дону ; посёлок Коксовый и село Ряженое, создать используя стоковые фотографии из Яндекса и Гугла)
      2) Фракционный маппинг ( Текстуры + Экстерьер + Интерьер )
      3) Маппинг работ ( Текстуры + Экстерьеры + Интерьеры )
      Бюджет до 60 000 рублей
      Возможно заключение трудового контракта 
      Пишите: ВКонтакте

    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
       
       

    • gooding
      От gooding


      Скачать файл PAR RP | Уникальный мод без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • Kalinin
      От Kalinin
      1. Набираю команду для создания CRMP сервера.
      2. Вакансии  которые свободны. Связь через TG @kalinin_sql
      Нам нужны;
      1.Кодеры
      2.Маперы
      3.СММ
      Так-же дружная работа. По поводу зарплаты будем обговаривать все лично в беседе ТГ