不好意思...这篇小弟看了很久
因资质驽钝....仍然写不出来对某个视窗下指令的方法
文章也是很久以前的文,看能否有缘遇大神指导...
是这样的,小弟开了三个角色
想在A角色的视窗直接对B or C角色下达命令,recall之类...
我该怎么做到,从zmud跳mushclient 真的是比登山难...
求大神能现身指教....
※ 引述《hmml (hmml)》之铭言:
: 这是一个对我而言蛮有用的功能,所以很早就在找怎么
: 写这个功能了,它相当于zMUD的"ID:指令"或#all,#all是向
: 全部视窗发布命令。'ID:指令'其实是切换视窗,送命令只是
: 顺便而已。
: 在MushClient里,它需要这个函数:
: GetWorld (视窗名称):用来取得指定视窗的位址。
: 当然,也可以用这个:
: GetWorldById(视窗ID):用法同上,只是你要取得
: 视窗的ID值有点麻烦,当视窗名称撞名的时候,才
: 可能采用它,谁那么无聊,不同角色的视窗都用同
: 一个名字呢?
: 写法如下:
: 1. 决定别名的写法,记得点选正规表示法项目:
: ^to(\S+) (.*)$
: 以to为起头,蓝色部份为%1,代表角色的ID(假设
: 视窗名设得跟游戏中的角色ID相同),黄色部份为%2
: ,用来输入指令。蓝色部份和黄色部份中间空一格。
: 注意大小写,不管是正规表示法还是Lua,都很明确细
: 份大小写,A 不等同 a,And and aNd 虽然只差大小
: 写,但三者都不一样。
: 2. 将GetWorld的内容指定到一个变量里:
: toName = GetWorld(%1)
: 3. 再用toName去接发送的指令行:
: toName:Send('%2')
: 基本上,这样就完成了,如果你正在玩弄kimokimo
: 走不开,想对aiggkimd下个recall的指令,就这么输入
: :
: toaiggkimd recall
: 这样,aiggkimd就会recall了。
: 4. Send()是用来对MUD送命令的,如果只是想显示个讯
: 息,就要用:
: toName:Note('%2')
: 5. 另外还有:
: toName:Execute('%2')
: 如果你送的命令是MushClient的alias,只有这个才
: 能展开它。
: 6. 瑞士小刀:
: toName:DoAfterSpecial(0.1,'%2',12)
: 其实它相当于zMUD的#alarm +Sec {commands},
: 不过它是我目前找到唯一能把指令送给脚本分析器
: 再分析内容的函数,所以它能吃内含函数的指令,
: 改动第三个参数的值,可以决定把内容送去哪里:
: 0:游戏
: 1:命令
: 2:输出窗口
: 3:状态栏
: 4:记事本(新建)
: 5:记事本(追加)
: 6:记录文件
: 7:记事本(替换)
: 8:命令队列
: 9:变量
: 10:执行(等同于在命令窗口输入命令)
: 11:快速行走(把发送内容解析为快速行走路径)
: 12:脚本(发送给脚本解析器来执行脚本命令)
: 13:立即发送(在命令队列执行之前就发送给游戏)
: 用途广泛,0相当于Send,2相当于Note,10相当于Execute,
: 12可以执行程式码,先记这几个就行了。第一个参数可以设
: 定几秒后执行,从0.1秒到23时59分59秒之间都可以。所以,
: 用它必然要接受至少0.1秒的延时输出,应该还能接受吧!
: 当使用它以脚本分析来对其它视窗输出指令时,如:
: toName:DoAfterSpecial(0.1,'Send('save')',12)
: 就格式而言没什么问题,不过,它会出错,要改成:
: toName:DoAfterSpecial(0.1,'Send([[save]])',12)
: 才会正常,其它函数也一样!这个就是重点,因为我常常忘
: 记,所以写这篇的啦!找出这个解法花一个小时,然后下次
: 再用,又花一个小时想发生什么事...Orz
: 7. GetWorldById() 赢过 GetWorld() 的地方,就是它不用将
: 内容存到变量就能直接引用,虽然我没用过,不过,
: http://mc.chinaido.com/help.php?function=GetWorldById
: 它范例是直接引用。
: 8. #all 的功能就是这个指令再加强,使用for循环去完成它:
: for key, value in pairs (GetWorldList()) do
: toName = GetWorld (value)
: toName: DoAfterSpecial(0.1,'%2',12)
: end