SA-MP Forums Archive
[FilterScript] Бан-система по дням [MySQL] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [FilterScript] Бан-система по дням [MySQL] (/showthread.php?tid=314293)



Бан-система по дням [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
View Post
MySQL не является бесплатным.
спасибо посмеялся
Дайте пруфлинк туда где вы нашли платный мускул?!

Если не верите: 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
View Post
Я хотел сказать, что чтобы саму Базу Данных арендовать платить нужно
да ну?! Это кому это платить надо за то что я размещаю на своих компах/серверах?


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
View Post
Нет, учу писать только по сути, и не вставлять в текст лишнюю ни кому не нужную информацию.
А, ну ок Удалил


Re: Бан-система по дням [MySQL] - Stepashka - 29.01.2012

Замечания:
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 часто встречаемый номер, из-за своей простоты и привлекательности.


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() перевести в дни-часы-минуты буду багодарен

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
View Post
Подскажите кто-нибудь как можно имея секунды, полученные через gettime() перевести в дни-часы-минуты буду багодарен
Топор, но работает: 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
View Post
https://sampforum.blast.hk/showthread.php?tid=290311
тут есть функция переводящая секунды в дни часы минуты
А что тут переводить? Поделить и все.


Re: Бан-система по дням [MySQL] - Splav - 31.01.2012

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