bbye 发表于 2015-8-21 22:54:02

【Zmud4.62 拿来主义之一:多功能遍历综合解决方案】

本帖最后由 bbye 于 2016-8-31 08:43 AM 编辑

这是个并不成熟的462遍历代码,可以实现以下功能:
1.指令分段输入等待式遍历
2.收弟子触发式遍历

3.带有处理各种坐船上车爬铁索的解决方案
4.带有拦路npc判断解决方案
5.为了便于路径处理,增加分隔符"/",不要问我为什么。

部分代码借鉴了逍遥行用法:可支持的路径格式为{n|w|s|e|n|busy1|/s/w/e|enter boat/stop|climb up/stop|set llnpc NPCID/stop|n|w}
说明:
1."|"与"/"在这里作用相同,之所以做了区分是另有目的。
2.支持各种动作,例如zuan hole,enter boat。
3.stop代表执行暂停,例如等待船靠岸。
4.set llnpc NPCID,此处为判断拦路NPC,需要身上有jin nang(set llnpc song yuanqiao,然后被打死的不要找我)。
5.busy1代表等待1秒
6.gt2 {路径}为每秒15步方式行走
gt3 {路径}每走一步会shou @walknpc,如果不存在会继续走,发现则停止,当然手动输入walk3会继续走完,请根据需求给变量赋值。

所有的指令和触发:
1.制作alias gt2
set brief 2;
Route_list=%1;
step=1;
stepmax=@numitems(%1);
halt;
#t+ walk3;
#t+ walk;
#alias gowalk {walk2};
walk22.制作alias gt3
set brief 2;gostop=0;gostop2=0;Route_list=%1;step=1;cmdlist=0;stepmax=@numitems(%1);halt;#t+ walk3;#t+ walk;#alias gowalk {walk3};walkaction
3.制作alias walk2
#if (@step=@stepmax) {set brief 2};#if (@step<=@stepmax & @gostop=0) {cmd=%word(@Route_list,@step,|);#if (@cmd=stop) {step=%eval(@step+1);stepaccu=1;stop} {#if (@cmd=busy1) {step=%eval(@step+1);stepaccu=1;busy1;#wait 1000;#say 1秒过了继续:;walk2} {#if (@cmd=busy6) {step=%eval(@step+1);stepaccu=1;busy6;#wait 6000;walk2} {#if (%pos(/,@cmd)=0) {@cmd;step=%eval(@step+1);stepaccu=%eval(@stepaccu+1);gwk2} {#if (@cmdlist=0) {cmdlist=1};#if (@cmdlist<=%numwords(@cmd,"/")) {%word(@cmd,@cmdlist,/);stepaccu=%eval(@stepaccu+1);#if (%word(@cmd,@cmdlist,/)=stop) {cmdlist=%eval(@cmdlist+1)} {#if (%word(@cmd,@cmdlist,/)=busy1) {#wa 1000;cmdlist=%eval(@cmdlist+1);stepaccu=1;walk2} {cmdlist=%eval(@cmdlist+1);stepaccu=%eval(@stepaccu+1);gwk2}}} {cmdlist=0;step=%eval(@step+1);gwk2}}}}}} {whisper;time}4.制作alias walk3
#if (@step=@stepmax) {set brief 2};#if (@step<=@stepmax & @gostop=0 & @gostop2=0) {#var cmd %word(@Route_list,@step,|);#if (@cmd=stop) {#add step 1;stop};#if (@cmd=busy1) {#add step 1;#wait 1000;walkaction};#if (@cmd=busy6) {#add step 1;#wait 6000;walkaction};#if %pos(/,@cmd) {#if @cmdlist=0 {cmdlist=1};#if @cmdlist<=%numwords(@cmd,"/") {%word(@cmd,@cmdlist,/);#add cmdlist 1;#if %word(@cmd,%eval(@cmdlist-1),/)<>stop {#if %word(@cmd,%eval(@cmdlist-1),/)=busy1 {#wa 1000;walkaction} {walkaction}}} {cmdlist=0;#add step 1;walkaction}};#if (@cmd<>stop & @cmd<>busy1 & %pos(/,@cmd)=0 & @cmd<>busy6){@cmd;#add step 1;walkaction}} {whisper;time}5.制作以下触发,并归类为walk3:
^??你想收谁作弟子?
walk3^??设定环境变量:llnpc ~= "(*)"
llnpc=%1;
give jin nang to %1;
#say 判断拦路NPC--->>>
^??这里没有 (*) 。
walk3
^??这样东西不能随便给人。
ka @llnpc;
#wa 3000;
give my sword to @llnpc;
#say 判断拦路NPC--->>>6.落了个alias walkaction
shou @walknpc7.此外,你可以修改逍遥行的walk类触发中的内容,把指令中的walk改成gowalk,并在逍遥行的gt指令中加入#alias gowalk {walk}作用是各种坐船过河,慕容的小舟,黑木崖的篮子,走灵鹫的铁索,等等等等,用在路径中stop停止,到地方后gowalk继续。


8.落了个变量,注意,是变量,不是别名。
numitems
%numwords(%1,"|")

xqiu 发表于 2015-8-21 23:26:42

hzl
462遍历。。。。

dunname 发表于 2015-8-22 01:41:44

following & learning

sunpepe 发表于 2015-8-22 05:59:15

玄妙,学习中

xyinzc 发表于 2015-8-25 15:42:43

上不了游戏,总可以占前排吧

asdrt 发表于 2015-9-18 15:46:58

学习中~~~~~

bbye 发表于 2015-9-23 10:07:37

回复 1# bbye


    更新了walk2和walk3,改掉了一些 bug

oceanus 发表于 2018-8-8 04:07:52

3.制作alias walk2 ...
{#if (%pos(/,@cmd)=0) {@cmd;step=%eval(@step+1);stepaccu=%eval(@stepaccu+1);gwk2}
bbye 发表于 2015-8-21 02:54 PM http://pkuxkx.net/forum/images/common/back.gif

请问老白,alias walk2里面的gwk2是什么alias?反斜杠 “/” 有何奥密?

oceanus 发表于 2018-8-9 03:20:42

回复 8# oceanus


    建了一个测试路径:#var bianli_test {w|w|n|n|n|e|e|s|s|s},转一圈回到原点的路径,然后用:

   gt2 @bianli_test,只执行了一步w就停下了,输入 gt3 @bianli_test,可以一步步走回来。

    请老白解惑

dalyzeng 发表于 2018-8-22 23:46:03

学习中~~~~~
页: [1] 2
查看完整版本: 【Zmud4.62 拿来主义之一:多功能遍历综合解决方案】