dreamnb 发表于 2012-10-9 16:12:42

mush lua的repeat问题

我用下面这段代码来循环走树林,碰到有npc出来杀我,我就执行其他函数处理。
但是我发现repeat经常无辜就卡住不走了,不知道是什么原因
function suckmmr_search()
        repeat
                local l,w=wait.regexp("^[>\\s]*看起来(.*)想杀死你|"..
                        "^[>\\s]*回显:go",3)
                print(l)
                if l~=nil then
                        if string.find(l,"杀死") then
                        print(l)
                        print(w)
                        SetVariable("mmr_name",w)
                        DoAfterSpecial(0.5,'kill_mmr()',12)
                        return "over"
                        end

                        if string.find(l,"go") then
                                wait.time(1)
                        end
               
                else
                        print("匹配不到了")
                end
                Execute("n;s;echo go")


        until false

end
请问是wait.lua问题?还是啥原因呢?
不是每次都不正常,就是有时候无辜就退出repeat循环了,后面代码都不执行了。也不报任何错误

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

hkyyxss 发表于 2012-10-9 16:34:46

不懂,你可以论坛里面私信labaz

pizzagoo 发表于 2012-10-9 16:34:49

为啥是\\s而不是\s?

shuigui 发表于 2012-10-9 18:45:10

回复 3# pizzagoo


    脚本里需要\\,转意\

ruoyu 发表于 2012-10-9 19:05:56

yct30

dreamnb 发表于 2012-10-9 19:12:37

因为lua里面\用来去掉后面字符的特殊含义,所有用两个

dreamnb 发表于 2012-10-9 19:15:49

有人杀你-------killmmr()函数-----n;s
在杀的过程中也会执行n;s这时候有可能会逃跑失败或者还没进入战 ...
huacuoh 发表于 2012-10-9 07:03 PM http://pkuxkx.com/forum/images/common/back.gif

我是先判断是否有人杀我,如果没有人杀我,才继续走n;s。如果有人杀我,就执行kill_mmr()后面跟着return "over"就不会再执行后面的n;s了。
现在程序本身可以正常执行,但是有时候循环着,就突然没反应了。

flauto 发表于 2012-10-9 19:23:59

阅。转腊同志批复

when 发表于 2012-10-9 19:33:50

类似的问题:http://pkuxkx.com/forum/thread-13071-1-1.html

labaz 发表于 2012-10-9 19:40:15

本帖最后由 labaz 于 2012-10-9 07:43 PM 编辑

已阅,协程问题转毛毛解答。我水平不够,这玩意不敢用。
建议每个分支都加打印,定位到停在哪一步。
页: [1] 2
查看完整版本: mush lua的repeat问题