北大侠客行MUD论坛

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

七七的Mudlet入门 (摆烂式不定期更新)

[复制链接]
发表于 2024-4-1 23:53:08 | 显示全部楼层 |阅读模式
本帖最后由 protectqiqi 于 2024-4-2 01:03 AM 编辑

呜呜呜,今天在游戏里犯了一个又愚蠢又可耻的错误,甚至都不敢说这个错误是什么,到现在都睡不着觉。刚好又碰上有人加了我的QQMudlet怎么用。为了赎罪,我就把自己学会的Mudlet功能一点点写出来吧。因为我自己也只学了一点皮毛,没法写得全面,所以就从最自己最常用的几个功能写起吧。

首先就是最常用的TriggerTrigger的作用是在收到指定的信息后输入预先安排好的命令。比如在下图里设置的这个Trigger,会在酒袋已经被喝完了的时候,自动drop jiudai。里面的几个要素我都用数字标出来了。
1. 点击这个按钮打开Trigger的编辑界面。
2. Trigger一个名字,可以是任何名字,这个名字只是帮助你记忆的,不起任何实际的作用。之后这个名字会在左侧的菜单里出现。当以后你设置的Trigger越来越多的时候,最好一看到起的名字就能想起来这个Trigger是做什么的。
3. 触发命令的语句,当你在游戏里收到这条语句时,对应的命令就会被触发。这里的触发语句就是“牛皮酒袋已经被喝得一滴也不剩了。”。
4. 触发语句匹配的方式,这里是我觉得MudletZmud功能强的地方,也是我当初选择改用Mudlet的原因之一。有多种匹配方式可以选择,这里我选的是exact match,意思是只有当游戏里面某一行的文字和3里面的语句完全一样时(连标点符号和空格都得一样),才会触发命令。另外几个匹配方式以后再讲。
5. 触发的命令,这个命令和你在游戏里的输入是完全一样的。这里就是drop jiudai
6. 对触发的语句做红黄色的高亮标识。这个功能能帮你在游戏里认出哪个语句触发了你的命令。比如在设置窗口的下面你看到“你一觉醒来,精神抖擞地活动了几下手脚。”这句话被标识了红黄色高亮,就是因为我对这句话也做了个Trigger。如果你不喜欢红黄色,也可以在这里改成其他颜色的格式。
7. 更高级的Lua功能,这个也以后再说。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-1 23:55:53 | 显示全部楼层
前排留名!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-1 23:57:01 | 显示全部楼层
支持!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-4-2 00:09:43 | 显示全部楼层
本帖最后由 protectqiqi 于 2024-4-2 01:00 AM 编辑

然后讲一下Trigger里几种不同匹配模式。匹配模式可以在Trigger编辑界面里点击右边的下拉框来选择。匹配模式有很多,但我现在只用到过前面4种。

1. Substring: 只要游戏里的某一行包含了触发语句,就会触发命令。比如,如果你的触发语句是“内力”,那么不管是内力增加了,还是内力用完了,还有有个人的名字叫内力,都会触发对应的命令。这个匹配模式尽量少用,因为很容易误触发,别人只要在chat里面说话带上了你的触发语句,你就会被触发。一般我只有在偷懒的时候才用。

2. Perl regex: 这个是功能最强大的匹配,也是我用得最多的,但是要去学会Perl正则表达式才知道怎么用。我是学了好几天才会的,放以后再讲吧。

3. Start of line: 只有当你的匹配语句在某一个行的一开始出现时,才会触发对应的命令。这个模式很好地解决了上面说的别人在chat里面干扰你的情况,因为chat的时候这一行的开头是【闲聊】,一般不会是你的触发语句。这个模式也是我很常用的。

4. Exact match: 必须是在某一行完全一模一样的匹配,这在上一篇已经讲过了,就不多啰嗦了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-2 00:11:12 | 显示全部楼层
顶一下顶一下,七七姐姐好棒!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-2 00:11:58 | 显示全部楼层
wxliu 发表于 2024-4-2 12:11 AM
顶一下顶一下,七七姐姐好棒!

七七都是你姨字辈了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-4-2 00:48:10 | 显示全部楼层
本帖最后由 protectqiqi 于 2024-4-2 04:49 PM 编辑

Perl正则表达式之一 元字符

Perl正则表达式比较复杂,可能要分几篇来讲。首先要说的是,在MudletTrigger里面,不是游戏里的所有字符都能被认出来的。比如在战斗中被打伤的时候,游戏里的提示是:
( 你看起来已经力不从心了。)

这句话里面的两个括号()Mudlet里是认不出来的,如果你直接用这句话做匹配是不会被触发的。像这样认不出来的字符在Perl正则表达式里叫元字符,元字符包含以下这些(请务必牢记,避免用在触发语句中):
{}[]()^$|*+?\


那么怎么解决这个问题呢,一种办法当然是直接不输入元字符,比如把( 你看起来已经力不从心了。)”变成“你看起来已经力不从心了。”。但这样就需要把原来的匹配模式改成substring,会引发误触发,而且有时候这些元字符又是必要的。


最根本的解决方法其实是在这些元字符前面加个反斜杠\,并把匹配方式改成perl regex,这样Mudlet就又能认出它们了。比如比如把( 你看起来已经力不从心了。)”变成“\( 你看起来已经力不从心了。\)”,别忘了还要把匹配方式改成perl regex


改好之后还要注意一点,这时候只要你的一行文字里出现了( 你看起来已经力不从心了。)”,就会被触发,相当于是substring的匹配。别人如果chat ( 你看起来已经力不从心了。)”就会干扰到你。Perl里的另一个符号^(shift+6)则解决了这个问题。把^加在一个匹配语句之前,就是只有当这句话出现在一行的起始位置时,才会被匹配。等同于上一篇中提到的start of line。所以上面这个例子最完美的Perl匹配是:
^\( 你看起来已经力不从心了。\)






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-2 01:57:55 | 显示全部楼层
坚持下去 以后你就是mudlet教的教主
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-2 01:58:22 | 显示全部楼层
先拜个码头,等着教主招人
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-4-2 07:02:21 | 显示全部楼层
只有我一个人关心那个错误是什么吗
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-30 10:44 PM , Processed in 0.012573 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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