|
本帖最后由 suwuji 于 2017-12-25 04:12 AM 编辑
alias内粘贴,命令行或者Execute内使用
----------------------------------------------------------------------------------
match="^let([^ ]*) (.*)"
enabled="y"
echo_alias="y"
group="基本处理"
regexp="y"
send_to="12"
sequence="99"
>
require "wait"
local split = utils.split
--保持repe的串变量
let_do%1 = "%2"
print("let_do%1='%2'")
if let_mark%1 ~= true then
let_mark%1 = true
wait.make(
function ()
local fastcount=0
while let_mark%1 == true do
while let_mark%1==true do
fastcount = fastcount + 1
local sw = split(let_do%1,"|")
for k,v in ipairs(sw) do
v=string.gsub(v,"@",";")
if string.find(v,"^wait") ~=nil then
local timewait = string.gmatch(v,"wait (.*)")
for vv in timewait do
wait.time(vv)
end
else
if string.find(v,"^on ")~=nil then
v = string.gsub(v,"!","|")
local regwaitt = string.gmatch(v,"on (.*)")
local mreg=nil
for vv in regwaitt do
if mreg==nil then
mreg = vv
end
end
if mreg~=nil then
local lll,www = wait.regexp(mreg,10) --正则匹配10秒超时,适当调节可以处理地点、人物等等触发
--没有触发不执行后续指令,继续循环
if lll~=nil then
--匹配执行后续
else
--未匹配继续循环
break
end
end
else
Execute(v)
end
end
end
--这个地方必须延时0.1秒,否则如果语句有错,会导致不停循环卡死
wait.time(0.1)
end
end
end
)
end
match="^let([^ ]*)$"
enabled="y"
group="基本处理"
regexp="y"
send_to="12"
sequence="100"
>
let_mark%1=nil
print("let_mark%1=nil")
----------------------------------------------------------------------------------------------------------------————————————————————————————————
用法举例:
重复冥想,间隔5秒mingxiang一次可以输入let mingxiang|wait 5
张三丰处请教18跌间隔1秒来一次可以输入let qingjiao|wait 1
复杂点的,跳楼,在鼓楼小院输入 let enter@do 7 up|out|on 你已稳稳地站在地上|wait 2
等等等..........................
还可以仅仅单次执行一串指令例如let look|chat* hi|wait 2|chat* hero|let
说明:
基本符号用到了|@分割
|符号用来分割每批次指令串,以及wait定时和reg 正则匹配,默认会有0.1秒延时
@用来分割一批指令串中的各个项目,相当于替换@为;符号用Execute发出去
例如跳楼的,实际执行Execute("enter;do 7 up")0.1秒后执行了Execute("out") 再等待落地后,等待2秒
实时改变语句效果直接let xxx新的串即可
例如原本是在跳楼,可以输入let look|wait 2,可以时时改变效果为定时两秒look一下
停止重复,单输入let
单用let一个那么是不健壮的。
如果需要几个let并行执行那么可以采用let1 xxx;let2 xxx;等等形式;(letX X是任意合法非空串)
通过并行的let组合可以较容易达到分支执行、并行执行的效果(可能需要调整超时时间)。
例如鼓楼跳楼可以并行写作:
let on 鼓楼小院 -|wait 2|enter@do 7 up;
let1 on 鼓楼七层 -|out;
let2 on 不能移动|wait 1|enter@do 7 up;
letNoNo on 永远没有执行后续|chat* hi;
l;
意思是等待地点是鼓楼小院那么执行2秒等待,进入登上去。并行,当地点是鼓楼七层,则跳出去。末尾look一下鼓楼小院,开始循环.附加一个let2 监视如果是不能移动那么等等1秒再enter上楼,let3 除非你simulate一下否则是不会执行后续动作的。(注意,此处只是举例复杂的用法写法,可以写出比较复杂的机器。当前示例的跳楼并行写法并不完全稳定,反而是定时纯定时let enter@do 7 up@out|wait 2即可稳定跳楼)
停止则需要let;let1;let2;letNoNo;
北大侠客行MUD,中国最好的MUD |
|