自己的记录备忘
本帖最后由 xqss 于 2022-4-22 08:30 AM 编辑Lua中带""的,会被视为字符串;不带""的数字,会被视为数字;而不带""的非数字,都会被视为变量。
重点学习资料1
重点学习资料2
本帖最后由 xqss 于 2022-4-20 06:20 PM 编辑
if room.name=="后花园" then
exe("dao")
elseif room.name=="碧水潭畔" and "@longwang" =="1" then
exe("fill guan")
elseif room.name=="碧水潭畔" and "@longwang" =="0" then
exe("ask dai about job")
SetVariable("longwang","1")
exe("fill guan")
end
mush产量参与比较,加@ 和选中“展开变量” 或者用GetVariable取值赋予后 {:7_287:} 5.GetVariable(),获取一个Mush变量的值。
Mush里有个变量abc,值100。
test=GetVariable ("abc")
Note (test)
发送到脚本。会显示100。
SetVariable(),设置一个变量,存在Mush变量列表中。
变量也有区别,一种是LUA脚本中定义的变量,在LUA脚本中当然可以直接使用了;
另一种是MUSH定义的游戏中的变量,这种变量在LUA中使用时,就需要用 SetVariable() 设置,用 GetVariable() 取值。——ddid。 3.Mush客户端的变量,怎么用?
Mush的变量列表有个变量gongfu_lianxi,值是dodge。
测试触发里发送:
gongfu_lianxi=GetVariable ("gongfu_lianxi")--把Mush的变量转换成Lua脚本的变量。
Note (gongfu_lianxi)
Note ("要练习的功夫是"..gongfu_lianxi)--两个点是连接操作符,把两个字符串连接起来。
Send ("lian "..gongfu_lianxi.." 1")--三个字符串的连接。
——————————————————————————————
say
你自言自语不知道在说些什么。
dodge
要练习的功夫是dodge
lian dodge 1
你的体力太差了,不能练少林身法。
——————————————————————————————
..是Lua的字符连接操作符,可以把两个字符串连接起来。
send ("lian "..gongfu_lianxi.." 1"),lian后边有空格,1前边有空格。
--是Lua的注释符号,--后边的内容不会被执行。
程序能看懂,大概就会用了。还是要一行一行写,写几遍就记住了,细节问题很多。
=====================================================
关于变量,更简单的方法,Mush里也可以像Zmud一样,直接用@引用变量。要选中“展开变量”选项。
发送:
Note (abc)
Note ("abc")
abc=@abc
Note (@abc)
Note ("变量abc="..@abc)
Note ("变量abc=@abc")
输出:
say
你自言自语不知道在说些什么。
100
abc
100
变量abc=100
变量abc=100
上边的例子也可以直接用:lian @gongfu_lianxi 1
@好像不能反向引用,要给Mush里的变量赋值,还得用SetVariable ()。
别名也可以设置xuexi,xue @shifu for @gongfu_xuexi 50。
https://www.pkuxkx.com/forum/forum.php?mod=viewthread&tid=37846&extra=&highlight=mush&page=2 1.Mush怎么做彩色触发?试来试去不能用?
在论坛找到了如何做颜色触发,感谢高手的分享。
是用好几个Mush自带的函数一步一步完成的。
做个触发,匹配全部行,就是^.*$
发送:
local hangshu,yangshi_shuliang,yanse_wenzi,yanse_beijing --声明局部变量。
hangshu=GetLinesInBufferCount() --获取匹配文字的行数。
--Note (hangshu) --显示匹配文字的行数。
yangshi_shuliang=GetLineInfo(hangshu, 11) --获取指定行的详细信息,11为获取样式数量。
Note ("这一行从左至右有 "..yangshi_shuliang.." 个样式。") --一一种背景色+文字颜色算一种样式,两个样式前后的排列组合算多个样式。
local yangshi = 1 --从第一个样式开始循环。
while yangshi <= yangshi_shuliang do --循环直到完成全部样式。
yanse_wenzi=GetStyleInfo (hangshu, yangshi, 14) --获取指定行每个样式的详细信息,14为文字颜色的RGB值。
yanse_beijing=GetStyleInfo (hangshu, yangshi ,15) --获取指定行每个样式的详细信息,15为背景颜色的RGB值。
yanse_wenzi=RGBColourToName (yanse_wenzi) --把文字颜色的RGB值转换为颜色名称。
yanse_beijing=RGBColourToName (yanse_beijing) --把背景颜色的RGB值转换为颜色名称。
Note ("这一行第"..yangshi.."个样式的 文字颜色:"..yanse_wenzi..", 背景颜色:"..yanse_beijing) --显示每个样式的文字和背景颜色。
yangshi = yangshi + 1 --下一个样式。
if yanse_beijing == "green" then Execute ("knock bell") end --找到需要的颜色,执行命令。
end
西侧殿----天王殿----东侧殿
这一行从左至右有 3 个样式。
这一行第1个样式的 文字颜色:green, 背景颜色:black
这一行第2个样式的 文字颜色:lime, 背景颜色:black
这一行第3个样式的 文字颜色:green, 背景颜色:black
样式只有两种,第一和第三是一样的,但是组合起来算3个样式。
【交易】净机(Robotone): 111
这一行从左至右有 4 个样式。
这一行第1个样式的 文字颜色:white, 背景颜色:green
knock bell
这一行第2个样式的 文字颜色:lime, 背景颜色:black
这一行第3个样式的 文字颜色:white, 背景颜色:green
knock bell
这一行第4个样式的 文字颜色:green, 背景颜色:black
敲钟需要的背景色和交易频道的背景色一样,所以用交易测试一下。
https://www.pkuxkx.com/forum/forum.php?mod=viewthread&tid=37846&extra=&highlight=mush&page=3 先从简了,好入门。然后再系统地学习,慢慢提高。
\d单个数字。
\w单个字母。
\s单个空格。
. 单个数字,字母,空格。
大写是相反的,\D非数字,\W非字母,\S非空格。
————————————————————————————
要匹配多个,后边加上说明就行。
? 0个或1个。
+1个或多个。
*0个或多个。
————————————————————————————
\d?=0个或1个数字。
\w+=1个或多个字母。
\s*=0个或多个空格。
.*=0个或多个数字,字母,空格。
————————————————————————————
() 引用。(\d+)写在别名触发里,就可以在下面引用了。
[] 范围。匹配1,2,3。匹配1,3。匹配1,3,5。“|”是选择的意思。
{}次数。5{3}匹配555。\d{5}匹配5个数。\s{2,5}匹配2-5个空格。
?={0,1}
+={1}
*={0,}
后边不写范围,就是无穷大。
————————————————————————————
^ 行首。
$ 行尾。
\ 还原。 get_quest = function()
Execute("l paizi")
wait.make(function()
local l, w = wait.regexp("^[> ]*\s*任务表\s*")
EnableTrigger("bangpai_quest", true)
local l, w = wait.regexp("请用choose <编号>选择你要完成的任务,放弃任务用giveup指令。")
EnableTrigger("get_quest", false)
end)
end
function judge()
local target = "> 你「哈哈」大笑几声。"
local j= tonumber(GetLinesInBufferCount())
for i = j,j-4,-1 do
if GetLineInfo(i, 1) == target then
local BookLine = tonumber(i-4)
if BookLine > 0 then break
end
end
end
print(BookLine)
end
function judge()
local target = "> 你「哈哈」大笑几声。"
local j= tonumber(GetLinesInBufferCount())
for i = j,j-4,-1 do
if GetLineInfo(i, 1) == target then
local BookLine = tonumber(i-4)
print(BookLine)
if BookLine > 0 then break
end
end
end
end 学习
页:
[1]