septemberman 发表于 2024-9-20 12:48:39

Paotin机器人编写中遇到误区分享

本帖最后由 septemberman 于 2024-9-20 12:51 PM 编辑

本人大概20年前接触MUD,当时不懂编程,纯粹手动~20年后重新进入MUD,开始研究机器。目前,主要就是用机器简化任务操作。在实际过程中,我遇到几个误区导致代码一直跑不顺,分享一下:
平台:paotin


[*]误区一:代码会自动往下执行
       造成误区的原因:有编程基础,所以认为代码写了,Loading以后就会开始执行

       在一般C/C++编程里面,其实都有一个main主函数,一旦编译完成,main就会按照代码一条一条往下执行。
       而MUD是脚本编程,没有主函数,所以代码的触发一定要有一个trigger
       常见的trigger:
       #action——基于出现的描述,触发
       #tick——定时触发
       #alias——设定别名,然后通过别名调用触发

       所以,当你发现有语句没有执行的时候,先考虑一下,是不是没有放入某个触发的trigger里面


[*]误区二:用了action为啥不触发
      造成误区的原因:认为action被loading以后就生效了,或者,认为action内的文字都正确

      原因一
               涉及一个触发的问题(参见误区一的原理)。如果action本身是嵌套在别的触发里面的,当上一级的触发没有被触发,虽然代码loading了,实际action本身没有被触发。
      原因二
               aciton内的文字一定要完全正确。我发现过,即使完全从描述中复制下来,也有不触发的情况。大概率是标点符号全角和半角的问题。
               这里如果拿不准的地方,可以考虑用通配符%*,不过需要注意的事,通配以后一定要相对个性化。
               比如:%*死了,这种表达过于通用。在房间描述里,或者其他玩家的任务NPC死了,都会触发,导致无效代码过多。


[*]误区三:class当成类使用
       造成误区的原因:有编程基础,所以一看到class就是一个类

       class在paotin中就是一个“标签”,通过open和close来“标记”一段代码。
       尤其当这段代码包含很多个“触发”的时候,可以通过针对#class {name} kill命令完成对于这整段代码的unloading












页: [1]
查看完整版本: Paotin机器人编写中遇到误区分享