Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

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 за обнаружение ошибки!

 DiapasonGag.lua ( 7.91 килобайт ) : 30
 

Автор: 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

Ага, точно, спасибо, что подсказал, пока другие не скачали. big_smile.gif
Я там сокращал длинный список диапазонов, взяв только начало, и закрыл автоматом таблицу через 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) *
А попробовать самому подвигать и потестировать руки не позволяют?


Так точно!

Спросить легчеbig_smile.gif

Автор: Nickolya 7.10.2010, 14:46

Каждый скрипт лучше ставить первым © bad_smile.gif
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 не стоит извинятся мне уже самому пора вникать в луу!
Вот только нет времени, а неадекватов больше с каждым днём!

спасибо что исправил скрипт, теперь хоть на хабе будет спокойней. big_smile.gif

хм... но что-то сообщения видны другим юзерам в чате

Код
[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> Показ заглушек по параметрам отключён.

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

может из за того что я в белом листе и мой ип тоже в диапазоне!

?!

неа проверил скрипт показывает что пришол юзер с заглушенного диапазона но всё равно не работает скрипт crying.gif

Автор: 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 - не ругайся baffle.gif

спасибо тебе ещё разbig_smile.gif

Автор: 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. Теперь понял , что банить не интересно , лучше заглушить big_smile.gif

Автор: Sergius` 27.1.2012, 14:12

Было бы неплохо прикрутить к скрипту меню, через которую, можно было бы управлять диапазонами заглушек!
Добавление и Удаление.

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

Автор: Ksan 27.1.2012, 14:21

Sergius`, для этого есть другой http://mydc.ru/topic4108.html
А совмещать их нет смысла, у них разные функции, да и объединённый скрипт получится монструозный..
Если считаешь необходимым, нетрудно заглушить через второй скрипт диапазон, куда входит IP рекламщика.
И это делается как раз через меню. Через ОЧЕНЬ большое меню.
Тебе понравится. big_smile.gif

Автор: 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.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок). big_smile.gif
Благодарю CyberGhost404 за обнаружение ошибки!