fdx 发表于 2008-1-31 07:47:15

求一个跳楼机器人~

之前论坛上有高手发的trigger,实在是弄不懂其中#if语句的嵌套,导入后无法完成条件判断,求个.mud的版本......

tomliu 发表于 2008-1-31 11:32:26

#CLASS {跳塔} {disable}
#TRIGGER {你深深吸了几口气,脸色看起来好多了。} {#wa 200;dazuo 25}
#TRIGGER {你现在的气太少了,无法产生内息运行全身经脉。} {eat doufu;drink hulu;#wa 200;save;#wa 1000;er;#wa 500;cha}
#TRIGGER {你现在精力充沛。} {out}
#TRIGGER {你将内息走了个小周天,流回丹田,收功站了起来。} {out}
#TRIGGER {你的动作还没有完成,不能移动。} {#wa 500;enter;#7 up}
#TRIGGER {钟楼小院 - } {#wa 2000;enter;#6 up}
#TRIGGER {钟楼七层 - } {er;ef}
#TRIGGER {你的「基本轻功」进步了!} {#wa 500;save;enable}
#TRIGGER {你不小心被什么东西绊了一下,差点摔个大跟头。} {l}
#TRIGGER {│□(%x)%s~((%x)~)%s-%s*%s(%d)/*} {#if (@gfname=%1) {levelto=%3;say @levelto} {}}
#TRIGGER {*~((%x)~)%s:%s(%x)%s有效等级:*} {#if %1=@lian {gfname=%2;cha} {}}
#TRIGGER {│基本轻功%s~((*)~)%s-%s*%s(%d)/*} {#if %2>@levelto {out;#wa 5000;w;n;n;nu;n;n;n;nu;up;#t- 跳塔;#t+ lingwu;@lian=force;lingwu force 50} {l}}
#CLASS 0

tomliu 发表于 2008-1-31 11:40:31

这是我用的721的机器人,其实挺简单的。在少林的钟楼小院处set brief 0,look一下就开始了。下面的三句是判断跳楼跳到什么等级就去领悟的
#TRIGGER {│□(%x)%s~((%x)~)%s-%s*%s(%d)/*} {#if (@gfname=%1) {levelto=%3;say @levelto} {}}
#TRIGGER {*~((%x)~)%s:%s(%x)%s有效等级:*} {#if %1=@lian {gfname=%2;cha} {}}
#TRIGGER {│基本轻功%s~((*)~)%s-%s*%s(%d)/*} {#if %2>@levelto {out;#wa 5000;w;n;n;nu;n;n;n;nu;up;#t- 跳塔;#t+ lingwu;@lian=force;lingwu force 50} {l}}
我的思路是先把特殊内功学满,然后去跳楼,如果dodge的等级超过特殊内功的等级就停止跳楼,去领悟和练其他功夫,练dodge作为没法睡觉时不浪费时间的动作。你要是感觉这三句不好改,就不要用这三句,自己手动停止机器人就行。er;ef是yun recover和yun regenerate。
我的内力是5000多,打坐10-25就能保证内力永远不会少,你可以根据自己的情况修改这个数值。
我是少林的id,不会有僧兵干扰,你要不是少林的要注意一下。
顺便说一声,跳楼要小心,调试不好机器人可能会把自己摔死了,我有过惨痛的教训。
机器人还要自己做才舒服。加油吧。

[ 本帖最后由 tomliu 于 2008-1-31 11:47 AM 编辑 ]

fdx 发表于 2008-1-31 12:28:56

我不是少林的,进去总被僧兵追~~下面是我在用的机器人:

