|
发表于 2015-4-28 19:15:46
|
显示全部楼层
本帖最后由 littleknife 于 2015-4-28 07:18 PM 编辑
lua的方式是“我发出指令,我确切的知道我可能得到哪些回复
这在MUSH里是完全可以做到的。因为可以设定环境变量的缘故,形如:set xxx okey 。
wait.regexp只能同时处理一个或几个情况,总不可能所有的东西都放在一个wait.regexp里。
1)wait.regexp这个方法经过对wait.lua的升级修正。论坛里有升级后的wait.lua。它的参数是可以带表格的,
2)wait.regexp方法是可以返回参数的,前三个参数是:触发行,触发变量,触发形式(即:line,wildcards,styles)
其用法可以参考下面的格式:
- function fight_check()
- local triggerlist={
- "^[> |]*你想收谁作弟子\\w*",
- "^[> |]*你想[要]*收(.+)为弟子\\w*",
- }
- ------------------------------
- local l,w,s
-
- for i=1,4 do
- repeat
- run("shou "..playerid.."'s robber "..i)
- l,w,s=wait.regexp({
- "^[> |]*你想收谁作弟子\\w*","^[> |]*你想[要]*收(.+)为弟子\\w*",
- })
- until l
-
- if string.find(l,"为弟子") then
- fight_NPC()
- end
- end--for
- ------------------------------
- end
复制代码 至于机器怎么写,完全凭个人的喜好。个人认为其核心的问题还是流程设计,只要能细化到一定程度的流程,代码反而不是很困难。
我写机器的思路,一般还是参考jarlyyn的思路:也就是考虑做些状态判定的函数,最后用状态返回值来判定执行什么动作。当然,我一般是用wait.lua模块来这么做而已。 |
|