北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 5073|回复: 8

自己的记录备忘

[复制链接]
发表于 2022-4-19 14:48:40 | 显示全部楼层 |阅读模式
本帖最后由 xqss 于 2022-4-22 08:30 AM 编辑

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


1.JPG


重点学习资料1


重点学习资料2
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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取值赋予后   
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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.net/forum/for ... ghlight=mush&page=2
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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.net/forum/for ... ghlight=mush&page=3
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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-3]匹配1,2,3。[13]匹配1,3。[1|3|5]匹配1,3,5。“|”是选择的意思。
{}  次数。5{3}匹配555。\d{5}匹配5个数。\s{2,5}匹配2-5个空格。
     ?={0,1}
     +={1}
     *={0,}
     后边不写范围,就是无穷大。
————————————————————————————
^   行首。
$   行尾。
\    还原。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-6-18 01:46:48 | 显示全部楼层
学习
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-12-27 10:43 PM , Processed in 0.013791 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表