myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Protector, API2 | бот всё в одном

Рейтинг 5 V
Теги
Нет тегов для показа
Wariner
сообщение 14.11.2008, 23:13
Сообщение #1


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Название скрипта: Protector
Версия скрипта: v1.1 RC1
Версия API: API2
Автор Wariner
Возможности:
  • Инфо о юзерах
  • Отключение поиска и скачки как наказания
  • Заглушка и бан не зависящие от хаба. Если не указанно время оно устанавливается в зависимости от предыдущих наказаний.
  • Рекорды хаба(запись сообщение о новых рекордах и показ из меню)
  • Топ по шаре
  • Топ по сообщениям
  • Топ по времени проведённому на хабе
  • Топ заглушек
  • Топ банов
  • Топ заглушек среди ОПов(кто сколько заглушил)
  • Топ банов среди ОПов(аналогично заглушкам)
  • Функция когда был(предусматривает вариант присутствия юзера на хабе)
  • Логирование дисконектов юзеров (чисто технический момент, после тестов функция будет удалена)
  • Функции для топика(сообщение в чат о смене + функция несменяемого топика для админов)
  • Менеджер скриптов(подключение перезагрузка и остановка скриптов как по одному так и всех сразу + возможность перемещения скриптов в списке птоки! Всё из меню!)
  • Логирование ошибок скрипта
  • Логирование мейнчата
  • Сообщения в оффлайн
  • Чат операторов(в мейне)
  • Показ времени жизни хаба
  • Смена профиля юзера
  • История наказаний(показывается при вызове инфо о юзере)



Проект к сожалению мёртв

Прикрепленные файлы
Прикрепленный файл  Protector.rar ( 15.87 килобайт ) Кол-во скачиваний: 950
 


Спасибо сказали:
Go to the top of the page
+Quote Post
5 страниц V   1 2 3 > »   
Начать новую тему
Ответов
Setuper
сообщение 15.11.2008, 13:56
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




По-моему это функции, выдранные из хуббы по большей (или по меньшей) части, ну и кое-что конечно дописано))
Go to the top of the page
+Quote Post
Андреw
сообщение 15.11.2008, 15:19
Сообщение #3


Участник
**

Группа: Пользователи
Сообщений: 47
Регистрация: 29.7.2008
Из: керчь
Пользователь №: 293
Спасибо сказали: 0 раз




нажимая на ник юзера хорошо былобы добавить забанить этого юзера и также со всем остальным чтобы постоянно не вводить ник или айпи
Go to the top of the page
+Quote Post
Wariner
сообщение 16.11.2008, 11:39
Сообщение #4


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Цитата(Setuper @ 15.11.2008, 13:56) *
По-моему это функции, выдранные из хуббы по большей (или по меньшей) части, ну и кое-что конечно дописано))

Ты имеешь ввиду по тому что они делают или то что я из хуббы их скопировал?! Если второе то отвечаю сразу почти весь код написан своими руками(схожесть с хуббой появляется из за того что на хабе стоит он у меня и многие функции в нём меня устраивают!)

PS: более глобальных комментариев не будет?
Go to the top of the page
+Quote Post
Setuper
сообщение 16.11.2008, 12:33
Сообщение #5


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




Скрипт не устанавливал и не тестил, по внешнему виду всё определяю. Действительно по коду ничего общего с хуббой нет (общее только вид таблиц, хотя ты используешь простые таблицы, а хубба метатаблицы).

По поводу опимизации:
1). Вместо конструкций вида:
Код
if sType == nil then
лучше писать логические конструкции:
Код
if not sType then
Логическая операция всегда выполняется быстрее, чем операция сравнения.

2). В соответствие с http://mydc.ru/ipb.html?s=&showtopic=5...post&p=4342 следует писать:
Код
sData = sPath.."Data/"
sText = sPath.."Text/"

3). Если известна таблица пользователя, то лучше отсылать сообщение пользователю, а не нику. То есть вместо Core.SendToNick использовать Core.SendToUser. При отправке нику всё равно идет поиск этого пользователя на хабе и после этого идет отправка пользователю (это из-за того, что таблица пользователя содержит "виртуальное" поле userdata, которое однозначно идентифицирует пользователя и через которое происходит отсылка сообщений).

4). По возможности избегать лишних конкатенаций. То есть вместо кода:
Код
local msg = "\r\n\r\n"..string.rep ("=", 60).."\r\n"..
"    Пользователи, использовавшие этот ник:\r\n"..
string.rep ("=", 60).."\r\n"..
"\t      IP\t\tТекущий ник\r\n"
лучше использовать код:
Код
local msg = "\r\n\r\n"..string.rep ("=", 60).."\r\n    Пользователи, использовавшие этот ник:\r\n"..
string.rep ("=", 60).."\r\n\t      IP\t\tТекущий ник\r\n"


