Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 如何更改mIRC中链接的颜色?_Colors_Hyperlink_Irc_Mirc - Fatal编程技术网

Colors 如何更改mIRC中链接的颜色?

Colors 如何更改mIRC中链接的颜色?,colors,hyperlink,irc,mirc,Colors,Hyperlink,Irc,Mirc,在mIRC中,我希望所有链接看起来像带有下划线的蓝色html链接,以便它们在频道和消息中突出显示。我肯定我必须写一个远程脚本,但我不确定代码是什么 更新:这适用于文本中匹配的第一个URL。我无法让它与多个链接一起工作 请注意,修改通道输出有几个副作用,最显著的是多个空格将压缩为一个类似于HTML中处理空白的空格。如果您正在使用修改通道输出的任何其他脚本,这可能会干扰甚至覆盖这些脚本 我以前没有处理过mIRC的正则表达式函数,因此可能有一种更干净的方法: on ^*:TEXT:*:#:{ se

在mIRC中,我希望所有链接看起来像带有下划线的蓝色html链接,以便它们在频道和消息中突出显示。我肯定我必须写一个远程脚本,但我不确定代码是什么

更新:这适用于文本中匹配的第一个URL。我无法让它与多个链接一起工作

请注意,修改通道输出有几个副作用,最显著的是多个空格将压缩为一个类似于HTML中处理空白的空格。如果您正在使用修改通道输出的任何其他脚本,这可能会干扰甚至覆盖这些脚本

我以前没有处理过mIRC的正则表达式函数,因此可能有一种更干净的方法:

on ^*:TEXT:*:#:{
  set -u %tmp.match /((ht|f)tp[s]?:\S+)/i
  if ($regex(links, $1-, %tmp.match) > 0) {
    set -u %tmp.text $regsubex(links, $1-, %tmp.match, $chr(31) $+ $chr(3) $+ 12 $+ \t $+ $chr(3) $+ $chr(31))
    echo $timestamp $chan < $+ $nick $+ > %tmp.text
    halt
  }
}

注意:set-u在脚本运行后删除变量,$chr3是颜色的控制代码,12是URL蓝色的颜色编号,$chr31是下划线的控制代码。

mIRC“catcher”遵循以下规则:

从帮助文件/帮助捕获器:

mIRC查找以http://、ftp://、gopher://、www.和ftp.开头的URL。。mIRC还进行检查,以确保地址未添加到已存在的列表中。超过256个字符的地址将被忽略

正如在另一个答案中所述,修改默认行为将导致间距压缩效果,但此脚本不会有太大问题,因为它只会在显示URL时触发。此外,我还使用了&prefix,这将使mIRC禁用事件,以防另一个脚本执行了早期的默认文本更改并执行了/haltdef

;this is actually needed to bypass mIRC's parsing behavior of strtok(str, ":")
alias urlreg return /((?:(?:(?:http|ftp|gopher)\72\/\/)|(?:www|ftp)\.)\S+)/Sig

;the coloring alias, blue (12), underline (31)
alias urlcolor return $+($chr(3), 12, $chr(31), $1-, $chr(31), $chr(3))

;trigger for the regex event only
on ^&$*:text:$($urlreg):*:{
  ;if we are in a channel, turn nick into @nick if applicable
  var %nick = $iif($chan, $nick($chan, $nick).pnick, $nick)

  ;color all the linkes using the predefined alias above
  var %msgs = $regsubex($1-, $urlreg, $urlcolor(\t))

  ;print the message, default timestamp, highlighting options, and nick coloring
  echo -tcrl normal $iif($chan, $v1, $nick) $+(<, %nick, >) %msgs

  ;prevent mIRC's default echo
  haltdef
}
将转向:

a b c www.example.com a b c www.example.com a b c www.example.com

进入:

a b c^12www.example.com a b c^12www.example.com a b c^12www.example.com

编辑:


在我最初的回答中,我使用$target是无效的,这导致了commander_keen所描述的问题。这一问题现在应该得到解决。

我只想补充一点,即需要使用//echo才能将文本输出到正确的频道,否则文本将被发送到状态窗口

此外,我会添加-bf和-m参数,将消息视为正常用户消息,并应用默认的闪烁/蜂鸣设置,否则消息不会使通道像有新消息一样工作

因此,对于jnpcl的脚本,这将总结为//echo-bfmtrl,甚至考虑到时间戳设置,即-t

Wiz的解决方案也可能从这些变化中获益

问候

PS:jnpcl的脚本滞后于没有http://的www链接的URL高亮显示和查询窗口中的高亮显示。最后一个问题当然可以通过在^*:TEXT:::?:{block with//echo-bfmtl$nick<$+$nick$+>%tmp.TEXT中添加第二个来轻松解决,但我想知道是否可以在一个on:TEXT处理程序中完成

不幸的是,当检测到查询中的链接并且查询中的文本保持原样时,Wiz的脚本总是发送到状态窗口。看起来$target在查询中无法正常工作,它使用了自己的尼克,但我不知道解决方案。 因此,在jnpcl的代码中使用Wiz的正则表达式,并进行上述改进,最终在http和www链接等的通道和查询中生成以下工作代码:

;URL highlighting for channels
    on ^*:TEXT:*:#:{
      set -u %tmp.match /((?:(?:(?:http|ftp|gopher)\72\/\/)|(?:www|ftp)\.)\S+)/Sig
      if ($regex(links, $1-, %tmp.match) > 0) {
        set -u %tmp.text $regsubex(links, $1-, %tmp.match, $chr(31) $+ $chr(3) $+ 12 $+ \t $+ $chr(3) $+ $chr(31))
        //echo -bfmtlr $chan < $+ $nick $+ > %tmp.text
        halt
      }
    }

;URL highlighting for queries
    on ^*:TEXT:*:?:{
      set -u %tmp.match /((?:(?:(?:http|ftp|gopher)\72\/\/)|(?:www|ftp)\.)\S+)/Sig
      if ($regex(links, $1-, %tmp.match) > 0) {
        set -u %tmp.text $regsubex(links, $1-, %tmp.match, $chr(31) $+ $chr(3) $+ 12 $+ \t $+ $chr(3) $+ $chr(31))
        //echo -bfmtlr $nick < $+ $nick $+ > %tmp.text
        halt
      }
    }

我很高兴看到Wiz的解决方案也能处理查询。在我看来,这比两个事件块更干净。在那之前,上面的代码应该是两者的最佳组合。

谢谢,这帮助我得到了我想要的东西。@Jamie:很高兴我能帮上忙。mIRC是我的第一种脚本语言,回去很有趣,也很怀旧。:我开始使用Wiz您的频道高亮显示代码,但修改了回显行,以便也应用了尼克颜色(如果定义了尼克颜色)//echo-bfmtlr$chan<$+$chr3$+$cnick$nick,$nick.pnick.color$+$nick$+$chr3$+>%tmp.text