设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4540|回复: 7
打印 上一主题 下一主题

[原创发布] 【2016.07.18】按键调用插件或脚本

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
跳转到指定楼层
1
发表于 2016-7-18 16:13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 汪汪 于 2016-7-18 18:29 编辑

InputUsePlugins.zip (2.69 KB, 下载次数: 248)

本人的 输入按键重新设置 同时使用时,请在适当时机使用     ww.InputUsePlugins.start() 以确保按键安装
JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // InputUsePlugins.js
  3. //=============================================================================
  4. /*:
  5.  * @plugindesc 按键调用插件
  6.  * @author wangwang
  7.  *
  8.  * @param  InputUsePlugins
  9.  * @desc 确定是按键调用插件的参数,请勿修改
  10.  * @default 汪汪
  11.  *
  12.  * @param KeyName
  13.  * @desc 键对应名,请勿与mv默认设置冲突
  14.  * @default "65":"A","68":"D"
  15.  *
  16.  * @param UsePlugin
  17.  * @desc 键名调用方法
  18.  * @default "A":{"isTriggerLongPressed":"IUP test isTriggerLongPressed","isTriggered":"IUP test1 isTriggered","isKeyUpTriggered":"IUP test2 isKeyUpTriggered"}
  19.  *
  20.  * @param UseEval
  21.  * @desc 键名调用脚本
  22.  * @default "D":"console.log('D')"
  23.  *
  24.  * @help
  25.  * 帮助的信息
  26.  *
  27.  * kayname 用来扩展mv的按键
  28.  * 是给键盘按键设置一个名称,不同的键可以设置相同的名称,
  29.  * 前面的是键对应的值,具体哪个按键对应的什么值可以上网上查询 键盘键值,比如 65 对应的是 键盘上 的 A键
  30.  * 后面的是键对应的名称,可以任意设置,比如 我们把 65 设置为 "A" , 68 (d键) 设置为 "D" ,当然你也可以吧 65 设置为 "随便起个名",
  31.  * 写法是  
  32.  * "数字":"名称"   
  33.  * 如
  34.  * "65":"A"
  35.  *
  36.  * mv本事也设置了一些 ,如下
  37.  * 9: 'tab',       // tab
  38.  * 13: 'ok',       // enter
  39.  * 16: 'shift',    // shift
  40.  * 17: 'control',  // control
  41.  * 18: 'control',  // alt
  42.  * 27: 'escape',   // escape
  43.  * 32: 'ok',       // space
  44.  * 33: 'pageup',   // pageup
  45.  * 34: 'pagedown', // pagedown
  46.  * 37: 'left',     // left arrow
  47.  * 38: 'up',       // up arrow
  48.  * 39: 'right',    // right arrow
  49.  * 40: 'down',     // down arrow
  50.  * 45: 'escape',   // insert
  51.  * 81: 'pageup',   // Q
  52.  * 87: 'pagedown', // W
  53.  * 88: 'escape',   // X
  54.  * 90: 'ok',       // Z
  55.  * 96: 'escape',   // numpad 0
  56.  * 98: 'down',     // numpad 2
  57.  * 100: 'left',    // numpad 4
  58.  * 102: 'right',   // numpad 6
  59.  * 104: 'up',      // numpad 8
  60.  * 120: 'debug'    // F9
  61.  *
  62.  * UsePlugin 是用来调用插件方法 相当于事件里最后一页的 插件指令
  63.  * UseEval 是用来调用脚本 相当于事件里最后一页的 脚本
  64.  * 前面写用于判断的键名,如 "A" 就是指对于键名 "A" 的调用 ,
  65.  * 当然,你也可以使用mv原有的那些名字比如 "ok" ,"shift" 不过不建议,因为那样可能影响正常游戏操作
  66.  *
  67.  * 后面有两种写法
  68.  * 1,字符串, 比如 "IUP test isTriggerLongPressed"
  69.  * 这样就是调用 插件指令 IUP test isTriggerLongPressed ,记得字符串两边加""
  70.  * 当然也可以是脚本 比如 "$gameVariables.setValue(1,100)"  
  71.  * 设置1号变量为100
  72.  * 这种情况下,默认是按下键的瞬间调用它
  73.  * 2,对象,使用{"isTriggerLongPressed":"IUP test isTriggerLongPressed","isTriggered":"IUP test1 isTriggered"} 这样的写法
  74.  * 这种情况下, 会在
  75.  * "isTriggered"
  76.  * 按下瞬间(按下,只触发一次)调用 插件指令 "IUP test1 isTriggered"
  77.  * "isTriggerLongPressed"
  78.  * 长按下瞬间(长按一会,只触发一次)调用 插件指令 "IUP test isTriggerLongPressed"
  79.  *
  80.  * isPressed 是按下
  81.  * isTriggered 是刚按下 (推荐)
  82.  * isRepeated 是重复按下
  83.  * isLongPressed 是长按下
  84.  * isTriggerLongPressed 是长按下瞬间 (添加,推荐)
  85.  * isKeyUpTriggered 是抬起瞬间(添加)
  86.  *
  87.  * 一个键写完后要写另一个键用 , 隔开
  88.  * 如 "A":"XXXXXXX","D":"YYYYYYYYY"
  89.  *
  90.  *
  91.  *
  92.  */
  93.  
  94. (function () {
  95.  
  96.  
  97.     var _Game_Interpreter_pluginCommand =
  98.         Game_Interpreter.prototype.pluginCommand;
  99.     Game_Interpreter.prototype.pluginCommand = function (command, args) {
  100.         _Game_Interpreter_pluginCommand.call(this, command, args);
  101.         if (command === 'IUP') {
  102.             switch (args[0]) {
  103.                 case 'start':
  104.                     ww.InputUsePlugins.start()
  105.                     break;
  106.                 case 'open':
  107.                     ww.InputUsePlugins.open()
  108.                     break;
  109.                 case 'close':
  110.                     ww.InputUsePlugins.close()
  111.                     break;
  112.                 case 'test':
  113.                     console.log("测试  " + args[1] + " 是长按下瞬间")
  114.                     break;
  115.                 case 'test1':
  116.                     console.log("测试 1  " + args[1] + " 是按下")
  117.                     break;
  118.                 case 'test2':
  119.                     console.log("测试 2  " + args[1] + " 是抬起")
  120.                     break;
  121.             }
  122.         }
  123.     };
  124.  
  125.  
  126.  
  127.  
  128.     //长按后瞬间
  129.     Input.isTriggerLongPressed = function (keyName) {
  130.         if (this._isEscapeCompatible(keyName) && this.isLongPressed('escape')) {
  131.             return true;
  132.         } else {
  133.             return (this._latestButton === keyName &&
  134.                 this._pressedTime === this.keyRepeatWait);
  135.         }
  136.     };   
  137.  
  138.     //抬起按键
  139.     Input.isKeyUpTriggered = function (keyName) {
  140.         if (this._isEscapeCompatible(keyName) && this.isLongPressed('escape')) {
  141.             return true;
  142.         } else {
  143.             return ( !this._currentState[keyName]&& this._previousState[keyName]);
  144.         }  
  145.     };
  146.  
  147.  
  148.  
  149.     ww = {}
  150.     ww.InputUsePlugins = {}
  151.  
  152.     ww.InputUsePlugins._keyname = {}
  153.     ww.InputUsePlugins._useplugin = {}
  154.     ww.InputUsePlugins._useeval = {}
  155.  
  156.     ww.InputUsePlugins.SceneManager_updateInputData = SceneManager.updateInputData
  157.     SceneManager.updateInputData = function () {
  158.         if (ww.InputUsePlugins.open) {
  159.             ww.InputUsePlugins.use()
  160.         }
  161.         ww.InputUsePlugins.SceneManager_updateInputData.call(this)
  162.     };
  163.  
  164.     ww.InputUsePlugins.init = function (p) {
  165.         var p = p
  166.         var keyname = p.parameters["KeyName"] || ""
  167.         var useplugin = p.parameters["UsePlugin"] || ""
  168.         var useeval = p.parameters["UseEval"] || ""
  169.  
  170.         try { eval('this._keyname = {' + keyname + '}') } catch (e) { console.log( "keyname is error")}
  171.         try { eval('this._useplugin = {' + useplugin + '}') } catch (e) {console.log( "useplugin is error") }
  172.         try { eval('this._useeval = {' + useeval + '}') } catch (e) {console.log( "useeval is error") }
  173.  
  174.  
  175.         var kn = this._keyname
  176.         for (var i in kn) {
  177.             if (!Input.keyMapper[i]) {
  178.                 Input.keyMapper[i] = kn[i]
  179.             }
  180.         }
  181.     }
  182.  
  183.     ww.InputUsePlugins.use = function () {
  184.         var use = this._useeval
  185.         for (var name in use) {
  186.             try {
  187.                 var nr = use[name]
  188.                 var type = typeof (nr)
  189.                 if (type === "string") {
  190.                     if (Input.isTriggered(name)) {
  191.                         eval(nr)
  192.                     }
  193.                 } else if (type === "object") {
  194.                     for (var f in nr) {
  195.                         if (Input[f] && Input[f](name)) {
  196.                             var nr2 = nr[f]
  197.                             if (typeof (nr2) === "string") {
  198.                                 eval(nr2)
  199.                             }
  200.                         }
  201.                     }
  202.                 }
  203.             } catch (e) {
  204.             }
  205.         }
  206.  
  207.  
  208.         var use = this._useplugin
  209.         for (var name in use) {
  210.             try {
  211.                 var nr = use[name]
  212.                 var type = typeof (nr)
  213.                 if (type === "string") {
  214.                     if (Input.isTriggered(name)) {
  215.                         this.usepc(nr)
  216.                     }
  217.                 } else if (type === "object") {
  218.                     for (var f in nr) {
  219.                         if (Input[f] && Input[f](name)) {
  220.                             var nr2 = nr[f]
  221.                             if (typeof (nr2) === "string") {
  222.                                 this.usepc(nr2)
  223.                             }
  224.                         }
  225.                     }
  226.                 }
  227.             } catch (e) {
  228.             }
  229.         }
  230.  
  231.     }
  232.     ww.InputUsePlugins.usepc = function (s) {
  233.         var pc = Game_Interpreter.prototype.pluginCommand
  234.         var args = s.split(" ");
  235.         var command = args.shift();
  236.         pc(command, args);
  237.     }
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.     ww.InputUsePlugins.start = function () {
  245.         this._open = true
  246.         this.load()
  247.     }
  248.  
  249.     ww.InputUsePlugins.open = function () {
  250.         this._open = true
  251.     }
  252.  
  253.     ww.InputUsePlugins.close = function () {
  254.         this._open = false
  255.     }
  256.  
  257.  
  258.     ww.InputUsePlugins.load = function () {
  259.         for (var i = 0; i < $plugins.length; i++) {
  260.             var plugin = $plugins[i]
  261.             if (plugin.parameters["InputUsePlugins"]) {
  262.                 if (plugin.status == true) {
  263.                     ww.InputUsePlugins.init(plugin)
  264.                 }
  265.             }
  266.         }
  267.     }
  268.     ww.InputUsePlugins.start()
  269.  
  270.  
  271.  
  272. })();