5). Лучше Использовать один вызов функции отправки сообщения. То есть вместо кода:
CODE
if tOPs[tUser.iProfile] == 1 then
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Бан\\Забанить$<%[mynick]> !banuser %[line:Введите Ник или IP] %[line:Введите время бана] %[line:Введите причину бана]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Бан\\Разбанить$<%[mynick]> !unbanuser %[line:Введите Ник или IP]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Бан\\Список забаненых$<%[mynick]> !showbanuser&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Гаг\\Заглушить$<%[mynick]> !gaguser %[line:Введите Ник или IP] %[line:Введите тип(main, pm или full)] %[line:Введите время заглушки] %[line:Введите причину заглушки]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Гаг\\Снять заглушку$<%[mynick]> !ungaguser %[line:Введите Ник или IP]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Гаг\\Список заглушенных$<%[mynick]> !showgaguser&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Другие наказания\\Лишить поиска$<%[mynick]> !noseachuser %[line:Введите IP или Ник]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Другие наказания\\Вернуть поиск$<%[mynick]> !yesseachuser %[line:Введите IP или Ник]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Другие наказания\\Лишить скачки$<%[mynick]> !nodownloaduser %[line:Введите IP или Ник]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Другие наказания\\Вернуть скачку$<%[mynick]> !yesdownloaduser %[line:Введите IP или Ник]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Меню администрации\\Информация о юзере$<%[mynick]> !ui %[line:Введите IP или Ник]&#*124;")
end
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Рекорды хаба$<%[mynick]> !hubrecord&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ по шаре$<%[mynick]> !sharatop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ по сообщениям$<%[mynick]> !msgtop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ заглушенных$<%[mynick]> !gagtop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ забаненых$<%[mynick]> !bantop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ глушащих$<%[mynick]> !opgagtop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Статистика хаба\\Топ банящих$<%[mynick]> !opbantop&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Инфо о юзерах\\Когда был$<%[mynick]> !whenwas %[line:Введите IP или Ник]&#*124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 3 Регистрация\\Сменить ник$<%[mynick]> !changenick %[line:Введите Ник]&#*124;")

использовать код:
CODE
local sMsg=""
if tOPs[tUser.iProfile] == 1 then

sMsg="$UserCommand 1 3 Меню администрации\\Бан\\Забанить$<%[mynick]> !banuser %[line:Введите Ник или IP] %[line:Введите время бана] %[line:Введите причину бана]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Бан\\Разбанить$<%[mynick]> !unbanuser %[line:Введите Ник или IP]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Бан\\Список забаненых$<%[mynick]> !showbanuser&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Гаг\\Заглушить$<%[mynick]> !gaguser %[line:Введите Ник или IP] %[line:Введите тип(main, pm или full)] %[line:Введите время заглушки] %[line:Введите причину заглушки]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Гаг\\Снять заглушку$<%[mynick]> !ungaguser %[line:Введите Ник или IP]&#*124;")
"$UserCommand 1 3 Меню администрации\\Гаг\\Список заглушенных$<%[mynick]> !showgaguser&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Другие наказания\\Лишить поиска$<%[mynick]> !noseachuser %[line:Введите IP или Ник]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Другие наказания\\Вернуть поиск$<%[mynick]> !yesseachuser %[line:Введите IP или Ник]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Другие наказания\\Лишить скачки$<%[mynick]> !nodownloaduser %[line:Введите IP или Ник]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Другие наказания\\Вернуть скачку$<%[mynick]> !yesdownloaduser %[line:Введите IP или Ник]&#*124;|"..
"$UserCommand 1 3 Меню администрации\\Информация о юзере$<%[mynick]> !ui %[line:Введите IP или Ник]&#*124;|"..
end
sMsg=sMsg.."$UserCommand 1 3 Статистика хаба\\Рекорды хаба$<%[mynick]> !hubrecord&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ по шаре$<%[mynick]> !sharatop&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ по сообщениям$<%[mynick]> !msgtop&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ заглушенных$<%[mynick]> !gagtop&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ забаненых$<%[mynick]> !bantop&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ глушащих$<%[mynick]> !opgagtop&#*124;|"..
"$UserCommand 1 3 Статистика хаба\\Топ банящих$<%[mynick]> !opbantop&#*124;|"..
"$UserCommand 1 3 Инфо о юзерах\\Когда был$<%[mynick]> !whenwas %[line:Введите IP или Ник]&#*124;|"..
"$UserCommand 1 3 Регистрация\\Сменить ник$<%[mynick]> !changenick %[line:Введите Ник]&#*124;"
Core.SendToUser(tUser,sMsg)
* - удалить везде. Обрати внимание как организована отправка команд. В конце каждой коданды ставится символ |. Отправка всех этих команд происходит одной строкой и при одном вызове функции отправки, а дальше клиент пользователя сам разберётся как эту отправленную строку разбить на несколько менюшек. То есть таким образом снимается нагрузка на сервер. В моём коде также можно убрать лишние конкатенации о которых я говорил в предыдущем пункте.

