Версия для печати темы
MyDC.ru _ Служебные скрипты [PtokaX] _ DiapasonGag
Автор: Ksan 7.10.2010, 1:53
Название скрипта: DiapasonGag.lua
Версия: 1.2
Платформа: PtokaX 0.4.1.*+
API: API 2
Автор: Ksan (aka Trans)
Город: Томск
Дата написания: 04-04-2010 (начальная версия - в декабре 2009г)
Описание:
- В скрипте встроенная таблица с диапазонами для заглушки - начало диапазона и конец диапазона.
- При старте скрипта проверяется наличие на хабе юзеров с заглушенных диапазонов, при обнаружении такие ники заносятся в таблицу.
- при входе юзера с таких диапазонов сообщает админу о его приходе (через меню можно отменить этот показ), добавляет ник таблицу,
- далее при попытке написать в чат и приват сначала проверяется наличие в таблице заглуш. ников, если да, то сообщение до остальных юзеров не дойдёт. Админу приходит извещение о попытке написать в чат или приват заглушенным юзером (через меню можно отменить этот показ)
- Извещение о заглушке в чате по выбору через меню можно отправить в чат или в приват админа. Извещение о заглушке в привате админу приходит всегда в приват.
- Имеется таблица команд, которые юзеру разрешено использовать даже при заглушке.
- Имеется таблица ников-исключений.
- Опов не глушит.
В принципе, можно было бы сохранять таблицу заглуш. ников в файл, но особой нужды в этом нет, ибо таблица при старте скрипта заполняется сразу же.
PS: Скрипт был написан давно, и здесь только малая часть возможностей, специально выдрал в пользу голодающих "одминов" (а остальное пусть лучше послужит тихо, контрразведка не любит шума). Думаю, аналогичные скрипты есть на форуме, но пусть и этот посидит скромненько рядом с гигантами мысли...может, пригодится кому.
UPD1: (2010-10-19) Скрипт исправлен, проверен и перезалит.
Приношу свои извинения за невероятно халтурную работу при первом выкладывании. :(
Скрипт тогда собирал в конце бессонной ночи над другим скриптом, и умудрился такие ляпы пропустить..
UPD2: (2013-09-04) Скрипт исправлен, перезалит. Была ошибка - один из флагов был подменён другим и показ захода юзера из заглушенного диапазона не отключался.
UPD3: (2017-03-13) К моему дикому смущению, снова обнаружилась ошибка, исправил и перезалил.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок).
Благодарю CyberGhost404 за обнаружение ошибки!
Автор: Dimon21 7.10.2010, 3:46
Скрипт хорош Ksan,но как исправить вот эту ошибку scripts\DiapasonGag.lua:32: unexpected symbol near 'end'.За ранее спс.
[quote name='Dimon21' date='7.10.2010, 4:31' post='34162']
Скрипт хорош Ksan,но как исправить вот эту ошибку scripts\DiapasonGag.lua:32: unexpected symbol near 'end'.За ранее спс.
Нашёл ошибку.
tDiap = { --- Диапазоны (начало и конец)
["95.81.0.0"] = "95.81.255.255", --- Волгателеком что-то динамич. со спамом
["79.133.0.0"] = "79.133.255.255", --- Волгателеком что-то динамич. со спамом
["188.19.136.0"] = "188.19.143.255", -- ЯНАО (спам по приватам с интим-рекламой)
}
end-удалить поставить экранировку.
Автор: Ksan 7.10.2010, 4:00
Ага, точно, спасибо, что подсказал, пока другие не скачали.
Я там сокращал длинный список диапазонов, взяв только начало, и закрыл автоматом таблицу через end, а не фигурной скобкой, так как перед этим тем же занимался и с другими функциями, обрезая и дописывая end
Перезалил в первом сообщении, исправив опечатку.
Автор: infection 7.10.2010, 12:39
Ksan - В каком порядке его лучше поставить что-бы не возникло проблем?
Код
Settings_saver_1.2.lua
FreshStuff3 5.0.1RUS.lua
BanMsg.lua
CleanReg_API2.lua
Gag__v1.1__API2___by_Wariner.lua
HubMenu.lua
support.lua
anti_adversting_multifunctional_api2_plus.lua
StatPX.lua
Registrator.lua
TotalGag_api2.lua
ChatHistory_N.lua
Автор: Setuper 7.10.2010, 13:33
А попробовать самому подвигать и потестировать руки не позволяют?
Автор: infection 7.10.2010, 13:54
Цитата(Setuper @ 7.10.2010, 13:33)
А попробовать самому подвигать и потестировать руки не позволяют?
Так точно!
Спросить легче
Автор: Nickolya 7.10.2010, 14:46
Каждый скрипт лучше ставить первым ©
infection, придется научить тебя делать что-то самому, тут лентяев не любят.
Автор: Ksan 7.10.2010, 17:01
У меня данный скрипт стоит вторым, после GagMeSoftly..
И да, этот скрипт лучше держать повыше.
Автор: infection 18.10.2010, 20:01
что я не так сделал?
Код
compare nil with number
[19:03] Синтаксис C:\HUB_\PtokaX\0.4.1.2\scripts\DiapasonGag.lua:54: attempt to compare nil with number
и когда через меню сматрю список в чате токо это
!showdiapazgag
вот ещё ошибка
Код
[00:51] Синтаксис C:\HUB_\PtokaX\0.4.1.2\scripts\DiapasonGag.lua:85: attempt to compare nil with number
Автор: Ksan 19.10.2010, 2:55
infection, приношу свои извинения за халтурную работу! :(
Скрипт исправлен, проверен и перезалит в первом сообщении.
Автор: infection 19.10.2010, 14:56
Ksan не стоит извинятся мне уже самому пора вникать в луу!
Вот только нет времени, а неадекватов больше с каждым днём!
спасибо что исправил скрипт, теперь хоть на хабе будет спокойней.
хм... но что-то сообщения видны другим юзерам в чате
Код
[15:50:13 | 192.168.0.2 ] <Cool> тест
[15:51:10 | 192.168.0.2 ] <Cool> а
и в истории сообщения остались хотя скрипт в самом вверху...
Автор: Ksan 19.10.2010, 15:21
1. А попадает ли этот айпи в диапазон заглушенных?
2. И нет ли в списке исключений этого ника?
3. У меня скрипт работает как надо, при включенном показе сообщений заглушенных пишет:
Цитата
[19:18:51] <ReportBot> ( 192.168.1.2 ) Заглушка по диапазону. <Test_user> Тест
В запрещённых стоит диапазон
Код
["192.168.1.2"] = "192.168.1.4",
Ну чем я ещё могу помочь тебе?
Автор: infection 19.10.2010, 16:48
скрипт серьёзно не пашет!
вот у тебя видно что бот блочит и пишет в чат.
у меня только это в лс видно
[17:42:22] <ReportBot> Показ заглушек по параметрам отключён.
но всё равно тот кто в диапазоне может писать в чат!
может из за того что я в белом листе и мой ип тоже в диапазоне!
?!
неа проверил скрипт показывает что пришол юзер с заглушенного диапазона но всё равно не работает скрипт
Автор: Ksan 19.10.2010, 17:06
1. Когда я проверял, я тоже был сам в том самом заглушенном диапазоне. Я мог писать, а второй - он юзер - не мог писать.
Показ/не показ заглушек роли не играет.
2. У тебя всех заглушенных показывает в чате или только кого-то конкретно?
3. Кидай сюда свой скрипт, какой ты сейчас используешь, и покажи, какой конкретно заглушенный ник светится
в чате и каков его профиль и IP
Автор: infection 19.10.2010, 17:11
всё перепроверял всё равно идут сообщения в чат и мне в приват!
и другие видят тоже чат хотя ип в диапазоне!
а вот скрипт
DiapasonGag.lua ( 5.14 килобайт )
: 7
IP-юзера 10.151.78.**
профиль рег
Автор: Ksan 19.10.2010, 20:25
Вот нафиг ты так сделал?
Код
tUnforbid = { -- Разрешенные команды для заглушенных
"",
"",
"",
"",
"",
"",
}
Ты же этим самым в список разрешенных команд записал всё, что пишут в чат...
Не хочешь команд, ну просто закомменти эти строки и всё, или вообще удали все строки, кроме начала и конца таблицы.
Мог бы сразу сказать, какие изменения делал.
Автор: infection 19.10.2010, 21:47
Ksan - не ругайся
спасибо тебе ещё раз
Автор: Ksan 19.10.2010, 23:02
Сорри...просто я себя почувствовал в какой-то момент идиотом...у меня работает - у тебя нет, один и тот же скрипт...Поневоле начнёшь нервничать.
Автор: Dimon21 9.6.2011, 9:23
Ksan здраствуй это отличный скрипт а можеш его под RusHub .Прошу меня сильно не бить и не запускать тапочки если попал не в тему скриптов под птоку.
Автор: Ksan 15.6.2011, 23:35
Dimon21, сорри, но я под РусХаб ещё не пишу, у меня его нет и пока не ожидается..
Попроси кого другого.
Автор: AfLc 31.8.2011, 8:22
Недавно начали флудить по личка рекламой макаронники . Скачал данный скрипт всё работает отлично. Заглушил диапазоны , а они не понимают и всё приходят изредка рекламу кидать . Спасибо !
P.S. Теперь понял , что банить не интересно , лучше заглушить
Автор: Sergius` 27.1.2012, 14:12
Было бы неплохо прикрутить к скрипту меню, через которую, можно было бы управлять диапазонами заглушек!
Добавление и Удаление.
Просто править сам скрипт в ручную, иногда не представляется возможным.
А через меню будет проще, и не только мне.
Автор: Ksan 27.1.2012, 14:21
Sergius`, для этого есть другой http://mydc.ru/topic4108.html
А совмещать их нет смысла, у них разные функции, да и объединённый скрипт получится монструозный..
Если считаешь необходимым, нетрудно заглушить через второй скрипт диапазон, куда входит IP рекламщика.
И это делается как раз через меню. Через ОЧЕНЬ большое меню.
Тебе понравится.
Автор: Sergius` 27.1.2012, 14:26
Цитата(Ksan @ 27.1.2012, 15:21)
Sergius`, для этого есть другой http://mydc.ru/topic4108.html
А совмещать их нет смысла, у них разные функции, да и объединённый скрипт получится монструозный..
Уважаемый
Ksan пожалуйста сделайте меню именно к этому скрипту.
Я вас очень сильно прошу!
Если для вас письменная форма не так внушительна, готов предложить денежную награду, за проделанную работу.
Автор: Ksan 27.1.2012, 14:51
Sergius`, нет.
Не вижу ни одну причину, почему нельзя юзать предложенный мной вариант.
Автор: Sergius` 27.1.2012, 15:02
Цитата(Ksan @ 27.1.2012, 15:51)
Sergius`, нет.
Не вижу ни одну причину, почему нельзя юзать предложенный мной вариант.
Дело в том, что мне нет необходимости использовать ваш предложенный вариант (скрипт).
Автор: Ksan 27.1.2012, 16:52
Sergius`, не будьте капризными и слишком привередливыми.
Мне нет необходимости соединять два скрипта только по желанию одного человека. Это время и усилия. И не надо предлагать деньги, дело не в деньгих.
А поставить ещё 1 скрипт и юзать его как хочется - нетрудно.
Извините..
Автор: Sergius` 27.1.2012, 17:14
Ksan Да, я очень привередливый! Даже слишком. Жаль конечно что мы не смогли договориться.
Автор: Ksan 27.1.2012, 18:35
Sergius`, я тоже привередливый.
И именно потому научился сам писать скрипты, а не клянчить у других то переделать, это придумать, там новый написать..
И переделывать, когда что-то не нравится.
Назвались админом - полезайте в кузов, то бишь, учитесь работать со скриптами, овладевайте языком Луа в пределах, необходимых для написания и переделки скриптов под Птоку..
Это касается всех местных дежурных попрошаек тоже.
Автор: Ksan 4.9.2013, 14:35
UPD:
2013-09-04: Скрипт исправлен, перезалит. Была ошибка - один из флагов был подменён другим и показ захода юзера из заглушенного диапазона не отключался. Обнаружилась после конвертации скрипта под Русхаб.
Автор: dimetro 26.11.2014, 15:42
Код
DiapasonGag.lua:65: attempt to compare number with nil
при перезапуске и заходе пользователей на хаб все время в оп-чат высвечивается.
как исправить?
CODE
--- Скрипт тихой заглушки юзеров-нарушителей по диапазону (особенно удобно против диапазонов с динамическими IP), а также информирования админа о приходе юзера с заглушенного диапазона.
---
--- Название скрипта: DiapasonGag.lua
--- Версия: 1.0
--- Платформа: PtokaX 0.4.1.*
--- API: API 2
--- Автор: Ksan (aka Trans)
--- Город: Томск
--- Дата написания: 04-04-10 (начальная версия - в декабре 2009г)
--- Описание: Глушит по диапазонам из таблицы, при входе юзера с таких диапазонов сообщает админу о его приходе (опционально), заносит ник в отдельную таблицу, далее при попытке написать в чат и приват сначала проверяется наличие в таблице заглуш. ников, если там нет (например, скрипт перезапустили, а юзер уже в хабе, и он не попадет в таблицу) - проверяется по диапазону ещё раз. Имеется таблица команд, которые юзеру разрешено использовать даже при заглушке. Имеется таблица ников-исключений. Опов не глушит.
--- В принципе, можно сохранять таблицу заглуш. ников в файл, но особой нужды в этом нет.
local sBot = SetMan.GetString(21)
local sBot2 = "ReportBot"
local sAdmin = "Dimon"
local sCmd2 = "!showdiapazgag"
local sCmd3 = "!showindiapazgag"
local bFlag2 = false --- Сообщать или нет админу о заглушках
local bFlag3 = false --- Сообщать или нет админу о приходе юзера с заглуш. диапазона
sUngagable = { --- Незаглушаемые ники
["Ева"] = 1,
["Dimon"] = 1,
["Тест"] = 0,
}
tDiap = { --- Диапазоны (начало и конец)
["109.195.168.0"] = "109.195.175.255", --- что-то динамич. со спамом
["176.212.168.0"] = "176.212.175.255", --- что-то динамич. со спамом
["176.212.184.0"] = "176.212.191.255", -- что-то динамич. со спамом
["109.195.160.0"] = "109.195.167.255", -- что-то динамич. со спамом
["176.212.176.0"] = "176.212.183.255", -- что-то динамич. со спамом
["37.113.248.0"] = "37.113.255.255", -- что-то динамич. со спамом
["37.113.232.0"] = "37.113.239.255", -- что-то динамич. со спамом
["37.113.224.0"] = "37.113.231.255", -- что-то динамич. со спамом
["37.113.192.0"] = "37.113.199.255", -- что-то динамич. со спамом
["37.113.200.0"] = "37.113.207.255", -- что-то динамич. со спамом
["37.113.240.0"] = "37.113.247.255", -- что-то динамич. со спамом
["37.113.208.0"] = "37.113.215.255", -- что-то динамич. со спамом
["37.113.216.0"] = "37.113.223.255", -- что-то динамич. со спамом
["94.180.8.0"] = "94.180.15.255", -- что-то динамич. со спамом
["37.112.104.0"] = "37.112.111.255", -- что-то динамич. со спамом
}
tUnforbid = { -- Разрешенные команды для заглушенных
"!старт",
"!стоп",
"!игроки",
"!подскажи",
"!countrystats",
}
tGagNicks = {} -- Заготовка под таблицу с заглуш. никами
function UserConnected(tUser)
if tUser.sNick == sAdmin then
Core.SendToUser(tUser, "$UserCommand 1 1 • Админка •\\Переключения\\ДиапазонГАГ\\Показ заглушек$<%[mynick]> "..sCmd2.."|")
Core.SendToUser(tUser, "$UserCommand 1 1 • Админка •\\Переключения\\ДиапазонГАГ\\Показ прихода$<%[mynick]> "..sCmd3.."|")
end
local tAdmin = Core.GetUser(sAdmin)
if not tUser.bOperator and sUngagable[tUser.sNick] ~= 1 then
for i, v in pairs(tDiap) do --- По диапазону
decIP1 = IPtoDec(i)
decIP2 = IPtoDec(v)
if iIP >= decIP1 and iIP <= decIP2 then
if tAdmin and bFlag3 then
Core.SendPmToNick(sAdmin, sBot2, " Пришёл юзер с заглушенного диапазона. Ник - "..tUser.sNick.." IP - "..sIP)
tGagNicks[tUser.sNick] = true
end
end
end
collectgarbage()
end
end
RegConnected = UserConnected
OpConnected = UserConnected
function ChatArrival(tUser, sData)
Core.GetUserAllData(tUser)
local s,e,sMsg = string.find(sData,"%b<>%s*(.*)%|")
local sData = string.sub(sData, 1, -2)
local sIP = tUser.sIP
local tAdmin = Core.GetUser(sAdmin)
iIP = IPtoDec(sIP)
if not tUser.bOperator and sUngagable[tUser.sNick] ~= 1 then
if not CheckUnforbid(sData) then
if tGagNicks[tUser.sNick] then
Core.SendToUser(tUser, sData)
if tAdmin and bFlag2 then
Core.SendPmToNick(sAdmin, sBot2, "( "..sIP.." ) Заглушка по диапазону. "..sData)
end
else
for i, v in pairs(tDiap) do --- По диапазону
decIP1 = IPtoDec(i)
decIP2 = IPtoDec(v)
if iIP >= decIP1 and iIP <= decIP2 then
Core.SendToUser(tUser, sData)
return true
end
end
end
collectgarbage()
end
end
end
ToArrival = ChatArrival
function IPtoDec(sIP) --- Конвертирование IP в целочисленный вид
if sIP then
local a,b,c,d = sIP:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
if a and b and c and d then
return a*16777216 + b*65536 + c*256 + d
end
end
end
function CheckUnforbid(sArgument) -- Проверка на разрешённые слова
sArgument = StringLower(sArgument)
for i = 1, #tUnforbid do
sUnforbidi = StringLower(tUnforbid[i])
--- if string.find(sArgument, sUnforbidi, 1, true) then
if sUnforbidi == sArgument:match("^(%S+).*") then -- если вдруг будет ошибка на этой строке, то её надо закомментить и раскомментить предыдущую
return true
end
end
end
function StringLower(arg) -- Приведение к строчным буквам
local res = ""
local Byte, Len = nil, string.len(arg)
arg = string.lower(arg)
for i = 1, Len do
Byte = string.byte(arg, i)
if (Byte >= 192) and (Byte < 224) then
Byte = Byte + 32
end
if (Byte == 168) or (Byte == 184) then
Byte = 229
end
res = res..string.char(Byte)
end
return res
end
function OnError(s) --- Отправка ошибки в Опчат
Core.SendToOpChat(s)
end
вот код.
Автор: Артём 27.11.2014, 0:18
dimetro, а код зачем или он дополнялся и отличается от оригинала в первом посте?
Автор: dimetro 27.11.2014, 0:49
Цитата(Артём @ 26.11.2014, 23:18)
dimetro, а код зачем или он дополнялся и отличается от оригинала в первом посте?
на менялся вроде, но не я добавлял туда диапазоны и т.д.\ поэтому на всяк случай.
Автор: Ksan 27.11.2014, 3:18
dimetro,
Похоже, я две строки забыл оставить в скрипте (я этот скрипт переделывал со своего более расширенного).
Нужно вот что сделать - в коде функции
Код
function UserConnected(tUser)
после строки (возможно, номер этой строки у вас - 60):
Код
local tAdmin = Core.GetUser(sAdmin)
нужно вставить вот эти 2 строки:
Код
local sIP = tUser.sIP
local iIP = IPtoDec(sIP)
затем сохранить скрипт и перезапустить его.
Прошу прощения за свой ляп!
Автор: dimetro 27.11.2014, 15:31
Цитата(Ksan @ 27.11.2014, 2:18)
dimetro,
Похоже, я две строки забыл оставить в скрипте (я этот скрипт переделывал со своего более расширенного).
Нужно вот что сделать - в коде функции
Код
function UserConnected(tUser)
после строки (возможно, номер этой строки у вас - 60):
Код
local tAdmin = Core.GetUser(sAdmin)
нужно вставить вот эти 2 строки:
Код
local sIP = tUser.sIP
local iIP = IPtoDec(sIP)
затем сохранить скрипт и перезапустить его.
Прошу прощения за свой ляп!
Вставил код-все работает. Спасибо!
Автор: Ksan 13.3.2017, 3:04
UPD-3: (2017-03-13)
К моему дикому смущению, снова обнаружилась ошибка, исправил и перезалил в сообщении #1.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок).
Благодарю CyberGhost404 за обнаружение ошибки!