RMMV系列技巧1:特定条件下发动的额外技能

=========================================================
写在前面:本文技巧实现依赖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键
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。