如何在触发时每1.5秒生成脚本增量值

时间:2017-07-07 22:27:33

标签: mirc

我一直在努力为" inc%x_note_id"添加1.5秒延迟。部分,但它只是一次一个消息,直到最后一个消息,它延迟,然后立即发送它们。如何在脚本的这个porton中延迟%x_note_id的每个增量的位置?

完整代码为here

alias postmessage {
if ( $nick == $me ) { return }

 var %x_note_id 1
while ( %noteidnick. [ $+ [ $server ] ] [ $+ [ . ] ] [ $+ [ $chan ] ] [ $+ [ . ] ] [ $+ [ $nick ] ] > 0 ) {

msg $chan %notemsg. [ $+ [ $server ] ] [ $+ [ . ] ] [ $+ [ $chan ] ] [ $+ [ . ] ] [ $+ [ $nick ] ] [ $+ [ . ] ] [ $+ [ %x_note_id ] ]
unset %notenick. [ $+ [ $server ] ] [ $+ [ . ] ] [ $+ [ $chan ] ] [ $+ [ . ] ] [ $+ [ $nick ] ] [ $+ [ . ] ] [ $+ [ %x_note_id ] ]
unset %notemsg. [ $+ [ $server ] ] [ $+ [ . ] ] [ $+ [ $chan ] ] [ $+ [ . ] ] [ $+ [ $nick ] ] [ $+ [ . ] ] [ $+ [ %x_note_id ] ]
var %note_delay 10000
while ( %note_delay ) {
  dec %note_delay
  if ( %note_delay == 0 ) {

    inc %x_note_id
    dec %noteidnick. [ $+ [ $server ] ] [ $+ [ . ] ] [ $+ [ $chan ] ] [ $+ [ . ] ] [ $+ [ $nick ] ]
   }
  }
 }
}

1 个答案:

答案 0 :(得分:0)

修复现有代码,需要更多工作,并迫使我在代码限制下工作。

我决定构建新的消息队列,这将更加明确和详细。这将使您需要延长它时更容易。

ON $*:TEXT:/^!note\s\w+\s/iS:#: {

  if ($nick isin %twitchbots) return

  ; Bot command flood protection, 3 messages per 10 seconds.
  inc -u10 % [ $+ [ $+(bpf.,$server,.,#,.,$wildsite) ]
  var %bpf = % [ $+ [ $+(bpf.,$server,.,#,.,$wildsite) ]
  if (%bpf >= 4) return

  ; Verify the sender doesn't reach his max quota
  if ($userMessages($server, #, $nick).sent == 5) {
    msg # $nick $+ , Limit reached. Only 5 messages per user is allowed.
    return
  }

  saveMessage $server # $nick $2-
  msg # $nick $+ , Your message has been left for $2 $+ .
}

ON !*:JOIN:#: playmessages $server # $nick
ON *:TEXT:*:#: playmessages $server # $nick

alias -l findServerConnectionIdx {
  if (!$1) return

  var %i = 1, %length = $scon(0)
  while (%i <= %length) {
    var %server = $scon(%i).server
    if (%server == $1) {
      return %i
    }
    inc %i
  }
  return
}

alias -l userMessages {
  ; $1 = server, $2 = channel, $3 = nick
  if (!$3) return

  if ($prop == sent) {
    var %i = 1, %length = $var($+(notemsg.,$1,.,$2,.*), 0)
    var %numOfSentMsgs = 0
    while (%i <= %length) {
      var %messages = $var($+(notemsg.,$1,.,$2,.*), %i).value
      inc %numOfSentMsgs $wildtok(%messages, $3 *, 0, 9)

      inc %i
    }
    return %numOfSentMsgs
  }
  else if ($prop == recv) {
    var %messages = $var($+(notemsg.,$1,.,$2,.,$3), 1).value
    return $numtok(%messages, 9)
  }
}

alias -l saveMessage {
  ; $1 = server, $2 = channel, $3 = dest-nick, $4 = src-nick, $5- = message
  if (!$5) return

  set % [ $+ [ $+(notemsg.,$1,.,$2,.,$3) ] ] $addtok(% [ $+ [ $+(notemsg.,$1,.,$2,.,$3) ] ], $4-, 9)
}

alias -l clearRecvMessages {
  ; $1 = server, $2 = channel, $3 = nick
  if (!$3) return

  unset % [ $+ [ $+(notemsg., $1,.,$2,.,$3) ] ]
}

alias -l playMessages {
  ; $1 = server, $2 = channel, $3 = nick, $4 = delay
  if (!$3) return

  var %messages = % [ $+ [ $+(notemsg., $1,.,$2,.,$3) ] ]
  var %i = 1, %length = $numtok(%messages, 9)
  while (%i <= %length) {
    var %fullMessage = $gettok(%messages, %i, 9)
    var %sourceNick = $gettok(%fullMessage, 1, 32)
    var %message = $gettok(%fullMessage, 2-, 32)

    var %sconServer = $findServerConnectionIdx($1)
    $+(.timernotes.,notemsg.,$1,.,$2,.,$3,.,%i) 1 $calc((%i - 1) * 1.5) scid -t1 %sconServer msg $2 From: %sourceNick Message: %message
    inc %i
  }
  clearRecvMessages $1-3
}