北大侠客行MUD论坛

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

关于mush的正则触发和变量

[复制链接]
发表于 2011-9-17 22:58:25 | 显示全部楼层 |阅读模式
trigger ^推背图|河图|洛书|奇门遁甲|易经\s+\=\s+(\w+)\s+(\w+).*$
请问这个trigger的错误在哪里?
为什么%1 %2抓不到要的参数而且还会误触发

另外请问 比如我想用这个trigger抓取2个参数分别存入变量A B
那么我在send里要怎么写?

另外通过触发器抓取的变量如何发送给脚本?
我的意思是在send里要写什么指令么?
还是send里就是空白 下面直接选择发送到脚本

在脚本里通过什么指令来调用呢?
可以直接使用么?不需要再用local赋值么?
脚本经过计算后得到的结果如何发回给游戏?
使用send指令么?

问题很多也很初级
不过我真的比较是mush苦手 自己研究了一下午也没弄明白
请各位不吝赐教
谢谢

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-17 23:16:15 | 显示全部楼层
最好找个机器人研究下
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-17 23:18:55 | 显示全部楼层
机器人没注释,看起来很糊涂...
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-17 23:19:47 | 显示全部楼层
很久没有玩游戏了,不知道你要触发什么语句

原句在那
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-17 23:24:18 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-17 23:37:50 | 显示全部楼层
谢谢ls的达人

对了 问一下 GetTrigger这个指令怎么用
local A
local B
A,B = GetTrigger (“triggername”)
如果该trigger一共抓取了2个数据%1 %2
是不是就分别赋值给A,B了?
问题是trigger无法命名也就无法指定trigger的数据啊
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-18 00:36:27 | 显示全部楼层
function create_trigger( t_name, t_match, t_response, t_function )    -------这块能详细解释下么?
        return AddTrigger(
                                        t_name,
                                        t_match,
                                        t_response,
                                        trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OneShot,         
                                        -1,
                                        0,
                                        "",
                                        t_function
        )                                    ---这一行是什么意思?+号是打开功能的意思么?-1,0是什么意思?最后的双引号中间为空是什么意思?
end


这块我看得很晕啊
简单的说就是利用addtrigger来建立一个名为crear_trigger()的函数对吧
可是为什么不直接用addtrigger呢?
请解释下 谢谢
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-18 01:30:41 | 显示全部楼层
格式:
long AddTrigger(BSTR TriggerName, BSTR MatchText, BSTR ResponseText, long Flags, short Colour, short Wildcard, BSTR SoundFileName, BSTR ScriptName);
挨个看吧。
第一个是触发的名字: t_name,
第二个是触发匹配的内容:t_match
第三个是触发后发送的指令: t_response
第四个是触发器选项:Flags
这个flags--
MUSHclient 已经在 Lua 脚本中内建了一个包含触发标志的“trigger_flag”表,你可以直接使用它。表内容如下:Enabled = 1OmitFromLog = 2OmitFromOutput = 4KeepEvaluating = 8IgnoreCase = 16RegularExpression = 32ExpandVariables = 512Replace = 1024Temporary = 16384LowercaseWildcard = 2048OneShot = 32768

第五个是被匹配的变为的颜色:-1(就是不变色)
---MUSHclient 已经在 Lua 脚本中内建了一个包含自定义颜色名称的“custom_colour”表,你可以直接使用它。表内容如下:NoChange = -1Custom1 = 0Custom2 = 1Custom3 = 2Custom4 = 3Custom5 = 4Custom6 = 5Custom7 = 6Custom8 = 7Custom9 = 8Custom10 = 9Custom11 = 10Custom12 = 11Custom13 = 12Custom14 = 13Custom15 = 14Custom16 = 15CustomOther = 16
第六个:0-----Wildcard复制到剪贴板中的通配符匹配的文字(0 = 不复制),否则为 1 到 10
第七个:触发时播放的音乐文件的路径。不要音乐当然是空的。
第八个:t_function触发器调用的脚本函数
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-18 01:40:07 | 显示全部楼层
原帖由 ddjch 于 2011-9-17 11:37 PM 发表

谢谢ls的达人



对了 问一下 GetTrigger这个指令怎么用

local A

local B

A,B = GetTrigger (“triggername”)

如果该trigger一共抓取了2个数据%1 %2

是不是就分别赋值给A,B了?

问题是trigger无法命名也就 ...


我是mush初学者
前几天学习了function
我觉得可以这样写
getw=function(n,l,w)
A=w[1]
B=w[2]
Note ("A = "..A)
Note ("B = "..B)
end
我写的对不对不清楚
高手可以指点下
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 07:33 PM , Processed in 0.009666 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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