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]