Greasy Fork is available in English.

wsmud_Raid

武神传说 MUD

< Feedback on wsmud_Raid

Question/comment

Bob.cnAuthor
§
Posted: 2019-01-06
Edited: 2019-01-15

👽 wsmud_Raid 1.0.31 自定义流程开发指南

简介

使用 wsmud_Raid 1.x.x 可以简便地自定义一个流程

wsmud_Raid 1.x.x 中提供的几乎所有的副本的都是通过类似于下方的 (困难移花宫的) 流程实现的:

不要怕,这个流程扫一眼即可,下面会拣其中的几个典型语句解释。

#[(:hpPer)<0.8]@liaoshang
jh fb 22 start2;cr huashan/yihua/shandao 1 0
go south[7]
go south[7]
@kill 花月奴
go south;go south
@kill 移花宫女弟子,移花宫女弟子
go south
@kill 移花宫女弟子,移花宫女弟子
&raidCD
go southeast
@kill 涟星,邀月
go northwest;go southwest
look hua
@tip 你数了下大概有($number)朵花
go southeast
look bed;pushstart bed;pushleft bed[(number)]
pushright bed[8]
go down;fire;go west
@kill 花无缺
look xia;open xia
"look xia;open xia",

下面先拿其中一条语句来简单看看:

"#[(:hpPer)<0.8]@liaoshang"
  • # 表明这条语句是一条守护语句,它不会立即执行,但是当在其下方的每一条语句执行完毕时,都会执行该条守护语句;
  • [(:hpPer)<0.8] 是一个条件控制,只有满足该条件才会执行条件控制后面的语句部分;
  • 上面条件控制中 (:hpPer) 是使用了一个预置变量,表示角色的气血剩余百分比;
  • @liaoshang 是一条@语句,它会执行疗伤直至角色气血回满 (,才会执行接下来的语句)。

所以这条语句就实现了角色每次行动后,都会检查气血是否少于 80%;若是,就会自动疗伤,直至回满气血后才会执行接下来的语句。

再来看另外几条语句:

"look hua",
"@tip 你数了下大概有($number)朵花",
...
"pushleft bed[(number)]",
  • @tip 你数了下大概有($number)朵花 中我们等待获取包含 ”你数了下大概有?朵花“ 的系统提示,并创建了一个名为 number 的变量来保存花朵数目 (假设为 3);
  • pushleft bed[(number)] 中我们使用了上面创建的变量 number,所以语句会变成 pushleft bed[3]
  • pushleft bed[3] 等价于 pushleft bed;pushleft bed;pushleft bed,即向左推动床 3 次。

于是,就这样,我们实现了观察左侧 Boss 房间的花朵数,并推动床相应次数的需求。

欢迎使用 wsmud_Raid 自定义流程功能编写你自己需要的流程。

如果想要了解更多,请向下读。 😊

Bob.cnAuthor
§
Posted: 2019-01-06
Edited: 2019-01-07

你的第一个流程

下面我们来看一下如何建立一个流程。

点击命令组,进入预置命令组浏览界面;

点击新增,创建一个命令组:

取名为武庙回血,并写入以下命令组后,点击右上角创建按钮;

stopstate;$to 扬州城-武庙
@liaoshang
($weapon)=(:eq0)
[(:mpPer)<0.7]@dazuo
@eq (weapon)

这里只是为了教程使用,该命令组已经整合为 @renew 语句。

这样我们就创建了一个命令组。

命令组是可重复使用的模块,想要让他执行我们需要创建一个流程。

返回自定义流程的浏览界面,点击新增流程:

在这里我们可以搭配不同的命令组构成一个流程。

现在我们选择之前创建的武庙回血命令组,并把它的重复执行次数设为 1,然后新建。

此时,点击 ▶ 按钮即可执行流程!

Bob.cnAuthor
§
Posted: 2019-01-06
Edited: 2019-01-09

详细介绍

1. 系统指令 和 $指令

