My code:
alias add { set %listablock $addtok(%listablock,$1,44) //echo -a %listablock } alias main { set %nnick VerDuGo var %i = 1 while (%i <= 10) { if %nnick iswm %listablock { .echo -a data } inc %i } }
What i do wrong?
EpicNet.Ru - Форум IRC Чата |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Add nick to variable list and find it later
My code:
alias add { set %listablock $addtok(%listablock,$1,44) //echo -a %listablock } alias main { set %nnick VerDuGo var %i = 1 while (%i <= 10) { if %nnick iswm %listablock { .echo -a data } inc %i } }
What i do wrong?
What i do wrong?
Вы совершаете одни и те же ошибки, наступая вновь и вновь на собственные грабли. Попробуйте более внимательно изучить справочную документацию, перед тем как использовать в коде те или иные - команды, идентификаторы, условные выражения, операторы и т.д.
[indent=0.8,0.5]
3 строка: [c=red]//echo -a %listablock[/c] - внутри кода необязательно использовать косую черту "//". Это нужно использовать только при вводе команды внутри поля "EditBox", чтобы mIRC мог отличить команду от обычного текста. Кроме того "echo" будет отображать ошибку, если переменная "%listablock" окажется пустой. Поэтому будет лучше перед командой добавить условное выражение для проверки существования переменной и её значения: [c=black]if (%listablock) { echo -a %listablock }[/c]
[indent=0.8,0.5]
6 строка: [c=red]alias main[/c] - непонятно почему для этой функции выбрано название "main". Логичнее для команды по поиску использовать название "find".
[indent=0.8,0.5]
7 строка: [c=red]set %nnick VerDuGo[/c] - вероятно эта строка здесь лишняя, т.к. предполагается, что при вводе команды будет добавляться аргумент с ником пользователя "/find nick".
[indent=0.8,0.5]
9 строка: [c=red]while (%i <= 10)[/c] - здесь указано, что цикл будет проходить "10" итераций, то есть будет проверено только 10 ников из списка, хотя их там может быть любое другое количество. Будет правильным вместо числа 10 указать количество сохранённых ников в переменной "%listablock", которые по сути являются токенами, перечисленные через запятую, поэтому их можно посчитать с помощью идентификатора "$numtok()". Условное выражение цикла будет выглядеть так: [c=black]while (%i <= $numtok(%listablock,44))[/c]. Подробнее здесь: https://en.wikichip.org/wiki/mirc/identifiers/$numtok
[indent=0.8,0.5]
10 строка: [c=red]if %nnick iswm %listablock[/c] - здесь допущена ошибка, которая уже обсуждалась в другой теме. Но тем не менее, скорее всего вам не нужно при каждой итерации цикла проверять ник пользователя с помощью подстановочных знаков. В данном случае будет удобнее использовать оператор двойного равенства "==". Кроме того, для получения из списка токена с ником необходимо использовать идентификатор "$gettok()". В итоге условное выражение должно выглядеть так: [c=black]if ($1 == $gettok(%listablock,%i,44))[/c]. Подробнее здесь: https://en.wikichip.org/wiki/mirc/identifiers/$gettok
[indent=0.8,1]
С учётом вышеперечисленных замечаний и внесённых изменений вы можете попробовать использовать этот вариант:
alias add { set %listablock $addtok(%listablock,$1,44) if (%listablock) { echo -a $+($chr(40),$numtok(%listablock,44),$chr(41)) %listablock } } alias find { var %i 1 | while (%i <= $numtok(%listablock,44)) { if ($1 == $gettok(%listablock,%i,44)) { echo -a $1 - %i token position } inc %i } }
Синтаксис команд:
/add <nick>
/find <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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]
alias add { set %listablock $addtok(%listablock,$1,44) if (%listablock) { echo -a $+($chr(40),$numtok(%listablock,44),$chr(41)) %listablock } } alias find { var %i 1 | while (%i <= $numtok(%listablock,44)) { if ($1 == $gettok(%listablock,%i,44)) { echo -a $1 - %i token position | set %camp %listablock | block %camp } inc %i } } alias -l block { echo -a 1,94 caca //echo -a %camp no acepto privados window -c %camp }
I add the block is wright?
I add the block is wright?
Я не знаю. Вы не оставили никакого объяснения о целях и задачах, которые должен выполнять алиас "block".
Также, всё зависит от того, какой был конечный замысел скрипта и что вы планируете с этим делать дальше.
В заголовке темы первого поста и в его описании об этом ничего не сказано
[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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 скриптам » Add nick to variable list and find it later