北大侠客行MUD论坛

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

【Paotin++】爵位任务辅助机器人思路的改进

[复制链接]
发表于 2025-2-9 08:53:15 | 显示全部楼层 |阅读模式
基于doumimi的原帖https://pkuxkx.com/forum/thread-49270-1-1.html 做了进一步的改进。
总体上和原帖的思路一致,但是判断原则改成基于wiki的对这个任务的二个原则:
  1. 1、路人A提供特征X,那么除了路人A外,所有不符合特征X的其他路人都不是盗贼。

  2. 盗贼只说假话或者不说,而只有一个盗贼,那么如果他是盗贼,则其他路人都不是,如果他不是盗贼,那不符合特征X的路人则都不是。

  3. 2、路人A提供特征X,而路人A自身符合特征X,则路人A不是盗贼,特征X为真。
复制代码


基本思路是:
1. 第一步look luren 分析出路人的所有特征,和原帖一致
2. 第二步询问luren,得到路人的回答,同时根据以上的原则2来尝试排除被询问的人是盗贼的可能性
3. 把所有的路人都做了look和询问后,得到2个表结构,一个表结构记录当前所有人的所有特征,key是人的名字 ,第二个表结构得到是所有询问得到的询问结果,key也是人的名字
4. 对这2个表结构进行匹配过滤,按照以上原则1,把所有相关人的特征和询问结果做比较,最后把可以排除的人的 possible 属性改成0,最后剩下一个人的 possible 属性为1,就找到了

二个数据结构的示例
  1. #var dt1.trait
  2. {
  3.     {chai piaodan}
  4.     {
  5.         {key} {shoe}
  6.         {value} {靴子}
  7.     }
  8.     {jiang qianxue}
  9.     {
  10.         {key} {sex}
  11.         {value} {女}
  12.     }
  13.     {kong lanjie}
  14.     {
  15.         {key} {body}
  16.         {value} {瘦}
  17.     }
  18.     {qin qian}
  19.     {
  20.         {key} {height}
  21.         {value} {高}
  22.     }
  23.     {zheng yijia}                                                                                                                                                              {
  24.         {key} {cloth_color}
  25.         {value} {浅色衣服}
  26.     }
  27.     {zou bingya}
  28.     {
  29.         {key} {shoe_color}
  30.         {value} {浅色鞋子}
  31.     }
  32. };

  33. #var dt1.lurens
  34. {
  35.     {chai piaodan}
  36.     {
  37.         {age} {五十}
  38.         {body} {胖}
  39.         {cloth} {布衣}
  40.         {cloth_color} {深色衣服}
  41.         {height} {矮}
  42.         {possible} {1}
  43.         {sex} {女}
  44.         {shoe} {凉鞋}
  45.         {shoe_color} {深色鞋子}
  46.     }
  47.     {gu muguan}
  48.     {
  49.         {age} {二十}
  50.         {body} {瘦}
  51.         {cloth} {夹袄}
  52.         {cloth_color} {深色衣服}
  53.         {height} {高}
  54.         {possible} {1}
  55.         {sex} {男}
  56.         {shoe} {靴子}
  57.         {shoe_color} {深色鞋子}
  58.     }
  59.     {jiang qianxue}
  60.     {
  61.         {age} {四十}
  62.         {body} {瘦}
  63.         {cloth} {布衣}
  64.                 {cloth_color} {浅色衣服}
  65.         {height} {高}
  66.         {possible} {1}
  67.         {sex} {男}
  68.         {shoe} {靴子}
  69.         {shoe_color} {浅色鞋子}
  70.     }
  71.     {kong lanjie}
  72.     {
  73.         {age} {四十}
  74.         {body} {胖}
  75.         {cloth} {布衣}
  76.         {cloth_color} {深色衣服}
  77.         {height} {矮}
  78.         {possible} {1}
  79.         {sex} {女}
  80.         {shoe} {布鞋}
  81.         {shoe_color} {浅色鞋子}
  82.     }
  83.     {pan qian}
  84.     {
  85.         {age} {四十}
  86.         {body} {胖}
  87.         {cloth} {丝绸}
  88.         {cloth_color} {深色衣服}
  89.         {height} {矮}
  90.         {possible} {1}
  91.         {sex} {女}
  92.         {shoe} {靴子}
  93.         {shoe_color} {浅色鞋子}
  94.                 }
  95.     {qin qian}
  96.     {
  97.         {age} {五十}
  98.         {body} {瘦}
  99.         {cloth} {丝绸}
  100.         {cloth_color} {""}
  101.         {height} {高}
  102.         {possible} {0}
  103.         {sex} {女}
  104.         {shoe} {布鞋}
  105.         {shoe_color} {""}
  106.     }
  107.     {wu biaoke}
  108.     {
  109.         {age} {二十}
  110.         {body} {胖}
  111.         {cloth} {夹袄}
  112.         {cloth_color} {浅色衣服}
  113.         {height} {矮}
  114.         {possible} {1}
  115.         {sex} {男}
  116.         {shoe} {凉鞋}
  117.         {shoe_color} {深色鞋子}
  118.     }
  119.     {zheng yijia}
  120.     {
  121.         {age} {三十}
  122.         {body} {瘦}
  123.         {cloth} {丝绸}
  124.                        {cloth_color} {浅色衣服}
  125.         {height} {矮}
  126.         {possible} {0}
  127.         {sex} {女}
  128.         {shoe} {靴子}
  129.         {shoe_color} {深色鞋子}
  130.     }
  131.     {zou bingya}
  132.     {
  133.         {age} {四十}
  134.         {body} {瘦}
  135.         {cloth} {布衣}
  136.         {cloth_color} {浅色衣服}
  137.         {height} {矮}
  138.         {possible} {1}
  139.         {sex} {女}
  140.         {shoe} {靴子}
  141.         {shoe_color} {深色鞋子}
  142.     }
  143. };