$指令 是 wsmud_pluginss 提供的便捷组合指令;大多数 $指令 是由多条系统指令组合而成的。

多条系统指令 (及 $指令) 可用 ; 连接成为一条语句,一条语句中的系统指令会同时执行。

例如:

"$to 扬州城-武庙;liaoshang"

注意:同时执行太多系统指令可能会导致服务器拒绝执行,建议控制同时执行的系统指令条数。

$指令 的使用参见 wsmud_pluginss 主页

简写多条重复系统指令

可以在系统指令后跟随 [数字],表示该语句重复的次数,例如:

"go west[3];go north"
"go west;go west;go west;go north"

上述的两条语句是等价的。

2. 变量使用

定义、赋值变量

可以使用形如 ($变量名)=初始值 的语句定义一个变量并初始化,或修改已存在变量的值,例如:

"($number)=3"

请使用 大小写字母、数字、_ (下划线) 组成变量名。

有些 @语句 (下文会介绍) 也可以定义变量。

使用变量

在随后的语句中均可以 (变量名) 形式使用之前定义的变量,例如:

"go west[(number)]"

1.0.7 新特性 若变量名开头大写则表示是全局变量,可在一个流程中跨任务组使用; 若变量名开头小写则只能在单次命令组执行过程中使用; 现在支持右侧为算数运算表达式例如:($number)=(number)+1

预置变量

wsmud_raid 预置了以下变量,可以直接使用:

变量 含义
:hp 角色当前气血值
:maxHp 角色当前最大气血值
:hpPer 角色当前气血剩余百分比
:mp 角色当前内力值
:maxMp 角色当前最大内力值
:hpPer 角色当前内力剩余百分比

备注:更多预置变量可以查看脚本中的 GlobalParams

3. 条件控制

在语句前可以添加条件控制,形如 [条件]语句

只有当条件为真时才会运行该条语句,否则跳过该条语句。

多个条件可以使用 &| 进行且 (and)、或 (or) 操作;也可使用 ! 进行非 (not) 操作。

"[(:hpPer)<0.7|(:mpPer)<0.7]stopstate;liaoshang"

必须实现条件

如果在 [ 后跟随一个 = 则这个控制条件会使得此语句一直等待直到条件为真。

"[=(:hpPer)<0.7]stopstate"

4. id 占位符

语句中可以使用形如 {物品名称} 的方式指代物品 id,执行时会自动进行替换,例如:

"select {崔莺莺};ask {崔莺莺} about 东厢"

默认使用模糊查找,即目标物品名称包含 {} 中给出的关键字即可。

在物品名字后面添加 % 表示进行精确查找,物品名称必须完全吻合 {} 中给出的关键字。

"select {财主女儿 崔莺莺%};ask {财主女儿 崔莺莺%} about 东厢"

1.0.10 新特性 现在支持使用 id 占位符来获取包内的物品 id 了,语法如下:

  1. 如果是从系统提示中截取的,则可直接使用,例如:
  @tip 你从平一指购买了一枚($pill)。
  use {(pill)}
  1. 否则,需要指定物品名称及品质,例如:
  use {养精g}

品质列表:

  • g:green 绿色
  • b:blue 蓝色
  • y:yellow 黄色
  • p:purple 紫色
  • o: orange 橙色
  • r:red 红色

注意:若不指定品质,则视为任意品质!

!!!注意,默认为模糊查找,若想精确查找,请在最后添加 %例如:

  use {养精丹g%}

5. @语句

很多系统指令 (如疗伤: liaoshang) 执行后需要一定时间才会结束;后续指令需要等待其运行结束再调用才能正常运行。

为此,可以设置等待时间,也可以采取各种手段来判断指令是否结束,以便执行后续指令。

@语句 以 @ 开头,是 wsmud_raid 提供的便捷语句。

它包含了判断指令是否结束的逻辑,直至指令执行结束才会执行它后续的语句。

目前,提供以下 @语句,后续会根据需求添加 (如有需求可在下方跟帖):

1) @kill 敌人名字1,敌人名字2,...

