2012-12-30 192 views
1
if {[info exists queue($variable)} { 
    if {[expr [unixtime] - $queue($variable)]<86400} { 
     set calctime [expr [unixtime] - queue($variable)] 
     putquick "PRIVMSG $channel :you cant because you need to wait $calctime" 
    } 
} 
set queue($variable) [unixtime] 

我在Tcl腳本中得到了這段代碼,所以每個用戶都需要等待24小時才能再次執行命令。 我會倒數一段時間,顯示他們需要等待多少時間(小時,分鐘,秒)才能再次完成。但此刻我唯一可以做的事情就是把秒的$calctimeTCL倒計時等待時間

任何想法,我怎麼能做到這一點計數? Definitly我的$calctime的嘗試是失敗的:P

+1

注意如果條件已經由expr處理,因此如果'{([unixtime] - $隊列($變量))<86400} {...'' –

+0

putquick'爲東西,可能是比發送消息更加緊迫,比如踢腿和禁止。使用'puthelp'代替,或者您的頻道可能被某人淹沒,而eggdrop忙於頻道信息。 http://eggwiki.org/Queues#General_principle – potrzebie

回答

1

對待秒爲相對於與clock format時代。不要忽略-gmt 1,否則你會得到錯誤的小時數。多少取決於你在什麼時區

putquick "PRIVMSG $channel :you cant because you need to wait \ 
    [clock format $calctime -format "%T" -gmt 1]" 

或者自己進行計算:

set seconds [expr {$calctime % 60}] 
set calctime [expr {$calctime/60}] 
set minutes [expr {$calctime % 60}] 
set hours [expr {$calctime/60}] 
putquick "PRIVMSG $channel :you cant because you need to wait \ 
    $hours hours, $minutes minutes and $seconds seconds" 
+0

實際上,第一種方法假定時代是午夜(任何日期 - 在這裏00:00:00),我不認爲Tcl 8.4保證這一點。 Tcl 8.5確實如此。 – potrzebie

+0

ptrzebie,你能幫我嗎?我試着說你的話,結果是:你不能忍受,因爲你需要等待0小時3分8秒。但我需要的是從24小時到0而不是從0到24的倒計時:x – user676032

+0

@ user676032由於您對用戶上次使用該命令時的時間沒有興趣,而是當他/她可以再次使用該命令時,請保存* *在數組元素中代替**,即在節省時間時添加'24 * 60 * 60'。然後使用'$ queue($ variable) - [unixtime]'而不是'[unixtime] - $ queue($ variable)''。爲了上帝的緣故,將變量名'queue'改爲例如例如last_used和variable是例如'nick'。 – potrzebie

0

爲了顯示用戶必須等待您可以使用蛋花湯特定命令duration的時間。

if {[info exists queue($variable)} { 
    if {[clock seconds] - $queue($variable) < 60*60*24 } { 
     set calctime [duration [expr {[clock seconds] - queue($variable)}]] 
     putmsg $channel "you cant because you need to wait $calctime" 
     return 
    } 
} 
set queue($variable) [clock seconds] 
# Do the command stuff