sizak 发表于 2012-3-18 18:49:30

如何加载wait.lua 啊??

本帖最后由 sizak 于 2012-3-18 06:57 PM 编辑

已经在行首 加上 require "wait"
还是提示我这个。。。

北大侠客行MUD,中国最好的MUD

emyt 发表于 2012-3-18 19:04:42

什么脚本,脚本代码贴出来看看

tozmud 发表于 2012-3-18 21:25:48

这个不是很懂,我也想知道。求答案!!

emyt 发表于 2012-3-18 21:39:33

wait.lua应该加载正常,应该是你调用wait.time的问题,所以需要看看脚本代码

wgogo 发表于 2012-3-19 10:27:05

wait不能在主线程调用。 必须在辅线程调用。
用mush,建议上来就开启辅线程, 然后一切代码都放辅线程中。

shuigui 发表于 2012-3-19 12:42:34

回复 5# wgogo


    这个主线程和辅线程不是很明白,是不是可以理解为主线程就是直接调用的文件,辅线程就是主线程中require的文件

feixiong 发表于 2012-3-21 19:15:08

回复 7# shuigui


    请高手指点,empty 在哪里

littleknife 发表于 2012-3-21 19:17:46

楼主的引用没有问题。出现这个错误提示,估计还是代码里有问题。
不懂啥是线程。。-----yct15.

emyt 发表于 2012-3-22 12:46:00

本帖最后由 emyt 于 2012-3-22 11:51 AM 编辑

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instructionpointer),但与其它协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。
可以看看活鱼的代码
http://www.pkuxkx.com/forum/viewthread.php?tid=3866
引用一段function diaoyu_start()
wait.make (function ()--- coroutine below here
                wait.regexp ("这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好闲")
                wait.time (1) -- 等待1秒
                Note( '回到ct了' ) -- 提示到达目的地
                diaoyu_cttomatou() -- 从ct走道岸边
      end)-- end of coroutine
      diaoyu_maiyuer() -- 去买鱼饵
end

wgogo 发表于 2012-3-31 23:38:42

多说两句:
比如有个程序:
function abc()
       wait.time(10)      --等待10秒的例子
       l = wait.regexp("触发放这儿", 5)   --等待触发5秒,
       if(l == nil) then return end    -- 没有等到触发
   print("有了触发, 代码写下面")
       --这里写其他代码
end

如果你的机器人就是调用abc, 那么这么调用:
co = coroutine.create(abc)
coroutine.resume(co)

我所有的机器人都是这个结构, 基本用wait.exp, wait.time这两个函数可以搞定所有东西。
希望对大家有点用。
页: [1] 2
查看完整版本: 如何加载wait.lua 啊??