2017-07-07 1 views
0

"inc%x_note_id"部分に1.5秒の遅延を追加する作業をしていますが、それを一度に遅らせ、すべて送信します。スクリプトのこのポートにある%x_note_idの各増分をどこで遅らせるのですか?トリガーされたときに1.5秒ごとにスクリプトの増分値を設定する方法

完全なコードは、既存のコードを修正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 ] ] 
    } 
    } 
} 
} 
+0

ポストメッセージエイリアスがどのように詳細に予測するか教えてください。現在のアルゴリズムは最善の方法ではないためです。 –

+0

スクリプトが行うべきことは次のようなものです:対応するユーザーがチャンネルに参加するか話すと、そのユーザーの最初のメッセージが投稿され、1.5秒後にそのユーザーの次のメッセージが送信されます等々。 – Technodevster

+0

正しく理解すれば、何らかのキューイングシステムが必要ですか?それが正しい場合は、1.5秒ごと、ユーザーごと、またはユーザーごとにメッセージをデキューする必要があります。 UserXとUserYは同時に1.51メッセージまたは2メッセージを投稿すれば同時に話していますか? –

答えて

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 
} 
関連する問題