6). Все арифметические действия (если известны все цифры) надо делать самому, дабы не нагружать процессор лишними вычислениями. То есть, например, вместо кода:
Код
sGagTime = os.time()+12*30*24*60*60*tonumber(sNumber)
следует писать:
Код
sGagTime = os.time()+31104000*tonumber(sNumber)
Go to the top of the page
+Quote Post
Wariner
сообщение 16.11.2008, 17:29
Сообщение #6


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Ну вот это уже дело)))) Исправлю и продолжу работу над ним)))

Большое спасибо
Go to the top of the page
+Quote Post
dimetrius
сообщение 17.11.2008, 0:36
Сообщение #7


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 281
Регистрация: 24.6.2008
Из: Луганск
Пользователь №: 70
Спасибо сказали: 45 раз




а нельзя сделать чтоб наказания всё же были зависимыми от хаба?
Go to the top of the page
+Quote Post
Wariner
сообщение 18.11.2008, 19:55
Сообщение #8


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Вот прочитал и задумался... Почему сделал именно так?! Точно не знаю... Но у хаба нет заглушки PM нет заглушки на время тут эти функции присутствуют и зачем делать половину функций так а половину по другому + добавлю хабовские команды бана и заглушки в исключения(на них не будет реакции) а то как в хуббе ОП забанил а ты потом ищешь чем он это сделал)))
Go to the top of the page
+Quote Post
dimetrius
сообщение 26.11.2008, 16:07
Сообщение #9


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 281
Регистрация: 24.6.2008
Из: Луганск
Пользователь №: 70
Спасибо сказали: 45 раз




очень жду обновлений!
Go to the top of the page
+Quote Post
Wariner
сообщение 26.11.2008, 20:59
Сообщение #10


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Особо далеко я не продвинулся... Поправил все места по которым были сделаны замечания и сам нашёл пару багов, добавил таблицу команд на которые хаб реагировать не будет(чтобы банили и глушили одними командами) + добавил сообщение в оффлайн))) качаем из первого поста

2dimetrius: а ты его используешь? Если да то поделись: если ли баги? скоко памяти жрёт и т.д.)))
Go to the top of the page
+Quote Post
dimetrius
сообщение 28.11.2008, 19:11
Сообщение #11


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 281
Регистрация: 24.6.2008
Из: Луганск
Пользователь №: 70
Спасибо сказали: 45 раз




Пока не использую, но хочу перевести хаб на новую версию, а поскольку сейчас использую хуббу, а избавиться от него хочется... В нём больше всего нравится система наказаний, я много раз уже просил сделать подобный скрипт, но никто не откликался! Ты первый, за что большое спасибо! Но увы нет времени сразу попробовать, приходится постоянно думать как заработать и хаб сюда не вписывается! big_smile.gif
Go to the top of the page
+Quote Post
FallenAngel
сообщение 29.11.2008, 14:51
Сообщение #12


[n00b]
*****

Группа: Пользователи
Сообщений: 291
Регистрация: 10.7.2008
Из: Россия,Пенза
Пользователь №: 168
Спасибо сказали: 24 раза




на 0411 выдает ошибки
[11:44] Синтаксис ...\0.4.1.1\scripts\Protector.lua:690: attempt to index field '?' (a nil value)
[11:44] Синтаксис ...\0.4.1.1\scripts\Protector.lua:698: attempt to index field '?' (a nil value)
причем чаще всего ошибку выдает в 698 строчке,но при этом скрипт работает нормально...в чате,все что надо показывает..
Go to the top of the page
+Quote Post
Setuper
сообщение 29.11.2008, 15:03
Сообщение #13


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1707 раз




Эти ошибки могут возникать из-за того, что скрипт был запущен, когда на хабе уже были пользователи.
Избежать этого можно следующим образом: остановить хаб, запустить скрипт, запустить хаб.
Это происходит из-за того, что пользователи записываются в базу только при входе на хаб.

Автору нужно было предусмотреть запуск скрипта при уже имеющихся пользователях на хабе. Однако, для этого надо было при запуска скрипта сделать перебор по таблице всех пользователей и запись пользователей в базу.
Go to the top of the page
+Quote Post
FallenAngel
сообщение 29.11.2008, 15:32
Сообщение #14


[n00b]
*****

Группа: Пользователи
Сообщений: 291
Регистрация: 10.7.2008
Из: Россия,Пенза
Пользователь №: 168
Спасибо сказали: 24 раза




