myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Фильтр команды, Помогите дописать скрипт

Теги
Нет тегов для показа
foXDEvil
сообщение 5.10.2010, 13:33
Сообщение #1


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




Вот начал писать скрипт и застрял на пустяках :(

Код
botname = "R[Bot]"

function VH_OnUserCommand(sNick, sCmd)
    if (string.find(sCmd, "+msgsend")) then
        if (string.find(sCmd, "+msgsend R[Bot]")) or
            (string.find(sCmd, "+msgsend VerliHub")) or
            (string.find(sCmd, "+msgsend R[Rofl]")) or
            (string.find(sCmd, "+msgsend ПОСЛЕДНИЕ НОВОСТИ")) or
            (string.find(sCmd, "+msgsend Реклама")) or
            (string.find(sCmd, "+msgsend OpChat")) or
            (string.find(sCmd, "+msgsend #Games")) or
            (string.find(sCmd, "+msgsend #Warcraft")) or
            (string.find(sCmd, "+msgsend MOTD")) or
            (string.find(sCmd, "+msgsend SystemVersion")) then
            VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else
            return 1
        --VH:SendDataToUser("<"..botname.."> ЫЫ ", sNick)
        end
    end
return 1
end

Скипт не видит ники R[Bot] и R[Rofl]
и ещё проблема с return 1 если ставить в конце то хаб выдаёт
[15:00:25] <R[Bot]> Баловаться не хорошо
[15:00:25] <R[Bot]> Unknown command '+msgsend VerliHub' try +help

если в конец функции не ставить до хаб перестаёт видеть другие команды((((

Подскажите плиз!



Спасибо всем кто помог :-)

Код
botname = "R[Bot]"
function VH_OnUserCommand(sNick, sCmd)
    if (string.find(sCmd, "+msgsend")) then
        if (string.find(sCmd, "+msgsend R[Bot]", 1, true)) or
            (string.find(sCmd, "+msgsend VerliHub", 1, true)) or
            (string.find(sCmd, "+msgsend R[Rofl]", 1, true)) or
            (string.find(sCmd, "+msgsend ПОСЛЕДНИЕ НОВОСТИ", 1, true)) or
            (string.find(sCmd, "+msgsend Реклама", 1, true)) or
            (string.find(sCmd, "+msgsend OpChat", 1, true)) or
            (string.find(sCmd, "+msgsend #Games", 1, true)) or
            (string.find(sCmd, "+msgsend #Warcraft", 1, true)) or
            (string.find(sCmd, "+msgsend MOTD", 1, true)) or
            (string.find(sCmd, "+msgsend SystemVersion", 1, true)) then
            VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else
        end
    end
    if (string.find(sCmd, "+msgsend")) then else return 1 end
end


Может есть более лучший вариант???
Go to the top of the page
+Quote Post
alex82
сообщение 5.10.2010, 16:02
Сообщение #2


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Во-первых, в первом аргументе функции find (также как match и gsub) необходимо экранировать знаком процента символы +-*?[]()^$.

А во-вторых, попробуй обьяснить, для чего предназначен данный скрипт. Как я понимаю, верли умеет самостоятельно фильтровать неизвестные команды в чате, и какие-либо дополнительные скрипты для этого не нужны.
Go to the top of the page
+Quote Post
foXDEvil
сообщение 5.10.2010, 16:06
Сообщение #3


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




это не неизвестная команда. Прочитай внимательнее название темы "Фильтр..." скрипт пропускает через себя команду чтобы пользователь не мог использовать плагин messeger на каком либо боте хаба т.к. если использование плагина на боте приводит к остановке хаба
Go to the top of the page
+Quote Post
Ksan
сообщение 5.10.2010, 16:33
Сообщение #4


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




1. foXDEvil, мне кажется, в твоем окончательном примере не хватает
Код
return true
или
Код
return 1
(просто я точно не знаю, как правильно для Верли) Это после строки:
Код
VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else

2. И не вижу необходимости в строке:
Код
if (string.find(sCmd, "+msgsend")) then else return 1 end

А если я не прав, думаю, alex82 быстро меня поправит...
Go to the top of the page
+Quote Post
foXDEvil
сообщение 5.10.2010, 16:35
Сообщение #5


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




return там действительно не хватает упустил а вот последняя строка для того чтобы не было вот так
[15:00:25] <R[Bot]> Баловаться не хорошо
[15:00:25] <R[Bot]> Unknown command '+msgsend VerliHub' try +help
Go to the top of the page
+Quote Post
Ksan
сообщение 5.10.2010, 16:40
Сообщение #6


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Может, тогда достаточно поставить
Код
return 1
сразу после этих строк:
Код
            VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else
        end
и всё?
И без строки:
Код
if (string.find(sCmd, "+msgsend")) then else return 1 end
Go to the top of the page
+Quote Post
foXDEvil
сообщение 5.10.2010, 16:47
Сообщение #7


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




тогда смысл в скипте отпадает так как он полностью перестаёт работать


Код
botname = "R[Bot]"

String2Lower = function(s)
  for i = 192, 223 do
    s = s:gsub(_G.string.char(i), _G.string.char(i + 32))
  end
  s = s:gsub(_G.string.char(168), _G.string.char(184))
  return s:lower()
end

function VH_OnUserCommand(sNick, sCmd)
sCmd = String2Lower(sCmd)
    if (string.find(sCmd, "+msgsend")) then
        if  (string.find(sCmd, "+msgsend r[bot]", 1, true)) or
            (string.find(sCmd, "+msgsend verlihub", 1, true)) or
            (string.find(sCmd, "+msgsend r[rofl]", 1, true)) or
            (string.find(sCmd, "+msgsend последние новости", 1, true)) or
            (string.find(sCmd, "+msgsend реклама", 1, true)) or
            (string.find(sCmd, "+msgsend opchat", 1, true)) or
            (string.find(sCmd, "+msgsend #games", 1, true)) or
            (string.find(sCmd, "+msgsend #warcraft", 1, true)) or
            (string.find(sCmd, "+msgsend motd", 1, true)) or
            (string.find(sCmd, "+msgsend SystemVersion", 1, true)) then
            VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else
        end
    end
    if (string.find(sCmd, "+msgsend")) then VH:SendDataToUser("<"..botname.."> Баловаться не хорошо :-P ", sNick) else return 1 end
end

приделав функцию скрипт вообще перестал работать (((((

Сообщение отредактировал foXDEvil - 5.10.2010, 16:54
Причина редактирования: Не надо лишних цитат!
Go to the top of the page
+Quote Post
Ksan
сообщение 5.10.2010, 19:07
Сообщение #8


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Похоже, ты вообще не понимаешь, что я тебе писал, по крайней мере, в твоем последнем примере нет ничего похожего на то, что я тебе советовл..
Go to the top of the page
+Quote Post
foXDEvil
сообщение 5.10.2010, 19:48
Сообщение #9


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




потому что, то что ты писал мне я уже ранее пробовал и твои варианты не работают правильно
Go to the top of the page
+Quote Post
Vizunchik
сообщение 6.10.2010, 17:20
Сообщение #10


Постоялец
******

Группа: Пользователи
Сообщений: 403
Регистрация: 4.11.2008
Из: Город Уфа
Пользователь №: 994
Спасибо сказали: 115 раз




foXDEvil
В скиптах верлика всегда ретурон должен возвращаться в однёрке вот что тебе пытается объяснить Ksan
Go to the top of the page
+Quote Post
Ksan
сообщение 6.10.2010, 19:54
Сообщение #11


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Да не про то, но фиг с ним...
Go to the top of the page
+Quote Post
foXDEvil
сообщение 7.10.2010, 6:00
Сообщение #12


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




Цитата(Vizunchik @ 6.10.2010, 19:20) *
foXDEvil
В скиптах верлика всегда ретурон должен возвращаться в однёрке вот что тебе пытается объяснить Ksan

я и возвращаю но при условии
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Команды модератора
Бан, кик, кляп и тд
3 Steklowata 9 215 30.3.2012, 22:37 Посл. сообщение: Steklowata
No New Posts Topic has attachmentsФильтр чата. ChatFilter
Версия 1.0 | Замена мата или рекламы на разные фразы.
2 Infinity_Love 7 794 22.12.2010, 23:32 Посл. сообщение: Infinity_Love
Closed дайте все команды для птоки плиззз
3 Artem26 7 002 19.11.2010, 10:07 Посл. сообщение: Ferb
No New Posts Команды хаба
DBHUB
0 Артём 9 666 20.10.2010, 20:37 Посл. сообщение: Артём
Moved Фильтр команды
Помогите дописать скрипт
0 foXDEvil 0 5.10.2010, 12:05 Посл. сообщение: foXDEvil
No New Posts невыполненные команды в чате
как избежать вывода в чат невыполняемых скриптом команд
4 степашка 8 248 13.3.2010, 23:20 Посл. сообщение: степашка
No New Posts Topic has attachmentsот "Как сделать контекстное меню для команды?"
Консультация
7 Uncle_Dif 10 729 20.12.2009, 22:47 Посл. сообщение: Nickolya
No New Posts Topic has attachmentsИнтервал использования команды
Скрипт смены топика
0 X-Sky 4 864 10.11.2009, 15:06 Посл. сообщение: X-Sky
No New Posts Topic has attachmentsКонтекстное меню для команды в ЛС.
7 pashtet 10 021 15.10.2009, 19:43 Посл. сообщение: Ksan
No new Реализация NMDC команды $MCTo
дабы не затерялось
15 Setuper 22 478 28.8.2009, 16:59 Посл. сообщение: Delion
No New Posts Topic has attachmentsКоманды хаба
логирует чат вместо команд хаба
2 степашка 7 087 2.5.2009, 12:27 Посл. сообщение: степашка
No new Недостаточно Памяти Для Обработки Команды
28 *FoxMalder* 31 266 23.3.2009, 2:17 Посл. сообщение: Iskandark
No New Posts От: Недостаточно Памяти Для Обработки Команды
От темы с ID: 1636
0 Setuper 5 777 22.3.2009, 22:03 Посл. сообщение: Setuper
Closed Фильтр Тэгов
есть текст с тэгами. их надо убрать
7 MEXAHuK 9 526 2.3.2009, 17:54 Посл. сообщение: Setuper
No New Posts Команды Бана Для Админов
через менюшку в ДС++ клиенте
6 Akafellas 16 082 25.2.2009, 0:52 Посл. сообщение: Akafellas

 



RSS Сейчас: 27.11.2024, 4:40