zmud转mush求助之(二) 如何实现list变量的路径功能
有哪些对应的函数可以使用吗?城际互联插件有没有集成遍历的功能?北大侠客行MUD,中国最好的MUD 本帖最后由 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
关键你得能看明白。呵呵。 回复 4# yhzzyahoo
我已经晕了 回复 3# littleknife
多谢提供代码,我想我是用不出来了。简单的list在mush里居然这么复杂!
标题
回复 2# yhzzyahoo我只是设想在使用上能做到一致,通过自定义函数或其他方式,使zmud的使用者,不需要做什么改变就可以飞快的使用mush,理论上应该是可以做到的。正如看电视一样,我并不需要关心是阴极射线管,还是LCD,或是LED。对于mud,我只需根据屏幕反馈,键入相同的命令,而得到相同的结果,而不用管是mush或是zmud。 本帖最后由 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 12:34 AM 编辑
电总的帖子里有遍历代码,拿来直接可以用,无需修改。
我现在用的就是这个,配合城际互联和GPS,无需自己写代码(俺也不会写)就能实现比gt强大得多的功能。
错长老的mush推车贴也研究过,但是看不懂。
不过貌似错长老也没写出成品来吧? 回复 10# zardtest
求帖子地址链接,谢谢 哇,小刀还在冒泡。膜拜啊。 回复 12# imtt
http://pkuxkx.net/forum/viewthread.php?tid=32933&highlight=mush
页:
[1]
2