直至杀死指定名字、数量的敌人,该语句执行完毕。

"@kill 管家,家丁,家丁"

默认使用模糊查找,若在敌人名字后面添加 % 表示进行精确查找,敌人名字必须完全吻合指定的名字。

"@kill 日月神教前辈长老 曲洋%,曲非烟"

亦可找到 ”日月神教前辈长老 曲洋” 和 “古灵精怪 曲非烟“ 并进行击杀。

2) @cd

等待所有技能冷却结束,该语句执行完毕。

3) @liaoshang

疗伤,直至气血回满,该语句执行完毕。

4) @dazuo

打坐,直至内力回满,该语句执行完毕。

5) @eq 装备id1,装备id2

穿戴指定装备,直至成功,该语句执行完毕。

备注:因为装备穿戴存在冷却 cd,所以直接调用 eq 装备id 未必能够穿戴成功。

6) @tip 关键文字

直至出现包含 关键文字 的系统提示,该语句执行完毕。

该语句中,可以截取部分信息、定义变量并用截取部分初始化,例如:

"@tip 你数了下大概有($number)朵花"

备注:@tip 语句的上一条(非守护)语句* 刚刚被执行的时刻起产生的系统提示,才在被搜索的范围内。*

7) @tidyBag

整理背包,直至完成,该语句执行完毕。

8) @renew

前往武庙回满气血,内力少于 70% 会打坐回内力,直至完成,该语句执行完毕。

9) @exit

立即结束当前命令组,并执行后续命令组(如果有的话)。

10) @shimen (1.0.7 新增)

在 wsmud_pluginss 中开启师门自动放弃可使用做师门任务,直至完成,该语句执行完毕。

6. 守护语句

守护语句当前不会立即执行;在其之后的每一条语句 (除了守护语句) 执行完毕,都会执行该条守护语句。

在语句的开头添加 # 即声明此条语句为守护语句。

例如,下面的语句会使得之后的每条语句执行后都会检查血量,若少于 80% 则进行疗伤。

"#[(:hpPer)<0.8]@liaoshang"
§
Posted: 2019-01-06

太强了,大佬

Bob.cnAuthor
§
Posted: 2019-01-06

@xiejue 说道: 太强了,大佬

谢谢 🌚

§
Posted: 2019-01-06

很棒,我还在想我的偷渡古墓呢,哈哈

Bob.cnAuthor
§
Posted: 2019-01-06

@xiaoshizi 说道: 很棒,我还在想我的偷渡古墓呢,哈哈

哈哈 等更新完了看看要怎么写

Bob.cnAuthor
§
Posted: 2019-01-07

教程基本更新完毕,欢迎尝试

§
Posted: 2019-01-07

感谢大佬!! 请问如何在自定义流程中 使用 按键Q,也就是wsmud_pluginss的自动师门呢?

Bob.cnAuthor
§
Posted: 2019-01-08

@"HeiHei Hei" 说道: 感谢大佬!! 请问如何在自定义流程中 使用 按键Q,也就是wsmud_pluginss的自动师门呢?

暂时不支持

Bob.cnAuthor
§
Posted: 2019-01-08

2019.01.08 更新 1.0.7 版本

  1. @shimen 在 wsmud_pluginss 中开启师门自动放弃可使用此语句完成师门任务。
  2. 现在对于定义变量/赋值语句,
* 若变量名开头大写则表示是全局变量,可在一个流程中跨任务组使用;
* 若开头小写则只能在单次命令组执行过程中使用;
* 现在支持右侧为算数运算表达式例如:`($number)=(number)+1`
  1. 添加了两个预置变量 :room 房间名称、:path 房间路径
§
Posted: 2019-01-08

大佬,像是门派战的刷怪数量是随机的,那么叫杀要怎么样编写才能成功?

Bob.cnAuthor
§
Posted: 2019-01-08

@edsss 说道: 大佬,像是门派战的刷怪数量是随机的,那么叫杀要怎么样编写才能成功?