评分

参与人数 1星屑 +10 收起 理由
lucy94920 + 10 超赞!

查看全部评分

Lv3.寻梦者

梦石
0
星屑
3796
在线时间
555 小时
注册时间
2016-2-11
帖子
113
2
发表于 2016-7-18 17:07:32 | 只看该作者
抱走留名

点评

额,刚刚微调了下,加了点解释  发表于 2016-7-18 18:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
39 小时
注册时间
2016-5-19
帖子
30
3
发表于 2016-7-19 18:46:14 | 只看该作者
后面的就不懂了,调试哪里。
话说,能不呢增加一个按键在‘条件分歧’中的判定‘??按键按下’
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
39 小时
注册时间
2016-5-19
帖子
30
4
发表于 2016-7-19 18:47:27 | 只看该作者
萌面小西瓜 发表于 2016-7-19 18:46
后面的就不懂了,调试哪里。
话说,能不呢增加一个按键在‘条件分歧’中的判定‘??按键按下’ ...

比如我新加一个E键
然后‘条件分歧’中的判定‘E按键被按下’然后触发某个事件?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
5
 楼主| 发表于 2016-7-19 19:37:41 手机端发表。 | 只看该作者
萌面小西瓜 发表于 2016-7-19 18:47
比如我新加一个E键
然后‘条件分歧’中的判定‘E按键被按下’然后触发某个事件? ...

可以是可以,不过条件分歧那里条件应该用脚本写
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
39 小时
注册时间
2016-5-19
帖子
30
6
发表于 2016-7-19 20:11:22 | 只看该作者
汪汪 发表于 2016-7-19 19:37
可以是可以,不过条件分歧那里条件应该用脚本写

是的,我是这么想的,可是对脚步一窍不通,所以一直在百度,之找到了XP的全键盘插件,在条件那儿用脚步‘if Input.trigger?($H)’表示按下H键时条件分歧成立,可是换到MV我就不懂了...

点评

条件那里用 Input.isTriggered(name) /// name为键名  发表于 2016-7-25 17:59
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-10 16:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表