找回密码
 注册
搜索
查看: 5060|回复: 96

巡城新路径研究

[复制链接]
门派:桃花岛
发表于 2017-9-13 23:59:45 | 显示全部楼层 |阅读模式
干什么吆喝什么,既然现在巡城都到2m了,那么就要研究一下巡城。
巡城路径好像从99年那会就是8步,当时路径谁研究的不清楚了,但现在很多机器人还是这8步,有点旧了。
今天无聊,想继续研究一下mud,就从巡城开始吧。

评分

1

查看全部评分

门派:桃花岛
 楼主| 发表于 2017-9-14 00:01:11 | 显示全部楼层
我们知道,巡城主要是把大理城及周边的所有地点走一遍,但程序是如何实现这一点的呢?
翻了一下老code,发现程序代码是这么写的

        if ( !wizardp(ob) ) {
                if(!ob->query_temp("xuncheng"))
                        return notify_fail("你没巡城跑来领什么功?\n");
                if (interactive(ob)
                 && (int)ob->query_condition("dali_xuncheng2")) {
                        command("angry "+ob->query("id"));
                        return notify_fail(RED"你这么快回来了,是不是有些地方只是马马虎虎看看?\n"NOR);
                }
                if(!(ob->query_temp("dali_xc/xueshan")
                 && ob->query_temp("dali_xc/tianchi2")
                 && ob->query_temp("dali_xc/yuelong")
                 && ob->query_temp("dali_xc/ylf1")))
                        return notify_fail("你是不是偷懒,城西漏了些地方没巡? \n");
                if(!(ob->query_temp("dali_xc/anning")
                 && ob->query_temp("dali_xc/dg3")
                 && ob->query_temp("dali_xc/xishuang")
                 && ob->query_temp("dali_xc/hg2")
                 && ob->query_temp("dali_xc/hg3")))
                        return notify_fail("你是不是偷懒,城南漏了些地方没巡? \n");
                if(!(ob->query_temp("dali_xc/nianhuasimen")
                 && ob->query_temp("dali_xc/xs2")
                 && ob->query_temp("dali_xc/sl")
                 && ob->query_temp("dali_xc/yzh")
                 && ob->query_temp("dali_xc/ydxxxxxx")))
                        return notify_fail("你是不是偷懒,城东漏了些地方没巡? \n");
                if(!(ob->query_temp("dali_xc/caifeng")
                 && ob->query_temp("dali_xc/chaguan")
                 && ob->query_temp("dali_xc/xiulou")
                 && ob->query_temp("dali_xc/chouduan")
                 && ob->query_temp("dali_xc/xiyuan")
                 && ob->query_temp("dali_xc/yanzhi")
                 && ob->query_temp("dali_xc/datiepu")
                 && ob->query_temp("dali_xc/shudian")
                 && ob->query_temp("dali_xc/dafujia")
                 && ob->query_temp("dali_xc/zahuopu")
                 && ob->query_temp("dali_xc/shuyuan")
                 && ob->query_temp("dali_xc/huadian")
                 && ob->query_temp("dali_xc/yaopu")
                 && ob->query_temp("dali_xc/dangpu")
                 && ob->query_temp("dali_xc/yanju")
                 && ob->query_temp("dali_xc/duchang")
                 && ob->query_temp("dali_xc/qian")
                 && ob->query_temp("dali_xc/kedian")
                 && ob->query_temp("dali_xc/yizhan")
                 && ob->query_temp("dali_xc/mafang")))
                        return notify_fail("你是不是偷懒,城内漏了些地方没巡? \n");
门派:桃花岛
 楼主| 发表于 2017-9-14 00:02:48 | 显示全部楼层
由代码可知,其实巡城并不是所有地点都采集,只采集固定的这些地点数据,翻译过来是这些地方

城西

轿子雪山
天池半山
玉龙雪山
应乐峰南


城南

安宁温泉
游园会
西双版纳
海埂南
海埂北


城东

拈花寺
望海楼
石林
阳宗海
燕子窝


城中

裁缝店
茶馆
绣楼
绸缎庄
戏园子
铸剑房
打铁铺
书肆
大富之家
杂货铺
书院
花店
药铺
当铺
作坊
赌场
大理钱庄
迎宾馆
驿站
马房


换句话说,除了以上地点,其他地点没有查询,漏了没事
门派:昆仑派
发表于 2017-9-14 00:10:18 | 显示全部楼层
ltblue@tj 发表于 2017-9-14 00:02
由代码可知,其实巡城并不是所有地点都采集,只采集固定的这些地点数据,翻译过来是这些地方

城西

高玩。。。。。测试过木有,机器人在哪里?
门派:桃花岛
 楼主| 发表于 2017-9-14 00:12:22 | 显示全部楼层
那么跟老路径一比,就发现以下地点多走了:
1、城西只需要走到天龙寺的“应乐峰南”即可,再往里没必要了。
2、城东只需要走到拈花寺,庙内不需要进去。
3、城中只考察大多数的犄角旮旯,但府衙前厅、兵营、善阐侯府、镇南王府、茶花园、定安府是不用去的,另外风味店也不用拐一趟了。

需要特殊说明的是,之所以城东容易出现问题,并不是什么晚上去拈花寺不开门的问题,因为拈花寺根本不需要进去……
问题出在去拈花寺的路上的”山间小路“,其中有4个“山间小路”,其中第三个(从大理内数),有如下代码:
void init()
{
      object me = this_player();
      if (me->query_temp("xuncheng") && random(20) < 3 ){
      me->move(__DIR__"road"+(random(3)+1));
      }
}

翻译过来,就是如果在做巡城任务,那么走到这个地方的时候,就有15%的概率,会随机挪到4条“山间小路”的某一条上去……
所以这里需要多试几次,我个人认为是3次,那么只有15%^3=0.3375%的概率出问题,就是极小概率事件了。
这里mush的路径就是走了3次,说明mush作者认识到这个问题了
门派:桃花岛
 楼主| 发表于 2017-9-14 00:12:55 | 显示全部楼层
那么优化过的路径如下
wu;eu;wu;nu;n;s;sd;ed;sd;
sw;su;nd;w;nw;sw;u;d;ne;se;sw;su;nd;ne;e;ne;ed;
e;n;w;e;n;w;e;n;w;e;n;w;e;e;e;
s;s;s;n;e;n;n;n;s;e;n;s;e;w;s;e;w;s;e;w;s;s;e;
e;se;n;s;s;e;w;s;e;w;su;enter;d;d;d;e;e;u;e;w;d;w;w;u;u;u;out;nd;n;n;nw;
ne;eu;eu;eu;eu;eu;eu;se;se;nw;nw;nw;nw;wd;wd;sw;w;w;
s;s;s;e;w;s;e;w;s;n;w;s;n;w;n;e;w;w;e;s;s;
s;su;e;w;se;w;w;e;e;s;su;sw;ne;nd;n;su;n;s;s;n;nd;nw;nd;n;
n;w;w;s;n;w;e;n;w;e;n;w;e;n;n;w;
门派:桃花岛
 楼主| 发表于 2017-9-14 00:15:15 | 显示全部楼层
经过测试是没问题的

总步数好像是174,比原来的218,少了20%

当然啦,其实意义不大……

不过既然研究了,就贴出来,大家对巡城也增加点了解吧

希望m把现在的code贴一贴,大家也好研究研究,虽然巡城代码这么多年除了奖励可能没怎么变化……
门派:明教
发表于 2017-9-14 00:23:30 | 显示全部楼层
这也能研究出来,佩服         
门派:天龙寺
发表于 2017-9-14 00:27:37 | 显示全部楼层
研究的不错,虽然有点晚了,但对新人还是帮助,节省不少精力            
门派:天龙寺
发表于 2017-9-14 00:34:38 来自手机 | 显示全部楼层
顶一个,这玩意厉害啊,佩服佩服
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-27 06:37 , Processed in 0.058613 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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