【MUSH】机器人初级实例教程系列(三)
该来的迟早会来,既然来了就战斗吧!
战斗来了,机器首先要做的是判断战斗状态,即判断自己是不是在战斗中,如果是就pfm,如果不是就停手。否则总不能无休止的pfm下去吧!
Me.is_fighting = function()
if not Me.fighting then
Execute("research martial-cognize")
Me.fighting = mywait({"你现在正忙着呢。", "临阵磨枪?来不及啦。"}, {"武学修养是你武学方面的领悟,无法通过简单学习获得提升。", "你的武学修养不足180级,未到能研究的程度。", "你无法在安全区研究。", "你无法在这个地方安心吸收通过实战得到的心得。"})
end
return Me.fighting
end
这里,利用研究武学修养来判断战斗状态。有些人的机器用的是某绝招只能对战斗中的对手使用来判断的,也可以,只是绝招变了之后要考虑兼容性,以及左右互博稍微有点不一样。
判断完了战斗状态之后,如果是战斗中,接下来就该自动放pfm了,直到战斗结束为止。
Me.auto_pfm = function(f)
Me.fighting = true
myrepeat("p;research martial-cognize", {"你现在正忙着呢。", "临阵磨枪?来不及啦。"}, {"武学修养是你武学方面的领悟,无法通过简单学习获得提升。", "你的武学修养不足180级,未到能研究的程度。", "你无法在安全区研究。", "你无法在这个地方安心吸收通过实战得到的心得。"}, nil, nil, 0.2)
Me.fighting = false
if f then f() end
end
其实,自动放pfm之前,不判断战斗状态也没关系,自动放pfm这个函数本身也会判断战斗状态的!
除了机器直到该杀人的时候自动放pfm之外,平常的战斗如何也自动放pfm呢?
其实很简单,只要加一个触发就可以了,当某某看起来想杀死你的时候,调用
只需要添加这么点代码,你就能拥有随时随地自动放pfm的本事了!
你也可以再扩展一下:
if not Me.fighting then
Me.auto_pfm(Me.heal) -- 放完pfm自动检查状态并辽伤
end
这几行代码,再加上最初结束的常驻机器自动吃大红,就拥有了初步应付仇家小号的反pk功能了。当然也只能防小号,大号想pk你,人看着都防不住,更不用说的机器了。当然,这里气氛好,没有PK,不需要考虑这个。
这里对myrepeat这个函数稍微说明一下,其实就是重复某个指令,直到出现某个信息为止!之前的买东西遇到小二忙的时候反复买直到买成功,自动学习研究练习练功机器人反复练功直到没有内力为止,清理路障之打手等,也是用myrepeat这个函数来实现的。你只需要把指令,重复信息 和 结束信息 填进去,就能自动反复做某事了。
看到这里,相信大家都能应该看懂以下代码就是用来通过明玉迷宫的了。
myrepeat("s", {"突然一阵奇香向你袭来,你不由得开始奇想!"}, {"你走了半天,终于走出了花径。"}, nil, nil)
这里不得不感慨一下,有代码可以复用就是好啊!
页:
[1]