新手求助:这个机器人应该怎么写?
本帖最后由 aluwan 于 2017-7-14 11:48 AM 编辑比如,我进入了一个场景,这个场景有两个强盗:张三、李四。
人物一进入这个场景,看到两个强盗,机器人就会自动记录这个场景中强盗的数量。然后在我杀强盗的过程当中,如果出现“张三死了”,机器人自动在记录的强盗总数当中减一。出现“李四死了”,再减一。最后当强盗数量为零时,人物自动走入下一个场景。整个地图当中只有张三、李四、王五、赵六这四种强盗,所以可以直接以强盗的名字作为统计和触发。而且,一个场景中不会出现两个相同的强盗。
对于高手来讲,这个应该很简单。但是对我来说,这个实现起来很难!因为机器人水平实在太差。还请各位大侠伸出援手,帮忙写一段例子好吗?
北大侠客行MUD,中国最好的MUD 本帖最后由 creat 于 2017-7-14 06:31 AM 编辑
小子,给你个活
kill_npc_list={npc_number=0,finding=0,killing=0,killed=0}
干掉张三、李四、王五、赵六这四种强盗
kill_npc_list["张三"]="finding"
kill_npc_list.finding = kill_npc_list.finding+1
kill_npc_list["李四"]="finding"
kill_npc_list.finding = kill_npc_list.finding+1
kill_npc_list["王五"]="finding"
kill_npc_list.finding = kill_npc_list.finding+1
kill_npc_list["赵六"]="finding"
kill_npc_list.finding = kill_npc_list.finding+1
kill_npc_list.npc_number=kill_npc_list.finding
此时的表中内容应当为:
kill_npc_list={npc_number=4,finding=4,killing=0,killed=0,["张三"]="finding",["李四"]="finding",["王五"]="finding",["赵六"]="finding"}
我进入了一个场景,这个场景有两个强盗:张三、李四。
if kill_npc_list["张三"]
then
kill_npc_list["张三"]="killing"
kill_npc_list.finding = kill_npc_list.finding-1
kill_npc_list.killing = kill_npc_list.killing+1
elseif kill_npc_list["李四"]
then
kill_npc_list["李四"]="killing"
kill_npc_list.finding = kill_npc_list.finding-1
kill_npc_list.killing = kill_npc_list.killing+1
end
此时的表中内容应当为:
kill_npc_list={npc_number=4,finding=2,killing=2,killed=0,["张三"]="killing",["李四"]="killing",["王五"]="finding",["赵六"]="finding"}
出现“张三死了”
if kill_npc_list["张三"]
then
kill_npc_list["张三"]="killing"
kill_npc_list.killing = kill_npc_list.killing-1
kill_npc_list.killed = kill_npc_list.killed+1
end
此时的表中内容应当为:
kill_npc_list={npc_number=4,finding=2,killing=1,killed=1,["张三"]="killed",["李四"]="killing",["王五"]="finding",["赵六"]="finding"}
张三、李四、王五、赵六都死了
if kill_npc_list.npc_number==kill_npc_list.killed
then
print "都干掉了……"
else
print "懒鬼接着干活!"
end
此时的表中内容应当为:
kill_npc_list={npc_number=4,finding=0,killing=0,killed=4,["张三"]="killed",["李四"]="killed",["王五"]="killed",["赵六"]="killed"}
大致如此,代码未测npc_number为目标总数,killed为已死亡目标数。finding为尚未找到人数,killing为战斗中的人数。 看着好高大上滴感觉hzm,虽然我还是看不懂hzl
我用zmud7.21。直接把这些代码里的人物名字改过来,然后直接复制代码到命令栏那里输入就可以用了吗?hzk 回复 2# creat
参见教主 回复 3# aluwan
这是lua的语法,可能需要些曲折 本帖最后由 aluwan 于 2017-7-14 05:22 PM 编辑
这个,再自己动手改,一点也不懂的话就比较麻烦了。
说说我实际的使用场景吧:
玩的另外一个风云mud,在一个山洞里,地图很庞大,但是地名重复的地方很多,基本上都是“山洞小道”、“山洞尽头”之类同名的描述。人物在里面用遍历的方法自动走,碰到怪物自动杀。这里边一共有五种怪物,名字各不相同。有时候碰到的只有一个,有时候能同时碰到三个。如果同时碰到三个的话,先杀掉一个,剩余两个还没死,机器人有时候会傻乎乎地下命令离开当前场景。这样人物和怪正在打架,被怪拉住了走不开。可是遍历已经下了好多的方向命令,导致最后遍历整个都乱了,走的方向都撞墙。这就需要改变启动#step的触发。因此要判断一下,在把当前地图所有的怪都杀完之后,遍历才会再次启动。
大侠能不能帮我做一个现成的?就是用#tri{}这种,在zmud 7.21里头可以直接生成可用的机器人,根据以上需求:看到怪物,自动停止遍历#pause,然后数一数共有几个怪。杀了一个,自动减一个。都杀光了,减为0,人物继续启动遍历#step。就这功能。别的太麻烦,不用做。 回复 2# creat
感谢教主,又学会了一点东西。 回复 6# aluwan
很遗憾,我做出来的你这个客户端用不了 可以每次取一个怪物id。。。死了可以dazuo 10,或者suicide -f一下。。如果在战斗中。。就重新杀了再判断。。如果脱战了,就继续遍历 一般没人这么做吧,一般记录房间有啥npc id,遇到自己npc就kill,死了kaichu,没id就行了。不太可能只杀2个中的一个
页:
[1]