|
本帖最后由 jarlyyn 于 2022-8-17 10:10 PM 编辑
一直以来,群里总有人问mush怎么实现#wa,然后我会开始祥林嫂一样说wa不好用,队列好用。
正好今天群里顺口答应了实现一个,所以贴一下,让所有对wa念念不忘的人能彻底和zmud断离舍
先放代码,再解析
- --
- re=rex.new("([^;]+)")
- cmdre=rex.new("^\\s*#(?\\S+)( (?.+)){0,1}$")
- -- 命名空间
- queue={}
- --队列数据
- queue.data={}
- --最后一次发送的数据
- queue.last=""
- --队列是否暂停
- queue.paused=false
- --插入数据
- queue.insert=function(data)
- re:gmatch(data,function (m, t)
- table.insert(queue.data,m)
- end)
- end
- queue.try=function()
- if queue.paused then
- return
- end
- while #queue.data~=0 do
- cmd=queue.data[1]
- table.remove(queue.data,1)
- s,e,t=cmdre:match(cmd)
- if t==nil then
- queue.last=cmd
- Send(cmd)
- else
- f=cmds[t["cmd"]]
- if f==nil then
- print("未知的命令"..t["cmd"])
- return
- end
- queue.pause()
- f(t["param"])
- return
- end
- end
- end
- queue.send=function(data)
- queue.insert(data)
- queue.try()
- end
- queue.pause=function()
- queue.paused=true
- end
- queue.continue=function()
- queue.paused=false
- queue.try()
- end
- queue.discard=function()
- queue.data={}
- end
- cmds={}
- cmds["wa"]=function(data)
- if data then
- DoAfterSpecial(data/1000,"queue.continue()",12)
- end
- end
- cmds["t+"]=function(data)
- if data then
- EnableTriggerGroup(data,true)
- end
- queue.continue()
- end
- cmds["t-"]=function(data)
- if data then
- EnableTriggerGroup(data,false)
- end
- queue.continue()
- end
- cmds["#pause"]=function(data)
- end
- cmds["#continue"]=function(data)
- queue.continue()
- end
- on_alias=function (m,l,w)
- queue.send(l)
- end
复制代码
|
|