咸鱼不怎么打门派战 你具体说说你的需求 😂

§
Posted: 2019-01-08

门派跑一圈 把怪都清了,同时在首席那里能不叫杀最好 用$killall 的话会移动后没有清掉蓝绿,用那个kill 又不知道怪的数量会卡住

Bob.cnAuthor
§
Posted: 2019-01-09

@edsss 说道: 门派跑一圈 把怪都清了,同时在首席那里能不叫杀最好 用$killall 的话会移动后没有清掉蓝绿,用那个kill 又不知道怪的数量会卡住

好的,这个会后续支持

Bob.cnAuthor
§
Posted: 2019-01-09
Edited: 2019-01-09

2019.01.09 更新 1.0.10 版本

现在支持使用 id 占位符来获取包内的物品 id 了,语法如下:

  1. 如果是从系统提示中截取的,则可直接使用,例如:

    @tip 你从平一指购买了一枚($pill)。
    use {(pill)}
    
  2. 否则,需要指定物品名称及品质,例如:

    use {养精g}
    

    品质列表:

* g:green 绿色
* b:blue 蓝色
* y:yellow 黄色
* p:purple 紫色
* o: orange 橙色
* r:red 红色

**注意:若不指定品质,则视为任意品质!**

**!!!注意,默认为模糊查找,若想精确查找,请在最后添加 `%`。**例如:

```
use {养精丹g%}
```
Bob.cnAuthor
§
Posted: 2019-01-11
Edited: 2019-01-11

2019.01.10 更新 1.0.17 版本

  1. 现在 id占位符 支持尝试获取一个id,语法为 {物品名称}?,若未获取到则为 null,例如:

    ($guy)={田伯光}?
    [(guy)!=null]go north
    
  2. 现在支持使用 @next 直接进入命令组的下一次运行;

    @exit 不同:@exit 为结束命令组的运行,并运行下一个命令组。

  3. 在流程前使用 @stopSSAuto 语句以关闭 pluginss 的自动 Boss 和婚宴,流程全部完成后使用 @recoverSSAuto 恢复。

Bob.cnAuthor
§
Posted: 2019-01-11

@edsss 说道: 门派跑一圈 把怪都清了,同时在首席那里能不叫杀最好 用$killall 的话会移动后没有清掉蓝绿,用那个kill 又不知道怪的数量会卡住

{}? 或许可以解决这个问题 了解一下

Bob.cnAuthor
§
Posted: 2019-01-14
Edited: 2019-01-14

2019.01.14 更新 1.0.29 版本

现在支持战利品记录:

  • <-recordGains 开始记录战利品获得;
  • recordGains-> 结束记录战利品获得,并显示。

自动副本已加入战利品记录,并会在结束后显示。

§
Posted: 2019-01-15
Edited: 2019-01-15

自定义流程可以监控buff或者debuff么?例如自动补明玉,或者中了长时间的debuff等消了再下一步。用了自定义流程之后原版的监控都用不了了。

Bob.cnAuthor
§
Posted: 2019-01-15
Edited: 2019-01-15

@alexhzq00 说道: 自定义流程可以监控buff或者debuff么?例如自动补明玉,或者中了长时间的debuff等消了再下一步。用了自定义流程之后原版的监控都用不了了。

原版的监控用不了了吗?我去试试

Bob.cnAuthor
§
Posted: 2019-01-15
Edited: 2019-01-15

2019.01.15 更新 1.0.31 版本

现在,支持在条件控制中使用 id 占位符,例如:

kill {武道塔守护者}
[={武道塔守护者}==null]
[(:hpPer)<0.8]@renew

第二句可实现等待直至武道塔守护者被杀死。

§
Posted: 2019-01-15
Edited: 2019-01-15

@"Bob.cn" 说道: > @alexhzq00 说道: > 自定义流程可以监控buff或者debuff么?例如自动补明玉,或者中了长时间的debuff等消了再下一步。用了自定义流程之后原版的监控都用不了了。

原版的监控用不了了吗?我去试试

