找回密码
 注册
搜索
查看: 2024|回复: 7

几个机器技巧(转帖)

[复制链接]
门派:不明
发表于 2009-9-5 21:45:04 | 显示全部楼层 |阅读模式
1.分清mud命令和Zmud命令的区别:
     Zmud是Zuggsoft开发的用于访问mudos(Multiple User Domain Operating System ,多用户域操作系统,即mud游戏服务器)的客户端,mud命令是取决于某个特定的mud游戏服务器的,比如通用的look、hp等等,它们被送往远程服务器,用来控制你的游戏角色。

     Zmud命令是用来控制你本地计算机上的客户端的行为的,比如#ig 控制 触发器的开关、#con 则重新连接服务器、#cap *** 则截取一行mud发来的文本并保存到以***命名的窗口,
#mess "******" 可以弹出一个对话框提示你紧急情况的发生,#t+ ,#t- 可以分类控制触发器的开关等。

    (1.5 执行的延迟:

     mud只有在网络通畅的情况下才能执行,并且不能过快(很多mud游戏为保护服务器资源限制一次性执行指令的数量),所以在使用mud命令的时候要记得化整为零,适当插入#wait **** 来让mud命令间歇性送出,不要一次执行太多条命令,不然轻则昏厥,重则被断线。 而使用Zmud命令则没有限制,你可以在本地计算机上使用任意长度的Zmud命令。

另外,因为受到网络传输的限制,Mud命令的送出和结果的返回是不同步的,写机器人的时候要考虑这个执行时间,适当延迟,eg. 当网速慢的时候,hp的显示可能比命令的发出延迟一两秒,
假定你用

#tr{精血(%s)(%d) /(%s)(%d)(%*)·精力·(%s)(%d) /(%s)(%d)(%*)}
     {jingxue=%1}

这样的触发来抓取hp值,
如果直接用{ hp;#if @jinxue>1000 {dazuo @jingxue-100} }这样的命令,很可能新的精血值还没来得及刷新,而旧值又匹配 #if 判断,造成决策的失误,解决的方法是稍等片刻,让返回的新值被抓取后再作判断
{hp;#wait ****; #if *********}

而Zmud可以看成是以光速同步执行,不用考虑延迟

Zmud指令和mud命令很好区分,前者都以#开头,并可以在主菜单-〉帮助 里检索到
另外Zmud还提供一系列内置函数,实现包括从字符串操作到数值计算的功能,同样在帮助里提供检索,它们的得当的组合几乎可以实现任何人工操作的功能。

2.用别名屏蔽mud命令的技巧
    在Zmud窗口的右下角有个手枪和电脑小图标,鼠标单击开关,电脑图标提示是否正在进行语法解析,当语法解析开启时,所有在命令行输入的命令都要先经过Zmud客户端程序的检查和翻译才送到远程服务器去,比如 分号 ; ,在语法解析过程中就被翻译成了回车。也就是说分号其实是个Zmud命令而不是mud能识别的命令,只是用来表示回车的符号。可以试着解析,输入say a;b;c;d,这句话就会原样送到mud去。

        错误的别名设置会干扰正常的游戏,比如无意中把 s 设置成了 sleep 的别名,就走不了路了

    但是利用这个特点我们可以实现选择性控制机器人的功能,比如,一个大型机器人里,为了充分利用精血,在很多工作之余的地方加了du @book,现在身上没有book,要暂停读书,在触发器里逐条寻找将会非常费时费力,这时只要设定一个别名 {#al du jump},就可以把这条命令屏蔽掉,换成一个没有实际效果的emote,等拿到书,只要去掉这个别名,就又可以恢复到以前,是不是很方便
(会编程语言的同学会觉得这样很像用注释暂时屏蔽代码的技巧)

3.冗余指令实现“漏斗技巧”

    从襄阳到杭州要过长江,长江岸边有三个渡口,只在一个渡口等船必然不如在三个渡口等船上船的概率大、速度快,为了节省时间,可以写三个触发器,左看一下,右再看一下,有船就上,没船就换渡口,而过江下船后必须定位到下一条路径或别名的起点,但这样无疑增加了判断的次数和复杂度。
   
    这时候可以用冗余指令,在渡口 { e;yell boat;enter;e;yell boat;enter;w;yell boat;enter}
                                     下船后 { e;e;w;.gohangzhou}
这样的冗余命令就可以确保看遍三个渡口并在下船后定位到中间一个渡口,也就是我们去杭州的路径的起点。
     这个技巧还可以用在机器人的断点续挂上,relogin后可能在一个区域的任意房间,这时可以用一行冗余指令定位到要去的点,例如在大理西大街断了点,进去后可以用
{ #9 s;n;#9 e}定位到私塾处,这样总比每个房间一条判断要来得方便。

4。防止flood
现在的机器人触发模板开头经常有 ^??的字样,这是为了防止误触发或有人恶意启动你的机器人 ,^符号表示要求模板顶行出现才有效,??是为了匹配随机出现的> 或 >>字符的,这样基本可以确保你的机器人当且仅当看到系统消息才启动,而忽略 某某某告诉你:你一觉醒来,只觉得。。。。这类恶意触发,
另外还有一个 ~符号,是要求模板后面必须包含某给定的文本才有效的,可配合使用。

评分

1

查看全部评分

morphine@ts 该用户已被删除
发表于 2009-9-5 22:03:42 | 显示全部楼层
第4条,是不是说,应该把自己做的触发器,引起触发的那句话前面,自己手动加上^??的字样?

那个~符号呢?怎么配合使用?举例一下?
门派:不明
发表于 2009-9-6 06:04:50 | 显示全部楼层
哈哈 都是做robot很常用的技巧

不过我不喜欢做robot 只会简单的改改
门派:不明
发表于 2009-9-7 16:27:08 | 显示全部楼层
实用。。收藏起来慢慢体味。谢谢大侠!                 。
门派:不明
发表于 2009-9-11 13:39:04 | 显示全部楼层
刚好想研究编robot玩!谢谢提供!收藏了
门派:不明
发表于 2009-9-12 10:30:44 | 显示全部楼层
我连搞进去个防发呆插件都搞不定
门派:不明
发表于 2009-9-12 15:58:57 | 显示全部楼层
增长了见识,还是有不明白的地方
门派:不明
发表于 2009-9-14 13:16:46 | 显示全部楼层
很好的内容,等你的待续.......................................
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-21 10:12 , Processed in 0.036955 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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