自动卖花完全讲解
作者:东方英雄
有人要我写个卖花的设计,专营卖花的呆头呆脑(None)可不要骂我哦!:-)
这里提供的是设计方法为主,希望大家从中受益。
1. 决定自动卖花的工作流程
卖花给别人,需要对象。基于前面“自动问候”的设计,我们已经知道怎么获得别人的名字和 ID,
这样为我们向他要钱和收钱后把花给他打下基础了。但是我们还是需要确定整个过程:
当别人要求你买花时,你告诉他 10 silver 一朵;我们可以要求别人用 buy flower from
your_name 来做,这样得到第一个trigger: "xxx想向你购买“flower”。",这个 trigger
可以让我们得到对方的名字和 ID。
知道有人问你买花后,告诉他“10 silver 一朵”,并向对方致谢。
对方把钱给你后,得到第二个 trigger: "XXX给你一些银子。",用这个 trigger 重新得到
对方的名字和 ID, 因为此时可能是另一个人把钱给你呢,给花的对象可不能搞错。
把花给对方,并向对方道喜。
OK, 以上我们整理出了程序的流程,下面就是具体实现了。
2. 具体编写实现方法
第一步:我们把这回的设计重新取个类的名字“卖花”,开始设计对方向你购买花的 trigger。
首先增加一个变量 WH_Class, 用来在相同的 Variable triggers 处识别不同用处。需要注意:
此时我们用到在“自动问候”中的设计概念,不清楚可参考回头一下:
pattern: (%x)想向你购买“flower”。
command: WH_Class=1;WH_ChineseName=%1;id here
第二步: 编写对方把钱给你后,把花给对方,并恭喜对方:
pattern: (%x)给你一些银子。
command: WH_Class=2;WH_ChineseName=%1;id here
第三步: 用相同的 Variable trigger 对以上情况的结果进行不同处理:
pattern: (@WH_ChineseName)(%s)= (%x)
command: #if (@WH_Class=1) {WH_IdName=%3;say 10 silver 一朵。;
thank @WH_IDName} {WH_IdName=%3;
give flower to @WH_IDName;gongxi @WH_IDName}
至此,一个基本的“自动卖花”设计基本完成,我们只要准备好足够的花和钱袋,然后激活
“卖花”这个类(Enable class),你的卖花机器就会开始工作啦!
但聪明的玩家可以发现里面还有至少两个漏洞,哪里呢?(*xixi)
什么都包办可不行了,大家充分发挥自己的潜能吧 :P
一点提示:没有花怎么办?(应该向对方道歉,并退回给你的钱);
上面第三步无法判别对方具体给你多少 silver, 怎么办?
请充分考虑如果手工操作你会如何处理这个 case ?:)
|