MUSH新手求助,VBSCIPT脚本中延时的问题
如题我在MUSH中用VBSCIPT脚本连接ACCESS数据库,别名也设计进了数据库,可是用DoAfter,DoAfterSpecial都无法实现逐步延时的效果,下面把别名、数据库、脚本全部发上来,望高手们指正。
数据库:
别名:
VBSCRIPT脚本:
'============连接数据库
dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&"D:\Program Files\MUSHclient\worlds\pku\bxbl.mdb"
dim rs
Set rs = CreateObject("ADODB.RECORDSET")
'=============数据库连接完毕
'==============定义遍历每个地点的常用指令
dim dzA,dzB,dzC,dzD,dzE,dzF,dzG
sub zhiling(zlA,zlB,zlC,zlD,zlE,zlF,zlG)
if dzA="1" then send ""&zlA&""
if dzB="1" then send ""&zlB&""
if dzC="1" then send ""&zlC&""
if dzD="1" then send ""&zlD&""
if dzE="1" then send ""&zlE&""
if dzF="1" then send ""&zlF&""
if dzG="1" then send ""&zlG&""
dzA="0"
dzB="0"
dzC="0"
dzD="0"
dzE="0"
dzF="0"
dzG="0"
end sub
'==============定义动作结束
'==============捡钱
sub dzss(getobjs)
send ""&getobjs&""
end sub
'==============结束
dim i
'==============读取路径别名
sub mypath(lujing)
rs.open "select * from path where nicks='"&lujing&"'",conn,1,1
if not rs.eof then
dim path
path=split(rs("content"),";")
for i = 0 to ubound(path)
call dongzuo()
if i=0 then
send ""&path(i)&""
else
world.DoAfterSpecial 1, ""&path(i)&"", 0
就是这里出了问题,因为前面有了if i=0的判断,SEND的第一个指令是立即发送的,第二个指令前的DoAfterSpecial延时也是生效的,可是问题是,第三个和后面指令前的DoAfterSpecia都不生效,这样就造成了执行完第一个指令马上执行的是第三到ubound(path)个指令中间无延时,第二个指令反而是最后才执行。
如果把DoAfterSpecia这里改成world.DoAfter 1, ""&path(i)&""又是另一个问题了,第一个指令马上执行,第二个指令等待1秒后执行,第三到ubound(path)个指令中间无延时。
是什么原因造成这样的结果不明,应该怎么解决?
send""&path(i)&""
end if
next
end if
rs.close
lujing=""
end sub
'==============路径别名结束 DoAfter()和DoAfterSpecial()的第一个参数——即时间,是需要累加的。
world.DoAfterSpecial 1+i, ""&path(i)&"", 0
[ 本帖最后由 ddid 于 2009-11-4 12:22 PM 编辑 ] 说一下,我的想法.应该是可以实现的.但还没做出非常完美的例子
mush里有一个可以设置每个命令之间相隔多少毫秒的命令.具体哪个命令,一下子忘了shy
bigpswd 你找一下,或者直接在菜单--游戏--配置--命令 里设一下
然后,根据我的测试,你只要是一次把命令发出去,也就是说,放在一个send里.
mush会自动按照你发的命令一个一个延时加的.那样的说,你一口气发多少命令都没问题
既然,你都连上数据库了.一口气把路径算出来,应该没什么问题. 原帖由 ddid 于 2009-11-4 12:20 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
DoAfter()和DoAfterSpecial()的第一个参数——即时间,是需要累加的。
world.DoAfterSpecial 1+i, ""&path(i)&"", 0
那还是另外dim个变量吧,1秒太多了,0.3~0.5就好了 原帖由 lzkd 于 2009-11-4 12:28 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
说一下,我的想法.应该是可以实现的.但还没做出非常完美的例子
mush里有一个可以设置每个命令之间相隔多少毫秒的命令.具体哪个命令,一下子忘了shy
bigpswd 你找一下,或者直接在菜单--游戏--配置--命令 里设一下
...
恩,我就是这么打算的,现在先设置常用路径,然后就是漫长的房间遍历了 哈哈,感谢ddid,实现延时了 nothank
页:
[1]