duno 发表于 2009-5-11 05:15:05

[模块]机器人失败处理

[模块]机器人失败处理
本模块为 机器人 运作出问题时如何处理, 下官抛砖引玉, 意在分享和讨论思路
目的:
  机器人出问题时,要做的事情有三件:判定是否出现问题;恢复正常运行(如放弃当前任务,继续新任务);以及保存错误现场.
  如此才能放心睡觉,让尚未完成的机器人自己满地爬,并且把需要修改地方的线索记录下来.
思路:
  第一个目标,需要根据具体任务作出相应判断,如萧峰为接受任务超过若干时间杀手消失,或者小米跟随杀手跟丢了;护镖时镖车没了;慕容接受任务超过若干时间时,认为难以找到自主放弃
  第二个目标,只需能够定位,即可找到继续或放弃或等待接新任务.
  第三个目标,实现方法不少,下官思路是:获取判定错误前的若干行输出,写入相应日志文件,如下,蓝色部分为生成错误日志文件名称,绿色部分为获取输出段落并写文件,很简陋,但还算实用
  
function Fail.WriteLog ()

local dir = "F:\\zmud\\error log\\"
local filename = os.date ("%c") .. ".txt"
filename = string.gsub (filename, "/", "")
filename = string.gsub (filename, ":", "_")
filename = dir .. filename
local f = io.output(filename)
local total_lines = GetLinesInBufferCount ()
for line = total_lines - 500, total_lines do
local str = GetLineInfo (line, 1)
if str then
   f:write (str, "\r\n")
end
end
f:flush ()
f:close ()
end
  
  输出filename=F:\zmud\error log\051109 05_27_05.txt
说明:
  仅仅实现前面两个目标,机器人即可达到不中断的目标,但会掩盖错误,不利于机器人生长发育。所以需要有第三个目标作为补充功能。
  本贴旨在思路讨论。附件为下官所用的一个任务失败模块,供参考。

[ 本帖最后由 duno 于 2009-5-11 05:59 AM 编辑 ]

chatter 发表于 2009-5-11 11:17:40

为什么你不用zmud啊~~~~~天呀这么好的东西我会不用!!!
可惜俺用了mush几次,实在是不习惯啊不习惯,很多zmud里用的方便的mush里都不能用

duno 发表于 2009-5-11 11:36:13

回复 2# 的帖子

我手动玩的时候用的zmud721

zmud的写程序能力相对稍弱,如不直接支持完全的自定义函数,不直接支持复杂数据结构,对个人而言更习惯完整功能的语言
zmud支持插件,但是写zmud的插件很繁琐,对不熟悉的人而言繁琐加倍(如下官)
理论上所有逻辑功能zmud都能实现,但是对越是复杂的功能,可能zmud愈发额外的复杂

zmud设计的初衷是能让不会写程序的人也会用,所以大大简化了脚本语言,如数据库操作完全无须sql语言,同时不支持完整编程语言功能的另一面也就是使用者不需要学习理解那些东西,等等.但同时,对有编程经验的人而言,这些普通人的方便可能成为负担

理论上zmud也能实现所有逻辑功能.
选择什么工具更多的决定于主观

[ 本帖最后由 duno 于 2009-5-11 12:22 PM 编辑 ]

chatter 发表于 2009-5-11 14:01:16

其实我很想向cmud转移,cmud既有zmud的一些优点,也可以支持jscript、lua语言,但是可能是我还不惯于使用cmud的缘故,总感觉cmud不太稳定,会莫名其妙出问题。

本站的xxxcc同学cmud用的很不错,一些机器人也很好,不过好像很少看到他出现了。
页: [1]
查看完整版本: [模块]机器人失败处理