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

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

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



Counting in the channels list

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

1

I want to create an alternative window with a list of channels when typing the command "/list" and so that as a result I can get the total number of users in the list.

Help improve this script:

Код:
raw 322:*: { 
  set %chanel $2
  set %nro $3
  set %modos $4
  set %topic $5
  var %i = 1
  while (%i <= 10) {
    window @caca | aline @caca %nro3 -- %chanel -- $calc(%nro *1 +%nro ) 
    inc %i
  }
}

raw 323:*: { window -c "channels list" }

alias xmirc {
  echo -a 0,1 xmirc ®2021
  echo -a 0,2 testeando canales 
}

Отредактировано VerDuGoTeam (17.08.2021 21:27)

2

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

I want to create an alternative window with a list of channels when typing the command "/list" and so that as a result I can get the total number of users in the list.

Я немного изменил ваш скрипт, но в целом он делает то же самое, и теперь в самом вверху списка он будет отображать результат общего количества пользователей на всех каналах, которые присутствуют в этом списке.

Попробуйте использовать такой скрипт:

Код:
raw 321:*: haltdef
raw 322:*:{
  haltdef
  var %chan $2
  var %users $3
  var %modes $4
  var %topic $5-
  if (!$window(@List)) .window -l @List
  if ($window(@List)) .aline -l @List %chan $+($chr(40),11,%users,,$chr(41)) $+([,%modes,]) %topic
  %usersall = $calc(%users + %usersall)
}
raw 323:*:{
  haltdef
  .window -c $qt(channels list)
  .iline -l @List 1 --- Total number of users on all channels:11 %usersall users ---
  unset %usersall
}

Не совсем понятно, для чего вы хотели использовать цикл "while (%i <= 10)", потому что он просто дублировал одну и ту же строку 10 раз, отображая это в окне списка. Мне кажется это было лишним.

Разумеется вы можете переделать этот скрипт на свой лад, как вам это будет угодно и переписать все названия на свой родной язык, но лучше всего в коде использовать английский язык (кроме текста сообщений, которые будут видеть пользователи).

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

