Project1

标题: 请问插件中的参数能不能在游戏中改变? [打印本页]

作者: wmzmtz    时间: 2017-8-30 19:27
标题: 请问插件中的参数能不能在游戏中改变?
其实我是想实现一个功能,开局选难度,简单难度的话,按ESC后在菜单状态中显示tp,困难难度的话不显示tp

然后用了一个美化主菜单的插件

补充内容 (2017-8-30 19:28):
插件中自带一个参数叫 showTP?
所以我想在游戏中能修改这个参数......

补充内容 (2017-8-30 20:25):
另外再问一个问题,在系统-选项 里有个选项是“在战斗中显示TP”,请问这个设定能不能也在游戏中修改?
作者: sutao80216    时间: 2017-8-30 20:48
理论上只要插件作者没有把这个保存参数的变量封装起来,是可以运行时改变的,但改变的只是保存参数运算的结果,而非参数本身。但是,假如作者把这个变量封装到一个闭合里,那么如果没有提供另外的访问接口,从外部就无法访问到了。
作者: wmzmtz    时间: 2017-8-30 20:59
sutao80216 发表于 2017-8-30 20:48
理论上只要插件作者没有把这个保存参数的变量封装起来,是可以运行时改变的,但改变的只是保存参数运算的结 ...

请问怎么实现运行时改变,我想先试试效果....
作者: sutao80216    时间: 2017-8-30 22:37
这个得看具体的目标插件。
比如说YEP的插件参数运算值都是直接暴露在最外层的,可以直接通过Yanfly.Param.xxx来访问它们。
SRD系列的虽然被封装到一个函数里了,但是最外层的函数有一个参数,而插件参数运算值被保存到了该参数的成员变量,通过该参数还是可以访问到。
Galv系列的虽然是封装到函数体内部,既没有直接暴露,也没有传入参数,但是它是把插件参数运算值保存到了一个全局对象的成员变量,通过该全局对象可以访问到。
以上这些都是比较好的例子,可以在运行时改变的。但有一些写得比较随意的插件,可能就是直接简单粗暴地把参数运算值封装到函数体内部的局部变量,这样的话在外面就没办法访问了。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1