Если вы ищете точное совпадение в отдельном списке новой строки, то вы можете использовать переключатель 'w' без использования подстановочного знака '*'.
Из документации mIRC
$ read (имя файла, [ntswrp], [matchtext], [N])
Сканирует файл info.txt для строки, начинающейся со слова mirc и
возвращает текст, следующий за значением совпадения. // echo $ read (help.txt, w,
* Помощь *)
Поскольку мы не хотим сопоставления с подстановочными знаками, а точного сопоставления, мы будем использовать:
$read(customers.txt, w, Nick)
Полный код:
ON *:TEXT:!Customer *:#: {
var %foundInTheList = $read(system\Customer.txt, w, $2)
if (%foundInTheList) {
.msg # $2 Customer found in list!
}
else {
.msg 4 # $2 Customer not found in list.
}
}
Несколько замечаний по оригинальному коду
1024 * Приостановление *
halt
следует использовать только в том случае, если вы хотите принудительно остановить дальнейшую обработку. В большинстве случаев этого можно избежать, написав поток кода таким образом, что он будет вести себя так, без явного использования halting.
Это также решит новые проблемы, которые могут возникнуть, в случае, если вы захотите добавить новый код, но вам будет интересно, почему он не выполняется .. из-за проклятой теперь забытой команды halt
.
Это также улучшит вашу отладку, в том случае, если вы не будете удивляться выходу из другого потока без вашего ведома.
читаемость
if (..) {
.... }
else { .. }
При рассмотрении множества строк кода внутри первого {} будет трудно заметить else
(или elseif
), поскольку удаленный анализатор mIRC будет иметь такую же идентификацию, что и строка else, также и строка над ним , который содержит код закрытия }
. Вы должны почти всегда немного дополнительного кода в случае читабельности, особенно если это ничего нового не стоит! Как я помню, новые строки бесплатны.
Так что убедитесь, что у каждой команды в новой строке есть правило удара. (включая закрывающую скобку)
Соответствующий текст
On*:text:*!Customer*:#: {
Приведенный выше код имеет критическую проблему и ошибку.
Критическое: не будет работать, потому что в *: текст не содержит пробелов между on
и *:text
Ошибка: ! Клиент будет соответствовать EVERYTHING-BEFORE!customerANDAFTER <NICK>
, что явно не соответствует желаемому поведению. :!Customer *:
будет соответствовать только в том случае, если первое слово было! Customer, и вы должны ввести хотя бы другой текст, потому что я использовал [SPACE] *.