и вот еще небольшашие "баги"
Цитата
Cтатус закачки: Закачка включена
Статус закачки: Юзер заглушен
Статус бана: Юзер забанен
Юзер сейчас на хаб

Два раза про закачку сказано и почему то неверную инфу о бане выдает....Если с первым я то лично и справлюсь,то со вторым не смогу(...
Go to the top of the page
+Quote Post
Wariner
сообщение 30.11.2008, 19:49
Сообщение #15


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Дописал добавление в таблицу при старте скрипта. Пофиксил ещё пару ошибок)))
2FallenAngel: по поводу вывода информации о юзерах, попробуй новую версию, если всё останется также посмотрю))

PS: файл как всегда в первом посте
Go to the top of the page
+Quote Post
FallenAngel
сообщение 2.12.2008, 0:05
Сообщение #16


[n00b]
*****

Группа: Пользователи
Сообщений: 291
Регистрация: 10.7.2008
Из: Россия,Пенза
Пользователь №: 168
Спасибо сказали: 24 раза




на данный момент:
посмотрел списки банов-никого не показало(что так НЕ должно бытть-ибо человека уже бот один забанил за вход с двумя никами)..потом я забанил человека на 15 минут
[23:56:59] <Protector> Юзер с ником: !ErRoR! и IP ********* был забанен на: 15 мин. 0 сек. Наказал: АДМИН Причина: проверка)
но потом когда решил лицезртеь кто в бане выдало команду в чат(до этого не показало)
[23:57:53] <АДМИН> !showbanuser
зы-если что то еще подпишу-пока что больше не нашел багов big_smile.gif
и вдогонку-в топе по забаненным тот ник-!ErRoR! -отобразился...
и еще одно добавление big_smile.gif-когда банишь через скрипт в списке в самой птоке не отображаются(((
Go to the top of the page
+Quote Post
Wariner
сообщение 2.12.2008, 9:01
Сообщение #17


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




По поводу отображения в птоке банов: так задумывалось, скрипт использует свою систему банов не зависящую от птоки. в дальнейшем планируется сделать антирекламу антимат и т.д. чтоб всё наказания вел бот.
по поводу ошибок, как приду домой посмотрю.


Чуть позже:
Итак вот я и дома... Потестил скрипт на птоке 0400 всё работает прекрасно, перенёс на 0411 такой же результат. Не понимаю в чём проблема((( напиши ошибки если они были. Сегодня завтра выложу скрипт с парой новых функций.
Go to the top of the page
+Quote Post
FallenAngel
сообщение 2.12.2008, 19:23
Сообщение #18


[n00b]
*****

Группа: Пользователи
Сообщений: 291
Регистрация: 10.7.2008
Из: Россия,Пенза
Пользователь №: 168
Спасибо сказали: 24 раза




[19:21] Синтаксис ...\0.4.1.1\scripts\Protector.lua:853: attempt to concatenate field 'Type' (a nil value)
Вот такую ошибку выдает при просмотре забаненных юзеров....
PS-извини,что сразу забыл указать...
Go to the top of the page
+Quote Post
Wariner
сообщение 2.12.2008, 19:44
Сообщение #19


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 439 раз




Так эту ошибочку я поправил +
добавил антисуицид(чтоб не банило не кикало самого себя)
добавил запись ошибок в таблицу. храница будет в папке скрипта\Data\Error.tbl (сделал малость бредовую идею, с переводом ошибок на русский при записи в таблицу, как тестовый вариант несколько слов)
сделал парочку улучшений

PS как всегда в первом посте
Go to the top of the page
+Quote Post
FallenAngel
сообщение 2.12.2008, 21:15
Сообщение #20


[n00b]
*****

Группа: Пользователи
Сообщений: 291
Регистрация: 10.7.2008
Из: Россия,Пенза
Пользователь №: 168
Спасибо сказали: 24 раза




Благодарим-сbig_smile.gif пока что ошибок и\или нареканий нет...только если одно...нету все таки в менюшке сообщения в оффланй...
зы-и еще плоховато все таки что нельзя два ника иметь хотя бы администратору..сидел я как админ,но потом решил перезайти,но с другим ником,чтобы проверить менбшку,так стало выдать сообшение чтобы я сменил ник(....
Go to the top of the page
+Quote Post

5 страниц V   1 2 3 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Protector
От темы с ID: 639
4 Wariner 3 503 1.12.2013, 20:07 Посл. сообщение: Артём
No New Posts Нужно вырезать "куски" из бота Protector
Сам не могу, из-за нехватки знаний...
8 TIRAN 5 705 1.4.2010, 18:10 Посл. сообщение: Accelerator
Moved Protector
API2| бот всё в одном
0 Wariner 0 10.11.2009, 15:11 Посл. сообщение: Wariner

 



RSS Сейчас: 16.8.2018, 7:20