北大侠客行MUD论坛

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

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

[复制链接]
发表于 2024-9-20 12:48:39 | 显示全部楼层 |阅读模式
本帖最后由 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












北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 09:22 AM , Processed in 0.011696 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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