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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Add nick to variable list and find it later


Add nick to variable list and find it later

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

1

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?

2

1572,351 написал(а):

What i do wrong?

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


[indent=0.8,0.5]
[c=red]//echo -a %listablock[/c] - внутри кода необязательно использовать косую черту "//". Это нужно использовать только при вводе команды внутри поля "EditBox", чтобы mIRC мог отличить команду от обычного текста. Кроме того "echo" будет отображать ошибку, если переменная "%listablock" окажется пустой. Поэтому будет лучше перед командой добавить условное выражение для проверки существования переменной и её значения: [c=black]if (%listablock) { echo -a %listablock }[/c]

[indent=0.8,0.5]
[c=red]alias main[/c] - непонятно почему для этой функции выбрано название "main". Логичнее для команды по поиску использовать название "find".

[indent=0.8,0.5]
[c=red]set %nnick VerDuGo[/c] - вероятно эта строка здесь лишняя, т.к. предполагается, что при вводе команды будет добавляться аргумент с ником пользователя "/find nick".

[indent=0.8,0.5]
[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]
[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="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]

3

Код:
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?

4

1574,351 написал(а):

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="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 скриптам » Add nick to variable list and find it later