whq 发表于 2016-5-18 22:02:25

带?的触发语句触发报错

触发语句:

你向韩寒莲问道:这位姑娘,不知最近有没有听说什么消息?
韩寒莲说道:「前几天我去那家店里买东西的时候总发现一个流浪汉在附近转悠。」

触发器匹配表达式:

^[> ]*你向(.+)问道:这位.+,不知最近有没有听说什么消息.*\n.+说道:「(.+)」$

报错信息:

Compile error
World: pkuxkx
Immediate execution
:1: unexpected symbol near '?

之前调试的时候就报错,把?进行转义\?还是报错,换成.+报错,换成.*终于不报错了,可真实
的服务器信息返回带?时又报如上的错误了,求高人指点迷津

北大侠客行MUD,中国最好的MUD

creat 发表于 2016-5-19 09:22:04

回复 1# whq


    你理解错了,如果这个语句错误是不会报错的,因为根本不能触发。
既然触发了就说明语句正确,产生错误的是你的脚本内容

whq 发表于 2016-5-19 20:42:19

发送内容如下

if %2==asd then Note("if")
else SetVariable("lrh"..GetVariable("lri"), "%1");SetVariable("lrx"..GetVariable("lri"), "%2");SetVariable("lri", GetVariable("lri")+1)
end
Execute("ask luren "..GetVariable("lri").." about 消息")

没有和?有关的呀

creat 发表于 2016-5-19 21:23:10

回复 3# whq


1:lua没有智能到那个程度,知道你是"?"出错了,这是提示你第一行有问题
2:%2显然没有加引号
3:asd是变量还是字符串?你这个用法是比较变量内容的。显然不是你的本意吧,字符串必须带引号
4:这么多的Get Set看着不累么,你这是要把所有的描述都写在mcl变量里一条一条阅读的意思?
   男爵会产生信息,使用lua的表格变量比mcl变量更能有效的记录每个路人的信息,以便于脑算或者机算。
   这个任务的辅助机器也是适用的表格变量来运算得。
   这是mush不是zmud,不需要每次都把变量内容写进mcl。

whq 发表于 2016-5-19 21:38:18

回复 4# creat


    其实是想比较两个字串的,我以为%2没有引号所以==后面的也不需要引号。机器人这么写就是没想到好的实现方式才这么弄的,话说mcl变量和表格变量是什么意思

creat 发表于 2016-5-19 21:55:54

所谓mcl变量就是像zmud一样,写在配置-〉变量里的那种变量,这是存盘后写进配置文件保存在硬盘上的。
表格变量是lua的一种变量形式,也是常用的变量形式。你可以想象成windows的资源管理器
男爵机器人不难,关键是思路,其次是实现方法

whq 发表于 2016-5-19 22:58:55

回复 6# creat


    这个表格变量是全局的吗,不然一个路人问完了问第二个,上一个的表格变量不就销毁了吗,还是说要把一个最终的表格变量保存在mcl变量里?

creat 发表于 2016-5-19 23:09:00

这就看你的定义了,使用全局变量或者非局部变量理论上可以的,这已经和mush没什么关系了,纯是lua的知识。
mcl只能保存字符串类型的变量。
事实上,我个人从不使用mcl变量。{:7_278:}
尽管mcl变量偶尔会有些用处

whq 发表于 2016-5-19 23:42:58

回复 8# creat


    主要还是对这里面的一些东西不太了解,比如一个触发器里的变量怎么在另一个触发器里使用,除了mcl变量我是不知道lua里怎么去实现的,又懒得去专门学习lua,所以你才会看着写法别扭

话说我刚才看见你做爵位任务了,速度很快啊,这机器人不错

creat 发表于 2016-5-20 00:25:02

在不声明的情况下lua的变量都是全局变量,在环境里都可以用
这个速度不算快,除了判断部分全程手动{:7_278:}
页: [1] 2
查看完整版本: 带?的触发语句触发报错