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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Extract from the address line only one Ident


Extract from the address line only one Ident

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

1

I have created an alias so that only one Ident can be retrieved from the user's address line:

Код:
alias xwhois { echo -a $remove($address($1,3),1,65) }

An example of an address line: *!*GLqZEa8Z9@11.22.33.*

I want to get only this: GLqZEa8Z9

[indent=0.8,0.5]
This does not work. What am I doing wrong?

2

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

This does not work. What am I doing wrong?

Как я понимаю вы хотите извлечь Идент пользователя из адресной маски.


Ошибка: ➔ [mark=#FFFDDC] $remove($address($1,3),1,65) [/mark] - это просто удалит из строки число "1" и "65". Подробнее здесь: https://en.wikichip.org/wiki/mirc/identifiers/$remove

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


Инструкция:

При использовании идентификатора "$address($1,3)", где в скобках первым параметром $1 - является Ник пользователя, а в качестве второго параметра указано число "3", то возвращаемый ответ типа адресной маски будет в таком формате: "*!*GLqZEa8Z9@11.22.33.*".

Это не самый удачный выбор для получения возвращаемой маски, из которой будет неудобно извлекать Идент пользователя: "*!*GLqZEa8Z9@11.22.33.*".

Чтобы узнать другие варианты возвращаемых типов адресной маски вы можете посмотреть весь список здесь: https://en.wikichip.org/wiki/mirc/identifiers/$address

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

  • $address($1,0) = *!ident@host

  • $address($1,1) = *!*ident@host

  • $address($1,2) = *!*@host

  • $address($1,3) = *!*ident@*.host

  • $address($1,4) = *!*@*.host

  • $address($1,5) = nick!ident@host

  • $address($1,6) = nick!*ident@host

  • $address($1,7) = nick!*@host

  • $address($1,8) = nick!*ident@*.host

  • $address($1,9) = nick!*@*.host

Из этого следует, что наиболее подходящим вариантом в качестве второго параметра будет число "0" или "5". Лучше всего выбрать параметр с числом "5", т.к. это вернёт полностью все необходимые пользовательские данные: "nick!ident@host".

Поэтому мы будем использовать этот вариант: "$address($1,5)" = "nickname!GLqZEa8Z9@11.22.33.44".


[indent=0.8,0.5]
Теперь можно из полученной маски извлечь Идент пользователя. Это можно сделать при помощи идентификатора "$gettok()".
Более подробная информация здесь: https://en.wikichip.org/wiki/mirc/identifiers/$gettok

Согласно синтаксису идентификатор "$gettok()" должен содержать в круглых скобках 3 параметра, перечисленные через запятую:

1. $gettok(text,token,separator)text - любое значение (текст), который следует разделить на токены (отдельные составные части).
2. $gettok(text,token,separator)token - номер токена (часть текста) между разделителями, которую следует вернуть.
3. $gettok(text,token,separator)separator - числовое значение символа в "$asc()" для разделителя токенов. Подробнее здесь: https://en.wikichip.org/wiki/mirc/identifiers/$asc

Сначала нужно отделить Хост (IP) от адресной маски. Для этого необходимо определить числовое значение символа "@" в адресной маске "nickname!GLqZEa8Z9@11.22.33.44":

Код:
//echo -a $asc(@)

Возвращаемое число будет: "64". Следовательно мы будем использовать это число в качестве разделителя токенов.
Между разделителем "@" есть только "2" токена. Нам нужно вернуть "1" токен: "$gettok($address($1,5),1,64)" = "nickname!GLqZEa8Z9".


Далее нужно отделить Ник пользователя от адресной маски. Для этого необходимо определить числовое значение символа "!" в адресной маске "nickname!GLqZEa8Z9":

Код:
//echo -a $asc(!)

Возвращаемое число будет: "33". Следовательно мы будем использовать это число в качестве разделителя токенов.
Между разделителем "!" есть только "2" токена. Нам нужно вернуть "2" токен: "$gettok($gettok($address($1,5),1,64),2,33)" = "GLqZEa8Z9".


Таким образом, чтобы извлечь Идент пользователя из адресной маски, необходимо выполнить несколько последовательных операций (в одной строке) для отделения ненужных токенов:

Код:
//echo -a $gettok($gettok($address(nickname,5),1,64),2,33)

[indent=0.8,0.5]
Теперь вы понимаете как это работает и можете использовать этот способ в вашем алиасе:

Код:
alias xwhois { echo -a $gettok($gettok($address($1,5),1,64),2,33) }

Для проверки введите команду: "/xwhois nickname".

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

[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 скриптам » Extract from the address line only one Ident