salorphase 发表于 2016-12-18 23:34:56

虚心请教,如何通过机器人实现一种方式

坦率的说, 这个问题,来自于另外一个mud,但是抱着技术无界限的想法, 再这里和各位大神请教一下,一个主ID做任务,两组副ID轮流自动切换带路,请问如何如何实现。 问题情景如下:

环境: ZMUD 4.62

对象:
主ID: A
副跟班: Go1
副跟班:Go2
副跟班:Back1
副跟班:Back2

希望实现情景:
做第一个任务的时候:A tell Go1要去的地方,Go1带A去完成任务,并且由Back1将A带回,并交任务
做第二个任务的时候:A tell Go2要去的地方,Go2带A去完成任务,并且由Back2将A带回,并交任务
做第三个任务的时候:A tell Go1要去的地方,Go1带A去完成任务,并且由Back1将A带回,并交任务
做第四个任务的时候:A tell Go2要去的地方,Go2带A去完成任务,并且由Back2将A带回,并交任务

... ...

以下都等同于上面的规律。

核心问题是:主ID A能够在每次任务的时候,能自动切换带路ID,否则,就一组带路id的话,经常会晕。

我当前的状况是:
主ID: A
副跟班: Go1
副跟班:Back1
由于做任务很快, 所以两个跟班很容易跑晕,所以希望能够过渡到2组跟班的情况。

但是最核心部分,实在想不出有什么好办法能够实现

我不知道是否描述清楚了问题,但无论如何,首先谢谢大家:-)

北大侠客行MUD,中国最好的MUD

imoen 发表于 2016-12-19 00:56:01

搞一个数组 0号项是跟班1ID 1号项是跟班2ID 控制数组的下标

imoen 发表于 2016-12-19 00:56:09

搞一个数组 0号项是跟班1ID 1号项是跟班2ID 控制数组的下标

zsmjd 发表于 2016-12-19 08:48:04

这个好像很容易实现吧。切换组的核心在主id tell哪个组,加个变量,记录上个带路的组,tell的时候tell另一组就ok了,back带回主id的时候,改变变量。so easy

zsmjd 发表于 2016-12-19 08:49:46

本帖最后由 zsmjd 于 2016-12-19 12:51 AM 编辑

比如变量 zu=1 那就 tell 第二组,第二组back带路回来以后tell 一下主id让 zu =2 当 zu = 2的时候tell第一组

我是机器菜鸟,如果有讲的不对的地方......


来打我呀!!!

salorphase 发表于 2016-12-19 11:33:57

非常感谢:-)
我会再继续琢磨如何实现的

bluse 发表于 2016-12-19 15:09:40

给你一个算法参考

假设有三个带路大米,设置变量@dummylist:
xiaotao tpx swww

主角加三个大米,一共是3个大米,@idcnt:
3

目的是,让着三个大米,轮流循环负责带一段路,比如第一个任务xiaotao带出发,tpx带返回,第二个任务swww带出发,xiaotao带返回,第三个任务tpx带出发,swww带返回……如此循环交替

则在每次任务开始时,确定出发大米dummy1和返回大米dummy2定义如下:
dummy1=%word(@dummylist,%mod(2*@rws+2,@idcnt)+1);
dummy2=%word(@dummylist,%mod(2*@rws+3,@idcnt)+1);

其中@rws是任务计数。    每次任务有2段路要带,因此2*@rws是已经带路的段数计数。3个大米的情况下,去回路段总周期是2*3。
式子里的+2、+3是初始的偏移量,你可以自己指定的,也可以+0和+1,+1和+2。

wfoxp 发表于 2016-12-21 19:58:55

好复杂,但是为什么要大米带路做任务?

suwuji 发表于 2016-12-22 07:16:46

为啥要带路?难道主号是瞎的?

bluse 发表于 2016-12-23 10:07:05

本帖最后由 bluse 于 2016-12-23 10:08 AM 编辑

他玩的肯定是那种 连续执行指令超限了就给大脚踹晕的MUD

这个问题还有个高端的解决方法就是自己写个代理程序,把丢向MUD服务器的指令拦截住,计算时间间隙,
等有了安全间隔,再打包发到MUD服务器去,这样基本上可以万无一失。
页: [1] 2
查看完整版本: 虚心请教,如何通过机器人实现一种方式