jarlyyn 发表于 2015-4-21 15:16:54

回复jarlyyn


是啊?mush不行吗?也可以吧
把变量放到触发条件里,正则应该支持吧?难道不支持吗?
ltblue 发表于 2015-4-21 03:15 PM http://pkuxkx.com/forum/images/common/back.gif
先写代码吧……到时候你就知道了……

ltblue 发表于 2015-4-21 15:31:42

忽然想,我们用一个类似”任务榜“的模式行吗?

每个动作,都有一定的目的,其实都是一个任务
把每一个模块,当成一个任务来运行,每个任务结束,都会设置”下一个任务“来跟上。如果当前任务需要挂起,则自动执行”可运行的,紧急度最高的任务“。
同时辅以各种全局钩子,作为切换任务的触发。

例如:
饮水在50以上,喝水的紧急度为0,饮水在20-50,喝水的紧急度为100,饮水不足20,喝水的紧急度为1000

送信任务的紧急度,接信之前为50,接到信之后,中途等杀手时为500,与杀手打架的时候为10000,杀完了杀手继续送信的紧急度为200。

我在接到信之前,送信的除了第一步以外的步骤不可接,完成了第一步,即接到信之后,第一步变成不可接,第二部变成可接,然后判断哪个紧急度最高,也许饮水低于20,紧急度高达1000,就去喝水了,喝水之后,再去等杀手。

换句话说,逻辑上不可自行的,紧急度不变,任务状态变成不可接,比如你不能没接送信任务,就去等杀手。
如果逻辑上可行但或许没必要的,比如喝水,那么任务状态一直是可接,只不过水量高时不优先接而已。

这样,有一部分是状态机,即判断变量来执行,另外一部分,不必要依靠判断”是否busy“来写,而是做完一个任务,或者碰到某些”全局钩子“(比如忽然碰到pk什么的,瞬间pk的紧急度高达100w,然后专心pk),来判断下一步做什么。

这样的思路可行吗?大家评价一下吧

ltblue 发表于 2015-4-21 15:33:03

回复 51# jarlyyn


刚才看了一下,触发器里有”展开变量“这个选项,应该支持触发条件里加变量啊

当然,我之前误入歧途,基本没用mush里的触发器,所以没啥发言权......

jarlyyn 发表于 2015-4-21 15:49:35

忽然想,我们用一个类似”任务榜“的模式行吗?

每个动作,都有一定的目的,其实都是一个任务
把每一个 ...
ltblue 发表于 2015-4-21 03:31 PM http://pkuxkx.com/forum/images/common/back.gif

没什么问题

cappuccino 发表于 2015-4-21 16:46:26

回复 40# ltblue


    可以多个模块一起wait.regexp,你多wait.make几次就是了。不过不是很推荐动不动就创建新协程,因为代码不严谨的话容易崩溃

一个极端的例子,比如你想做一个独立的全局触发,其实可以:
wait.make(function()
while true do
    local l, w = wait.regexp("触发内容")
    触发动作
end
end)

ltblue 发表于 2015-4-21 17:02:48

回复 55# cappuccino


啊?协程不是同时只能有一个的吗?可以一起wait吗?

你的例子没看懂,这是走一步算一步的方式吗?wait到了再wait?

ltblue 发表于 2015-4-21 17:04:58

另外,请教一个语法问题:

有函数a,函数b,函数c,以及变量w
我希望当w=="a"时,运行函数a
w=="b"时,运行函数b
w=="c"时,运行函数c
可否不加if,就运行?
多谢

cappuccino 发表于 2015-4-21 17:14:59

本帖最后由 cappuccino 于 2015-4-21 05:24 PM 编辑

lua本来就有regexp,根本不该使用wait.regexp啊……wait是什么鬼……
jarlyyn 发表于 2015-4-21 02:54 PM http://pkuxkx.com/forum/images/common/back.gif


    wait是一个封装了coroutine的模块,wait.regexp只是其中的一种用法。。可以说,wait方式改变了编写mush机器人的思路

ltblue 发表于 2015-4-21 17:23:30

wait是一个封装了coroutine的模块,wait.regexp只是其中的一种用法。。
cappuccino 发表于 2015-4-21 05:14 PM http://pkuxkx.com/forum/images/common/back.gif


完全不懂什么叫coroutine,本论坛有个”粗学mush“,我看那里有,我就用了

cappuccino 发表于 2015-4-21 17:30:00

回复 56# ltblue

这算不算同时?

for i = 1, 10 do
wait.make(function ()
    while true do
      print(i)
      wait.time(1)
    end
end)
end
页: 1 2 3 4 5 [6] 7 8 9 10 11 12
查看完整版本: 我好像误入歧途了