|
楼主 |
发表于 2009-7-6 12:48
|
显示全部楼层
本帖最后由 q2a3z4w 于 2009-7-6 12:52 编辑
第三课
对于有双重施法的角色,
同样的信息是成双出现的, 怎么办?
让一个cast命令使用两个%bc段
其方法如下:
%scene begin
.....
100:cast1_bc:cast ??? on ???
.....
%bc cast1_bc
retry::你上一个动作没有完成,不能施法.
next::<施法失败的各种信息>
...
change:cast2_bc:你想起动双重施法,但失败了。
change:cast2_bc:<施展该法术的显示信息>
%bc cast2_bc
next::这里没有这个人。 <--- 第一个施法结果导致npc死忙,会出现这种结果
next::<施展该法术的显示信息> <--- 如果该信息不是法术结束时的消息,
在next后两个冒号之间,加入延迟时间, 如
next:3:.......
///////////////////////////////////////////////////////////
// 大家会想, 要是写多重施放, 是不是设成几, 就得写几个%bc段.
答: 如果你非得用这种方法, 确实要写几个%bc段.
但是.............你为什么不用"你的身体恢正常了"这句话呢?
第四课
到此为止, 你应该能够编写很多提高运行效率的机器人代码了.
也就是说, 每个命令之间延迟时间的设计已经不重要了, 你完全可以
用100来替带.
下面介绍点在编写过程中要注意的几点.
1. 在%bc段的比较文本一定是完整的gkk显示信息. 如果你希望
只要头几个文本相同就可以的话, 要在后面加上"%*"
例如: 一定要写成
next:5:你喃喃念道%*
如果你写成
next:5:你喃喃念道
那么该行永远也不会被匹配执行了.
2. 一定要仔细考虑该命令到底会出现多少种情况?
如果漏掉几种, 你的机器人效率会不时的降低.
比如在双重施法上, 双施成功了, 但第一个法术的实施
杀死了npc, 那么第二个法术就不会启动, 而显示
"这里没有这个人."
如果你没注意到这点, 有时机器人就会傻等一段时间.
///////////////////////////////////////////////////////////////
// 这里我介绍一下我设计zrobot的思路. 以便于大家的理解.
原来的gkk机器人, 能做的事就是 发一个命令, 等一段时间, 再发一个命令, 再等...
一遍做完了, 再重新开始.
这时候, 机器人的设计有两个内容:
(1) 你要懂得某职业练功/打经验的方法.
(2) 确定各动作的执行时间, 并且要去掉方法中的智能判断部份.
比如, 某法术容易失效, 那就连续多发几次, 保证成功. 这就是一种
去掉判断的实例
发命令->等->发命令->等-> ... -> 到头就重新开始. 这种形式, 我在设计
zrobot时, 必需要保留!!! 原因不言自明. 这部份内容, 在zrobot中, 称作正文段
对于只用上面的方法, 出现了下面几个问题:
(1) 命令执行出现失败情况该怎么办?
(2) 因为服务器变慢, 导致上个动作没结束. 怎么办?
(3) 速度又变快了, 还要等那么长时间, 不太划算?
(4) 有些命令本来执行时间就是变化的. 如meditate(冥想)
(5) ...
zrobot最开始的目的, 就是要解决上面的问题!!!!!!!!!!!
而真人在遇到上面的情况时, 通常会做的事有:
(1) 重发一次命令(即重做)
(2) 命令即然提前结束, 开始下一步动作吧.
根据文本信息, 控制/改变正文段的执行状态, 就成了我最初设计zrobot的
想法. 这部份内容, 形成了%bc段, 即行为控制段.
在设计行为控制段时, 我的中心思想就是让它不能向gkk发送命令, 只是
改变执行状态. 最终向gkk发送命令的, 一定还是正文段的事.
(这大概是导致复杂的一个原因吧 !!!!)
改变状态的这种操作, 被称做行为控制命令.
随着需求的增多, 行为控制段和正文段的结构发生些变化, 功能也增
多, 但设计zrobot的中心思想和基本规则还是没变的.
正文段/行为控制段可被分拆分多个, 这是最开始就有的, 这符合结构
化的设计思想.
正文段的重大变化是在行为规则的选取上, 最开始是整个正文段使用
一组行为控制, 其后发现, 一个正文段中的命令序列中, 显示信息可
能有问题, 造成歧义. 于是变成了, 一个正文段对应一个行为控制段.
这被称为基本行为控制段, 在正文段的每一行, 还允许增加专属自已的
行为控制段, 这被称做附加行为控制段.
(其实, 基本行为控制段的作用因此被削弱了. 有时, 没有基本行为控
制段也可以.)
针对每一个命令编写特定的行为控制段, 表面看是增加复杂度, 其实
是变得相对简单. 你在编写的过程中, 只要专注于该命令的各种显示
信息就行了, 哪个信息是失败的信息, 不同原因的失败该如何处理?
哪个信息是成功的信息. 哪个信息将会导致以后信息的分枝(即差异)
我现在就在想, 如果所有职业, 所有法术, 命令的行为控制段都有人
分析出来, 形成一个行为控制段库, 以后每做一个机器人, 大概只要
想执行序列了吧. 然后把用到的各命令对应的行为控制库含进来....
行为控制不是必需的, 当一个代码没有任何行为控制段时, 就只有时
间驱动了, 这时和其它的机器人也没什么区别的. 在格式上, 也绝对
不麻烦. 但如果不用行为控制, 你是不觉得zrobot大材小用了?
下面总结简单制作zrobot机器人代码的思想
1. 确定一个机器人的执行序列. (这里哪个机器人都得面对的)
2. 为序列中每个步骤(即一个命令) 设计它的结束依据/重做依据.
3. 每个命令的行为控制依据构成一个(或几个)行为控制段.
4. 把这个序列描述, 再添加上所有对应这些命令的行为控制段.
如果上面的内容能理解了, 制作zrobot的机器人应该就不难了, 剩下的
变成了 "zrobot是否能实现这个功能", "zrobot如何实现这个功能的"
这些问题了. |
|