Clousx6入门教程(③) |
您所在的位置:网站首页 › clousx6教学指令点歌 › Clousx6入门教程(③) |
1.8 导入自己的词库 菜单最后一项就是导入本地词库啦。 这里想说明的是,你存在手机中用于导入的词库(简称本地词库),和已经导入Clousx6的词库(简称x6词库),它们是两个文件。 用MT编辑器编辑本地词库,需要再次导入词库,才能运行新代码; 长按已经导入的词库,第四项一般为“编辑”,进入后可以修改x6词库,进行简单调试。 总之,你清楚这两个是不同的文件就可以啦! part2 词库编写中文篇 词库可以用中文、lua、动态dex(Java)等编写,这里先介绍中文词库指令。 2.1 词库触发 2.1.1 词库如何匹配 用户发送一条消息后,机器人会根据词库,从上往下依次匹配,并选定第一个与之匹配的词条,最后执行该词条的内容。 2.1.2 参数 用户发送的消息以空格作为分隔,视为从0开始的不同参数。全部消息为参数-1。 ————下面是词库———— 你好啊 参数-1是%参数-1%\r 参数0是%参数0% 你 好 啊 参数-1是%参数-1%\r 参数0是%参数0%\r 参数1是%参数1%\r 参数2是%参数2% ————上面是词库———— 备注:英文百分号表示取值。有关取值更详细的用法,将在2.2.2中叙述。 特别注意,参数只是对于用户消息而言。它跟词库匹配是不能挂钩的。 当你需要在程序中使用它,才需要这个(一般与通配符“.*”、通配符“|”结合使用)。 2.1.3 替换 有的时候,需要截取指令中的信息。 ————下面是词库———— 洗练.* a:$替换 %参数-1%|洗练|$ $调用 0 洗练 %a%$ 洗练 .* 对“%参数1%”这个属性进行洗练操作 ————上面是词库———— “$”用于已经编写好的指定操作,你只需要记住 替换指令用法:$替换 将要执行替换操作的内容|被替换部分|替换后部分$ 比如$替换 abcade|a|x$,可以得到 有关“调用”指令,将在2.3.1讲到。 2.1.3 从上往下匹配 词库是从上往下依次匹配的,所以只会触发最先匹配到的词条。下面是一个样例词库。 ————下面是词库———— a b c d a c ————上面是词库———— 你现在已经知道,如果单独看这三个词条,那么它们分别表示: 用户发送消息“a”,机器人回复“b” 用户发送消息“c”,机器人回复“d” 用户发送消息“a”,机器人回复“c” 那么发送a,机器人会回复b还是c呢?答案是b,因为词库是从上往下依次匹配的。 2.1.4 分隔符“|” 如果想让不同的消息触发相同的词条,那么需要使用分隔符“|”。 下方是一个例子。 ————下面是例子———— 你好|你好啊 123 你好啊 ————上面是例子———— 该词条的意思是,用户说话是“你好”,或者“你好啊 123”时,将会触发该词条,机器人回复“你好啊”。 同样,根据参数全匹配原则,如果用户说“你好啊”,或者“你好 123”,都不会触发该词条。 对于多个消息,每个消息之间用分隔符即可。 下方是一个例子。 ————下面是例子———— 你好|你好啊 123|a b c|我是萌泪 你好 你好啊 ————上面是例子———— 利用分隔符进行分隔,可以得到如下结论: 当用户说“你好”、“你好啊 123”、“a b c”、“我是萌泪 你好”时,机器人都会回复“你好啊”。 2.1.5 通配符“.*” 即使使用了分隔符,词条触发内容也是有限的,不是无限的。如果想使任意内容都可以触发,则需要通配符“.*”。 下方是一个例子。 ————下面是例子———— 你好.* 你好啊 ————上面是例子———— 对于该词条,任何以“你好”开头,且不带空格的消息,都可以触发该词条,原因略。 当然,你也可以将分隔符与通配符结合。 下方是一个例子。 ————下面是例子———— 你好.*|.*a|.*b.* 你好啊 ————上面是例子———— 像是“你好123”、“qwea”、“abc”,都可以触发该词条。而且,由于通配符可以匹配“空”,所以“你好”、“a”、“b”其实也是可以触发该词条的。 2.1.6 艾特QQ“@.*”“@%昵称%” 如果消息中艾特了人,程序处理又需要被圈人的QQ,代码需要使用“@.*”,并使用AT0读取。 下方是一个例子。 ————下面是例子———— 你好@.* 你好啊,%昵称%,你刚才艾特了一个人\r 我现在也艾特一下你@%昵称%\r 但是我不会艾特你艾特的人呢!\r 我知道你的QQ是%QQ%\r 被你艾特的人的QQ是%AT0%\r 我是不是很聪明? ————上面是例子———— 请自己运行该词条,并查看效果。 2.1.7 参数截取 在2.1.2,我讲了参数的概念,这里要讲参数的截取。 参数实际上可以 2.1.7 练习 用户发送消息格式为“包含a 以b开头 c”、“a 以b结尾 c 包含d”、“只含有一个空格的任意消息”时,都将第一部分和第二部分输出; 样例答案: .*a.* b.* c|a .*b c .*d.*|.* .* 第一部分是%参数0%\r 第二部分是%参数1% 2.2 条件分支 如果要做判断,条件分支必不可少呀~ 2.2.1 条件分支基础写法 条件分支结构非常简单,下面是一个样例。 ————下面是例子———— 你好 如果:%QQ%==%主人% 你是我的主人!\r 如果尾 如果:%QQ%!=%主人% 你不是我的主人!\r 如果尾 我说的对不对呀? 你好啊 如果:%QQ%==%主人% 你是我的主人!\r 我说的对不对呀? 返回 如果尾 你不是我的主人!\r 我说的对不对呀? ————上面是例子———— 备注:相等为“==”,不等为“!=”。 %主人%指的是你在 上面例子执行的效果是完全一致的。 “如果:”后面的条件为真,则继续执行;为假,则跳转至“如果尾”的后面,继续执行。 在条件分支里面使用“返回”,将不会执行后续内容,词条直接终止。 注意,条件不能嵌套。这一点在2.2.3会讲到。 2.2.2 变量、随机数 变量即可变的量,用来临时存储一些东西,仅在该词条内定义后起作用。 变量的定义符号为英文冒号,冒号左边是变量名字,右边是变量的值。 变量名只能用一个汉字,一个字母,或者一个数字表示,不能用多个!!! 变量的值可以是字符串或者数字任意内容,后面的赋值会顶掉之前的赋值。 随机数指令“%随机数a-b%”,其中a、b均为整数,可以生成a到b-1的随机整数(下方样例中,生成的是1、2、3、4中的任意一个数)。 下方是一个例子。 ————下面是例子———— 测试1 a:我是萌泪 1:80 数:%随机数1-5% a的值是%a%\r 1的值是%1%\r 随机数的值是%数%\r 数:20 新的值为%数% ————上面是例子———— 使用“%变量的名字%”,即可取得变量的值。注意,取变量值可以嵌套,但必须挨着! 嵌套指的是如下结构: ————下面是例子———— a:b b:c c:d 单层取值:%a%\r 双层取值:%%a%%\r 三层取值:%%%a%%% ————上面是例子———— 什么叫必须挨着?换一种具体的说法,即随机数生成指令中,两个数字必须用具体的值,而不能用取值代替。 如下嵌套是不可行的: a:20 b:%随机数50-100% 数:%随机数%a%-%b%% 像是随机数指令这样, 因为随机数指令的两侧已经是%了,所以不能再使用取值!其中%a%和%b%都是不允许的。 2.2.3 运算 运算指的是整数之间的运算。 “[]”为运算符,可以用于计算整数加减乘除。 ————下面是例子———— 测试2 数:%随机数10-100% 随机数的值是%数%\r 数:[%数%+10] 再加10等于%数%\r 数:[%数%-15] 再减15等于%数%\r 数:[%数%*3] 再乘3等于%数%\r 商:[%数%/7] a:[%商%*7] 余:[%数%-%a%] 再除以7后,商为%商%,余数为%余% ————上面是例子———— 加减乘不用多说,注意运算符两边都为整数即可。 除法运算符两边也必须是整数,但是运算结果也是整数,即商。而运算的小数部分,将会被舍去。 2.2.4 多重判断 进行复杂判断时,注意“返回”的使用,并且判断不能嵌套! 下方是一个例子。 ————下面是例子———— .* 数:%随机数1-50% 如果:%参数0%>=%数% %参数0%大于等于%数%,到底是大于还是等于呢?\r 如果尾 如果:%参数0%%数% %参数0%大于%数%! 返回 如果尾 如果:%参数0% |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |