Last
Компетентный
Сегодня мы научимся делать вип аккаунты по времени, с автоматическим удалением по истечению времени.
Для начала перейдем в верхнюю часть вашего мода и впишем все необходимое для работы
Теперь установим подключение OnGameModeInit()
При выключении отключаем OnGameModeExit
Теперь построим команду (ZCMD)!
Теперь сделаем саму функцию
Теперь сделаем проверку OnPlayerConnect
Создаем таблицу и называем ее Donate, создадим 2 поля Name и Days. В первом укажем значение string(24), а во втором int(11)
Инклуды + плагины
Автор: 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 "" // Пароль БД.
Код:
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);//устанавливаем подключение
switch(mysql_ping())
{
case 1: print("Соединение установлено"); // Если подключена БД.
case -1: print("Нет соединения с БД"); // Если не подключена БД.
}
Код:
mysql_close();
Код:
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;
}
Код:
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();
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: Last
Последнее редактирование:
