xqss 发表于 2022-4-19 14:48:40

自己的记录备忘

本帖最后由 xqss 于 2022-4-22 08:30 AM 编辑

Lua中带""的,会被视为字符串;不带""的数字,会被视为数字;而不带""的非数字,都会被视为变量。





重点学习资料1


重点学习资料2

xqss 发表于 2022-4-20 15:13:02

本帖最后由 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:}

xqss 发表于 2022-4-20 19:55:24

5.GetVariable(),获取一个Mush变量的值。
   Mush里有个变量abc,值100。
   test=GetVariable ("abc")
   Note (test)
   发送到脚本。会显示100。
   SetVariable(),设置一个变量,存在Mush变量列表中。
   变量也有区别,一种是LUA脚本中定义的变量,在LUA脚本中当然可以直接使用了;
   另一种是MUSH定义的游戏中的变量,这种变量在LUA中使用时,就需要用 SetVariable() 设置,用 GetVariable() 取值。——ddid。

xqss 发表于 2022-4-20 20:05:32

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

xqss 发表于 2022-4-20 20:08:59

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

xqss 发表于 2022-4-20 20:13:55

先从简了,好入门。然后再系统地学习,慢慢提高。
\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,}
   后边不写范围,就是无穷大。
————————————————————————————
^   行首。
$   行尾。
\    还原。

cares 发表于 2022-4-21 14:19:08

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

xqss 发表于 2022-4-22 07:43:12

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

shenji 发表于 2022-6-18 01:46:48

学习
页: [1]
查看完整版本: 自己的记录备忘