找回密码
 注册
搜索
查看: 2573|回复: 7

关于随机行走的问题

[复制链接]
门派:不明
发表于 2015-4-16 14:12:06 | 显示全部楼层 |阅读模式
今天送信,没找到李捕头,于是手动找(正好无聊中)
然后也没找到.....
于是查找了相关代码
每个随机行走的人,都有这么一条语句,以李捕头为例
set("chat_msg", ({
               "李捕头挺了挺胸脯,朗声笑道:“听说本官来了,那些为非做歹的人无一不闻风而逃。 \n",
               (: random_move
       }) );

关键就在random_move这里

我又在npc.c中,找到这个函数

int random_move()
{
        mapping exits;
        string *dirs;
        object me = this_object();

        if( !environment()
        || !mapp(exits = environment()->query("exits"))
        || me->is_fighting() || me->is_busy()
        || me->query("jingli") < me->query("eff_jingli") / 2 ) return 0;

        dirs = keys(exits);
        if (sizeof(dirs) < 1) return 0;
        add_temp("random_move", 1);
        command("go " + dirs[random(sizeof(dirs))]);
}

这样就是随机行走了。
虽然c不懂哈,但大体就是这么个函数
门派:不明
 楼主| 发表于 2015-4-16 14:16:26 | 显示全部楼层
另外,在go.c文件中,找到以下内容
if (random(me->query_temp("random_move")) > 15)
//                                || strsrch(base_name(environment(me)), min) != 1)
                                        me->return_home(dest);
                        }
中间一段被注释掉了,就剩下唯一的条件了。
结合1楼那段,大体结论就是

随机行走,最多走15步,然后就返回了
换句话说,李捕头出生地在广场北,最多可以走15步,然后就回家
不过,关于回家的路径问题还不好确定,万一跑到长江南怎么办......回不去了呢还......又或者是自动瞬移回去?
门派:不明
发表于 2015-4-16 15:19:39 | 显示全部楼层
这个应该是过一段时间自动回原点的
门派:不明
发表于 2015-4-16 15:29:27 | 显示全部楼层
落叶要归根的,哪儿出来回哪儿去,瞬移
门派:不明
发表于 2015-4-26 20:12:20 | 显示全部楼层
刷新的时候瞬移回去,所以走到哪里都行   
门派:不明
发表于 2015-5-1 01:39:17 | 显示全部楼层
15格 好大的范围,楼主找找看令狐冲 移动有什么特点?
门派:不明
 楼主| 发表于 2015-5-1 19:54:25 | 显示全部楼层
xlang@ts 发表于 2015-5-1 01:39
15格 好大的范围,楼主找找看令狐冲 移动有什么特点?

感觉大体弄明白了,虽然有些根本的还是不懂...
门派:不明
发表于 2015-5-2 14:49:34 | 显示全部楼层
ltblue@tx 发表于 2015-5-1 19:54
感觉大体弄明白了,虽然有些根本的还是不懂...

发来看看啊               
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 16:56 , Processed in 0.050760 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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