北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 11116|回复: 11

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

[复制链接]
发表于 2014-10-28 19:37:17 | 显示全部楼层 |阅读模式
有哪些对应的函数可以使用吗?城际互联插件有没有集成遍历的功能?

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-10-28 21:30:56 | 显示全部楼层
本帖最后由 littleknife 于 2014-10-28 09:37 PM 编辑

哈哈。遍历有啊。好多遍历方法的。不过不是城际互联插件里的。
机器人应用层框架代码可以参考如下内容:
  1. TestMOD={
  2.         new=function()
  3.                 local _TestMOD={}
  4.                 setmetatable(_TestMOD,{__index=TestMOD})
  5.                 return _TestMOD
  6.         end,
  7.         interval=5,
  8.         timeout=20,
  9.         help="格式:帮助文件",
  10.         -------------------------------------
  11.         Sleeproomno=player.Sleeproomno,
  12.         Eatfoodroomno=player.Eatfoodroomno,
  13.         Trainingroomno=player.Trainingroomno,
  14.         -------------------------------------
  15.         aimroomno="",
  16.         aimroomname="",
  17.         -------------------------------------
  18.         jobnpcname="",
  19.         jobnpcid="",
  20.         jobnpcmenpai="",
  21.         jobwords="",
  22. }

  23. function TestMOD:finish()
  24. end

  25. function TestMOD:fail()
  26. end

  27. TestMOD_button=function()
  28.         print(TestMOD.help)
  29.         SetCommandSelection (1, -1)
  30.         PasteCommand("#TestMOD ")
  31. end

  32. TestMOD_alias=function(name, line, wildcards)
  33.         do_TestMOD(wildcards,TestMOD_ok,TestMOD_fail)
  34. end

  35. do_TestMOD=function(wildcards,TestMOD_ok,TestMOD_fail)
  36.         local tmp_TestMOD=TestMOD.new()
  37.         tmp_TestMOD.finish=TestMOD_ok
  38.         tmp_TestMOD.fail=TestMOD_fail
  39.         tmp_TestMOD:start(wildcards)

  40. end

  41. function TestMOD:start(wildcards)
  42.         wait.make(function()
  43.         self:update()
  44.         local f=function() self:check(wildcards) end
  45.         getinfo(f)
  46.         end)
  47. end

  48. function TestMOD:check(wildcards)
  49.         local askjob=function() self:askcmd() end
  50.         local endf=function()
  51.                         do_walkgo(self.masterroomno,0.2,askjob,askjob)
  52.         end

  53.                 if me.hp["neili"]<=1.2*me.hp["neilimax"] then
  54.                         do_dazuo(1.2,"curmaxneili",endf,endf)
  55.                 else
  56.                                 busytest(endf)
  57.                 end
  58. end

  59. function TestMOD:askcmd()
  60. end

  61. function TestMOD:cooltime()
  62. end

  63. function TestMOD:main()
  64. end

  65. -----------------------------------------------

  66. function TestMOD:dosomething1(n,l,w)
  67. end

  68. function TestMOD:dosomething2()
  69. end

  70. function TestMOD:dosomething3()
  71. end

  72. function TestMOD:dosomething4()
  73. end

  74. -----------------------------------------------

  75. function TestMOD:update()

  76.                 local  TestMOD_triggerlist={
  77.                        {name="TestMOD_dosth1",regexp="Here is trigger1 RegularExpression",script=function(n,l,w)    self:dosomething1(n,l,w)  end,},
  78.                        {name="TestMOD_dosth2",regexp="Here is trigger2 RegularExpression",script=function()    self:dosomething2()  end,},
  79.                        {name="TestMOD_dosth3",regexp="Here is trigger3 RegularExpression",script=function()    self:dosomething3()  end,},
  80.                        {name="TestMOD_dosth4",regexp="Here is trigger4 RegularExpression",script=function()    self:dosomething4()  end,},
  81.                 }

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

  86. ---End Creat Trigger--<<
  87.         local noecho_trilist={
  88.                         "noecho_tri1",
  89.                         "noecho_tri2",
  90.                         }
  91.         local _noechotri=linktri(noecho_trilist)

  92.         addtri("TestMOD_noecho",_noechotri,"q_TestMOD","")
  93.         SetTriggerOption("TestMOD_noecho","omit_from_output",1)
  94.         EnableTriggerGroup("q_TestMOD",1)
  95. end

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

  98. SetAliasOption("alias_TestMOD","group","job_TestMOD")
  99. SetAliasOption("alias_TestMOD_button","group","job_TestMOD")
