当前位置:   article > 正文

机器人java指南_Zmud新手机器人指南

zmud变量抓取

机器人的主体构架是触发器,类似电脑的操作系统。

触发器的原理,就是根据你给出的条件,自动侦测mud里出现的语句,符合条件后自动执行指令。说简单点,就是条件反射

一、基本触发

最基本的触发,就是没有任何编程内容,纯粹的条件反射,非常适合新人编写。这种触发是工作量最大的,但是编写容易,不容易断,是机器人触发器部分的主体。

如果需要使用多个指令指令,每个指令间用英文分号;隔开

例如,新人利用发呆室读书,就可以只用一个基本触发搞定。

触发思想:

1、发呆室可以瞬间补满精气,那么发呆室外消耗精气的过程就应该尽量缩短,节省时间,所以如果是读书,应该用du book for 50

2、发呆室发呆完有大概2秒的busy,无法移动。那么,为了避免busy,不用编程指令的时候,就必须针对这种情况增加触发

3、避免干扰,set brief 1,减少不必要的地点描述;tune all,关闭所有聊天频道以避免干扰

示例: 复制内容到剪贴板 代码:

你发呆了一会儿

out

------------------------------------------------------------------------------- 复制内容到剪贴板 代码:

你的动作没有完成,不能移动

out------------------------------------------------------------------------------- 复制内容到剪贴板 代码:

发呆室

du book for 50;out;fadai三个触发做成读书机器人

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

二、#wa指令

#wa是触发中最常用的指令,作用是等待指定的时间(依照#wa后面的数字来定,以毫秒为单位),然后执行后面的命令。

作用一:当一次发送出的命令过多时,会有溢出,最后的部分命令可能无法执行,导致机器人中断,所以大量指令之间,需要一定的等待

作用二:许多事件都有一定的busy time,在这段时间内,会无法移动,或者无法使用pfm和exert或其他,那么,就需要针对busy time,设定等待

再看上面的读书机器人,做出3个触发,完全只是为了处理busy问题,而读书和发呆,其实很简单,所以如果解决了busy,一个触发足够

触发思想:利用#wa解决发呆busy,然后以发呆为触发条件进行指令,由于发呆大概有2秒的busy,为保守,#wa设定在三秒以上

示例: 复制内容到剪贴板 代码:

你发呆了一会儿

#wa 3000;enter;du book for 50;out;fadai-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

三、触发器分类好的机器人应该具备几个条件,从游戏本身来考虑,非要做个排名的话,我认为应该是安全,稳定,效率,适用面广,当然如果你还能做到界面丰富生动,简洁易修改等等那更好了。所以,良好的触发器分类和运用是很重要的。

触发器可以设定种类,一来能够方便使用和整理;二来可以整类触发器统一开关,能够实现更多的用法

开关一类触发器的指令是#t+(打开)和#t-(关闭),格式为#t+ 触发器种类

使用示例:比如,一般情况下,内功支持的最大内力和最大精力基本相同,那么打坐吐纳的时候,就可以轮流进行,共同提升。那么,就可以把打坐的一类触发器设定为dz类别,吐纳的一类触发器设定为tuna类别,用#t+和#t-在适当的时候进行切换

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

四、通配符与变量提取

有了基本触发和#wa,其实已经可以写出几乎所有机器人,但是有的难免繁琐,而且不一定能够达到最高效率,比如打坐,为避免浪费气血,打坐的数值应该跟随最大内力的变化而变化,这个要求,上面两个方法就无法做到。

所以,接下来才是机器人的重头戏,我觉得堪比人的记忆功能——通配符与变量提取

-------------------------------------------------------------------------------

通配符

名词解释

通配符:可能玩家在系统、浏览器等的搜索功能里面使用过。通配符,就是用一些指定的符号,来代表其他内容,这是计算机的一种创举,把带入了模糊思想精密的计算机程序中,能够弥补计算机的很多不足。

变量:变量,说白了就是一个量,你用一个名字来指代这个量,而这个量的内容,可以是文字、符号、数字等东西。而变量的神奇之处就在于一个“变”字,变量值可以根据要求自动变化,就能进行为真正的动态运行。

通配符介绍:

*    星号是最简单的通配符,指代一切字符

?问号指代一个或者零个字符

%s 这个通配符,指代任意长度的连续空格

%d   这个通配符,指代任意长度的连续数字

%x 这个通配符,指代任意长度的不包含空格的字符

