zmud吧 关注:1,101贴子:5,643
  • 0回复贴,共1

zmud通配符与变量提取

只看楼主收藏回复

通配符与变量提取
有了基本触发和#wa,其实已经可以写出几乎所有机器人,但是有的难免繁琐,而且不一定能够达到最高效率,比如打坐,为避免浪费气血,打坐的数值应该跟随最大内力的变化而变化,这个要求,上面两个方法就无法做到。
所以,接下来才是机器人的重头戏,我觉得堪比人的记忆功能——通配符与变量提取名词解释通配符:可能玩家在系统、浏览器等的搜索功能里面使用过。通配符,就是用一些指定的符号,来代表其他内容,这是计算机的一种创举,把带入了模糊思想精密的计算机程序中,能够弥补计算机的很多不足。
变量:变量,说白了就是一个量,你用一个名字来指代这个量,而这个量的内容,可以是文字、符号、数字等东西。而变量的神奇之处就在于一个“变”字,变量值可以根据要求自动变化,就能进行为真正的动态运行。通配符通配符介绍我所了解的通配符有以下这些:
*星号是最简单的通配符,指代一切字符
?问号指代一个或者零个字符
%s这个通配符,指代任意长度的连续空格
%d这个通配符,指代任意长度的连续数字
%x这个通配符,指代任意长度的不包含空格的字符
%w通配任何字母(a-z)
%a通配任何数字和字母(等于%d+%w)
%n通配任何以+或-开头的数字
%x通配任何非空格
[lbk]range[rbk]通配任何在range范围内的字符
^表示一行的开头,想要你的trigger在一行的开头才有效,就在最前面加上这个
$表示一行的结尾。
(通配符)将括号里面的内容依次提取存放到参数%1~%99里
我对mud学习的也不多,了解的通配符就这几个,但是这几个已经足够了变量变量提取变量的提取,就是根据你的指令,从语句中提取出需要的部分,保存为一个变量(变量名最好不要使用中文,并且要含义清楚,以免自己都弄忘记)。那么,提取的部分既然是变量,就是会变的,这就需要通配符来指代
通配符直接使用的时候,只有取代作用,不会提取数值
要提取通配符指代的部分,需要在通配符两边加上英文括号,括号内的通配符指代的部分就作为变量。
变量初始数值按照提取语句的顺序,用%1、%2等指代。
然后,需要一个赋值过程来保存变量,人为制定一个变量,将%1、%2等值赋值到其中。以后,就可以使用该变量(变量不可在直接手动在指令栏中输入的指令中使用),变量使用时,直接输入@变量名,比如变量名为exp,那么使用时就是@exp
那么,既然括号在触发器里面被理解为提取变量的一个标志,英文括号不可能成为触发语句,所以,带有类似(dodge)的语句,是无法进行触发的示例例如,我们可以用通配符和变量的提取,自动提取内力的数据
首先,需要分析语句格式
> hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 126 / 270 [lbk]100%[rbk] 【 精力 】 1054 / 766 (+ 0)
【 气血 】 359 / 359 [lbk]100%[rbk] 【 内力 】 715 / 715 (+ 38)
【 食物 】 0 / 300 [lbk]饥饿[rbk] 【 潜能 】 8053
【 饮水 】 0 / 300 [lbk]饥渴[rbk] 【 经验 】 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


IP属地:北京来自Android客户端1楼2024-04-17 18:33回复
    地狱男爵5269、chinaxsc、zywhatsuzhou. . . 被楼主禁言,将不能再进行回复