imtt 发表于 2014-10-28 19:37:17

zmud转mush求助之(二) 如何实现list变量的路径功能

有哪些对应的函数可以使用吗?城际互联插件有没有集成遍历的功能?

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

littleknife 发表于 2014-10-28 21:30:56

本帖最后由 littleknife 于 2014-10-28 09:37 PM 编辑

哈哈。遍历有啊。好多遍历方法的。不过不是城际互联插件里的。
机器人应用层框架代码可以参考如下内容:TestMOD={
      new=function()
                local _TestMOD={}
                setmetatable(_TestMOD,{__index=TestMOD})
                return _TestMOD
      end,
      interval=5,
      timeout=20,
      help="格式:帮助文件",
      -------------------------------------
      Sleeproomno=player.Sleeproomno,
      Eatfoodroomno=player.Eatfoodroomno,
      Trainingroomno=player.Trainingroomno,
      -------------------------------------
      aimroomno="",
      aimroomname="",
      -------------------------------------
      jobnpcname="",
      jobnpcid="",
      jobnpcmenpai="",
      jobwords="",
}

function TestMOD:finish()
end

function TestMOD:fail()
end

TestMOD_button=function()
      print(TestMOD.help)
      SetCommandSelection (1, -1)
      PasteCommand("#TestMOD ")
end

TestMOD_alias=function(name, line, wildcards)
      do_TestMOD(wildcards,TestMOD_ok,TestMOD_fail)
end

do_TestMOD=function(wildcards,TestMOD_ok,TestMOD_fail)
      local tmp_TestMOD=TestMOD.new()
      tmp_TestMOD.finish=TestMOD_ok
      tmp_TestMOD.fail=TestMOD_fail
      tmp_TestMOD:start(wildcards)

end

function TestMOD:start(wildcards)
      wait.make(function()
      self:update()
      local f=function() self:check(wildcards) end
      getinfo(f)
      end)
end

function TestMOD:check(wildcards)
      local askjob=function() self:askcmd() end
      local endf=function()
                        do_walkgo(self.masterroomno,0.2,askjob,askjob)
      end

                if me.hp["neili"]<=1.2*me.hp["neilimax"] then
                        do_dazuo(1.2,"curmaxneili",endf,endf)
                else
                              busytest(endf)
                end
end

function TestMOD:askcmd()
end

function TestMOD:cooltime()
end

function TestMOD:main()
end

-----------------------------------------------

function TestMOD:dosomething1(n,l,w)
end

function TestMOD:dosomething2()
end

function TestMOD:dosomething3()
end

function TestMOD:dosomething4()
end

-----------------------------------------------

function TestMOD:update()

                localTestMOD_triggerlist={
                     {name="TestMOD_dosth1",regexp="Here is trigger1 RegularExpression",script=function(n,l,w)    self:dosomething1(n,l,w)end,},
                     {name="TestMOD_dosth2",regexp="Here is trigger2 RegularExpression",script=function()    self:dosomething2()end,},
                     {name="TestMOD_dosth3",regexp="Here is trigger3 RegularExpression",script=function()    self:dosomething3()end,},
                     {name="TestMOD_dosth4",regexp="Here is trigger4 RegularExpression",script=function()    self:dosomething4()end,},
                }

---Creat Trigger-->>
                for k,v in pairs(TestMOD_triggerlist) do
                        addtri(v.name,v.regexp,"q_TestMOD",v.script)
                end

---End Creat Trigger--<<
      local noecho_trilist={
                        "noecho_tri1",
                        "noecho_tri2",
                        }
      local _noechotri=linktri(noecho_trilist)

      addtri("TestMOD_noecho",_noechotri,"q_TestMOD","")
      SetTriggerOption("TestMOD_noecho","omit_from_output",1)
      EnableTriggerGroup("q_TestMOD",1)
end

