本帖最后由 SailCat 于 2021-8-13 11:00 编辑
我再写详细一点:
1. 独立开关用做独立变量,
将Game_SelfSwitches的第20行
由return @data[key] == true ? true : false
return @data[key] == true ? true : false
改成return @data[key] || false
return @data[key] || false
2. 精灵数据的存储
首先,建立一个空地图,这个地图不需要任何图块,只用来存储数据及占位用,假设这个地图的编号为200。
然后,在地图上粘贴空事件,每个空事件对应一个精灵(因为独立开关需要依附地图事件而存在)——此步可选,取决于精灵是不是需要行走图等,如果需要行走图,就这样做,如果精灵只是一堆数据,并没有图像,可以跳过这一步。
再次,插入一个插件脚本,内容如下:
class Interpreter def plugin_buff_pixie(id, key, value = nil) $game_self_switches[[200, id, key]] ||= 0 $game_self_switches[[200, id, key]] += (value || 0) end end
class Interpreter
def plugin_buff_pixie(id, key, value = nil)
$game_self_switches[[200, id, key]] ||= 0
$game_self_switches[[200, id, key]] += (value || 0)
end
end
3. 每当需要强化精灵时,用事件脚本调用:
plugin_buff_pixie(精灵的ID,强化的类型,强化值),如 plugin_buff_pixie(1, :str, 7) 即为将1号精灵的str值增加7
需要获取精灵的强化能力,则调用plugin_buff_pixie(精灵的ID,强化的类型),如plugin_buff_pixie(1, :str) 即为获取1号精灵的str值,未经设置过的值都是0。
2和3两步其实不是必须的,只是实现一个事件脚本中的插件命令,目的是为了简化操作,方便书写,你也可以每次都用$game_self_switches开头的生代码,但那样会很烦。
这个做法和硬改Game_System的好处相比就是:由于套了独立开关的默认壳子,旧存档100%兼容(这一个好处就足够了) |