mmdntt 发表于 2015-1-2 01:19:33

请教mush 一个问题

function do_job()
   if string.find(task,"xiaofeng") then
         Note("找到")
         while true do
         Execute("ask shashou about fight")
         wait.make(function()
      l,w=wait.regexp("^[> ]*蒙面杀手说道:「就你也配跟我讨教功夫?!」|^[> ]*蒙面杀手说道:「要打便打,不必多言!」")         
         if string.find(l,"蒙面杀手说道:「就你也配跟我讨教功夫?!」") then
         Note("不是你的任务目标")
         --bianli_goon()
          elseif string.find(l,"蒙面杀手说道:「要打便打,不必多言!」") then
            Note("找到目标")
            --kuangfeng=0
         --DoAfterSpecial(0.5,"t+ 萧峰;look shashou;follolw shashou;fight shashou",10)
         end
             end)
            end
    end      

这段代码,我是设置有一个触发,set find 1, 当出现这个的时候就do_job,每次do_job mush 就崩溃了,我实在找不出问题所在,请大神们指点下!

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

cappuccino 发表于 2015-1-2 02:58:35

回复 1# mmdntt
function do_job()
   if string.find(task,"xiaofeng") then
         Note("找到")
               wait.make(function()
         while true do
         Execute("ask shashou about fight")
         
      l,w=wait.regexp("^[> ]*蒙面杀手说道:「就你也配跟我讨教功夫?!」|^[> ]*蒙面杀手说道:「要打便打,不必多言!」")         
         if string.find(l,"蒙面杀手说道:「就你也配跟我讨教功夫?!」") then
         Note("不是你的任务目标")
         --bianli_goon()
          elseif string.find(l,"蒙面杀手说道:「要打便打,不必多言!」") then
            Note("找到目标")
            --kuangfeng=0
         --DoAfterSpecial(0.5,"t+ 萧峰;look shashou;follolw shashou;fight shashou",10)
         end
            
            end
                        end)
    end      没排版

cappuccino 发表于 2015-1-2 03:00:52

另外,你这个while true的无限循环是不打算跳出来吗?既没有break也没有return。。。

mmdntt 发表于 2015-1-2 03:07:40

回复 3# cappuccino


    我去掉这个while 直接wait.make 也是崩··

mmdntt 发表于 2015-1-2 03:17:03

本帖最后由 mmdntt 于 2015-1-1 07:31 PM 编辑

function do_job()
   Note("找到")
         if string.find(task,"xiaofeng") then Execute("ask shashou about fight")
                     wait.make(function()
         local p,w=wait.mulregexp({
                     {"^[> ]*你向蒙面杀手打听.*\\n蒙面杀手说道(\.*)\\n",true,2},
                              })      
            print("line= ",p)                        
                        if string.find(w,"也配跟我讨教") then
                        Note("不是你的任务目标")
                        bianli_goon()
                        elseif string.find(w,"要打便打") then
                        Note("找到目标")
                        kuangfeng=0
             DoAfterSpecial(0.5,"t+ 萧峰;look shashou;follolw shashou;fight shashou",10)
                        end
                        end)
    end               
                        
if string.find(task,"yuxi") then DoAfterSpecial(0.3,"t+ 玉玺;fight pantu;pq",10) return end
end
纸箱妹妹再看下啊,还是崩!!
我多次测试,好像问题是处在wait.make 上!

是不是我在mush 中做个触发器set find 1,然后调用脚本的do_job() 导致的?

cappuccino 发表于 2015-1-2 03:43:33

回复 5# mmdntt


    yawn...

根据你5楼的代码,俺是看不出啥了。。几点建议:

1. 不要用触发,单独手动执行一次do_job(),看是否崩溃,以确定是否是函数本身的问题
2. 在do_job里只留一个空的wait.make(function ()),检验下是否崩溃……如果崩溃,那应该是你在外层调用了太多wait.make()。。
3. 如果只留空wait.make()不会崩溃,再挨个注释掉里面的句子检查。。尤其是bianli_goon()

碎觉去了。。zzz

mmdntt 发表于 2015-1-2 10:32:16

回复 7# huacuoh


    错错长老,上群可以吗?

mmdntt 发表于 2015-1-2 13:01:33

回复 9# yhzzyahoo


    电老大,说仔细点吧?

littleknife 发表于 2015-1-3 18:43:17

如果经常崩溃,你把wait.lua替换成原版的wait.lua。把多行wait.mulregexp先屏蔽。看看是否崩溃,若是不崩溃就说明是wait.lua的问题。崩溃了就是你的代码问题。
页: [1]
查看完整版本: 请教mush 一个问题