查看: 4481|回复: 3

[原创发布] 发个小东西,按键触发公共事件

[复制链接]
梦石
0
星屑
332
在线时间
71 小时
注册时间
2020-1-22
回帖
21
发表于 2020-6-15 17:56:33 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 kano521241 于 2020-6-16 13:59 编辑

印象里好像有过类似的插件了……虽然是没有什么技术含量的东西,不过还是发出来吧

需要@taroxd的全键盘脚本
https://rpg.blue/thread-386610-1-1.html
http://taroxd.github.io/rpgmv-plugins/InputExtra.html


按照三楼的方法进行了更改

KeyPublicEvents.js//=============================================================================
// KeyPublicEvents.js
//=============================================================================
/*:
* @plugindesc 按键绑定公共事件
* @author kanoko
*
* @param KeyA
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyB
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyC
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyD
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyE
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyF
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyG
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyH
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyI
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyJ
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyK
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyL
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyM
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyN
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyO
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyP
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyQ
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyR
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyS
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyT
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyU
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyV
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyW
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyX
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyY
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param KeyZ
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number0
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number1
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number2
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number3
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number4
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number5
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number6
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number7
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number8
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Number9
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Tab
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param End
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @param Home
* @desc 请输入公共事件的ID,默认为0
* @default 0
*
* @help
* 在相对应的键位绑定公共事件即可。需要用到全键盘输入插件。
* https://taroxd.github.io/rpgmv-plugins/InputExtra.html
*/



//读取参数
var KeyParameters = PluginManager.parameters('KeyPublicEvents');

//如果未定义,则备份原update
if(Scene_Map.prototype.UpdateKEY === undefined){
        Scene_Map.prototype.UpdateKEY = Scene_Map.prototype.update;
}

//主方法
Scene_Map.prototype.update = function(){
    this.UpdateKEY.apply(this,arguments);//应用源 update 使用传入的参数表(无所谓方法定义到底有几个参数)
    KeyPublicEventsUpdate();
}

var KeyGp = {
        "KeyA" : 65,"KeyB" : 66,"KeyC" : 67,"KeyD" : 68,"KeyE" : 69,"KeyF" : 70,"KeyG" : 71,"KeyH" : 72,"KeyI" : 73,
        "KeyJ" : 74,"KeyK" : 75,"KeyL" : 76,"KeyM" : 77,"KeyN" : 78,"KeyO" : 79,"KeyP" : 80,"KeyQ" : 81,"KeyR" : 82,
        "KeyS" : 83,"KeyT" : 84,"KeyU" : 85,"KeyV" : 86,"KeyW" : 87,"KeyX" : 88,"KeyY" : 89,"KeyZ" : 90,"Home" : 36,
        "End" : 35,"Tab" : 9,"Number0" : 48,"Number1" : 49,"Number2" : 50,"Number3" : 51,"Number4" : 52,"Number5" : 53,
        "Number6" : 54,"Number7" : 55,"Number8" : 56,"Number9" : 57
};

function KeyPublicEventsUpdate(){
        for(var k in KeyGp){//遍历KeyGp中所有的键,所以K[]就代表了KeyGp的键值
                if(InputExtra.isTriggered(KeyGp[k]) && KeyParameters[k] !== 0){//判断是否按下 和 是否定义了事件ID
                    $gameTemp.reserveCommonEvent(KeyParameters[k]*1);//初始化事件
                       
                }
        }
}

评分

参与人数 3赞 +3 收起 理由
清y零 + 1 精品文章
xxwhisperxx + 1
白嫩白嫩的 + 1 精品文章

查看全部评分

梦石
0
星屑
3486
在线时间
294 小时
注册时间
2020-1-27
回帖
180
发表于 2020-6-15 19:31:34 | 显示全部楼层
这个实现方式  真厉害
回复

使用道具 举报

梦石
0
星屑
3486
在线时间
294 小时
注册时间
2020-1-27
回帖
180
发表于 2020-6-15 19:52:06 | 显示全部楼层
本帖最后由 zths 于 2020-6-15 20:01 编辑

[pre lang="javascript"]var KeyParameters = PluginManager.parameters('KeyPublicEvents');
if(Scene_Map.prototype.updateBk === undefined){
        Scene_Map.prototype.updateBk = Scene_Map.prototype.update;//备份原 update
}
Scene_Map.prototype.update = function(){
    this.updateBk.apply(this,arguments);//应用源 update 使用传入的参数表(无所谓方法定义到底有几个参数)
    KeyPublicEventsUpdate();
}
var kvPar = {
    "Tab":9,
    "End":35,
    "Home":36
    //等等等等
};
function KeyPublicEventsUpdate(){
    for(var k in kvPar){//在对象 kvPar 里遍历所有的键
        var keyCode = kvPar[k];//拿到对应的keyCode
        if(InputExtra.isTriggered(keyCode) && KeyParameters[k] !== 0){//判断是否按下 和 是否定义了事件ID
            $gameTemp.reserveCommonEvent(KeyParameters[k]*1);//初始化事件
        }
    }
}[/pre]
建议写任何代码  发现自己有大量复制黏贴的趋势  就想想是不是可以合并一下....
尽量别复制一堆重复的代码,比较好维护也比较好看

点评

非常方便的方法!我是因为硬知识不过关,能想到用for循环之类的,但是不会用,才只好用这种笨办法了_(:з」∠)_  发表于 2020-6-16 12:59

评分

参与人数 2赞 +2 收起 理由
kano521241 + 1 我很赞同
白嫩白嫩的 + 1 666666

查看全部评分

回复 3 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部