%w   通配任何字母(a-z)

%a   通配任何数字和字母(等于%d+%w)

%n   通配任何以+或-开头的数字

%x   通配任何非空格

[range] 通配任何在range范围内的字符^ 表示一行的开头,想要你的trigger在一行的开头才有效,就在最前面加上这个

$ 表示一行的结尾。(通配符)将括号里面的内容依次提取存放到参数%1~%99里

我对mud学习的也不多,了解的通配符就这三个,但是这三个已经足够了

-------------------------------------------------------------------------------

变量

变量提取:

变量的提取,就是根据你的指令,从语句中提取出需要的部分,保存为一个变量(变量名最好不要使用中文,并且要含义清楚,以免自己都弄忘记)。那么,提取的部分既然是变量,就是会变的,这就需要通配符来指代

通配符直接使用的时候,只有取代作用,不会提取数值

要提取通配符指代的部分,需要在通配符两边加上英文括号,括号内的通配符指代的部分就作为变量。

变量初始数值按照提取语句的顺序,用%1、%2等指代。

然后,需要一个赋值过程来保存变量,人为制定一个变量,将%1、%2等值赋值到其中。以后,就可以使用该变量(变量不可在直接手动在指令栏中输入的指令中使用),变量使用时,直接输入@变量名,比如变量名为exp,那么使用时就是@exp

那么,既然括号在触发器里面被理解为提取变量的一个标志,英文括号不可能成为触发语句,所以,带有类似(dodge)的语句,是无法进行触发的

例如,我们可以用通配符和变量的提取,自动提取内力的数据

首先,需要分析语句格式 复制内容到剪贴板 代码:

> hp

≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡

【 精神 】 126 / 270 [100%]   【 精力 】 1054   / 766 (+ 0)

【 气血 】 359 / 359 [100%]   【 内力 】 715 / 715 (+   38)

【 食物 】 0     / 300 [饥饿]   【 潜能 】 8053

【 饮水 】 0     / 300 [饥渴]   【 经验 】 105840

≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡我们可以看见,内力一栏里,有许多空格,而为了避免数值位数不同造成空格数量的不同,通常用%s指代空格,而不是在触发语句里面直接使用空格

内力后面有一个加力数值(+ 38),就像上面所说,括号不能作为触发语句,那么这段就不能要

内力有两个数值,一个是当前内力,一个是最大内力,我们应该把他们分别提取。提取数字,应该用(%d),两个变量分别是%1、%2,我们可以把他们保存到neili和maxneili两个变量中

那么,示例如下 复制内容到剪贴板 代码:

原语句:【 内力 】 715 / 715 (+   38)

触发语句:【%s内力%s】%s(%d)%s/%s(%d)

触发指令:neili=%1;maxneili=%2这样,每次hp后,触发器都能自动提取当前内力和最大内力的数值,分别保存到neili和maxneili两个变量中

----------------------------------------

附:括号问题的解决

介绍一个符号~,作用是让其之后的第一个符号(比如括号)不进入变量提取格式的判断

比如,如果我们想做个战斗触发器,每当黄血时自动吸气,那么,我们就可以这样写这个触发: 复制内容到剪贴板 代码:

原语句:( 你气喘嘘嘘,看起来状况并不太好 )

触发语句:~( 你气喘嘘嘘,看起来状况并不太好 ~)

触发指令:exert recover

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

五、变量计算

有时,提取出来的数字形式的变量,我们不打算直接使用,而是计算后再使用。

比如,利用发呆室打坐吐纳时,为避免浪费,如果每次打坐的数值是最大内力的1/4,那么能够做到对气血的比较有效的利用(怎么才能最大利用呢?请见谁能解释一下, 心跳在mud 中是起什么作用的?,具体给个数值,dazuo的数目是有效内功/10的整数倍时最有效率,一倍最不容易浪费)

这时,就需要进行变量计算,把maxneili变量数值除以4,然后保存为一个新的变量

变量计算的指令是#math指令,此指令可以进行简单的四则运算,格式为#math 新变量 变量计算式

例如我们把maxneili变量值除以四,然后为了避免四舍五入的影响,最后再+1(一切都是按照四则运算规则进行),那么运算指令就是

#math dazuo @maxneili/4+1

另:如果只进行加减运算,可以使用#add指令,格式为#add 数字变量   改变数量,如#add num 1就是@num变量加一。