奇怪我换了台电脑就没问题了,但是另一台电脑确实是在执行自动流程原版监控就没反应了。还有有语句可以实现等某些debuff消失了再下一步吗?

Bob.cnAuthor
§
Posted: 2019-01-16
Edited: 2019-01-16

@alexhzq00 说道:

@"Bob.cn" 说道: > @alexhzq00 说道: > 自定义流程可以监控buff或者debuff么?例如自动补明玉,或者中了长时间的debuff等消了再下一步。用了自定义流程之后原版的监控都用不了了。

原版的监控用不了了吗?我去试试

奇怪我换了台电脑就没问题了,但是另一台电脑确实是在执行自动流程原版监控就没反应了。还有有语句可以实现等某些debuff消失了再下一步吗?

暂时没有,后需添加

§
Posted: 2019-01-19

jh fam 8 start @tip 你目前可以直接去挑战第($level)层 [(level)>69]@exit [(level)>59]@cd go enter;go up kill {武道塔守护者} [={武道塔守护者}?==null|(:combating)==true] [={武道塔守护者}?==null|(:combating)==false] [(:hpPer)<0.8]@renew [(:mpPer)<0.5]@renew

@liaoshang

这个是不是要加个循环指令?不然执行一次就不动了

Bob.cnAuthor
§
Posted: 2019-01-19

@nn1234 说道: jh fam 8 start @tip 你目前可以直接去挑战第($level)层 [(level)>69]@exit [(level)>59]@cd go enter;go up kill {武道塔守护者} [={武道塔守护者}?==null|(:combating)==true] [={武道塔守护者}?==null|(:combating)==false] [(:hpPer)<0.8]@renew [(:mpPer)<0.5]@renew

@liaoshang

这个是不是要加个循环指令?不然执行一次就不动了

为命令组设置很大的重复执行次数就可以啦

§
Posted: 2019-01-22

@kill 可以自动抓ID. 像关外船夫每次ID都不一样, 有没有办法可以交钱过河?

Bob.cnAuthor
§
Posted: 2019-01-22
Edited: 2019-01-22

@"Samuel Goh" 说道: @kill 可以自动抓ID. 像关外船夫每次ID都不一样, 有没有办法可以交钱过河?

上面有介绍 id 占位符,了解一下

例如 select {崔莺莺};ask {崔莺莺} about 东厢

§
Posted: 2019-01-22
Edited: 2019-01-22

@"Bob.cn" 说道: > @Samuel Goh 说道: > @kill 可以自动抓ID. 像关外船夫每次ID都不一样, 有没有办法可以交钱过河?

上面有介绍 id 占位符,了解一下

例如 select {崔莺莺};ask {崔莺莺} about 东厢

行了,可是怎么卡在@tip?

select {船夫};give {船夫} 10000 money @tip 你来到了关外-船厂(副本区域)。 go south;go west[6];go north

[(:hpPer)<0.8]@liaoshang

@kill 江湖医生 阎基 cr;cr over

仔细看了一遍才发现备注有下面这条

备注:@tip 语句的上一条(非守护)语句 刚刚被执行的时刻起产生的系统提示,才在被搜索的范围内。

看来是无解。或许可以等待几秒才往南走。请问等待指令是什么?

Bob.cnAuthor
§
Posted: 2019-01-23
Edited: 2019-01-23

@"Samuel Goh"

改为 @tip 你来到了关外-船厂 应该可以 后面的字有颜色信息 所以不能直接写

等待为 $wait 1000 后面数字是毫秒 1000毫秒=1秒

§
Posted: 2019-01-26

@"Bob.cn" 说道: @Samuel Goh

改为 @tip 你来到了关外-船厂 应该可以 后面的字有颜色信息 所以不能直接写

等待为 $wait 1000 后面数字是毫秒 1000毫秒=1秒

不知道为什么侦测不到tip,后面我改用[=(:room)==关外-船厂(副本区域)]就行了

Post reply

Sign in to post a reply.