Перейти к содержанию
Авторизация  
SCRIPTMAN

Система бана по дням

Рекомендуемые сообщения

SCRIPTMAN

Привет всем! Решил с вами поделиться системой бана по дням, может кому-то пригодиться)

Система ТОЛЬКО для мода на MySQL.

 

1. Запускаете Denwer


2. В адресной строке пишите: "localhost"
3. Там переходите в "Проверка MySQL и phpMyAdmin"
4. Выбираете свою базу, открываете её, там будет внизу "Создать таблицу", вводите имя: "ban", количество столбцов: "2"
5. В первой строке: Имя: "Name", тип: "Varchar", длина: "24"
6. Во второй строке: Имя "UnBanDate", тип: "INT", длина: "11"
7. Жмёте "Сохранить", всё. База создана

 

Можете прочитать данную тему.

Всё, работа с базой на данный момент завершена, теперь перейдём к работе с модом, для начала добавим переменные:

new BanTime;
new BanDate[MAX_PLAYERS];

Теперь давайте добавим команду, вставляем в мод:

CMD:ban(playerid, params[])
{
new string[128];
if(Player[playerid][pAdmin] < 3) return ESCM;//Проверку на администратора замените на свою
if(sscanf(params, "iis[128]", params[0], params[1], params[2])) return SCM(playerid, COLOR_WHITE, "Введите: /ban [id] [срок(дни)] [причина]");
if(!IsPlayerConnected(params[0])) return ISCM;//Проверку на коннект замените на свою
if(Login[params[0]] == false) return LSCM;//Проверку на авторизацию замените на свою
if(params[1] < 1 || params[1] > 30) return SCM(playerid, COLOR_GREY, "Количество дней не должно быть меньше 1-го или больше 30-ти!");
BanTime = gettime() + 86400*params[1];//86400 - 24 часа в секундах, то есть, 1 день и мы этот 1 день умножаем на количество дней, которые мы ввели
f("Администратор %s забанил игрока %s на %d дней. Причина: %s", GN(playerid), GN(params[0]), params[1], params[2]);
SCMTA(COLOR_LIGHTRED, string);
f("INSERT INTO `ban` (`Name`, `UnBanDate`) VALUES (`%s`, `%d`)", GN(params[0]), BanTime);
mysql_function_query(ConnectMySQL, string, false, "", "");//ConnectMySQL - переменную замените на свою.
Kickk(params[0]);//Кик, замените на свой
return true;

Цвета наверное замените на свои, ну, а кто хочет, напишите в комменты, я скину необходимые цвета, чтобы не было ошибок.

Теперь, чтобы не выскочили возможно ошибки, добавьте себе в мод дефайны:

#define SCM             SendClientMessage
#define Kickk(%1)       SetTimerEx("kick", GetPlayerPing(%1), false, "i", %1)
#define ESCM            SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать данную команду!")
#define ISCM            SCM(playerid, COLOR_GREY, "Игрок оффлайн!")
#define LSCM            SCM(playerid, COLOR_GREY, "Игрок не авторизован!")
#define SCMTA           SendClientMessageToAll
#define f( format(string, sizeof(string),
#define GN(%1)          Player[%1][pName]
#define publics%0(%1)   forward%0(%1); public%0(%1)

 

Вот это вставьте в public OnPlayerConnect:

f("SELECT * FROM `ban` WHERE `Name` = '%s'", GN(playerid));
mysql_function_query(ConnectMySQL, string, true, "PlayerBan", "d", playerid);

Теперь создайте новый паблик: Надеюсь оцените окно бана, старался, но не проверял :D

publics PlayerBan(playerid)
{
new string[128];
new rows;
new rows2;
cache_get_data(rows, rows2);
if(rows)
{
BanDate[playerid] = cache_get_field_content_int(0, "UnBanDate");
if(gettime() > BanDate[playerid])
{
f("DELETE FROM `ban` WHERE `Name` = `%s`", GN(playerid));
mysql_function_query(ConnectMySQL, string, false, "", "");
}
else
{
f("{00FFA6}==============================\n\n{FF0000}Ваш аккаунт заблокирован!\nДата вашей разблокировки: {FFFF00}%s\n{00FFA6}==============================", date("%dd/%mm/%yyyy", BanDate[playerid]));
SPD(playerid, 0, DSM, "{FF0000}Данный аккаунт забанен", string, "Хорошо", "");
Kickk(playerid);
}
}
return true;
} 

И последнее, там где у вас идёт обнуление, вставьте вот это:

BanDate[playerid] = 0;

Ну вот и всё. Надеюсь тема кому-нибудь пригодится, так-как старался сделать её простой и понятой.

Если будут какие-то ошибки - пишите!

 

 

Автор: Shapik

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.