查看: 6391|回复: 4

[有事请教] 怎么在事件中控制插件开/关?

[复制链接]
梦石
0
星屑
14337
在线时间
2613 小时
注册时间
2013-6-10
回帖
1693
发表于 2019-7-25 15:08:31 | 显示全部楼层 |阅读模式

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

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

×
我在插件列表开启了一个插件,可是游戏的某个阶段并不需要这个插件,想要通过事件将其暂时关闭,有需要再开启。请问可以实现吗?
(事件里有脚本指令与插件指令,请问该怎样做才能达到我想要的效果?谢谢。)
梦石
0
星屑
9867
在线时间
581 小时
注册时间
2017-9-28
回帖
203
发表于 2019-7-25 17:21:40 | 显示全部楼层
一般除非是插件提供了控制开关的功能,否则无法轻易在游戏中控制任何一个插件的开关。

插件的本质是一段代码,运行过了就是启用了插件,所谓关闭就是要在运行时消除启用插件(运行脚本)带来的所有影响。那么难点就在这里:如何收集这些影响,并产生对应的消除影响的代码?我最近正在做 RGSS 里利用钩子和 alias 等操作做热更新(开/关)插件脚本的事情,也许 MV 插件结合 babel 等 js 编译器也能分析出如何动态卸载插件,希望 MV 区大佬们有空摸一个(逃
喵喵喵
回复

使用道具 举报

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

开拓者

发表于 2019-7-25 19:00:40 | 显示全部楼层
有的插件自带开启和关闭,但要想修改大神写的插件的话就算了,除非自学,用钱请论坛大佬出山,大佬也不愿意修改别人的插件,再或者知道插件作者的sns,联系他,赞助他,搞定
酸酸甜甜就④哇噢
回复

使用道具 举报

梦石
0
星屑
1075
在线时间
133 小时
注册时间
2019-5-1
回帖
57
发表于 2019-7-26 08:27:14 | 显示全部楼层
除了一些关了会立刻导致游戏玩法崩解的例如战斗引擎核心 状态核心什么的,一般来说大部分功能插件作者都会提供关闭和开启的插件命令。

你需要做的是查看插件内的使用说明, 一般都有什么 C_SHOW/C_HIDE   MWP_VALID/MWP_INVALID之类的让你自己决定什么时候启用什么时候禁用。

没有的话那要实现就得按2 3楼到大佬说的那样自学,或者请插件作者帮忙了
回复

使用道具 举报

梦石
0
星屑
3938
在线时间
444 小时
注册时间
2019-3-3
回帖
80
发表于 2019-7-26 08:35:54 | 显示全部楼层
本帖最后由 多卡多卡 于 2019-7-26 08:40 编辑

以前回答过一个差不多的问题,其实开关插件就是是否启用插件中的那些代码:
[pre lang="javascript"]//插件的参数帮助
//定义全局变量
//插件指令
if(val){
(function () {
//插件主体的各种函数
})();}[/pre]
那个val自己定义个boolean型的变量,做个插件指令更改就可以了。
插件指令的写法:
[pre lang="javascript"]
var val = true;
var _plugin_command = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args)
{
    _plugin_command.call(this,command,args);
    if(command === 'plugin')
    {
        switch (args[0])
        {
             case 'on': val = true; break;
             case 'off': val = false; break;
        }
    }
}
/*用plugin on/plugin off 就可以控制开关了,当然别写的太简单了以免发生冲突*/
[/pre]

这是一种比较通用的方法,能够完全关闭一个插件。但对于一些在画面上添加东西的插件或者对核心代码魔改的比较厉害的插件,关闭会导致游戏崩溃。如果说只需要关闭某一个功能,在插件没有提供入口的情况下,那么只能参照楼上的方法了
回复 1 0

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部