这段代码是为了在一个人加入频道时创建一个变量。然后应该每秒钟增加一个人留在频道中的变量。然后它应该检查该变量是否达到 15,这意味着该人已在频道中停留了 15 秒。如果属实,它应该执行不同操作的集合。但这就是代码停止工作的地方。永远不会触发 15 秒代码,我不知道为什么。
on *:JOIN:*: {
inc -c %timeinchan. $+ $nick
if (%timeinchan. $+ $nick == 15) {
set %tempstats. $+ $nick $read(scores.fil, nr, $lower($nick))
set %temppoints. $+ $nick $gettok(%tempstats. $+ $nick,2,59)
set %newpoints. $+ $nick $calc(%temppoints. $+ $nick + 5)
set %newstats $replace(%tempstats. $+ $nick, %temppoints $+ $nick, %newpoints. $+ $nick)
write -s $+ $nick scorestest.fil %newstats
msg $chan $Nick has been awarded 5 points for staying in the channel for 15 seconds. }
}
今天,我想到了使用 while 循环作为一种可能的解决方案。像这样的东西:
on *:JOIN:*: {
while ($nick ison $chan) && ($nick != $me) {
inc -c %timeinchan. $+ $nick
if (%timeinchan. $+ $nick == 15) {
set %tempstats. $+ $nick $read(scores.fil, nr, $lower($nick))
set %temppoints. $+ $nick $gettok(%tempstats. $+ $nick,2,59)
set %newpoints. $+ $nick $calc(%temppoints. $+ $nick + 5)
set %newstats $replace(%tempstats. $+ $nick, %temppoints $+ $nick, %newpoints. $+ $nick)
write -s $+ $nick scorestest.fil %newstats
msg $chan $Nick has been awarded 5 points for staying in the channel for 15 seconds. }
}
但这也不起作用。事实上,一旦有人加入频道,脚本就会使 mIRC 停顿、冻结然后崩溃。
所以...
有什么建议么?