|
发表于 2011-1-17 19:11:51
|
显示全部楼层
楼主的代码,排版实在那个啥,看起来累.代为重新排版
对象声明-
- walk={
- target=nil,
- new=function()
- local w={}
- setmetatable(w, {__index = walk}) --返回新的实例
- return w
- end,
- Max_Step=10,
- output_path= nil,
- delay=1.2,
- }
复制代码 设置延迟-
- function walk:walkoff()
- --设置延迟
- local f=function()
- world.Send("yun refresh")
- coroutine.resume(walk.output_path)
- end
- wait(f,walk.delay)
- end
复制代码 接口函数 interface 回调函数 等待在实例中去实现
-
- function walk:walkover()
- --接口函数 interface 回调函数 等待在实例中去实现
-
- end
复制代码 步进函数--这个作者米这么说,是代排版的人这么理解的-
- function walk:step()
- walk.output_path=coroutine.create(function (path)
- local p=Split(path,";")
- local count=0
- local tmp_P=""
- local result={}
- --print(table.getn(p))
- for i,v in ipairs(p) do
- if v~="" then
- count=count+1
- if count>self.Max_Step then
- count=0
- tmp_P=tmp_P..v..";"
- --print(tmp_P)
- table.insert(result,tmp_P)
- tmp_P=""
- else
- tmp_P=tmp_P..v..";"
- --print(tmp_P)
- end
- end
- end
- if tmp_P~="" then
- table.insert(result,tmp_P)
- end
- -------------输出路径--------------
- for i,p in ipairs(result) do
- local result_path=""
- result_path=result.."set walk off"
- world.Execute(result_path)
- --print("挂起")
- coroutine.yield() --挂起
- end
- --print("结束")
- self:walkover()
- end)
- end
复制代码 走路的主体函数--这个作者米这么说,是代排版的人这么理解的-
- function walk:go(targetRoomNo)
- self.target=targetRoomNo
- local _R={}
- _R=Room.new()
- _R.CatchEnd=function()
- local count,roomno=Locate()
- print("当前房间号",roomno[1])
- if count==1 then
- local path=""
- path=Search(roomno[1],targetRoomNo)
- --触发器
- --world.AddTriggerEx ("walkover", "^(> |)设定环境变量:walk \\= \\"over\\"$", "walk.walkover()", trigger_flag.RegularExpression +trigger_flag.Enabled + trigger_flag.Replace, custom_colour.NoChange, 0, "", "", 12, 99)
- world.AddTriggerEx ("walkoff", "^(> |)设定环境变量:walk \\= \\"off\\"$", "walk.walkoff()", trigger_flag.RegularExpression +trigger_flag.Enabled + trigger_flag.Replace, custom_colour.NoChange, 0, "", "", 12, 99)
- self:step()
- coroutine.resume(walk.output_path,path)
- end
- end
- _R:CatchStart()
- end
复制代码 一个简单的运用实例--这个作者米这么说,是代排版的人这么理解的(顺便修整错字)-
- ------------------------------------对象使用
- local w=walk.new()
- w.walkover=function() --走到目的地以后要做的动作
- Send("say hello world")
- end
- w:go(433) --433房间号
- --使用起来很简单一目了然
复制代码
[ 本帖最后由 lzkd 于 2011-1-17 07:21 PM 编辑 ] |
评分
-
查看全部评分
|