文字MUD游戏论坛-天下泥潭群英会-水泊梁山  

返回   文字MUD游戏论坛-天下泥潭群英会-水泊梁山 > 西游之旅 > 『 机器人制作及下载 』

『 机器人制作及下载 』 如何从开始简单的数组、触发,到复杂的路径、地图、数据库等等。如何考虑周全的制作全自动的机器人让它能够24小时不停的帮你练功。

 
 
LinkBack 主题工具 主题评分 显示模式
旧 2009-04-28   #1
中级会员
级别:1 | 在线时长:12小时 | 升级还需:3小时
 
dragonziwen 的头像
 
注册: 09年02月07日
来自: 广州
帖子: 56
声望力: 17
声望: 12 dragonziwen 闻道则喜
现金:76两梁山币
资产:76两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
ZMUD编程入门 (加精加声望)

ZMUD编程入门
  1 入门——Zmud编程的基本概念。
  与Telnet等初级工具相比,在玩泥巴(MUD)时,Zmud显示出强大的编程功能,利用Zmud的编程功能,我们可以根据MUD反馈回来的信息作出各种各样的复杂动作,从而简化我们的操作,让我们可以更轻松地畅游泥巴世界。
  Zmud编程的基本要素如下:
  Alias/Macro key/Variable/Trigger/button
  1.1 Alias 别名,可以将任何命令定义成你喜欢的形式。
  用一句通俗的话说就是:它可以将一条或多条复杂的命令用几个字母代替。
  比如:buy jitui from xiao er可以定义一个别名:mjt,这样以后你只需键入mjt,即可完成buy jitui from xiao er的动作。
  1.1.1 定义别名的方法有三种:
  1.1.1.1 最简单的方法:使用快捷键:Ctrl+A.
  在命令行里输入要定义别名的命令,然后按“Ctrl+A”,再键入自己命名的别名即可。比如:在命令行里输入“buy jitui from er”,然后,按“Ctrl+A”,再键入“mjt”,这样就给“buy jitui from er”定义了一个别名“mjt”。
  1.1.1.2 使用“#ALIAS”命令。
  语法:#ALIAS ALIASNAME {COMMAND}比如上例可以通过在命令行里输入“#ALIAS mjt {buy jitui from xiao er}”来完成别名的定义。
  1.1.1.3 使用别名定义窗口。
  你可以通过选择Zmud主菜单“View/Aliases”或者按菜单项的“Aliases”按钮来打开别名定义窗口,并对所有已定义的别名进行修改,添加或删除的操作。
  1.1.2 使用参数。
  另外,Alias 还可以使用参数,这让我们的操作有了灵活性。比如你可以这样定义:#ALIAS k {kick %1;hammer %1;nip %1},于是你键入k mixuer就相当于键入了“kick mixuer;hammer mixuer;nip mixuer”,不过千万不要写太多命令(小心频道被关),而且最好把“mixuer”换成“jokey,hero,koko,pqpq,sjmao,great,fangcj……”,只要别换成“tianya/tygk”就行,*snicker.
  注:别名只能用于一条命令的开头,只有这样别名才能被解释执行。比如:say mjt 不会被解释成say buy jiutui from er,因为mjt这个别名不是处于这条命令的开头。
  1.2 Macro key 宏定义键。
  将命令定义成键盘上相应的键或者组合键。
  1.2.1 定义的方法。
  从Zmud的顶部菜单中选择“Action->Define Macro Keys”,按下组合键“Ctrl+K”,Zmud会弹出一个小窗口,提示你键入要定义的键,按下要定义的键之后,Zmud会要求你输入在这个键上要表示的命令,再键入你希望的命令,一个宏定义键就定义完毕了。
  1.2.2 在定义宏定义键时要注意的问题。
  1.2.2.1 不要使用Zmud保留的键名。比如:Ctrl+K,Ctrl+A等等,因为你的定义不能覆盖Zmud的已有的定义。
  1.2.2.2 不要使用Windows等操作系统保留的键名,比如:F10,|ALt+A等,因为这样会影响你对操作系统的操作。
  1.2.2.3 不要使用箭头等编辑键。但当NUM LOCK 灯亮时小键盘上的键就不是编辑键,你可以使用它们作为宏定义键。
  1.2.3 当你键入宏定义键时,宏定义键代表的文本并不输入到命令行中。我们可以利用这个特性做一些富有技巧性的事,比如:如果你想迅速移动到东方,并且拣起地上的东西,可以这样做:定义数字键 6为“east”的宏,然后先在命令行中输入“get all”,按6之后,敲回车键“Enter”即可用 2个键迅速的实现“east;get all”两步操作。
  1.2.4 宏定义链。
  在定义宏的时候在命令后加一个“~”,那么当你键入这个键时,命令并是马上执行,而是先输入到命令行中去,并且把光标停留在这条命令的末尾。这样你就可以输入另一个宏定义键,于是就构成了宏定义链,这样可以减少你输入的键数。比如:如果我们定义了两个宏定义键:F8 open door,小键盘的8 north,这样当我们输入“F8,8”的时候,命令“open door;north”就被执行了,我们仅仅按了两个键,是不是特方便?
  注:其实在我们使用Zmud的时候,Zmud 已经为我们定义好了一些宏定义键,象我上面提到的“north,east”等方向键等等,你可以通过按“Ctrl+k”来查看修改这些宏定义键。
  1.3 Variable 变量。变量相当于编程语言中的变量,一旦定义可以用于命令的任何位置。
  1.3.1 定义的方法。
  1.3.1.1 在命令行中使用命令#VAR.比如:#VAR food jitui,就定义了一个变量,并将值“jitui”赋给了变量“food”。
  1.3.1.2 通过变量窗口。
  选择Zmud的顶部菜单中的“View->variables”,或按菜单项“variables”,都可以打开变量窗口。在“Variable”中添入要定义的变量的名字,可以同时指定变量的初值(Value),默认值(Default)。这样一个变量就定义完毕。比如:上例中的变量在变量窗口中可以这样定义:在“Variable”中添入“food”,在“value”中添入“jitui”,即可完成变量“food”的定义和赋值。
  1.3.2 变量的引用方法。
  在变量名之前加一个“@”,即可引用这个变量的值。比如:我们用“@food”即代表了jitui,“eat @food”即完成“eat jitui”的动作。变量的价值在于:当我们改变变量“food”的值时,我们不必改变命令“eat @food”,比如:当“food”的值变成 “gourou”时,我们一样可以用“eat @food”完成吃的动作。
  1.3.3 系统变量。
  Zmud为我们提供了一些系统变量,这些变量以“%”为前导,它们可以象普通变量一样引用,只是它们以“%”为前导,而不是“@”。
  注:在退出Zmud时,系统并不要求你保存已定义的变量,如果你想保存这些变量,那么在退出Zmud之前你必须先保存好这些变量。
  1.4 Trigger我不知道该叫它什么,触发?扳机?……我看还是叫“动作”比较恰当。也就是说,它能够根据发生的不同情况执行相应的命令。哇~这正是我们想要的!这是Zmud的最基本而有用的功能!也是做机器人的基础。打瞌睡的快醒醒,瞪大你的眼睛,竖起你的耳朵,:)
  1.4.1 定义的方法。
  1.4.1.1 利用命令行 #TRIGGER (或者 #ACTION)。
  语法:#TRIGGER {pattern} {command}比如:#TRIGGER {你气喘嘘嘘,看起来状况并不太好。} {exert recover}这样,当屏幕上出现“你气喘嘘嘘,看起来状况并不太好。”信息时,你定义的Trigger就会触发,产生“exert recover”的动作,这样你就可以自动恢复气血了。当然在command中可以使用已定义的变量(valiable)或别名(alias)。
  1.4.1.2 通过动作定义窗口。
  从Zmud的顶部主菜单中选择“View->Trigger”,就会打开动作定义窗口,所有已定义的Tigger都会显示在这个窗口中,所以我们可以随意地修改它们,当然也可以添加或者删除。在窗口中有这么几个项:Class,Pattern,Command.Class是动作的类,你可以将相关的动作放在一个类里。Pattern是模式的意思,也就是说你期望屏幕上出现的信息,你可以从屏幕上直接粘贴这些信息。Command是当你的pattern跟屏幕上出现的信息吻合时将产生的动作。另外还有几个按钮:
  “Enable class”让选定的动作起作用。
  “Disable Class”则让选定的动作暂时失去作用。
  “Testing” 可以测试你定义的动作是否正确。
  “Options”中是关于动作的一些设定,我会在以后进一步说明。
  1.4.2 对Tigger的控制。
  在通过命令行定义Trigger时,可以再加一个参数,如下:
  #TRIGGER {pattern} {command} classname
  这个classname就是你要为这个Tigger起的类名。这样在命令行中,我们可以通过“#t+ classname”来打开一个类(相当于在窗口中按“Enable class”按钮),也可以用“#t- classname”来关闭一个类(相当于在窗口中按下按钮“Disable Class”)。
  注:匹配符:
  * 可以代表一个或多个字符,也可以代表空格。? 可以代表一个字符。
  %d 代表任何十进制的数字(0-9)。
  %w 可以代表任何拉丁字母(a-z) (a word)。
  %a 可以代表任何拉丁字母或阿拉伯数字(a-z,0-9)。
  %s 可以代表空格或跳格键 (spaces, tabs)。
  %x 可以代表任何非空格字符。
  [range] 代表规定范围内所列出的任何数量的字符。
  ^ 强制从一行的开头进行匹配。
  $ 强制从一行的结尾进行匹配。
  (pattern) 将已匹配的串存入变量里,变量可以是 %1到 %9.
  ~ 将下面的字符作出注释,防止它被匹配,实际就是将它忽略。
  {val1|val2|val3|……} 匹配任何已指定的字串。
  {^string} 不匹配选定的字串。
  也许你不太明白上面的解释,不必着急,在以后的讲座中,我会结合实例进一步解释。
  1.5 button 按钮。
  通过点击按钮可以执行相应的命令,也可以显示某个参数的值,还可以方便地控制Trigger的开启或关闭等。按钮可以使我们的操作更加直观、方便。
  1.5.1 按钮的类型。
  按钮可以分成两种:点击按钮和开关按钮。当你用鼠标按下“点击按钮”时,命令被执行,当你释放鼠标时,命令被释放。而点击“开关按钮”,按钮将在“ON”和“OFF”之间循环。
  1.5.2 定义的方法。
  从主菜单中选“Action->Make buttons”或者“View->Buttons”都将弹出按钮的编辑窗口。如果选定“Toggle”,将定义一个“开关按钮”。“Off Caption”指定“OFF”状态时按钮上显示的文本:“On Caption”指定“ON”状态时按钮上显示的文本:“Off Command”指定按钮ON时执行的命令:“On Command”指定按钮OFF时执行的命令。“Variable”可以定义按钮所需的变量。如果不选定“Toggle”,将定义一个“点击按钮”。只需在“Off Caption”和“On Command”中添入相应的内容即可。
  1.5.3 按钮的高级属性。
  在按钮的“Advanced”设置里你可以指定、修改按钮的许多特性。比如:按钮的颜色,改变按钮的尺寸、位置,为按钮指定一幅图片等等。
  例子:自动study机器人的设计:
  1.变量的定义:
  book:要study的书或物品名
  st_value:用于study的心神值
  st_back:用于恢复心神的内力值
  st_loop:用于正循环的气血值
  2.triggers的设计:
  class:study
  pattern:内力 :(%s)(%1)/(%s)(%d)
  commands:#if (%1<@st_back);{#wa 3000;exercise @st_loop1;#wa 3000;exert recover;hp};{#wa 3000;study @book @st_value;#wa 500;exert refresh;hp}
  3.button的设计:
  Off caption:study off
  on caption: study on
  on commands:#prompt book;#t+ study;hp
  off commands:#t- study
  (这仅仅是一个例子,如果要用于实际当中,还要做一些改动。)这一节我介绍的只是Zmud编程中的基本要素,也许枯燥一点,但了解这些基本要素是很有必要的。有了这些基本要素,我们就可以利用他们构造出各种各样的自动操作,也就是我们常说的 robot(机器人)。下一节我会结合实际,专门讲几个例子探讨一下robot的制作方法。

  

http://7.qiankundai.com/06/myfile/yingxr/map/xyj.jpg
帅哥 dragonziwen 当前离线  
回复时引用此帖

 

添加到书签

主题工具
显示模式 对此主题评分
对此主题评分:

发帖规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9, 现在的时间是 17:53.


Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue

Content Relevant URLs by vBSEO 3.6.1