EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Написать ответ при найденном слове в любом месте сообщения


Написать ответ при найденном слове в любом месте сообщения

Сообщений 1 страница 5 из 5

1

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

Пример

Сообщение: привет - так работает.
Сообщение: Всем привет - так НЕ работает.

Вот мой код:

Код:
on *:TEXT:*:#:{
  if (привет == $1) msg $chan $nick приветствую тебя!
  if (пока == $1) msg $chan $nick и тебе тоже пока.
}

Подскажите, что нужно исправить в коде, чтобы решить эту проблему?

Спасибо.

2

Try this code:

Код:
on *:TEXT:*:#:{ 
  if (*hello* iswm $1-) msg ​​​​$chan $nick hello you! 
  if (*bye* iswm $1-) msg ​​$chan $nick and bye to you too. 
}

3

Robert, синтаксис вашего варианта кода написан правильно, но после его копирования с форума он не будет работать. Причина в том, что перед идентификатором $chan присутствует несколько невидимых символов похожих на пробел, а точнее: "Пробел нулевой ширины 8203" ➔ "//echo -a $chr(8203)". Это можно узнать, если в редакторе скриптов передвигаться по строкам кода нажимая клавиши со стрелками (влево-вправо). Непонятно как эти лишние символы оказались в строках размещённого вами кода, но это точно ломает его. Поэтому, пожалуйста, будьте внимательнее, и чтобы оказать корректную помощь (поддержку) пользователям форума я рекомендую вам - перед тем как опубликовать новый код на форуме и также после его публикации, хотя бы один раз скопируйте и протестируйте его на работоспособность, чтобы пользователи потом не жаловались на то, что этот код неисправен. Спасибо.

Размещаю исправленный и рабочий вариант кода, который был протестирован на mIRC v7.75:

Код:
on *:TEXT:*:#:{
  if (*привет* iswm $1-) msg $chan $nick приветствую тебя!
  if (*пока* iswm $1-) msg $chan $nick и тебе тоже пока.
}
Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

4

Ребята спасибо. Это работает. Круто! 

Но возможно этот список слов с ответами может оказаться слишком длинным, а я не хочу растягивать код до огромных размеров.
Поэтому наверное будет лучше перенести этот список в текстовый файл.

Пример списка в файле
[flist=black]*привет*|$nick приветствую тебя!
*пока*|$nick и тебе тоже пока.
*как дела*|$nick все хорошо[/flist]

Подскажите, как я могу это сделать и что мне для этого нужно изменить в коде?

5

1495,325 написал(а):

Подскажите, как я могу это сделать и что мне для этого нужно изменить в коде?

Вы можете воспользоваться циклом "while" для перебора всех строк файла, чтобы найти подходящую *маску* со словом, которое будет присутствовать в сообщении чата.
Подробнее об этом можно прочитать здесь: https://en.wikichip.org/wiki/mirc/commands/while

Итак, вы можете попробовать использовать этот код скрипта:

Код:
on *:TEXT:*:#:{
  var %i 1 | while (%i <= $lines($filepath)) {
    var %str $read($filepath,t,%i), %mask $gettok(%str,1,124), %text $gettok(%str,2-,124)
    if (%mask iswm $1-) { msg $chan $eval(%text,2) | break } | inc %i
  }
}
alias -l filepath { return $mircdir $+ file.txt }

Не забудьте в строке 7 указать свой путь к файлу: [c]alias -l filepath { return $mircdir $+ file.txt }[/c]

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Написать ответ при найденном слове в любом месте сообщения