#CLASS {tiaolou}
#TRIGGER {你已稳稳地站在地上。} {#ad tiao 1;#if {@tiao>100} {uptime} {};#math t @tiao/10;#math tt @tiao-@t*10;#if {@tt=9} {hp} {};kick}
#TRIGGER {你把身上的少林英雄令拿出来典} {#wa 2000;shu 0}
#TRIGGER {你赎回了少林英雄令} {set brief 1;#wa 2000;w;s;w;fill hulu;e;n;n;#wa 2000;shaolin;#wa 3000;set brief 1;s;sd;s;s;w;#wa 1000;tiao=1;min=aa;tiaolou}
#TRIGGER {你对着空气踢了一脚} {save;#wa 2000;drink hulu;#if {@qi>300} {#if {@jing>300} {#if {@min=十二} {#wa 2000;e;shaolinb;s;e;#wa 3000;pawn ling} {#if {@min=二十七} {#wa 2000;e;shaolinb;s;e;#wa 3000;pawn ling} {#if {@min=四十二} {#wa 2000;e;shaolinb;s;e;#wa 3000;pawn ling} {#if {@min=五十七} {#wa 2000;e;shaolinb;s;e;#wa 3000;pawn ling} {tiaolou}}}}} {#wa 9000;hp;kick} } {#wa 9000;hp;kick}}
#TRIGGER {重新连线} {uptime;hp;kick}
#TRIGGER {北大侠客行已经执行了(*)天(*)小时(*)分(*)秒。} {day=%1;hour=%2;min=%3;sec=%4}
#CLASS 0

大部分都调试可以了,只有#TRIGGER {你对着空气踢了一脚}这句,里面嵌套太多,不仅我读不出来,zmud也读不出来,不知道错在哪里,请楼上的大虾指点一二。。

tomliu 发表于 2008-1-31 12:30:02

#if语句是这样使用的
#if 什么情况 {执行这个括号内的命令}{否则执行这个括号内的命令}
比如:
我要得到dodge的有效等级,就是基本轻功 (dodge)                : 少林身法            有效等级:953
用这句来触发
{*~((%x)~)%s:%s(%x)%s有效等级:(%x)}
执行的命令是下面的语句
#if %1=dodge {say %2等级是%3} {haha}
得到的结果是
你说道:少林身法等级是953

我的机器人中的语句:
#TRIGGER {*~((%x)~)%s:%s(%x)%s有效等级:*} {#if %1=@lian {gfname=%2;cha} {}}
{*~((%x)~)%s:%s(%x)%s有效等级:*}
这句就是上面例子的变形。

这个#TRIGGER是我用enable命令配合cha命令取自己的功夫名称时用的,意思是如果这句中的第一个变量(即%1,~((%x)~))与我定义的lian的变量相等,那么我要练习的功夫名变量(即gfname)就等于这句中的第二个变量(即:%s(%x)%s中的%x),并执行cha的命令;如果%1=@lian不成立,那么什么也不执行。

我讲得似乎有些复杂,希望我说明白了。

fdx 发表于 2008-1-31 12:36:00

上面的部分我明白了,能不能请您也解释一下多重条件判定和if嵌套的格式呢?

tomliu 发表于 2008-1-31 12:40:17

fdx兄弟的那句话是多重判断的,zmud的好像不支持多重判断,我试过2重的判断,结果失败了。你的如此多的判断zmud应该是反应不了的。其实你那句是要按时间把令存取一遍是吧。可以用#t+ 和#t-来开关class,从而达到你的要求。
{#if {@qi>300} {#if {@jing>300} {#if {@min=十二} 是什么意思?这样好像写的不对。

fdx 发表于 2008-1-31 12:44:58

我理解的{#if {@qi>300} {#if {@jing>300} {#if {@min=十二} 这句话是判断了3个条件,如果气大于300,精大于300,服务器运行时间等于十二分钟则运行后面的语句,如果等于二十七则运行后更后面的语句,依此类推后面的4个时间条件,如果都不成立的,就运行最后的语句。这部分似乎的确运行不了,我觉得#t+ #t-应该可以,我去试试看,多谢ls的高手指点。

corpse 发表于 2008-1-31 14:13:49

跳楼还用这么麻烦?

一个定时器不就得了

tianyue 发表于 2008-2-1 12:57:45

现在我跳楼不用机器人,就用定时器。每次跳下来hp一下,判断一下精、气,低于多少的时候,关掉timer,打坐一下,yun一下,开timer继续跳。
不是少林的,可以做一个杀僧兵的触发,一样,遇到僧兵要杀你的时候,关条timer,杀僧兵,僧兵死了,开timer,继续跳。就这样。
页: [1] 2
查看完整版本: 求一个跳楼机器人~