复制代码


可以看到初始所有人的 possible 属性都是1,最终的目的就是排除,把可以排除的人一个个去掉。

几个比较方法参考如下:
  1. #var tempi "";
  2. #alias dt1.match {
  3.     #FOREACH {*{dt1.trait[]}} {i} {
  4.         #var tempi $i;
  5.         dt1.match1 $dt1.trait[$i][key] $dt1.trait[$i][value];
  6.     }
  7.     dtp1;
  8. }

  9. #alias {dtp1} {
  10.     #FOREACH {*{dt1.lurens[]}} {i} {
  11.         #local temp_possible $dt1.lurens[$i][possible];
  12.         #if {$temp_possible == 1} {
  13.             okLog $i;
  14.         }
  15.     };
  16. }

  17. #alias dt1.match1 {
  18.     #local key %1;
  19.     #local value %2;
  20.     okLog ...... $key $value $tempi;
  21.     #FOREACH {*{dt1.lurens[]}} {i} {
  22.         #local temp_possible $dt1.lurens[$i][possible];
  23.         #if {$temp_possible == 1} {
  24.             okLog 循环 $i $tempi;
  25.             #if {"$i" == "$tempi"} {
  26.                 okLog 需屏蔽提供任务信息的询问者;
  27.                 #continue;
  28.             };
  29.             #nop 先假设不匹配,将 possible 设为 0;
  30.             #var dt1.lurens[$i][possible] 0;  
  31.             okLog xxx $i $value $dt1.lurens[$i][$key] $dt1.lurens[$i][possible];
  32.             #regexp {$value} {%*$dt1.lurens[$i][$key]%*} {okLog 根据规则1,不可排除;#var dt1.lurens[$i][possible] 1;}
  33.         }
  34.     };
  35.     okLog 循环结束;
  36. };
  37. #alias dt1.match2 {
  38.     #local key %1;
  39.     #local value %2;
  40.     #nop okLog 尝试判断被询问者是否可以排除 $dt.luren $dt.lurens[$dt.luren][$key] $key $value;
  41.     #regexp {$value} {%*$dt.lurens[$dt.luren][$key]%*} {okLog 根据规则2,可排除;#var dt.lurens[$dt.luren][possible] 0; }
  42. };
复制代码


其中 match1 就是按第一个原则按一个特征属性过滤
match2 就是按第二个原则过滤
match就是最后把2个表结构循环遍历
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2025-2-9 08:57:17 | 显示全部楼层
其中匹配的方法用函数更合适,但是函数使用多参数的时候,执行能成功,但是总是触发奇怪的指令,后来改成 alias 了,但是 alias 传输参数的时候,参数里不能包含空格,所以还得用全局变量,很是不爽
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2025-2-9 09:42:51 | 显示全部楼层
非常非常厉害,比我的那个破机器强多了哈。加油
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2025-2-9 09:50:02 | 显示全部楼层
先赞后看
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2025-2-9 22:49:47 | 显示全部楼层
首先,北侠记得不能无限制的贴机器人,这个自己注意分寸。

第二,多跑测试,这任务如果没改过的话年龄这块做法是错的。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 04:34 PM , Processed in 0.013867 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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