MENU
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Вип аккаунт на время с использованием Mysql.
Chev_cheliosДата: Среда, 27-Июн-2012, 14:29 | Сообщение # 1
Уважаемый человек
Сообщений: 104
Награды: 0
Репутация: 63
Статус:
Приветствую пользователей форума,сегодня мы научимся делать вип аккаунты по времени, с автоматическим удалением по истечению времени.
Перейдем в самый вверх вашего мода и впишем туда этот код:
Code
#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     "" // Пароль БД.  

Теперь необходимо установить подключение к базе при включении мода, перейдем в OnGameModeInit и впишем туда этот код:
Code
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);//устанавливаем подключение
         switch(mysql_ping())
         {  
                  case 1: print("Соединение установлено"); // Если подключена БД.
              case -1: print("Нет соединения с БД"); // Если не подключена БД.
         }  

Теперь если все будет нормально то в консоли появится инфа о том что соединение установлено.
Сейчас сделаем отключение от базы при выключении/перезагрузке мода, перейдем в OnGameModeExit и впишем:
Code
mysql_close();  

Теперь нужно сделать проверку, переходим в OnPlayerConnect и вписываем:
Code
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();//очищаем  

Теперь построим команду для выдачи випки. Внимание команда построена на YCM
Code
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;
}  

Теперь сделаем функцию выдачи випки, перейдем в низ вашего мода и напишем следующий код:
Code
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)
Необходимые для работы инклуды а так же плагины можете скачать по этой ссылке




 
  • Страница 1 из 1
  • 1
Поиск: