=========================================================
写在前面:本文技巧实现依赖YEP的动作序列扩展插件,需要有一定的动作序列编写经验,如果还无法使用自定义动作序列,可以在B站搜索相关教程,安兹乌尔饭(饭大师)的教程比较简单易懂。你也可以查看简书的下面3篇文章了解动作序列:
https://www.jianshu.com/p/9f6f8628bc38
https://www.jianshu.com/p/059465f2ca10
https://www.jianshu.com/p/fbf27ca28cb0
此效果预览视频:https://www.bilibili.com/video/av75116485/
=========================================================
这个效果的实现,是使用了forcedaction 强制动作来完成的,基本思路是在技能的某个节点插入判定条件,满足条件则发动指定技能,否则直接绕过而继续接下来的动作。
实现这个技巧,首先会用到如下的脚本(后面会介绍如何使用):
if (Input.isPressed('right') && $gameParty._partyLimit >= 100) {
BattleManager._subject.forceAction(173);
BattleManager.forceAction(BattleManager._subject);
}
在这里我讲逐行解释它的作用:
if (Input.isPressed('right') && $gameParty._partyLimit >= 100)
【条件】如果玩家在此时按住了‘右方向键’(还可以使用 up down left ok cancel等等,更多的可以参考本文底部的附录),并且队伍极限计量槽值大于等于100(这个极限计量槽是yep的一个扩展插件,这里仅用于举例)。
{
BattleManager._subject.forceAction(173);
BattleManager.forceAction(BattleManager._subject);
}
【执行的动作】强制执行第173号技能。
那么,接下来我们就可以按照这个格式,写出你自己的联携技能了。
我们在工程目录\JS\plugins\文件夹下新建一个js文件,例如Hiougi.js(首字母大写在插件列表中排前面,小写则排后面),然后打开编辑这个js文件,像下面的例子写一个完整的方法(之所以这样做,是为了简化在多个技能中调用同一个方法,而不至于每个技能的序列里用eval写出超级长的一行脚本):
BattleManager.actionHiougiHayate = function(){
if (Input.isPressed('right')) {
BattleManager._subject.forceAction(173); //技能ID可自行指定
BattleManager.forceAction(BattleManager._subject);
}
else if (Input.isPressed('down')) {
BattleManager._subject.forceAction(174);
BattleManager.forceAction(BattleManager._subject);
}
else if (Input.isPressed('ok') && $gameParty._partyLimit >= 500 {
BattleManager._subject.forceAction(179);
BattleManager.forceAction(BattleManager._subject);
}
};
保存好后,在插件列表中加载此“插件”,并设置为生效ON。当然你也可以把这些代码写在你自己的常用脚本js里,或者写在其他插件下面(极其不推荐)。
这里的actionHiougiHayate就是要在技能中引用的内容(区分大小写),而你可以任意命名如dazhaoWangxiaoming。而如此一来,我在这例子里就定义了3个按键对应3个技能。那么我们如何把它引用到技能里连续发动呢?
MV数据库中点选相关技能,在技能的备注(不是技能简介)里编写动作序列。然后在合适的位置插入上面的奥义发动方法(附带详细注解):
<whole action> //这只是个人习惯,我喜欢在whole里把所有的动作全部写完,请保持自己的习惯
immortal: target, fales //敌人不死效果关闭(这个原本是在followaction或者finishaction里的,但比较拖沓我放在这里了)
move user: Forward, 40, 10 //用10帧的速度向前移动使用者40像素
wait for movement //等待移动到位
motion swing: user, no weapon //使用者做出挥舞的动作,不显示武器
se: es-attack, 100, 100 //播放es-attack这个音效
wait: 20 //等待20帧
animation 375: target //在目标身上播放375动画
wait: 15 //等待15帧
action effect //结算技能效果
eval: BattleManager.actionHiougiHayate(); //【这里就是调用上面js文件中的脚本 注意区分大小写】
wait: 10 //等待10帧
</whole action>
<target action>
</target action>
如此一来,在这个技能进行到跳伤害之后,如果玩家满足持续按住右方向键的条件则发动173号技能,如果按住下方向键则发动174号技能,如果按住了空格键/Z键并且队伍极限槽大于等于500则发动179号技能。
在这个技巧中还能使用各种各样的判定条件,大量的按键方案,这些就请您自行探索学习了。
附:部分可引用的按键表(自行修改core.js或者如果使用了yep的keyboardconfig插件还可以定义更多)
Input.keyMapper = {
9: 'tab', // tab键
13: 'ok', // 回车键
16: 'shift', // shift键
17: 'control', // ctrl键
18: 'control', // alt键
27: 'escape', // 退格键(删除字符那个←键)
32: 'ok', // 空格键
33: 'pageup', // pgup键
34: 'pagedown', // pgdn键
37: 'left', // ←键
38: 'up', // ↑键
39: 'right', // →键
40: 'down', // ↓键
45: 'escape', // insert键
81: 'pageup', // Q键
87: 'pagedown', // W键
88: 'escape', // X键
90: 'ok', // Z键
96: 'escape', // 小键盘数字0键
98: 'down', // 小件班数字2键
100: 'left', // 小键盘数字4键
102: 'right', // 小键盘数字6键
104: 'up', // 小键盘数字8键
120: 'debug' // F9键
};