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