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