Мike
Компетентный
Cегодня мы научимся делать вип аккаунты по времени, с автоматическим удалением по истечению времени.
Перейдем в самый вверх вашего мода и впишем туда этот код:
Теперь необходимо установить подключение к базе при включении мода, перейдем в OnGameModeInit и впишем туда этот код:
Теперь если все будет нормально то в консоли появится инфа о том что соединение установлено.
Сейчас сделаем отключение от базы при выключении/перезагрузке мода, перейдем в OnGameModeExit и впишем:
Теперь нужно сделать проверку, переходим в OnPlayerConnect и вписываем:
Теперь построим команду для выдачи випки. Внимание команда построена на YCM
Теперь сделаем функцию выдачи випки, перейдем в низ вашего мода и напишем следующий код:
Теперь нужно создать таблицу в нашей бд:
Создаем таблицу с именем Donate, делаем 2 столбца Name и Days.
В первом укажем значение string(24), а во втором int(11).
Необходимые для работы инклуды а так же плагины можете скачать по этой ссылкам:
Скрины:
Автор:Last.
Перейдем в самый вверх вашего мода и впишем туда этот код:
PHP:
#include <a_samp>// стандартный инклуд
#include <YSI\y_commands>//для работы с командами
#include <mxdate>
#include <a_mysql>//для работы с бд
#include <sscanf>//
#define MYSQL_HOST "localhost" // IP адресс БД.
#define MYSQL_USER "root" // Login БД.
#define MYSQL_DB "Samp" // Название БД.
#define MYSQL_PASS "" // Пароль БД.
PHP:
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);//устанавливаем подключение
switch(mysql_ping())
{
case 1: print("Соединение установлено"); // Если подключена БД.
case -1: print("Нет соединения с БД"); // Если не подключена БД.
}
Сейчас сделаем отключение от базы при выключении/перезагрузке мода, перейдем в OnGameModeExit и впишем:
PHP:
mysql_close();
PHP:
new query[100],name[24],string[240]sqlname[24],days;//
GetPlayerName(playerid,name,sizeof(name));//узнаем имя
mysql_real_escape_string(name,sqlname);
format(query,sizeof(query),"SELECT * FROM `Donate` WHERE `Name` = '%s'",sqlname);
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();//очищаем
PHP:
YCMD:donate(playerid, params[ ] ,help)//donate это название команды
{
if(!IsPlayerAdmin(playerid)return SendClientMessage(playerid,-1,"Вы не администратор.");//проверка на администратора
new string[144];
if(!strlen(params[0])|| !strlen(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;
}
PHP:
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);//gettime()вернет время в секундах, 86400 секунд в одних сутках, days количество дней на которое будет установлен вип аккаунт
mysql_query(query);//отправим запрос
return true;
}
Создаем таблицу с именем Donate, делаем 2 столбца Name и Days.
В первом укажем значение string(24), а во втором int(11).
Необходимые для работы инклуды а так же плагины можете скачать по этой ссылкам:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Скрины:
Автор:Last.
