Aegean_
本帖最后由 Aegean_ 于 2022-9-18 02:13 编辑

波次刷怪副本
前言:
波次刷怪方式一般能在塔防游戏,还有些肉鸽游戏遇到
比如击杀10只怪物,可结束当前波次,开启下一波次
这个方式能够用一些副本插件,如dp地牢实现
不过用mm做也可以实现,而且能加上更多东西

原理:
modifytargetscore 这是mm的一个计分板技能
我们会使用它去控制整个波次刷怪系统
它拥有的分选项为:
- objective=记分板名
- action=算法
  算法包括:
      SET(设置)
      ADD(加)
      SUBTRACT(减)
      MULTIPLY(乘)
      DIVIDE(除)
      MOD(除以后取余)
- value=修改值
例如: modifytargetscore{objective=num;action=set;value=1}
        #我们就创建了一个名为num,值为1的计分板

思路:
击杀怪物→怪物死亡变化计分板数值→检测计分板数值→检测成功后开启下一波

正式讲解:
首先要有一个怪物携带计分板进行全局检测
   全局检测怪:
   Type: pig
   BossBar: #boss血条能让玩家更清楚情况
     Enabled: true
     Range: 500
     Color: GREEN
     Style: SEGMENTED_1
     Title: '&e剩余怪物数量:&a<mob.score.sc> &e当前波数:&a<mob.score.num>'
   Skills:
   - skill{s=关卡启动} @self ~onTimer:1
   Options:
     NoAI: true
     Despawn: false
     Silent: true
     ApplyInvisibility: true
   #像这样就有了一个无敌的怪来提供计分板了
写"关卡启动"技能
   关卡启动:
   Skills:
   - skill{s=第一波}
   - skill{s=第二波}
   - skill{s=结算}
   #按自己的需求来更改
接下来是每一波的具体技能:
   第一波:
   Cooldown: 30 #尽量避免卡出2次技能而写的cd
   Conditions: #计分板数值检测
   - score{objective=num;value=0}
   Skills:
   - modifytargetscore{objective=num;action=add;value=1} @self #波数计分板
   - modifytargetscore{objective=sc;action=set;value=10} @self #剩余怪物数量计分板
   - delay 100 #回合冷却
   - sendtitle{title="&c&l第<mob.score.num>波";subtitle="";d=60} @world #给予玩家提示
   - summon{sio=false;sip=false;t=怪物;a=10;r=3} @location{c=x,y,z} #在指定坐标刷10只怪
   第二波:
   Cooldown: 30
   Conditions:
   - score{objective=num;value=1} #由于前面加个一次num计分板了,所以数值要+1
   - score{objective=sc;value=0} #除去第一波后面每一波都要检测剩余怪物数量
   Skills:
   - modifytargetscore{objective=num;action=add;value=1} @self
   - modifytargetscore{objective=sc;action=set;value=15} @self
   - delay 100
   - sendtitle{title="&c&l第<mob.score.num>波";subtitle="";d=60} @world
   - summon{sio=false;sip=false;t=怪物;a=15;r=3} @location{c=x,y,z}
   结算:
   Cooldown: 30
   Conditions:
    - score{objective=num;value=3}
    - score{objective=sc;value=0}
    Skills:
    - modifytargetscore{objective=num;action=add;value=1} @self
    - sendtitle{title="&2&l你获得了胜利";subtitle="";d=60} @world
    - delay 60
    - remove @self
提醒:将更改计分板数值的技能放在第一位
写"怪物"
   怪物:
   Type: zombie
   Health: 20
   Damage: 4
   Modules:
     ThreatTable: true
   Skills:
   - skill{s=怪物数量计算} @self ~onDeath
   Options:
     PreventOtherDrops: true
     Despawn: false
写"怪物数量计算"技能
   怪物数量计算-减少:
   Skills:
   - delay 10 #这个延时能缓解怪物死亡放不出技能的问题
   - modifytargetscore{objective=sc;action=SUBTRACT;value=1} @MIR{t=全局检测怪;r=500} #sc计分板数值-1

再来总结一下:
创建一个全局检测的怪物,在它身上加上num和sc这两个计分板
num计分板是波数,sc是每波剩余怪物
每回合开始时,num+1,即波数+1
检测到sc=0,即剩余怪物数量=0时,开启下一波
怪物死亡后触发技能,使sc-1,即剩余怪物数量-1

后话:
本帖仅仅展示了最基础的框架部分
其实还有很多功能可以扩展
比如说每个波数固定时间
每波结束后给予一定的奖励…
大家发挥下自己的脑洞叭!



天命_怨天
感谢分享,讲解的很详细

TUCAOEVER
我记得mythicmobs有自定义全局变量可以不用单独生成一个生物给变量

Aegean_
TUCAOEVER 发表于 2022-8-13 10:17
我记得mythicmobs有自定义全局变量可以不用单独生成一个生物给变量

意思是不用生物作为载体吗,这我不太清楚

TUCAOEVER
Aegean_ 发表于 2022-8-13 10:37
意思是不用生物作为载体吗,这我不太清楚

https://git.mythiccraft.io/mythi ... is/Skills/Variables

安和桥北丶
找了好久终于找到写这个的了 好评

一只隐藏小咸鱼
作者好强作者好强作者好强

老何~
我很好奇这个第二波的监测数值怎么会是2呢 会导致第一波结束后不会进行第二波
   - score{objective=num;value=2} #由于前面加个一次num计分板了,所以数值要+1

Aegean_
老何~ 发表于 2022-9-18 01:37
我很好奇这个第二波的监测数值怎么会是2呢 会导致第一波结束后不会进行第二波
   - score{objective=num;va ...

抱歉,手误了

playrewwy
这个妙啊,学到了学到了

tenboo
打卡 我想做深渊副本的 不想用dp来做波次 因为不想去学= = 然后我就用技能来实现 我的思路跟你差不多 就是不知道怎么写得分什么的 看了你这个之后就实现了我要的功能

第一页 上一页 下一页 最后一页