Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Система паспорта (MySQL)

Статус
В этой теме нельзя размещать новые ответы.

Modesto

Умник
Это Снова я Modesto,это мой 4 урок ;)​

PHP:
#include <a_mysql> 
#include <sscanf2> 

// Database
#define SQL_HOST        "Хост"
#define SQL_USER        "Имя"
#define SQL_DB          "БД Имя"
#define SQL_PASS        "Пароль"
//---------------------------------
enum aPassport
{
  aID,
  aName[MAX_PLAYER_NAME],
  aAge,
  gPassport
};

new UCPassport[100][aPassport];

new apassportns;
//--------------------------------------
main()
{
        if(mysql_ping() == 1) printf(" Подключение к базе `%s` успешно", SQL_DB);
        else printf(" Подключение к базе `%s` не успешно", SQL_DB);
}
stock GetAccountID(playerid)
{
        new query[128];
        format(query, sizeof(query),"SELECT `ID` FROM `Passport` WHERE `Nickname` = '%s'", UCPassport[playerid][aName]);
        mysql_query(query); // Отправляем запрос.
        mysql_store_result(); // Видим
        if(mysql_num_rows() == 1)
                { // Если у нас в результате выбрало 1 запись, т.е. аккаунт игрока.
                UCPassport[playerid][aID] = mysql_fetch_int(); // ИД игрока равен номеру записи.
                mysql_free_result(); // Очищаем память.
                return UCPassport[playerid][aID]; // Возвращаем ИД игрока.
        }
        return 0;
}

// в ongamemodeinit 

apassportns = CreatePickup(1239,24,360.8000,176.3166,1008.3828,-1); // пример мэрия пикап

// public OnPlayerPickUpPickup(playerid, pickupid) 

      if(pickupid == apassportns)
        {
      if(UCPassport[playerid][gPassport] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У Вас уже есть пасспорт!");
      ShowPlayerDialog(playerid, 8183, 1, "Age", "Сколько вам лет ?", "Принять", "Отмена");
      return 1;
        }
// Понятно куда вставлять 

case 8183:
                {
            if(response)
                {
                    if(!strlen(inputtext))
                    {
                        ShowPlayerDialog(playerid,8183,DIALOG_STYLE_INPUT,"Дата рождения","Работник паспортного стола говорит:\n- Сколько Вам лет?","Ок","Отмена");
                        return true;
                    }
                        new age = strval(inputtext);
                        if(age > 83)
                        {
                            format(string,sizeof(string)," Работник паспортного стола говорит: Чё то ты не выглядишь на %d лет! Не ври мне!", age);
                            SendClientMessage(playerid,COLOR_WHITE,string);
                            return false;
                        }
                        UCPassport[playerid][gPassport] = 1;
                new query[2500];
                        new PlayerName[MAX_PLAYER_NAME];
                GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
                        format(query, sizeof(query), "INSERT INTO `Passport` (`Nickname`, `Age`,`Passport`) VALUE ('%s', '%d','%d')", PlayerName, age,UCPassport[playerid][gPassport]); // Добавляем в таблицу запись.
                // INSERT - добавление записи в таблицу, 1. () - поля. 2. VALUE - значения этих полей.
                mysql_query(query); // Отправляем запрос.
            GetAccountID(playerid); // Узнаём ИД аккаунта, будет использоваться для сохранения и прочих операций.
        //              ShowPlayerDialog(playerid,16,DIALOG_STYLE_LIST,"- Где вы проживаете?","Los Santos\nSan Fierro\nLas Venturas","Ок","Отмена");
            }
                return true;
        }


forward LoadAccounts(playerid);
public LoadAccounts(playerid)
{
        new
        query[128],
        result[5+24+64];
    new PlayerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
        format(query, sizeof(query), "SELECT * FROM `Passport` WHERE `ID` = '%i'", UCPassport[playerid][aID]);
        // SELECT * - выбрать, FROM - с таблицы, WHERE - где, пароль равен введенному паролю и ID равен иду ника человека.
        mysql_query(query); // Отправляем запрос.
        mysql_store_result(); // Смотрим записи, которые мы выбрали запросом выше.
        if(mysql_num_rows() == 1) { // Если выбрало только 1 аккаунт с таким паролем и ИД - успех, пароль введен верно, загружаем данные в массив.
        mysql_fetch_row_format(result, "|"); // split, данные в результате записываются типо "
        sscanf(result, "p<|>is[24]ii", // i - ид (int), s[размер] - string, ник и пароль.
        UCPassport[playerid][aID],
        UCPassport[playerid][aName],
        UCPassport[playerid][aAge],
        UCPassport[playerid][gPassport]);
        }
        printf("LoadAccounts Start ");
        mysql_free_result();
        return 1;
}
Также LoadAccounts(playerid); можно вставить для тех у кого RLS мод в OnPlayerLogin а на других модах сами все поймете
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу