Бан-система по дням [MySQL] - R2 -
Splav - 29.01.2012
Решил сделать систему бана по дням на MySQL
Аналогичный скрипт на SQLite:
https://sampforum.blast.hk/showthread.php?tid=314294
Описание системы
1. Система основана на MySQL. У вас большие возможности при работе с ней - можно сделать разбан / бан аккаунтов на сайте, можно сделать банлог на вашем форуме, можно подключаться к БД с любой точки мира (где есть Интернет)
2. Баны даются по дням командой
/ban [ID игрока][Срок бана в днях][Причина]
3. Присутствует команда для разбана игроков:
/unban [Ник игрока]
4. Имеется банлист: /banlist . В нем можно посмотреть список забаненных игроков (клик по игроку, и увидите подробную информацию о бане), через него можно производить разбаны
5. Есть команда /cbanlist для удаления из банлиста тех игроков, чей срок бана уже вышел.
Примечание: Если срок бана истек, игрок без проблем может зайти на сервер, однако он останется в банлисте
6. Все баны идут на ник и IP адрес. Данная защита (по нику и IP) лучшая на данный момент в сампе.
Примечание: бан по подсети не в счет. Мое мнение - те, кто банят подсеть, себе хуже делают, т.к. это бан свыше 65к компьютеров
7. Когда забаненный игрок заходит на сервер, он сразу же проверяется на бан (т.е. еще до момента авторизации)
Обновление (R2)
1. Созданы дефайны для ID'ов диалогов. Теперь вы легко можете изменить ид диалога (банлиста / разбана) на удобный для вас
2. Бан теперь задается через UNIX-время
3. Исправлены некоторые баги / недоработки
Установка:
1. Скачать архив по ссылке ниже
2. Кинуть инклюды из pawno/include в pawno/include (в вашей папке с сервером), если их у вас нет
3. Кинуть BanSystem.amx из filterscripts в filterscripts в вашей папке с сервером
4. Переместить плагины из plugins в plugins в вашей папке с сервером
5. В server.cfg вписать:
Quote:
filterscripts BanSystem
plugins sscanf mysql
|
6. На вашей Базе Данных создать таблицу bans (DDL код в SQL/bans.sql)
7. В BanSystem.pwn (вверху) настроить данные вашей БД (ник, пароль, хост и т.д.)
Скачать свежие версии можно
здесь
Если есть замечания, предложения пишите сюда
Убедительная просьба не троллить, если вам данный скрипт кажется бредом, то лучше промолчите
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
Quote:
Originally Posted by Splav
MySQL не является бесплатным.
|
спасибо посмеялся
![Cheesy](images/smilies/biggrin.png)
Дайте пруфлинк туда где вы нашли платный мускул?!
Если не верите:
MySQL
Quote:
Лицензия GNU General Public License
|
Страница скачивания, даже регистрации не просит:
Download MySQL Community Server
PS у него даже исходные коды доступны
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Сорь, оговорился
Я хотел сказать, что чтобы саму Базу Данных арендовать платить нужно
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
Quote:
Originally Posted by Splav
Я хотел сказать, что чтобы саму Базу Данных арендовать платить нужно
|
да ну?! Это кому это платить надо за то что я размещаю на своих компах/серверах?
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Я имел в виду не локальные и не размещаемые У СЕБЯ на сервере...
P.S. Вам что, лишь бы придраться к чему-нибудь?
Лучше вообще удалю этот абзац
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
Нет, учу писать только по сути, и не вставлять в текст лишнюю ни кому не нужную информацию.
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Quote:
Originally Posted by Stepashka
Нет, учу писать только по сути, и не вставлять в текст лишнюю ни кому не нужную информацию.
|
А, ну ок
![Smiley](images/smilies/smile.png)
Удалил
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
Замечания:
Quote:
Originally Posted by Splav
6. На вашей Базе Данных создать таблицу bans (DDL код в SQL/bans.sql)
7. В BanSystem.pwn (вверху) настроить данные вашей БД (ник, пароль, хост и т.д.)
|
а имя БД нельзя сделать опционально-настраиваемым?
Code:
mysql_set_charset("cp1251_general_ci");
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
Упаси боже, правь быстрее этот ужас, на дворе 21 век и использовать cp1251 это смертный грех!
Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
...
return 1;
}
Команды в моде работать не будут!
Я даже боюсь представить что будет со скриптом в районе дат декабрь-январь, ожидаемо:
"Вы будете забанены примерно через 12 месяцев, а разбанены тоже через это время + срок бана, если конечно разработчик соизволит исправить проблему с датами, в противном случае история повторится! =("
Code:
if(ban) goto banLabel;
фу, ФУ! Забудь данную функция и никогда о ней не вспоминай!
dialogid вынеси в DEFINE чтобы не искать сей параметр по коду! А то я думаю что ID 500 часто встречаемый номер, из-за своей простоты и привлекательности.
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Stepashka, спасибо за замечания. Исправлю
Имя БД также можно настроить. Там есть макрос для него. DBNAME вроде
Только вопросик: почему goto лучше не использовать? И что вместо нее использовать, чтобы сразу перейти на нужный участок кода
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
http://ru.wikipedia.org/wiki/GOTO раздел критика.
http://ru.wikipedia.org/wiki/Спагетти-код
Code:
if(!ban) {
...
}
конец
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Подскажите кто-нибудь как можно имея секунды, полученные через gettime() перевести в дни-часы-минуты
![Smiley](images/smilies/smile.png)
буду багодарен
P.S. Это нужно, что выводить кол-во дней до разбана. Я переделал там. Теперь кол-во сек до разбана определяется так:
PHP Code:
unbandate-gettime()
Но получается результат в секундах. Мне бы его в дни-часы перевести
Re: Бан-система по дням [MySQL] -
Stepashka - 29.01.2012
http://dev.mysql.com/doc/refman/5.1/..._from-unixtime
Re: Бан-система по дням [MySQL] -
Jon_De - 29.01.2012
а чё не юзаешь для бана NOW()+%d Days допустим, удобней же чем getdate, + можно сразу дату разбана выводить на сайт или в логи.
В бан лист все игроки забаненые не влезут, лучше сделать по страницам, по 20 забаненых на 1 странице и в диалоге кнопками листаешь список + поиск по нику.
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
По страницам планируется сделать в будущем.
Re: Бан-система по дням [MySQL] -
Splav - 29.01.2012
Скрипт обновлен до R2
Комментируем, пишем о багах...
Re: Бан-система по дням [MySQL] -
-Stranger- - 30.01.2012
Quote:
Originally Posted by Splav
Подскажите кто-нибудь как можно имея секунды, полученные через gettime() перевести в дни-часы-минуты ![Smiley](images/smilies/smile.png) буду багодарен
|
Топор, но работает:
http://forum.sa-mp.com/showpost.php?...14&postcount=2
Re: Бан-система по дням [MySQL] -
sk47 - 31.01.2012
https://sampforum.blast.hk/showthread.php?tid=290311
тут есть функция переводящая секунды в дни часы минуты
Re: Бан-система по дням [MySQL] -
eakwarp - 31.01.2012
Quote:
Originally Posted by sk47
|
А что тут переводить? Поделить и все.
Re: Бан-система по дням [MySQL] -
Splav - 31.01.2012
Да мне не надо уже переводить) Степашка помог уже)