2012-12-30 154 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