[FilterScript] Бан-система по дням [MySQL]
#1

Решил сделать систему бана по дням на 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 (вверху) настроить данные вашей БД (ник, пароль, хост и т.д.)


Скачать свежие версии можно здесь


Если есть замечания, предложения пишите сюда
Убедительная просьба не троллить, если вам данный скрипт кажется бредом, то лучше промолчите
Reply
#2

Quote:
Originally Posted by Splav
View Post
MySQL не является бесплатным.
спасибо посмеялся
Дайте пруфлинк туда где вы нашли платный мускул?!

Если не верите: MySQL
Quote:

Лицензия GNU General Public License
Страница скачивания, даже регистрации не просит: Download MySQL Community Server

PS у него даже исходные коды доступны
Reply
#3

Сорь, оговорился

Я хотел сказать, что чтобы саму Базу Данных арендовать платить нужно
Reply
#4

Quote:
Originally Posted by Splav
View Post
Я хотел сказать, что чтобы саму Базу Данных арендовать платить нужно
да ну?! Это кому это платить надо за то что я размещаю на своих компах/серверах?
Reply
#5

Я имел в виду не локальные и не размещаемые У СЕБЯ на сервере...

P.S. Вам что, лишь бы придраться к чему-нибудь?

Лучше вообще удалю этот абзац
Reply
#6

Нет, учу писать только по сути, и не вставлять в текст лишнюю ни кому не нужную информацию.
Reply
#7

Quote:
Originally Posted by Stepashka
View Post
Нет, учу писать только по сути, и не вставлять в текст лишнюю ни кому не нужную информацию.
А, ну ок Удалил
Reply
#8

Замечания:
Quote:
Originally Posted by Splav
View Post
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 часто встречаемый номер, из-за своей простоты и привлекательности.
Reply
#9

Stepashka, спасибо за замечания. Исправлю

Имя БД также можно настроить. Там есть макрос для него. DBNAME вроде

Только вопросик: почему goto лучше не использовать? И что вместо нее использовать, чтобы сразу перейти на нужный участок кода
Reply
#10

http://ru.wikipedia.org/wiki/GOTO раздел критика.
http://ru.wikipedia.org/wiki/Спагетти-код

Code:
if(!ban) {
...
}
конец
Reply
#11

Подскажите кто-нибудь как можно имея секунды, полученные через gettime() перевести в дни-часы-минуты буду багодарен

P.S. Это нужно, что выводить кол-во дней до разбана. Я переделал там. Теперь кол-во сек до разбана определяется так:

PHP Code:
unbandate-gettime() 
Но получается результат в секундах. Мне бы его в дни-часы перевести
Reply
#12

http://dev.mysql.com/doc/refman/5.1/..._from-unixtime
Reply
#13

а чё не юзаешь для бана NOW()+%d Days допустим, удобней же чем getdate, + можно сразу дату разбана выводить на сайт или в логи.
В бан лист все игроки забаненые не влезут, лучше сделать по страницам, по 20 забаненых на 1 странице и в диалоге кнопками листаешь список + поиск по нику.
Reply
#14

По страницам планируется сделать в будущем.
Reply
#15

Скрипт обновлен до R2

Комментируем, пишем о багах...
Reply
#16

Quote:
Originally Posted by Splav
View Post
Подскажите кто-нибудь как можно имея секунды, полученные через gettime() перевести в дни-часы-минуты буду багодарен
Топор, но работает: http://forum.sa-mp.com/showpost.php?...14&postcount=2
Reply
#17

https://sampforum.blast.hk/showthread.php?tid=290311
тут есть функция переводящая секунды в дни часы минуты
Reply
#18

Quote:
Originally Posted by sk47
View Post
https://sampforum.blast.hk/showthread.php?tid=290311
тут есть функция переводящая секунды в дни часы минуты
А что тут переводить? Поделить и все.
Reply
#19

Да мне не надо уже переводить) Степашка помог уже)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)