MUD-武林MUD资料站-武侠MUD游戏

 找回密码
 注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[教程] 【MUSH】机器人初级实例教程系列(三)

[复制链接]
跳转到指定楼层
1# .
jcl 发表于 2013-5-1 14:37:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

该来的迟早会来,既然来了就战斗吧!

战斗来了,机器首先要做的是判断战斗状态,即判断自己是不是在战斗中,如果是就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)

这里不得不感慨一下,有代码可以复用就是好啊!



MUD - MUD游戏 - 文字MUD - 武林MUD - 长期、稳定、高速、互助、活跃、更新的武侠MUD站点,一起MUD吧!

Archiver|武林MUD资料站 ( 鲁ICP备17038480号 本站关键词:mud 武林mud mud游戏 文字mud

GMT+8, 2024-4-25 13:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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