このコードは、人がチャンネルに参加したときに変数を作成するためのものです。次に、人がチャンネルにとどまっている間、その変数を毎秒増加させることになっています。次に、その変数が 15 に達したかどうかを確認する必要があります。これは、その人が 15 秒間チャネルに留まったことを意味します。true の場合、さまざまなアクションの集合体を実行する必要があります。しかし、ここでコードが機能しなくなります。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 を失速させ、フリーズさせてからクラッシュさせます。
そう...
助言がありますか?