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

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

MyDC.ru _ Служебные скрипты [PtokaX] _ Антикапс

Автор: Jaska 2.6.2008, 21:35

Выкладываю АнтиКапс. Автора не знаю я всего лишь приукрасил чуть, да и под новую API перевел big_smile.gif

 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 птоку скрипт Антикапса долго мучаюсь найти немогу!!!!!!!!!Плиииииииииииииииииииииииииииииз still_dreaming.gif

Автор: Nickolya 1.9.2008, 11:01

Может это подойдет? Скрипт подделал под универсальный, будет работать на любой птоке с луа 5.1. Работает в фоновом режиме, никаких сообщений или предупреждений не оставляет, настройка простая - со скольки символов сообщения реагировать и процент капса, при котором сработает скрипт.

 NoCaps.lua ( 1.45 килобайт ) : 199
 

Автор: Prizrak112 1.9.2008, 17:22

Неподходит ну просто никак кто нето помогите зделать антикапс под птоку 0 4 1 1 неужели некто незнает как я я???пажалууууста

Автор: fixx 2.9.2008, 8:22

Все прекрасно работает на 0.4.1.1 ... в чем проблема-то? Может галочки "включить скрипты" нет в птоке? big_smile.gif

Автор: dimetrius 2.9.2008, 8:37

Nickolya, может ты туда ещё допишешь чтоб обрезались знаки препинания, если их больше трёх?

Автор: Nickolya 2.9.2008, 18:21

Дописал big_smile1.gif + добавил профили, которые проверяются скриптом
*** Скрипт качаем из поста ниже ***

Автор: dimetrius 2.9.2008, 22:36

спасибище огромное

Автор: Nickolya 3.9.2008, 12:12

Пжалуста secret_smile.gif big_smile.gif
Нашел вот один баг в новой функции: при наличии подряд не максимального ряда символов, а потом их повторе без разделения другими символами, второй и следующие ряды урезаются, к примеру "! раз! два!! три!!!" будет урезано в "! раз! два! три". Исправленную версию качаем из этого поста.

 NoCaps___v1.1b__.lua ( 2.46 килобайт ) : 190
 

Автор: Prizrak112 4.9.2008, 0:38

Николя да нет же это нетот скрипт совершенно не тот вот человек вверху выложил вот этот нужен чтобы кто нето из пользователей написал большими буквми в чат фразу а бот выдавал при этом сообщение модератору чата вот такова типа: Внимание Пользователь под ником- (его ник) IP-адрес: его адрес попытался отправить в общий чат «Caps-Lock» сообщение.сам на одном из хабов видел прикольная вещь бот небанит а просто сообщает а в чат вылетает такая фраза пользователю:! Использование «Caps-Lock»'а на хабе разрешено только в умеренных количествах! Уважайте окружающих очень нужно бы зделать может кто нето поможет все таки??

Автор: fixx 4.9.2008, 7:59

Prizrak112 , скрипт, который выложили в начале темы БИНАРНЫЙ, поправить его может только аффтар, ну или пусть выложит исходник, а мы уж найдем, как добавить Core.SendPmToOps .. big_smile.gif

Автор: Nickolya 4.9.2008, 10:02

Угу, проблема в нередактируемости исходного скрипта. Поэтому и выложил свою версию, к ней легко прикрутить то, что тебе надо и довести практически до выложенного варианта, но вы объясняйте что именно вам надо, тогда будет и разговор и дело! choler.gif scorn.gif
Попробую украсить то что есть до требуемого, как сделаю - выложу сюда... baffle.gif

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

Спасибо за скриптbig_smile.gif

Автор: drushka 5.9.2008, 19:03

Цитата(Prizrak112 @ 5.9.2008, 1:42) *
вот так можно это же просто как скрип Janus_.lua только там бот сообщает о рекламе и антимате а тут будет сообщать о капс локе модератору чата вот и все

зачем сообщать об этом модеру.....я имел ввиду чтоб писалась фраза именно тому юзеру который применил капс и больше никто это сообщение не видел ни другие юзеры не модеры..

Автор: Ears 9.3.2009, 19:15

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

Автор: степашка 18.3.2009, 20:38

Цитата(Ears @ 9.3.2009, 19:15) *
Доброго времени суток! и сразу к делу: скрипт конечно здоровский, но можно ли зделать так, чтобы он не коверкал величину букв в никах big_smile1.gif


=========================

да, кстати, вопрос по существу! без антикапса никак, вот народ недоволен что ники тоже все приводятся в нижний регистр. экспериментировал с настройками процентов антикапса, но подобрать под все возможные варианты длины/количества_букв_в_нике это нереально. а вместо процентов можно сделать например типа "не более 1 капс-слова во фразе", "не более 2", "не более трёх" и т. д. а вообще скрипт очень хороший и полезный, спасибо автору. отдельная благодарность если будет переделан с учётом вышеозначенных моментов. а если ещё и меню будет... но это я уже наглею наверное... [птока 0360]

 Анти_капс.lua ( 1.45 килобайт ) : 29
 

Автор: 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) *
Пжалуста secret_smile.gif big_smile.gif
Нашел вот один баг в новой функции: при наличии подряд не максимального ряда символов, а потом их повторе без разделения другими символами, второй и следующие ряды урезаются, к примеру "! раз! два!! три!!!" будет урезано в "! раз! два! три". Исправленную версию качаем из этого поста.

2Nickolya confuse.gif плз поправь чтобы скрипт не издевался над никами юзеров,а то жалоб много...Зарание спасибо
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

Хватит. Ничего он не режет!!!
Скрипт не трогает ник вообще!!!

 Анти_капс.lua ( 1.45 килобайт ) : 29
 

Автор: Артём 22.3.2009, 21:17

Вот зашёл под простым юзером....
<МаЙлИк> (((s@mbuk@))): тест
<МаЙлИк> (((s@mbuk@))): лдьждлвыьа
<МаЙлИк> (((s@mbuk@))):
вот админом....
<Артём> ((((S@MBUK@)))):
<Артём> ((((S@MBUK@)))): ТЕСТ
P.S. Ник затрагивает confident.gif ( Сообщение№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 Я не писал что он режит,я писал что " чтобы скрипт не издевался над никами юзеров,а то жалоб много..." horror.gif

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

большое спасибо surrender.gif

Автор: Артём 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
big_smile.gif

Автор: Артём 22.3.2009, 22:00

beat_brick.gif да чем ему то 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

big_smile1.gif
<МаЙлИк>
<МаЙлИк> ТЕСТ
<Артём> ((((S@MBUK@)))): ТЕСТ
У простого узера (unReg) вообще ник не показует))))))))а у оператора и админа видно тот ник на который пишешь bad_smile.gif короче говоря ник юзера вообще дето теряется

Автор: Setuper 22.3.2009, 22:19

Код
if iValue >= iPersents then
  if nk then
    sData = nk..": "..sData
  end
  sData:SendToAll(sNick)
  return sRetVal
end

Автор: Артём 22.3.2009, 22:26

Ошибка пропала ,и проверка на капс тоже пропала beat_brick.gif скрипт вообще умер
вот он страдалец,может я что-то не туда втулил,если не сложно то посмотри,а если сложно то я тогда удалю его лучше и подожду пока автор ответит beat_plaster.gif
 NoCaps___v1_1_.1b__.lua ( 2.52 килобайт ) : 97

Автор: 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 exciting.gif Спасибо за помощь!!! victory.gif

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

без *

 nocaps_newapi.lua ( 2.91 килобайт ) : 30
 

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

Респект за представленную функцию. очень оптимальное решение big_smile.gif

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