复制代码

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

  2.                         if triflag==nil or triflag=="" then triflag=flag_base_enable end
  3.                         if trisequence==nil then trisequence=10 end
  4.                         if type(triscript)=="string"        then
  5.                                                 tri_returnvalue=check(AddTriggerEx(triname, trimatch, "", triflag, -1, 0, "",  triscript, 0, trisequence))
  6.                         end
  7.                         if type(triscript)=="function"        then
  8.                
  9.                                 local Addtri_fun = "addtri_" .. GetUniqueNumber ()
  10.                                 _G [Addtri_fun] = triscript
  11.                                 tri_returnvalue=check(AddTriggerEx(triname, trimatch, "", triflag, -1, 0, "",  Addtri_fun, 0, trisequence))
  12.                         end        
  13.                         SetTriggerOption(triname,"group",trigroup)
  14.                         return tri_returnvalue
  15. end
复制代码

关键你得能看明白。呵呵。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-10-29 03:56:58 | 显示全部楼层
回复 4# yyahoo
我已经晕了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-10-29 03:59:18 | 显示全部楼层
回复 3# littleknife
多谢提供代码,我想我是用不出来了。简单的list在mush里居然这么复杂!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-10-29 04:09:36 | 显示全部楼层

标题

回复 2# yyahoo
我只是设想在使用上能做到一致,通过自定义函数或其他方式,使zmud的使用者,不需要做什么改变就可以飞快的使用mush,理论上应该是可以做到的。正如看电视一样,我并不需要关心是阴极射线管,还是LCD,或是LED。对于mud,我只需根据屏幕反馈,键入相同的命令,而得到相同的结果,而不用管是mush或是zmud。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-10-29 05:35:54 | 显示全部楼层
本帖最后由 littleknife 于 2014-10-29 05:48 AM 编辑
回复  littleknife
多谢提供代码,我想我是用不出来了。简单的list在mush里居然这么复杂!
imtt 发表于 2014-10-29 03:59 AM


我的理解,楼主的命题是两个问题,一个是list的使用,一个是路径的问题。上面的代码不单单是list应用,也是个应用模块。我的理解list就是mush里的table表格。初始就是定义一个变量a={},okey了。就是list了。然后你怎么用它,都可以。
至于路径的定义,第一种思路:list_node={roomno=“”,roomname="",desc="",exits="",direction={a,b,c,d}}形如这种数据结构来做节点,节点定义完成后,用搜索函数形如map_search(startpoint,endpoint)来形成路线。
第二种思路,直接给路线:list[pointa]={pointb,path="a;b;c;d;e;f;g;"},然后决定pointa,用walk函数走到pointb。但这种也涉及pointa的定位问题。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-10-29 08:33:02 | 显示全部楼层
本帖最后由 zardtest 于 2014-10-29 12:34 AM 编辑

电总的帖子里有遍历代码,拿来直接可以用,无需修改。
我现在用的就是这个,配合城际互联和GPS,无需自己写代码(俺也不会写)就能实现比gt强大得多的功能。
错长老的mush推车贴也研究过,但是看不懂。
不过貌似错长老也没写出成品来吧?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-10-29 08:56:11 | 显示全部楼层
回复 10# zardtest
求帖子地址链接,谢谢
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-10-29 12:32:51 | 显示全部楼层
哇,小刀还在冒泡。膜拜啊。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-10-29 12:45:03 | 显示全部楼层
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 05:20 AM , Processed in 0.010416 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表