这样,就可以把maxneili变量的数值除以4再加上1,保存为新的变量——dazuo

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------六、条件指令

下面,我们就要开始了解机器人中极其强大的条件指令。条件指令,是机器人的大脑,给予了机器人思考判断的能力。

条件指令是根据你的条件进行判断,如果满足条件则执行一组指令,不满足则执行另外一组指令

条件指令使用的命令是#if,格式有两种

格式一:#if (条件) {指令}

格式二:#if (条件) {条件成立的指令} {条件不成立的指令}

格式一中,如果条件成立,便自动执行大括号内的指令,如果条件不成立,便自动跳过

格式二中,如果条件成立,便自动执行第一个大括号中的指令,如果条件不成立,便自动执行第二个大括号中的指令

示例:

还是用内力数值的变量提取。新人利用发呆室打坐吐纳,就必须保证最大内力和最大精力都在1000以下。那么,内力和精力的数值提取触发中,就可以加入#if指令进行判断。

设计思想:用@maxneili的数值和999作比较,相等时就停止打坐,不相等就继续 复制内容到剪贴板 代码:

#if (@maxneili=999) {#t- dz;#t- tuna;halt;quit}-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

七、句首严格触发

句首严格触发,是指通过一些通配符的使用,尽量保证触发语句出现在句首时才能触发,这样能让机器人更加严密,不易中断

^:这个符号的输入方式是,在英文输入状态下,按着shift按钮不放,按下键盘左边的6

^符号用在触发语句开头,作用是进行严格触发,当触发语句开头有^的时候,该语句必须位于行首才能被触发

行首严格触发作用:避免机器人错误触发,比如我就有被空手道chat 你受伤过重xxxxx弄得quit的惨痛经历…………

示例:

1、行首触发 复制内容到剪贴板 代码:

原语句:> 你深深吸了几口气,脸色看起来好多了。

触发语句:^??你深深吸了几口气,脸色看起来好多了2、伤害触发(注意伤害描述是英文括号加一个空格,那么如果要进行行首严格触发,就要特别小心别漏了那个空格) 复制内容到剪贴板 代码:

原语句:( 你受伤不轻,看起来状况并不太好 )

错误触发:^??( 你受伤不轻,看起来状况并不太好 )

正确触发:^????你受伤不轻,看起来状况并不太好

