Скрипт банов для RusHub, тестим и комменьтруем |
Здравствуйте, гость ( Вход | Регистрация )
Скрипт банов для RusHub, тестим и комменьтруем |
4.1.2010, 20:31
Сообщение
#1
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Название скрипта: модуль банов + менеджер банов
Скрипт для: RusHub Автор: Wariner (немного доработал: Setuper) Описание: Модуль банов позволяет использовать функции бана в скриптах. Менеджер банов позволяет забанить, используя команды. Модуль банов не может работать отдельно от менеджера банов, так как менеждер банов содержит основную таблицу с банами. Внимание. Этот скрипт будет работает только с lua плагином, который равен или выше, чем версия v1.4, так как в плагине был устранён баг в функции Core.SetGVal. Теперь расскажу чего я добился. Теперь, подключая модуль Ban в любом скрипте можно будет забанить того или иного пользователя и при этом не нужно будет читать из файла базу забаненных или использовать таблицу с забаненными, - всё это скрыто в модуле Ban. Очень удобно банить с помощью модуля. Ban.lua ( 2.63 килобайт ) Кол-во скачиваний: 389 BanManager.rar ( 2.07 килобайт ) Кол-во скачиваний: 298 Спасибо сказали: |
|
|
3.1.2010, 13:49
Сообщение
#2
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
В общем не успел я доделать всё что хотел, время кончилось. поэтому вот тут выкладываю модуль и скрипт для банов. протестировано на версии 2,0,3
Пока нет разделения на профили... Сам модуль Ban.lua кладём в папку libs Скрипт BanManager.lua с папкой BanManager в папку scripts PS: Илюх жду твоих коментов)) PPS: От остальных жду доработок))))) Спасибо сказали: |
|
|
3.1.2010, 14:16
Сообщение
#3
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Спасибо. Но есть 1 недочёт, который я пока что заметил))) Забанить какого-либо пользователя может любой, кто присутствует на хабе =)))
|
|
|
3.1.2010, 14:19
Сообщение
#4
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Цитата Забанить какого-либо пользователя может любой, кто присутствует на хабе =))) Цитата Пока нет разделения на профили...
|
|
|
3.1.2010, 14:45
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
По логике всё верно, но есть пару моментов.
1) Не думаю, что стоит смешивать модули и плагины в одну кучу. Для модулей есть папка libs. Плагины - это динамические библиотеки, которые подключает хаб. 2) Обычно работа с модулями несколько иная и предполагает некий защитный механизм кода (lua функция module), то есть существование модуля, как таблицы в глобальном окружении. А так в принципе все хорошо на мой взгляд написано. Спасибо. |
|
|
3.1.2010, 15:07
Сообщение
#6
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
1) Не думаю, что стоит смешивать модули и плагины в одну кучу. Для модулей есть папка libs. Плагины - это динамические библиотеки, которые подключает хаб. значит надо просто перенести в папку libs? 2) Обычно работа с модулями несколько иная и предполагает некий защитный механизм кода (lua функция module), то есть существование модуля, как таблицы в глобальном окружении. можно тут поподробнее и с примером?))) |
|
|
3.1.2010, 15:29
Сообщение
#7
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
ban.lua:
Код local base = _G -- ссылка на глобальное окружение module"Ban" -- объявление модуля function CheckBanUser(tTable, sNick, sIP) for i,v in base.pairs(tTable) do if v.Nick == sNick or v.IP == sIP then return true, "Вы забанены!" end end end BanManager.lua: Код require"ban" -- загрузка модуля
if Ban.CheckBanUser(tTable, sNick, sIP) then -- использование функции модуля ... end |
|
|
4.1.2010, 0:00
Сообщение
#8
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поправил с виденьем Илюхи (надеюсь правильно) + произошли некие изменения:
в модуле остались только 2 функции бан и анбан (обе ещё будут дорабатываться!) проверку на забаненость и очистка банов по времени перенесены в сам скрипт! PS: профилей опять же пока нет! UPD: добавил в скрипт функцию просмотра забаненых!!! |
|
|
4.1.2010, 10:15
Сообщение
#9
|
|
Начинающий Группа: Пользователи Сообщений: 21 Регистрация: 11.1.2009 Из: Челябинск, LR Пользователь №: 1 771 Спасибо сказали: 0 раз |
Не работает. Прикрепил скрин. Время выставлял 1m. RusHub 2.0.3 LUA 1.3
Прикрепленные файлы
|
|
|
4.1.2010, 11:12
Сообщение
#10
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поправил. скрипт перезалил!
|
|
|
4.1.2010, 16:43
Сообщение
#11
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
С введением переноса таблиц между скриптами, хотелось бы убрать все нагромождения и запихнуть всё в модуль, кроме таблицы банов, которая будет вызываться модулем. То есть, сделать так как и было задумано с самого начала. Есть модуль, и мы, подключая его к любому скрипту, получаем в этом скрипте доступ к функциям бана и только, а таблица банов нас не волнует.
|
|
|
4.1.2010, 18:37
Сообщение
#12
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Не совсем понял данный коммент....
Сейчас как раз все функции бана (бан и анбан) находятся в модуле, а всё остальное убрано в скрипт который этим управляет. или я опять что то не вкуриЛ? |
|
|
4.1.2010, 18:40
Сообщение
#13
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Сейчас я доработаю и выложу.
По ходу доработки устранил пару багов и немного оптимизировал. |
|
|
4.1.2010, 19:04
Сообщение
#14
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ок жду))))
|
|
|
4.1.2010, 21:18
Сообщение
#15
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
а какая принципиальная разница между работой моей версии и твоей?(на пальцах)
и почему в темпбане показывает кто забанил а в перманенте нет? |
|
|
4.1.2010, 21:36
Сообщение
#16
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
У тебя в функцию BanUser первым аргументом передавалась таблица, что не удобно в использовании в различных скриптах.
В постоянном бане я забыл указать. Перезалил. Код local sPermBanMsg = [[Вы навсегда забанены на этом хабе. Причина: %[REASON] Кто забанил: %[BY] ]] ... if v.Time == "full" then Core.SendToUser(UID, sPermBanMsg:gsub("%%%[REASON%]", v.Reason):gsub("%%%[BY%]", v.By), sBot) Core.Disconnect(UID) else ... Вообще это сообщение можно изменить по желанию админа. Если админ не хочет показывать ник кого, кто забанил, то просто удаляем соответствующую строку в сообщении. |
|
|
4.1.2010, 21:54
Сообщение
#17
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ну с одной стороны да, а с другой ты привязал работу модуля к скрипту. а у меня в любой скрипт можно было сделать dofile и прописать функцию с таблицей. или типо так не оптимально?
|
|
|
4.1.2010, 22:07
Сообщение
#18
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В принципе нет особой разницы в быстроте выполнения, так как баны не часто вызываются, хотя мой вариант будет работать быстрее.
|
|
|
4.1.2010, 22:42
Сообщение
#19
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
понятно)))))
ждём функцию дисконекта по ип наверно)))) |
|
|
5.1.2010, 20:14
Сообщение
#20
|
|
Участник Группа: Пользователи Сообщений: 48 Регистрация: 7.4.2009 Пользователь №: 2 949 Спасибо сказали: 3 раза |
при запуске скрипта "BanManager.lua " произошла ошибка: bad argument #1 to 'StartScript' (script was started already or script was contained mistakes)
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 2:59 |