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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Condition "if ()" to check address mask and realname


Condition "if ()" to check address mask and realname

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

1

I'm trying to understand how to properly set (and write) a kick/BAN focusing on mask --->NICK = REALNAME!IDENT@HOST
For examplethis on join:

Код:
ON *:JOIN:#CHANNEL: {
  if ($address == 111.222.333.444) {
 ban # *!*@111.222.333.444
    kick # $nick SAY SOMETHING ON HOST MATCH
 }
}

In this case kick ban takes HOST. Right?
What if I wish to add an option also for REAL NAME or IDENT?

Код:
ON *:JOIN:#CHANNEL: {
  if ($address == *!*@HOST) {
 ban # *!*@111.222.333.444
    kick # $nick SAY SOMETHING IF HOST MATCH
 }
elseif ($????? == *!*IDENT@*{
DO SOMETHING IF IDENT MATCH
}
elseif ($????? == REAL_NAME!*@*) {
DO SOMETHING IF REAL_NAME MATCH
}
elseif ($nick == ANY_NICK) {
DO SOMETHING IF NICK MATCH
}

What to put on ?????

Thanks

2

I try to be more clear...

For example , consider this mask:--->pippo is paperino!pluto@123.456.789.100

pippo = nick
paperino = real_name
pluto = ident
123.456.789.100 = host

Код:
ON *:JOIN:#CHANNEL: {
  if ($address == *!*@123.456.789.100) {
 ban # *!*@123.456.789.100
    kick # $nick SAY SOMETHING IF HOST MATCH
 }
elseif ($????? == *!*pluto@*{
  ban # ?????
    kick # $nick SAY SOMETHING IF IDENT MATCH
}

elseif ($????? == paperino!*@*) {
  ban # ?????
    kick # $nick SAY SOMETHING IF REAL_NAME MATCH
}
elseif ($nick == pippo) {
  ban # $nick
    kick # $nick SAY SOMETHING IF NICK MATCH
}

Hope I been more clear.
Always thanks for any help

Отредактировано Chandra (06.08.2025 19:11)

3

Полная маска с адресом пользователя может быть только в таком формате: [c]nick!ident@host[/c]

Если взять пользовательские данные из вашего примера, то маска будет такой: [c=red]pippo!pluto@123.456.789.100[/c]

При выполнении команды [c]/whois pippo[/c] в ответе первая строка будет выглядеть так: [c]pippo is pluto@123.456.789.100 * paperino[/c]

Список всех возможных вариантов получения маски пользователя с помощью идентификатора [c]$address()[/c]:

  • [c]$address($nick,0)[/c] == [c]*!pluto@123.456.789.100[/c]

  • [c]$address($nick,1)[/c] == [c]*!*pluto@123.456.789.100[/c]

  • [c]$address($nick,2)[/c] == [c]*!*@123.456.789.100[/c]

  • [c]$address($nick,3)[/c] == [c]*!*pluto@*.456.789.100[/c]

  • [c]$address($nick,4)[/c] == [c]*!*@*.456.789.100[/c]

  • [c]$address($nick,5)[/c] == [c]pippo!pluto@123.456.789.100[/c]

  • [c]$address($nick,6)[/c] == [c]pippo!*pluto@123.456.789.100[/c]

  • [c]$address($nick,7)[/c] == [c]pippo!*@123.456.789.100[/c]

  • [c]$address($nick,8)[/c] == [c]pippo!*pluto@*.456.789.100[/c]

  • [c]$address($nick,9)[/c] == [c]pippo!*@*.456.789.100[/c]

Подробнее об этом здесь: https://en.wikichip.org/wiki/mirc/identifiers/$address

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

Для корректной сверки данных масок друг с другом в условии лучше всего использовать оператор "iswm", который сравнивает данные с подстановочными знаками.
Подробнее об этом здесь: https://en.wikichip.org/wiki/mirc/operators

В данном случае для проверки подойдёт вариант [c]$address($nick,5)[/c], который возвращает полную маску, чтобы можно было сверить присутствие в маске каждого отдельного значения из необходимых пользовательских данных "nick/ident/host".

[indent=0.8,0.5]
Итак, используя идентификатор "$address()" ваш скрипт может выглядеть так:

Код:
on *:JOIN:#test:{
  if (*!*@123.456.789.100 iswm $address($nick,5)) {
    mode $chan +b $v1
    kick $chan $nick SAY SOMETHING IF HOST MATCH
  }
  elseif (*!*pluto@* iswm $address($nick,5)) {
    mode $chan +b $v1
    kick $chan $nick SAY SOMETHING IF IDENT MATCH
  }
  elseif (pippo!*@* iswm $address($nick,5)) {
    mode $chan +b $v1
    kick $chan $nick SAY SOMETHING IF NICK MATCH
  }
}

Примечание: Для установки режима с баном я использовал идентификатор [c]$v1[/c], который возвращает левый/первый операнд с данными, указанными в условии сравнения, чтобы не переписывать повторно ту же самую маску. Подробнее об этом здесь: https://en.wikichip.org/wiki/mirc/identifiers/$v1

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

[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

Ok thanks Epic.
Well, I'm making my personal BLACKLIST addon.
I made a list of NICK/IDENT/HOST not allowed in a chan. I add what I need using:

Код:
  .BLACKLIST
  ..ADD(NICK): /write blacklist.txt $1
  ..ADD(HOST): /write blacklist.txt $address($1,2)
  ..ADD(IDENT): /write blacklist.txt $+(*!*,$right($ial($1,1).user,6),@*)

So on right click on a nick in nicklist I can choose which part of mask I want to add in blacklist.txt and be checked.

Then I did this to check:

Код:
 on *:JOIN:#test:{ 
   if ($read(myblacklist.txt) iswm $address($nick,5)) { 
    mode $chan +b $v1 
    kick $chan $nick SAY SOMETHING IF ANY PART OF MASK MATCH 
  } 

What do You think? Is a good solution or is possible to improve/change something?
Thanks

P.S.: To be honest I "stolen" line about ADD(IDENT) from another addon but I didn't understood it (what is "ial" for)... :-/

Отредактировано Chandra (Сегодня 10:38)

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»



Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Condition "if ()" to check address mask and realname