查看: 3855|回复: 11

[有事请教] 有关在游戏中途用脚本开启/关闭插件

[复制链接]
梦石
26
星屑
10654
在线时间
1268 小时
注册时间
2019-5-21
回帖
636

极短28获奖极短27参与MZ评测员极短26获奖极短25获奖极短24参与极短21参与

发表于 2021-2-7 10:58:40 | 显示全部楼层 |阅读模式

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

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

×
原委是这样的:使用了pixi渲染器,为此关闭了Community_Basic插件。现在想在进入第二张地图后关闭渲染器并打开Community_Basic。
已善用搜索,在收藏夹中发现了以前保存过的p1的脚本,但是找不到来源,所以也不清楚用法QAQ
请问这个插件该如何使用?或者有脚本/插件能做到在游戏事件中开关插件吗?

[pre lang="javascript"]var aliasPluginCommand = Game_Interpreter.prototype.pluginCommand;

Game_Interpreter.prototype.pluginCommand = function(command, args) {
   aliasPluginCommand.call(this, command, args);
   if (command === 'plugincommandtextname') {
      dostuff(args);
   }
};[/pre]
梦石
0
星屑
242
在线时间
23 小时
注册时间
2020-1-23
回帖
12
发表于 2021-2-7 16:25:26 | 显示全部楼层
(⊙﹏⊙)
才疏学浅
猜一下能不能在插件代码里面加上插件指令来控制插件的禁用与开启,然后在游戏事件中使用对应的插件指令

点评

这应该是个很好的思路!不过这一点我也不太清楚怎么实现orzzz  发表于 2021-2-7 17:14
回复

使用道具 举报

梦石
0
星屑
3922
在线时间
1198 小时
注册时间
2016-8-9
回帖
2355

开拓者

发表于 2021-2-7 17:22:39 | 显示全部楼层
折叠内容是一段SAN_AnalogMove.js的插件命令设置代码,楼主可以比葫芦画瓢试试
之前因为插件冲突,我想试着用脚本在移动路线控制该插件的开启和关闭,因为说明里只有插件命令,只能去扒代码,发现原来是这么写的,就直接用里面的脚本实验,发现可以执行,反推的话应该问题也不大,加油楼主,实现后希望回来告知下解决方案~~

SAN_AnalogMove.js插件针对插件开关的代码// プラグインコマンド
Sanshiro.SAN_AnalogMove.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args) {
    Sanshiro.SAN_AnalogMove.Game_Interpreter_pluginCommand.call(this, command, args);
    if (command === 'AnalogMove') {
        switch (args[0]) {
            case 'ON':
                $gameSystem.setAnalogMoveValid(true);
                break;
            case 'OFF':
                $gameSystem.setAnalogMoveValid(false);
                break;
            case 'Player':
                switch (args[1]) {
                    case 'ON':
                        $gamePlayer.setAnalogMoveValid(true);
                        break;
                    case 'OFF':
                        $gamePlayer.setAnalogMoveValid(false);
                        break;
                }
                break;
        }
        $gamePlayer.refresh();
    }
};

点评

哎,我也是瞎猜,要是脚本大佬过来两句话就搞定了,很是无奈  发表于 2021-2-8 00:50
按字面来看,这个好像是通过插件指令来控制某个“使插件有效的开关”?如果插件本体里没有设置过这种开关,好像用不了这个办法诶←半猜半蒙  发表于 2021-2-7 19:52
酸酸甜甜就④哇噢
回复

使用道具 举报

梦石
0
星屑
242
在线时间
23 小时
注册时间
2020-1-23
回帖
12
发表于 2021-2-7 17:34:17 | 显示全部楼层
emmm比如说
  1. var _Game_Interpreter_pluginCommand =
  2.             Game_Interpreter.prototype.pluginCommand;
  3. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  4.         _Game_Interpreter_pluginCommand.call(this, command, args);
  5.         if (command === 'PluginName')
  6.         {
  7.                 if(args[0] =="disable")
  8.                 {
  9.                        this._enable = false;// 让插件无效掉
  10.                 }
  11.                 else if (args[0] == "enable")
  12.                 {
  13.                       this._enable = true;// 使能插件功能
  14.                 }
  15.          }
  16. // 若干插件代码
复制代码

事件里面使用指令 PluginName enable/disable
然后插件里面对this._enable响应来进行开关插件(比如让插件里面的方法都加一个if (this._enable) 再执行)
或者直接在if的disable分支里面清空命名空间,然后在enable的分支里面重新把命名空间的东西都写上(啊这样感觉十分糟糕)

点评

鉴于楼主基本是脚本白痴所以把这段放进了插件第一个函数里,然后把剩下所有脚本放进了if enable后面,但失败了x这是我的水平能尝试的极限了hh  发表于 2021-2-7 19:50
回复

使用道具 举报

梦石
0
星屑
242
在线时间
23 小时
注册时间
2020-1-23
回帖
12
发表于 2021-2-7 21:10:32 | 显示全部楼层
本帖最后由 Bengbengknight 于 2021-2-7 21:13 编辑

其实我脚本也是初学啦,不过要是还有问题的话也可以把插件发出来帮忙改一下
要是想学一下插件指令的话可以看下这篇教程
https://rpg.blue/thread-395487-1-1.html
第三节  插件参数和命令那里,感觉还蛮清楚的

点评

我也看了那个!然后就开始魔改,艺不高人还胆大!(喂)  发表于 2021-2-7 21:27
如果改单个插件的话感觉有点治标不治本(?)上策当然是有通用的办法,这样什么插件都可以开关了XD  发表于 2021-2-7 21:26
回复

使用道具 举报

梦石
0
星屑
242
在线时间
23 小时
注册时间
2020-1-23
回帖
12
发表于 2021-2-7 23:29:57 | 显示全部楼层
Bengbengknight 发表于 2021-2-7 21:10
其实我脚本也是初学啦,不过要是还有问题的话也可以把插件发出来帮忙改一下
要是想学一下插件指 ...

哈哈哈哈哈哈哈哈哈
不过要是想搞个直接对其他原生插件进行开关感觉比较困难,游戏启动的时候插件内容已经写入内存了,命名空间的各种方式又各不相同,不能直接全屏蔽。。。

可能还是添加开关比较容易
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部