Фильтр команды, Помогите дописать скрипт |
Здравствуйте, гость ( Вход | Регистрация )
Фильтр команды, Помогите дописать скрипт |
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 Может есть более лучший вариант??? |
|
|
5.10.2010, 16:02
Сообщение
#2
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Во-первых, в первом аргументе функции find (также как match и gsub) необходимо экранировать знаком процента символы +-*?[]()^$.
А во-вторых, попробуй обьяснить, для чего предназначен данный скрипт. Как я понимаю, верли умеет самостоятельно фильтровать неизвестные команды в чате, и какие-либо дополнительные скрипты для этого не нужны. |
|
|
5.10.2010, 16:06
Сообщение
#3
|
|
Участник Группа: Пользователи Сообщений: 31 Регистрация: 13.1.2010 Пользователь №: 5 672 Спасибо сказали: 0 раз |
это не неизвестная команда. Прочитай внимательнее название темы "Фильтр..." скрипт пропускает через себя команду чтобы пользователь не мог использовать плагин messeger на каком либо боте хаба т.к. если использование плагина на боте приводит к остановке хаба
|
|
|
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 быстро меня поправит... |
|
|
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 |
|
|
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
|
|
|
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
Причина редактирования: Не надо лишних цитат!
|
|
|
5.10.2010, 19:07
Сообщение
#8
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Похоже, ты вообще не понимаешь, что я тебе писал, по крайней мере, в твоем последнем примере нет ничего похожего на то, что я тебе советовл..
|
|
|
5.10.2010, 19:48
Сообщение
#9
|
|
Участник Группа: Пользователи Сообщений: 31 Регистрация: 13.1.2010 Пользователь №: 5 672 Спасибо сказали: 0 раз |
потому что, то что ты писал мне я уже ранее пробовал и твои варианты не работают правильно
|
|
|
6.10.2010, 17:20
Сообщение
#10
|
|
Постоялец Группа: Пользователи Сообщений: 403 Регистрация: 4.11.2008 Из: Город Уфа Пользователь №: 994 Спасибо сказали: 115 раз |
foXDEvil
В скиптах верлика всегда ретурон должен возвращаться в однёрке вот что тебе пытается объяснить Ksan |
|
|
6.10.2010, 19:54
Сообщение
#11
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Да не про то, но фиг с ним...
|
|
|
7.10.2010, 6:00
Сообщение
#12
|
|
Участник Группа: Пользователи Сообщений: 31 Регистрация: 13.1.2010 Пользователь №: 5 672 Спасибо сказали: 0 раз |
|
|
|
Похожие темы
|
Сейчас: 10.11.2024, 22:46 |