北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4917|回复: 6

MUSH新手求助,VBSCIPT脚本中延时的问题

[复制链接]
发表于 2009-11-4 12:14:29 | 显示全部楼层 |阅读模式
如题
我在MUSH中用VBSCIPT脚本连接ACCESS数据库,别名也设计进了数据库,可是用DoAfterDoAfterSpecial都无法实现逐步延时的效果,下面把别名、数据库、脚本全部发上来,望高手们指正。

数据库:


别名:


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
'==============路径别名结束

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 12:20:06 | 显示全部楼层
DoAfter()和DoAfterSpecial()的第一个参数——即时间,是需要累加的。

world.DoAfterSpecial 1+i, ""&path(i)&"", 0

[ 本帖最后由 ddid 于 2009-11-4 12:22 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 12:28:41 | 显示全部楼层
说一下,我的想法.应该是可以实现的.但还没做出非常完美的例子

mush里有一个可以设置每个命令之间相隔多少毫秒的命令.具体哪个命令,一下子忘了shy
bigpswd 你找一下,或者直接在菜单--游戏--配置--命令 里设一下
然后,根据我的测试,你只要是一次把命令发出去,也就是说,放在一个send里.
mush会自动按照你发的命令一个一个延时加的.那样的说,你一口气发多少命令都没问题
既然,你都连上数据库了.一口气把路径算出来,应该没什么问题.
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-11-4 12:29:59 | 显示全部楼层
原帖由 ddid 于 2009-11-4 12:20 PM 发表
DoAfter()和DoAfterSpecial()的第一个参数——即时间,是需要累加的。

world.DoAfterSpecial 1+i, ""&path(i)&"", 0

那还是另外dim个变量吧,1秒太多了,0.3~0.5就好了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-11-4 12:35:46 | 显示全部楼层
原帖由 lzkd 于 2009-11-4 12:28 PM 发表
说一下,我的想法.应该是可以实现的.但还没做出非常完美的例子

mush里有一个可以设置每个命令之间相隔多少毫秒的命令.具体哪个命令,一下子忘了shy
bigpswd 你找一下,或者直接在菜单--游戏--配置--命令 里设一下
...

恩,我就是这么打算的,现在先设置常用路径,然后就是漫长的房间遍历了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-11-4 12:39:47 | 显示全部楼层
哈哈,感谢ddid,实现延时了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 12:45:52 | 显示全部楼层
nothank
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-25 08:17 AM , Processed in 0.010016 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表