[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:#4898CD;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#B5B5B5;}a .curl{font-family:Verdana;font-size:12px;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 Чат © 2009</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Онлайн:</span> <a href="http://chat.epicnet.ru"><span class="curl">http://chat.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl) <span class="desc">Кодировка:</span> UTF-8<br><span class="dot">•</span> <span class="desc">Сайт:</span> <a href="http://epicnet.ru"><span class="curl">http://epicnet.ru</span></a> <span class="dot">•</span> <span class="desc">ВКонтакте:</span> <a href="https://vk.com/irc_epicnet"><span class="curl">https://vk.com/irc_epicnet</span></a><br><div></td></tr></table>[/html]

3

VerDuGoTeam, я забыл добавить к этому скрипту возможность открытия каналов из выбранных строк в списке  http://epicnet.ru/smiles/kolobok/cool.gif 

Необходимо добавить к предыдущему скрипту такую часть кода:

Код:
on *:KEYDOWN:@List:13: listjoin $target
menu @List {
  dclick:{ var %winchan $gettok($sline(@List,1),1,32) | if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan }
}
alias -l listjoin {
  var %winlines $sline($1,0)
  if (%winlines > 0) {
    var %i 1 | while (%i <= %winlines) {
      var %winchan $gettok($sline($1,%i),1,32)
      if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan
      inc %i
    }
  }
}

Краткий разбор строк скрипта

Эта строка кода для обработки события, когда будет нажата клавиша "Enter" в окне списка, после выбора одной или нескольких строк:

Код:
on *:KEYDOWN:@List:13: listjoin $target

этот фрагмент кода для обработки события, когда будет выполнен двойной клик мышью в окне списка по одной из строк:

Код:
menu @List {
  dclick:{ var %winchan $gettok($sline(@List,1),1,32) | if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan }
}

Обновление скрипта после дополнения

Таким образом весь скрипт теперь будет выглядеть так:

Код:
raw 321:*: haltdef
raw 322:*:{
  haltdef
  var %chan $2
  var %users $3
  var %modes $4
  var %topic $5-
  if (!$window(@List)) .window -l @List
  if ($window(@List)) .aline -l @List %chan $+($chr(40),11,%users,,$chr(41)) $+([,%modes,]) %topic
  %usersall = $calc(%users + %usersall)
}
raw 323:*:{
  haltdef
  .window -c $qt(channels list)
  .iline -l @List 1 --- Total number of users on all channels:11 %usersall users ---
  unset %usersall
}
on *:KEYDOWN:@List:13: listjoin $target
menu @List {
  dclick:{ var %winchan $gettok($sline(@List,1),1,32) | if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan }
}
alias -l listjoin {
  var %winlines $sline($1,0)
  if (%winlines > 0) {
    var %i 1 | while (%i <= %winlines) {
      var %winchan $gettok($sline($1,%i),1,32)
      if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan
      inc %i
    }
  }
}
Подпись автора

[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:#4898CD;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#B5B5B5;}a .curl{font-family:Verdana;font-size:12px;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 Чат © 2009</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Онлайн:</span> <a href="http://chat.epicnet.ru"><span class="curl">http://chat.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl) <span class="desc">Кодировка:</span> UTF-8<br><span class="dot">•</span> <span class="desc">Сайт:</span> <a href="http://epicnet.ru"><span class="curl">http://epicnet.ru</span></a> <span class="dot">•</span> <span class="desc">ВКонтакте:</span> <a href="https://vk.com/irc_epicnet"><span class="curl">https://vk.com/irc_epicnet</span></a><br><div></td></tr></table>[/html]

4

Дополнительное исправление и обновление скрипта

Код:
raw 321:*: if ($window(@ChanList)) .clear @ChanList | haltdef
raw 322:*:{
  var %chan $2 | var %users $3 | if ([+ !isin $4) var %topic $4-
  else { var %modes $+($gettok($4-,1,93),]) | var %topic $gettok($4-,2-,93) }
  if (!$window(@ChanList)) .window -kl @ChanList $mircexe 48
  if ($window(@ChanList)) .aline -l @ChanList %chan $+($chr(40),11,%users,,$chr(41)) %modes %topic
  inc -u25 %chansall | set -u25 %usersall $calc(%users + %usersall) | haltdef
}
raw 323:*:{
  if ($window(@ChanList)) { .iline -l @ChanList 1 89,89 == 14Total channels:11 %chansall $+(14,$chr(44)) 14Total users:11 %usersall 89==  | .window -a @ChanList }
  .window -c $qt(Channels List) | unset %chansall %usersall | haltdef
}
on *:KEYDOWN:@ChanList:13: chanlist_join $target
menu @ChanList {
  dclick:{ var %winchan $gettok($sline(@ChanList,1),1,32) | if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan }
}
alias -l chanlist_join { var %winlines $sline($1,0) | if (%winlines > 0) { var %i 1 | while (%i <= %winlines) { var %winchan $gettok($sline($1,%i),1,32) | if ($chr(35) == $mid(%winchan,1,1)) .join -n %winchan | inc %i } } }

Скрипт создаёт окно с подсчётом числа каналов и общего числа пользователей, для некой имитации оригинального окна списка каналов. Чтобы проверить наберите команду "/list".

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

[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:#4898CD;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#B5B5B5;}a .curl{font-family:Verdana;font-size:12px;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 Чат © 2009</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Онлайн:</span> <a href="http://chat.epicnet.ru"><span class="curl">http://chat.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl) <span class="desc">Кодировка:</span> UTF-8<br><span class="dot">•</span> <span class="desc">Сайт:</span> <a href="http://epicnet.ru"><span class="curl">http://epicnet.ru</span></a> <span class="dot">•</span> <span class="desc">ВКонтакте:</span> <a href="https://vk.com/irc_epicnet"><span class="curl">https://vk.com/irc_epicnet</span></a><br><div></td></tr></table>[/html]

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

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