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

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

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

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

Вип аккаунт по времени. Mysql

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

Last

Компетентный
Сегодня мы научимся делать вип аккаунты по времени, с автоматическим удалением по истечению времени.
Для начала перейдем в верхнюю часть вашего мода и впишем все необходимое для работы
Код:
#include <a_samp>// стандартный инклуд
#include <zcmd>//для работы с командами
#include <mxdate>
#include <a_mysql>//для работы с бд
#include <sscanf>//
#define SQL_HOST     "localhost" // IP адресс БД.
#define SQL_USER     "root" // Login БД.
#define SQL_DB       "Samp" // Название БД.
#define SQL_PASS     "" // Пароль БД.
Теперь установим подключение OnGameModeInit()
Код:
        mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);//устанавливаем подключение
        switch(mysql_ping())
        { 
                 case 1: print("Соединение установлено"); // Если подключена БД.
             case -1: print("Нет соединения с БД"); // Если не подключена БД.
        }
При выключении отключаем OnGameModeExit
Код:
mysql_close();
Теперь построим команду (ZCMD)!
Код:
CMD:donate(playerid, params[ ] )//donate это название команды
{
    //проверка на администратора
    new string[144];
    if(sscanf(params, "ud", params[0],params[1])) return SendClientMessage(playerid,0xFFFFFFFF,"{0099FF}Используйте:     {FFFFFF}/donate {99D938}[playerid] [Day] ");//если параметры не указанны
    DonatePlayer(params[0],params[1]);//если указанны то дадим випку и занесем в бд
    format(string,sizeof(string),"Вам выдан Вип аккаунт на %d дней",params[1]);
    SendClientMessage(params[0],0xFFFFFFFF,string);//покажем сообщение игроку которому выдали
    //функция выдачи випки PlayerInfo[params[0]][pDonate]=1;
    return true;
}
Теперь сделаем саму функцию
Код:
stock DonatePlayer(playerid,days)
{
        new query[256],name[24];
    GetPlayerName(playerid,name,sizeof(name));//узнаем имя
    format(query, sizeof(query), "INSERT INTO `Donate` (`Name`, `Days`) VALUE ('%s','%d')",name,gettime()+86400*days);
    mysql_query(query);//отправим запрос
    return true;
}
Теперь сделаем проверку OnPlayerConnect
Код:
        new query[100],name[24],string[240],days;//
    GetPlayerName(playerid,name,sizeof(name));//узнаем имя
    format(query,sizeof(query),"SELECT * FROM `Donate` WHERE `Name` = '%s'",name);
    mysql_query(query);//отправляем запрос
    mysql_store_result();//получаем ответ
    if(mysql_fetch_row(query) && mysql_num_rows() == 1)//если есть поле с именем игрока
    {
        mysql_get_field("Days", string);
        days=strval(string);
        if(gettime() >= days) //если срок закончился
        {
            SendClientMessage(playerid,0xFFFFFFFF,"Действие вашего аккаунта закончилось");
            format(string,sizeof(string),"DELETE FROM `Donate` WHERE `Name`='%s'",name);
            mysql_query(string);//удаляем его из бд
            //PlayerInfo[playerid][pDonate]=0; ваша випка
        }
        else
        {
            //PlayerInfo[playerid][pDonate]=1; ваша випка
            format(string,sizeof(string),"Действие вашего аккаунта закончится  %s ",date("%dd.%mm.%yyyy в %hh:%ii:%ss",days));
            SendClientMessage(playerid,0xFFFFFFFF,string);
        }
    }
    mysql_free_result();
Создаем таблицу и называем ее Donate, создадим 2 поля Name и Days. В первом укажем значение string(24), а во втором int(11)
Инклуды + плагины

Автор: Last​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу