Версия для печати темы
MyDC.ru _ Служебные скрипты [PtokaX] _ Антикапс
Автор: Jaska 2.6.2008, 21:35
Выкладываю АнтиКапс. Автора не знаю я всего лишь приукрасил чуть, да и под новую API перевел 
AntiCaps.zip ( 2.08 килобайт )
: 516
Автор: derSpinner 1.7.2008, 16:22
а там внутр.файл типо бинарный
Автор: Prizrak112 28.8.2008, 2:44
Парни привет!!!Напишите как правильно Скрипт ставить все перепробывал невыходит плиизззз!"!!
Автор: dimetrius 29.8.2008, 7:29
Jaska, а нельзя под 0,3,6,0 выложить?
Автор: Prizrak112 1.9.2008, 2:05
Люди кто нето выложите под новую API 2 птоку скрипт Антикапса долго мучаюсь найти немогу!!!!!!!!!Плиииииииииииииииииииииииииииииз
Автор: Nickolya 1.9.2008, 11:01
Может это подойдет? Скрипт подделал под универсальный, будет работать на любой птоке с луа 5.1. Работает в фоновом режиме, никаких сообщений или предупреждений не оставляет, настройка простая - со скольки символов сообщения реагировать и процент капса, при котором сработает скрипт.
Автор: Prizrak112 1.9.2008, 17:22
Неподходит ну просто никак кто нето помогите зделать антикапс под птоку 0 4 1 1 неужели некто незнает как я я???пажалууууста
Автор: fixx 2.9.2008, 8:22
Все прекрасно работает на 0.4.1.1 ... в чем проблема-то? Может галочки "включить скрипты" нет в птоке?
Автор: dimetrius 2.9.2008, 8:37
Nickolya, может ты туда ещё допишешь чтоб обрезались знаки препинания, если их больше трёх?
Автор: Nickolya 2.9.2008, 18:21
Дописал
+ добавил профили, которые проверяются скриптом
*** Скрипт качаем из поста ниже ***
Автор: dimetrius 2.9.2008, 22:36
спасибище огромное
Автор: Nickolya 3.9.2008, 12:12
Пжалуста

Нашел вот один баг в новой функции: при наличии подряд не максимального ряда символов, а потом их повторе без разделения другими символами, второй и следующие ряды урезаются, к примеру "! раз! два!! три!!!" будет урезано в "! раз! два! три". Исправленную версию качаем из этого поста.
Автор: Prizrak112 4.9.2008, 0:38
Николя да нет же это нетот скрипт совершенно не тот вот человек вверху выложил вот этот нужен чтобы кто нето из пользователей написал большими буквми в чат фразу а бот выдавал при этом сообщение модератору чата вот такова типа: Внимание Пользователь под ником- (его ник) IP-адрес: его адрес попытался отправить в общий чат «Caps-Lock» сообщение.сам на одном из хабов видел прикольная вещь бот небанит а просто сообщает а в чат вылетает такая фраза пользователю:! Использование «Caps-Lock»'а на хабе разрешено только в умеренных количествах! Уважайте окружающих очень нужно бы зделать может кто нето поможет все таки??
Автор: fixx 4.9.2008, 7:59
Prizrak112 , скрипт, который выложили в начале темы БИНАРНЫЙ, поправить его может только аффтар, ну или пусть выложит исходник, а мы уж найдем, как добавить Core.SendPmToOps ..
Автор: drushka 4.9.2008, 19:08
вот такое пожелание..дописать скрипт так чтоб при капсе в чате не просто переводились буквы с больших на маленькие но еще и шло сообщение от бота например БОТ: УВАЖАЕМЫЙ ПЕРЕСТАНЬТЕ ОРАТЬ НА ХАБЕ.. ну или что то в этом роде :smile2:
Автор: Prizrak112 5.9.2008, 0:42
Цитата(drushka @ 4.9.2008, 19:08)

вот такое пожелание..дописать скрипт так чтоб при капсе в чате не просто переводились буквы с больших на маленькие но еще и шло сообщение от бота например БОТ: УВАЖАЕМЫЙ ПЕРЕСТАНЬТЕ ОРАТЬ НА ХАБЕ.. ну или что то в этом роде :smile2:
вот так можно это же просто как скрип Janus_.lua только там бот сообщает о рекламе и антимате а тут будет сообщать о капс локе модератору чата вот и все
Автор: СТУДЕНТ 5.9.2008, 13:03
Спасибо за скрипт
Автор: drushka 5.9.2008, 19:03
Цитата(Prizrak112 @ 5.9.2008, 1:42)

вот так можно это же просто как скрип Janus_.lua только там бот сообщает о рекламе и антимате а тут будет сообщать о капс локе модератору чата вот и все
зачем сообщать об этом модеру.....я имел ввиду чтоб писалась фраза именно тому юзеру который применил капс и больше никто это сообщение не видел ни другие юзеры не модеры..
Автор: Ears 9.3.2009, 19:15
Доброго времени суток! и сразу к делу: скрипт конечно здоровский, но можно ли зделать так, чтобы он не коверкал величину букв в никах
Автор: степашка 18.3.2009, 20:38
Цитата(Ears @ 9.3.2009, 19:15)

Доброго времени суток! и сразу к делу: скрипт конечно здоровский, но можно ли зделать так, чтобы он не коверкал величину букв в никах

=========================
да, кстати, вопрос по существу! без антикапса никак, вот народ недоволен что ники тоже все приводятся в нижний регистр. экспериментировал с настройками процентов антикапса, но подобрать под все возможные варианты длины/количества_букв_в_нике это нереально. а вместо процентов можно сделать например типа "не более 1 капс-слова во фразе", "не более 2", "не более трёх" и т. д. а вообще скрипт очень хороший и полезный, спасибо автору. отдельная благодарность если будет переделан с учётом вышеозначенных моментов. а если ещё и меню будет... но это я уже наглею наверное... [птока 0360]
Автор: Wariner 18.3.2009, 21:48
замени в скрипте
Код
function ChatArrival(tUser, sData)
local sNick = tUser.sNick or tUser.sName
_,_,sData = string.find(sData,"%b<>(.*)")
if sData:len() >= iCheckSize then
Автор: Артём 22.3.2009, 16:52
Цитата(Nickolya @ 3.9.2008, 12:12)

Пжалуста

Нашел вот один баг в новой функции: при наличии подряд не максимального ряда символов, а потом их повторе без разделения другими символами, второй и следующие ряды урезаются, к примеру "! раз! два!! три!!!" будет урезано в "! раз! два! три". Исправленную версию качаем из этого поста.
2Nickolya 
плз поправь чтобы скрипт не издевался над никами юзеров,а то жалоб много...Зарание спасибо
P.S. 2Wariner плз не удаляй пост и не наказуй,а то ты можешь :P ,код который ты выше писал я вставлял в скрипт
Nickolya (NoCaps___v1[1].1b__.lua) но не помогло,как резал ники так и режит....
Автор: Setuper 22.3.2009, 19:40
По коду скрипт не должен затрагивать ники
Автор: степашка 22.3.2009, 21:03
Цитата(Setuper @ 22.3.2009, 19:40)

По коду скрипт не должен затрагивать ники
=========================
режет ники как и прежде. показалось что не режет из-за того что хорошо совпал процент, выставляемый в скрипте. однако при дальнейшей проверке стало ясно что это были частные случаи, а скрипт ники режет. просьба устранить сей досадный момент и, если возможно, вместо процентого реагирования скрипта ввести функцию типа "разрешить N капс-слов на сообщение" с возможностью регулирования параметра N. а процентная система только вносит путаницу. спасибо
Автор: Setuper 22.3.2009, 21:09
Хватит. Ничего он не режет!!!
Скрипт не трогает ник вообще!!!
Автор: Артём 22.3.2009, 21:17
Вот зашёл под простым юзером....
<МаЙлИк> (((s@mbuk@))): тест
<МаЙлИк> (((s@mbuk@))): лдьждлвыьа
<МаЙлИк> (((s@mbuk@))):
вот админом....
<Артём> ((((S@MBUK@)))):
<Артём> ((((S@MBUK@)))): ТЕСТ
P.S. Ник затрагивает
( Сообщение№12 )
Автор: Ears 22.3.2009, 21:20
Цитата(Setuper @ 22.3.2009, 23:09)

Хватит. Ничего он не режет!!!
Скрипт не трогает ник вообще!!!
извеняюсь, но я ничего не делал со скриптом, просто скачал и скопировал в папку, и всё затем зашёл в клиент на хаб под двумя разными никами и вот что выдало
[23:17:03] <E-Ars1> e-ars: тест номер адин )
[23:17:09] <E-Ars1> e-ars: тест номер два ))
=(((((
Автор: Wariner 22.3.2009, 21:20
так и надо было говорить что ник того кому пишешь а не нести ахинею!!!!!!!!!
Автор: Артём 22.3.2009, 21:24
2Wariner Я не писал что он режит,я писал что " чтобы скрипт не издевался над никами юзеров,а то жалоб много..."
Автор: Setuper 22.3.2009, 21:27
Код
function ChatArrival(tUser, sData)
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
local nk, data = sData:match"(%S+): (.*)"
if nk and (Core.GetUser(nk) or GetItemByName(nk)) then
sData = data
end
Автор: Артём 22.3.2009, 21:38
2Setuper А под скрипт Nickolya не подскажешь? NoCaps___v1[1].1b__.lua
Автор: Setuper 22.3.2009, 21:41
Код
function ChatArrival(tUser, sData)
if tAdmins[tUser.iProfile] and tAdmins[tUser.iProfile] == 1 then
return
end
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
local nk, data = sData:match"(%S+): (.*)"
if nk and (Core.GetUser(nk) or GetItemByName(nk)) then
sData = data
end
....
ппц так сложно сообразить?
Автор: Ears 22.3.2009, 21:49
большое спасибо
Автор: Артём 22.3.2009, 21:55
NoCaps___v1[1].1b__.lua:50: attempt to call field 'GetUser' (a nil value) (API1)
Автор: Setuper 22.3.2009, 21:57
Код
function ChatArrival(tUser, sData)
if tAdmins[tUser.iProfile] and tAdmins[tUser.iProfile] == 1 then
return
end
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
local nk, data = sData:match"(%S+): (.*)"
if nk and ((Core and Core.GetUser(nk)) or (not Core and GetItemByName(nk))) then
sData = data
end
Автор: Артём 22.3.2009, 22:00
да чем ему то Core. не угождает.... NoCaps___v1[1].1b__.lua:50: attempt to call field 'GetUser' (a nil value)
Автор: Setuper 22.3.2009, 22:06
ах ну да... Николай таблицу Core под апи1 переопределил.
Код
function ChatArrival(tUser, sData)
if tAdmins[tUser.iProfile] and tAdmins[tUser.iProfile] == 1 then
return
end
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
local nk, data = sData:match"(%S+): (.*)"
if nk and ((not frmHub and Core.GetUser(nk)) or (frmHub and GetItemByName(nk))) then
sData = data
end
Автор: Артём 22.3.2009, 22:12
<МаЙлИк>
<МаЙлИк> ТЕСТ
<Артём> ((((S@MBUK@)))): ТЕСТ
У простого узера (unReg) вообще ник не показует))))))))а у оператора и админа видно тот ник на который пишешь
короче говоря ник юзера вообще дето теряется
Автор: Setuper 22.3.2009, 22:19
Код
if iValue >= iPersents then
if nk then
sData = nk..": "..sData
end
sData:SendToAll(sNick)
return sRetVal
end
Автор: Setuper 22.3.2009, 22:46
Код
function ChatArrival(tUser, sData)
if tAdmins[tUser.iProfile] and tAdmins[tUser.iProfile] == 1 then
return
end
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
local nk, data = sData:match"(%S+): (.*)"
if nk and ((not frmHub and Core.GetUser(nk)) or (frmHub and GetItemByName(nk))) then
sData = data
end
local sSubed, bChanged = MadeNormLen(sData, iSymbLimit, "%p+")
if bChanged then
sData = sSubed
end
if sData:len() >= iCheckSize then
local sNoSpaces = sData:gsub("[%s%с%d%p]", "")
local iNoSpasesLen = sNoSpaces:len()
if iNoSpasesLen > 0 then
local iCapsLen = 0
local sChData = sData
local sNoCapsData = sNoSpaces:gsub("["..sBigData.."]", function(c)
iCapsLen = iCapsLen + 1
sChData = sChData:gsub(c, LowString(c))
return ""
end)
local iValue = iCapsLen / iNoSpasesLen
if iValue >= iPersents then
if not bChanged then
bChanged = true
end
if nk then
sChData = nk..": "..sChData
end
sData = sChData
end
end
end
if bChanged then
sData:SendToAll(sNick)
return sRetVal
end
end
Автор: Артём 22.3.2009, 22:54
2Setuper
Спасибо за помощь!!!
Автор: Ears 24.3.2009, 19:35
Большое спасибо, теперь скрипт не коверкает ники, но появилось ещё одно, можно ли сделать так чтобы он так же не трогал magnet ссылки =(
пример ссылки
m*agnet:?xt=urn:tree:tiger:BH7XHWEXUWDTXJVEJMXLTL3HNSQKR6ODB7Y4SJI&xl=4151973&dn=%D0%9B%D0%B8%D0%B3%D0%B0%D0%BB%D0%B0%D0%B9%D0%B7+-+%D1%80%D0%BE%D0%B6%D0%B4%D1%91%D0%BD%D0%BD%D1%8B%D0%B5+%D0%B2+%D0%A1%D0%A1%D0%A1%D0%A0.mp3
а скрипт исправляет на
m*agnet:?xt=urn:tree:tiger:bh7xhwexuwdtxjvejmxltl3hnsqkr6odb7y4sji&xl=4151973&dn=%d0%9b%d0%b8%d0%b3%d0%b0%d0%bb%d0%b0%d0%b9%d0%b7+-+%d1%80%d0%be%d0%b6%d0%b4%d1%91%d0%bd%d0%bd%d1%8b%d0%b5+%d0%b2+%d0%a1%d0%a1%d0%a1%d0%a0.mp3
без *
Автор: Setuper 24.3.2009, 19:57
Код
function ChatArrival(tUser, sData)
if tAdmins[tUser.iProfile] and tAdmins[tUser.iProfile] == 1 then
return
end
local sNick = tUser.sNick or tUser.sName
sData = sData:sub(sNick:len() + 4, -2)
if sData:match"magnet:%?xt=urn:tree:tiger:" then
return
end
...
Автор: sphinx 23.4.2009, 23:50
В 3 раза меньше кода, чем в представленном здесь скрипте.
Правда, только для API2.
Код
-- Размер сообщения с которого начинает реагировать скрипт:
iCheckSize = 5
-- Процент капса, при котором сработает скрипт:
iPersents = 80
ChatArrival=function(sUser,sData)
local noCaps,f=isYELL(sData)
if f then
Core.SendToAll("<"..sUser.sNick.. "> " ..noCaps)
return true
end
end
isYELL=function (sData)
local flag=false
if sData:match"magnet:%?xt=urn:tree:tiger:" then
return sData,flag
end
local nk, data = sData:match"^(%S+): (.*)"
if nk then sData = data end
local nsp = sData:gsub ("[%s%p%c]", "")
if nsp:len() > iCheckSize then
local NoSpacesLen = nsp:len()
local NoCAPSLen = (nsp:gsub("[%uА-ЯЁ]", "")):len()
if (NoSpacesLen - NoCAPSLen)/NoSpacesLen * 100 > iPersents then
sData=ToLowerCase(sData)
flag=true
end
end
if nk then sData=nk..": "..sData end
return sData,flag
end
ToLowerCase = function(s)
for i = 192,223 do
s = s:gsub(string.char(i), string.char(i+32))
end
s = s:gsub(string.char(168), string.char(184))
return s:lower()
end
Автор: Setuper 23.4.2009, 23:56
В функции ToLowerCase к нижнему регистру не приводится буква Ё.
Автор: sphinx 23.4.2009, 23:57
А я и думаю, зачем вы меняете 168 на 184...
Автор: Setuper 24.4.2009, 0:12
Замечательный алгоритм перевода в нижний регистр, если не считать баг с буквой Ё. Респект.
Функция значительно оптимальнее, чем у меня.
Автор: sphinx 24.4.2009, 0:15
Вроде поправил букву Ё
Автор: Setuper 24.4.2009, 0:22
Можно убрать ещё одну строчку в функции, написав так:
Код
ToLowerCase = function(s)
for i = 192, 223 do
s = s:gsub(string.char(i), string.char(i + 32))
end
s = s:gsub(string.char(168), string.char(184))
return s:lower()
end
Респект за представленную функцию. очень оптимальное решение
Автор: alkogoluk 24.4.2009, 9:44
Нефига если просто капсом писать в чат то повторяется ник от которого пишешь и если писать кому то то к сообщению добавляется вертикальная табуляция после ника того кому пишешь
Цитата
[10:41:28] <plugman2> <plugman2> чварполсмрпсапмоирпоирлтыпоирлывпоилыполтватлдава
[10:42:55] <plugman2> OpChat:
фыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыы
Автор: IIPu3PAK 26.3.2010, 18:58
Замени
Код
Core.SendToAll("<"..sUser.sNick.. "> " ..noCaps)
на
Код
Core.SendToAll("" ..noCaps)