Скрипт лимитер, ограничение соединений по ip и символов в чате |
Здравствуйте, гость ( Вход | Регистрация )
Скрипт лимитер, ограничение соединений по ip и символов в чате |
27.8.2011, 20:23
Сообщение
#1
|
|
Освоившийся участник Группа: Пользователи Сообщений: 216 Регистрация: 23.10.2008 Из: Саратов Пользователь №: 865 Спасибо сказали: 60 раз |
Автор: Alexey
Попросил Лешу помочь с написанием этого скрипта, вот что получилось в итоге. Уверен начинающим пригодится т.к. лимитов на русхабе по умолчанию нет. Есть для общего чата в конфиг-файле, но там пользователя просто отключают. Код local nMaxUsers = 1 -- максимальное разрешённое число пользователей с одного IP
---------------------------------------------------------------- function OnUserConnected(UID) tSameIPs = Core.GetUsers(UID.sIP) if tSameIPs and #tSameIPs >= nMaxUsers then local sMsg = "\n [::] В доступе отказано: на хабе уже есть пользователи с этого IP-адреса: " for i,v in ipairs(tSameIPs) do sMsg = sMsg..v.sNick..", " end sMsg = sMsg:sub(1, -3)..".\n [::] Множественные подключения к хабу с одного IP-адреса запрещены." Core.SendToUser(UID, sMsg, "[OP]Домовёнок") Core.Disconnect(UID) end end local nMaxSymbols = 350 -- максимальное разрешённое число символов в гл.чате ---------------------------------------------------------------- function OnChat(UID, sData) local nMaxSymbols = #UID.sNick + nMaxSymbols + 3 if #sData > nMaxSymbols then Core.SendToAll(sData:sub(1, nMaxSymbols).."<...>") return true end end |
|
|
27.8.2011, 23:53
Сообщение
#2
|
|
Освоившийся участник Группа: Пользователи Сообщений: 276 Регистрация: 23.3.2010 Из: РФ Смоленск Пользователь №: 6 429 Спасибо сказали: 60 раз |
ShadoWx, для чата лучше допиши функцию которая отправит этому же юзеру сообщение например такое:
<БОТ> В нашем чате можно отправлять сообщения не более 350 символов, Ваше сообщение:/n Тут текст сообщения юзера P.S. Так как юзеров в том числе и меня бесит когда сообщение просто кушаеться хабом, приходится все писать с начала, что не есть гуд + к юзабилию. ----Некоторое время позднее---- Так же можно посчитать символы сообщения и выдать сколько символов в сообщение юзера. |
|
|
23.9.2011, 8:37
Сообщение
#3
|
|
Освоившийся участник Группа: Пользователи Сообщений: 216 Регистрация: 23.10.2008 Из: Саратов Пользователь №: 865 Спасибо сказали: 60 раз |
Автор: Alexey
Выкладываю поправленную версию скрипта: Код #------------------------------------------------------------------
#Число соединений с одного ip-адреса: #------------------------------------------------------------------ local nMaxUsers = 2 -- максимальное разрешённое число пользователей с одного IP local MainBot = "Network" local sReason = "*** Соединение через прокси запрещено" local sAdminNick = "ShadoWx" #---------------------------------------------------------------- function OnUserConnected(UID) tSameIPs = Core.GetUsers(UID.sIP) if tSameIPs and #tSameIPs >= nMaxUsers then local sMsg = "\n [::] В доступе отказано: на хабе уже есть пользователи с этого IP-адреса: " for i,v in ipairs(tSameIPs) do sMsg = sMsg..v.sNick..", " end sMsg = sMsg:sub(1, -3)..".\n [::] Множественные подключения к хабу с одного IP-адреса запрещены." Core.SendToUser(UID, sMsg, "Network") Core.Disconnect(UID) end end #------------------------------------------------------------------ #Ограничение чата: #------------------------------------------------------------------ local nMaxSymbols = 350 -- максимальное разрешённое число символов в одном сообщении local nMaxNL = 5 -- максимальное разрешённое число строк в одном сообщении чата #------------------------------------------------------------------ function OnChat(UID, sData) local nSymbols = #sData - #UID.sNick - 3 if nSymbols > nMaxSymbols then Core.SendToAll(sData:sub(1, nMaxSymbols - nSymbols)) Core.SendToUser(UID, "Ваше сообщение состоит из ["..nSymbols.."] символов, разрешённый максимум - ["..nMaxSymbols.."].", "Network") Core.SendToUser(UID, "Нажмите сочетание клавиш CTRL+UP и сократите текст своего сообщения.", "Network") return true end local _, nNL = sData:gsub("\n", "\n") if nNL >= nMaxNL then Core.SendToUser("Ваше сообщение содержит "..nNL.." переносов строк, разрешённый максимум - "..nMaxNL..".", "Network") return true end end #------------------------------------------------------------------ #функция блокировки пассивного тега у пользователя #------------------------------------------------------------------ function OnUserEnter(UID) if UID.sMode == "S" then Core.SendToUser(UID,sReason,MainBot) Core.Disconnect(UID.sNick) if Core.GetUser(sAdminNick) then Core.SendToUser(sAdminNick," юзер с ником "..UID.sNick.." и IP "..UID.sIP.." пытался войти на хаб используя прокси !!!",MainBot) else local hFile = io.open ("log.txt" , "a+") if hFile then hFile:write("<"..MainBot.."> юзер с ником "..UID.sNick.." и IP "..UID.sIP.." пытался войти на хаб используя прокси !!!\r\n") hFile:close() end end end end |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 1:08 |