AddAlias("alias_TestMOD_button","#TestMOD_button","",alias_flag.Enabled + alias_flag.Replace ,"TestMOD_button")
AddAlias("alias_TestMOD","#TestMOD (.*)","",alias_flag.Enabled + alias_flag.Replace+ alias_flag.RegularExpression ,"TestMOD_alias")

SetAliasOption("alias_TestMOD","group","job_TestMOD")
SetAliasOption("alias_TestMOD_button","group","job_TestMOD")


addtri=function(triname,trimatch,trigroup,triscript,triflag,trisequence)

                        if triflag==nil or triflag=="" then triflag=flag_base_enable end
                        if trisequence==nil then trisequence=10 end
                        if type(triscript)=="string"      then
                                                tri_returnvalue=check(AddTriggerEx(triname, trimatch, "", triflag, -1, 0, "",triscript, 0, trisequence))
                        end
                        if type(triscript)=="function"      then
               
                              local Addtri_fun = "addtri_" .. GetUniqueNumber ()
                              _G = triscript
                              tri_returnvalue=check(AddTriggerEx(triname, trimatch, "", triflag, -1, 0, "",Addtri_fun, 0, trisequence))
                        end      
                        SetTriggerOption(triname,"group",trigroup)
                        return tri_returnvalue
end
关键你得能看明白。呵呵。

imtt 发表于 2014-10-29 03:56:58

回复 4# yhzzyahoo
我已经晕了

imtt 发表于 2014-10-29 03:59:18

回复 3# littleknife
多谢提供代码,我想我是用不出来了。简单的list在mush里居然这么复杂!

imtt 发表于 2014-10-29 04:09:36

标题

回复 2# yhzzyahoo
我只是设想在使用上能做到一致,通过自定义函数或其他方式,使zmud的使用者,不需要做什么改变就可以飞快的使用mush,理论上应该是可以做到的。正如看电视一样,我并不需要关心是阴极射线管,还是LCD,或是LED。对于mud,我只需根据屏幕反馈,键入相同的命令,而得到相同的结果,而不用管是mush或是zmud。

littleknife 发表于 2014-10-29 05:35:54

本帖最后由 littleknife 于 2014-10-29 05:48 AM 编辑

回复littleknife
多谢提供代码,我想我是用不出来了。简单的list在mush里居然这么复杂!
imtt 发表于 2014-10-29 03:59 AM http://pkuxkx.net/forum/images/common/back.gif

我的理解,楼主的命题是两个问题,一个是list的使用,一个是路径的问题。上面的代码不单单是list应用,也是个应用模块。我的理解list就是mush里的table表格。初始就是定义一个变量a={},okey了。就是list了。然后你怎么用它,都可以。
至于路径的定义,第一种思路:list_node={roomno=“”,roomname="",desc="",exits="",direction={a,b,c,d}}形如这种数据结构来做节点,节点定义完成后,用搜索函数形如map_search(startpoint,endpoint)来形成路线。
第二种思路,直接给路线:list={pointb,path="a;b;c;d;e;f;g;"},然后决定pointa,用walk函数走到pointb。但这种也涉及pointa的定位问题。

zardtest 发表于 2014-10-29 08:33:02

本帖最后由 zardtest 于 2014-10-29 12:34 AM 编辑

电总的帖子里有遍历代码,拿来直接可以用,无需修改。
我现在用的就是这个,配合城际互联和GPS,无需自己写代码(俺也不会写)就能实现比gt强大得多的功能。
错长老的mush推车贴也研究过,但是看不懂。
不过貌似错长老也没写出成品来吧?

imtt 发表于 2014-10-29 08:56:11

回复 10# zardtest
求帖子地址链接,谢谢

metatrader 发表于 2014-10-29 12:32:51

哇,小刀还在冒泡。膜拜啊。

zardtest 发表于 2014-10-29 12:45:03

回复 12# imtt


    http://pkuxkx.net/forum/viewthread.php?tid=32933&highlight=mush
页: [1] 2
查看完整版本: zmud转mush求助之(二) 如何实现list变量的路径功能