或者:^??~(%s你受伤不轻,看起来状况并不太好

---------------------------------------------------------

具体讨论请看行首严格触发的问题

八、定时器

定时器,就是根据你指定的时间为周期,定期执行指定命令

定时器的设置很简单,就不赘述了

定时器的作用:定期执行指令,比如长周期定时存盘、hp查看属性并且配合触发提取数值,比如短周期定时繁复打坐等

定时器可以用指令开关,开启定时的指令为#timer on或者#time on,关闭定时的指令为#timer off或者#time off,设定定时器时间为#ts 时间。

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

九、别名

别名,是为了方便操作而设计的。别名可以用一个指令来指代一串指令,其中,别名的名字不能用中文

别名是很常用的,北侠mud打包下载中,就把各区域往来的路径制作成为别名。

而且,别名有一定的alias的作用。比如,我设定别名g,指令是get,那么我就可以使用g all来代替get all

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

十、宏键

宏键,就是以键盘按键作为条件执行命令,能够极大程度的方便操作

我个人建议把小键盘设定为行走宏键

1:sw

2:s

3:se

4:w

5:l

6:e

7:nw

8:n

9:ne

同样,常用的一些exert、perform、吃喝等指令可以做成宏键,建议把exert和perform制作到F1、F2一系列按键中,例如

F1:exert recover

F2:exert regenerate

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

十一、实用小指令

触发器指令中,有一些指令作用很简单,但是很使用,比如#mess和#cap、#show、#gag、#case、#help

#mess:自动用对话框发送制定内容提醒玩家

作用不用说了吧,任务、挂机等都非常实用

比如,我可以在刚才所说的自动停止打坐的条件指令里面加入#mess 内力已经到达999,自动停止打坐,那么,当内力到达999时,机器人除了自动停止打坐,还会弹出一个在所有windows窗口之前的对话框提醒玩:内力已经到达999,自动停止打坐。

-------------------------------------------------------------------------------

#cap:自动把该触发语句用一个新的mud窗口显示

这也是极其实用的,最常见的是把闲聊内容单独用一个窗口显示,避免遗漏重要信息

示例: 复制内容到剪贴板 代码:

【闲聊】

#cap chat

注:Zmud自动换行造成的多行,还是按照一行计算

另:#cap也可以一次性提取多行,比如#cap 3 chat,就是提取三行

那么,当有人通过闲聊频道说话的时候,内容除了在主窗口内显示,还会出现在一个以chat命名的窗口内

-------------------------------------------------------------------------------

#show:显示指定的内容

这个指令格式是 #show 指定内容效果是在mud窗口里面显示指定内容,字体颜色为Zmud默认颜色

这个指令可以用来进行提示

实例:

慕容任务里,用变量提取慕容复说的叛徒地址,储存在@zone变量中,然后计时器里面以五秒为循环,执行指令#show 叛徒在@zone附近如提示是归云庄练功房,那么任务时,每隔五秒就会自动显示

玉玺在『归云庄练功房』附近

另:

#say也有同样效果,而且颜色更鲜明(Zmud讯息颜色),推荐用#say

-------------------------------------------------------------------------------

#gag:自动删除一行内容,不予显示

这是避免一些刷屏而使用的,比如可以屏蔽恶意刷屏,比如可以让闲聊不显示

示例: 复制内容到剪贴板 代码:

【闲聊】

#gag那么,当有人通过闲聊频道说话的时候,就可以自动删除,避免影响

但是,#gag删除的语句,只是不显示,实际仍然存在,依旧会引发触发。所以,用这个屏蔽闲聊不如tune chat,因为这个是用闲聊触发,那么就算删除不显示,闲聊内容其实也已经进入了触发,如果闲聊中有人说“你运功完毕”之类的话,仍然会触动你的触发

-------------------------------------------------------------------------------

#case:根据变量数目执行目标指令

格式:#case @数字变量 {指令一} {指令二} {指令三} …… {指令N} ……(注意要用@)

原理:根据自动执行对应变量值的指令,如变量为2,则执行指令二

示例:详见wiki护镖,贫道也是从那里学来的

-------------------------------------------------------------------------------

#help:Zmud帮助指令

格式:#help或者#help xxx

这是最全面的Zmud指南,并且可以详细查询,比如如果我想查询if语句的功能和用法,就输入#help if,回车

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

十二、按钮

按钮,比较实用,是制作一个按钮,点下按钮就可以执行命令。在zmud的按钮栏中是找不到这个设置的,要点击查看——按钮,打开按钮设置

按钮设置,可以设定按钮名称和点下按钮时执行的指令,并且还可以设定成开关式,按钮在zmud窗口中的位置,同样可以设置

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

十三、触发测试

一套机器人制作好之后,不要忙着马上使用,最好先进行测试,以发现一些问题

触发测试有两种方法

方法一:点击常规按钮,打开常规设置,选中左上角的显示触发信息

这样,当触发器执行时,会自动在mud窗口里显示触发信息,方便检验执行状况

-------------------------------------------------------------------------------

方法二:打开触发器窗口,选择一个触发,点击右边的测试选项卡

这个是触发器的测试功能,可以检验你的触发是否能够进行。上方的句型栏是触发器中设定的触发语句,下方一栏是实际出现的指令,由你输入

例如,上面所说的内力提取指令,如果我不知道英文括号不能作为触发语句,把触发语句设定为 复制内容到剪贴板 代码:

^??【%s气血%s】*【%s内力%s】%s(%d)%s/%s(%d)%s(+   0)

(思考:为什么要内力触发前面的气血部分?)

那么,为保险进行测试,就可以把实际的hp内容拷贝进下面一栏,比如 复制内容到剪贴板 代码:

【 气血 】 920 / 1316 [100%]   【 内力 】 1523   / 1784   (+ 0)然后点击触发测试,结果程序会告诉我,触发无法匹配,那么我就知道,我这个语句有问题了,不能被触发,然后就可以再检查并修改

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

十四、状态栏

状态栏位于指令输入栏上方灰色那条,默认为空白,右键点开可以进行显示内容设置

状态栏可以随时显示你想知道的内容,配合变量侦测和提取的触发,可以极大程度的方便游戏。例如,我们可以把经验、潜能、精力、内力、常用任务写在状态栏上。

如: 复制内容到剪贴板 代码:

经验:@exp | 潜能:@pot | 内力:@neili/@maxneili | 精力:@jingli/@maxjingli-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

简易机器人的一些知识,就到此为止

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/718511
推荐阅读
相关标签
  

闽ICP备14008679号