keepkeep 发表于 2021-7-15 10:19:58

因地图描述格式变化导致数据无法匹配的疑问



   15年时地图的出口描述均为“这里明显的出口是 XXXX 和 XX",   当时用的方法是使用这句话做触发,获取出口描述前的几十行输出内容, 再分别处理为房间名,描述,天气等等存入v1数据表。


   21年回来重新开荒,发现原来的定位功能失效, 经过对比look的描述,发现出口行变成了 ”这里明显的出口有xxxx“或者”这里明显的方向有xxxx“或者 其他特殊,出口方向的排列顺序从固定变为随机,房间描述多了 ” 你可以取得(get) “,其他目测没有改变。


      修改lua模块,想重新爬取主要地图数据, 却一直无法成功,现在有一些疑问, 恳请mush高手同好指教

    1、 16年至今, pkuxkx的地图描述出现了哪些改动?      除了我发现的 get 行(部分地点有,部分没有) ,出口行之外,还有没有其他变动?      地名行我用的是去掉 ” - “ 这个特殊符号的存储方法

   2、根据已发现的变化,修改mapconstruct模块, 增加新的出口描述方式作为触发,走路中可以通过出口触发识别所有房间信息, 也能够存入 db 文件, 抓取模块运行正常。   但在抓取完成后, 进行房间定位时却总是无法匹配,仿佛数据库里根本没有存入信息。

       我抓地图时用的触发和算法, 与定位时用的算法是一样的。   由于地图更新后出口顺序变为随机, 去掉了出口匹配这一项,在抓取地图的时候也能够正常工作,对已经抓过的房间正确识别。但一旦抓完图重新定位,在数据库中就找不到数据了。

      请问各位, 有没有可以完美查看.db文件的工具, 用写字板可以看到中文但中文之外有大量乱码,用一些db工具可以看到表格,但全部中文都是乱码。

   3、抓取地图信息后,即使只进行房间名称匹配也找不到对应数据。 但每次抓取后,又总有几个房间可以识别,比如中央广场找不到, 但是距离广场一格范围的房间可以定位, 有时红娘庄可以定位,有时醉仙楼可以定位, 非常灵异。    从能够定位部分地点来分析,地图识别是有效的,但在存入数据库和搜索比对环节出了问题。   

   4、 请教地图出口随机排列下比对出口的算法, 怎样设定一个规则使得无论描述顺序如何都识别相同顺序的出口,即不考虑出口排列顺序。   有没有在不解决这个排列顺序识别问题的情况下实现地图定位的方法?

      年近40自学编程不易,请有mush中db操作经验的大佬不吝赐教!   qq 12928648, 微信 raymondshaw。   




jarlyyn 发表于 2021-7-15 10:31:51

不玩北侠

不明白为什么要关注房间出口,甚至是房间出口的顺序的问题。

如果你想通过房间出口数量和房间名组合定位,这个很无聊……毕竟本身都不是唯一数据,还不如抓房间描述的关键字。

如果你困扰与顺序问题,我更不能理解了。

不就是取数据库里同名所有房间的出口,排个序拼接下,然后把当前房间所有出口也排个序拼接下,直接做字符串对比就好了么……

jarlyyn 发表于 2021-7-15 10:34:00

另外不用mush的db功能,完全用不着……

如果是这个db

https://www.gammon.com.au/scripts/doc.php?general=database

的话,就是标准的sqlite 3

我一般用 http://sqlitebrowser.org 这个软件

开源免费跨平台

bumcatxian 发表于 2021-7-15 10:47:36

jarlyyn 发表于 2021-7-15 10:31 AM
不玩北侠

不明白为什么要关注房间出口,甚至是房间出口的顺序的问题。


因为北侠有些房间名字、描述、出口都是完全一样的。
出口先排序再对比的确可以解决楼主的疑问。

jarlyyn 发表于 2021-7-15 10:55:07

bumcatxian 发表于 2021-7-15 10:47 AM
因为北侠有些房间名字、描述、出口都是完全一样的。
出口先排序再对比的确可以解决楼主的疑问。 ...

名字描述一样不是该挑一个出口走去其他房间试试,直到找到能认出的房间吗……

真人玩游戏也是这样的啊,模拟真人行为不就好了么……
页: [1]
查看完整版本: 因地图描述格式变化导致数据无法匹配的疑问