如何让其中一个重复装备锁定?

你好,我正在使用 yep_equip 核心插件,并试图将武器槽组锁定在如图所示的红色圆圈位置。

我本可以在编辑器中添加更多的装备槽位,但游戏中的一些角色拥有不同的槽位配置,例如武器和副手、没有武器,或者通过备注标签(notetags)额外增加两个火焰或精华槽位。

我在想是否有某种插件可以实现这一功能。

数据库中的“锁定装备”特性会锁定整个装备类型,因此它会锁定全部四个武器槽位,包括那个放有摇滚可乐的槽位。我没能找到仅锁定单个槽位的MV插件,但编写一个小插件即可实现此功能。将此代码保存为 LockedEquipSlots.js,放入你的 js/plugins 文件夹中,并在插件管理器中将其置于 YEP_EquipCore 下方:

/*:
 * @plugindesc 锁定特定的装备槽位。请置于 YEP_EquipCore 下方。
 * @help
 * 角色注释标签:
 *   <Locked Slots: 2, 3, 4>
 * 槽位编号从装备列表顶部开始计数,起始值为 1。
 *
 * 脚本调用:
 *   $gameActors.actor(1).unlockSlot(2);
 *   $gameActors.actor(1).lockSlot(2);
 */
(function() {
  Game_Actor.prototype.lockedSlots = function() {
    if (!this._lockedSlots) {
      var match = this.actor().note.match(/<Locked Slots:\s*([\d,\s]+)>/i);
      this._lockedSlots = match ? match[1].split(',').map(Number) : [];
    }
    return this._lockedSlots;
  };

  Game_Actor.prototype.lockSlot = function(slot) {
    if (!this.lockedSlots().contains(slot)) this._lockedSlots.push(slot);
  };

  Game_Actor.prototype.unlockSlot = function(slot) {
    this._lockedSlots = this.lockedSlots().filter(function(s) {
      return s !== slot;
    });
  };

  // YEP_EquipCore 的槽位窗口直接调用了这个保存的函数,
  // 因此在此处进行钩子处理可以覆盖菜单、优化和清除功能
  var _isEquipChangeOk = Yanfly.Equip.Game_Actor_isEquipChangeOk;
  Yanfly.Equip.Game_Actor_isEquipChangeOk = function(slotId) {
    if (this.lockedSlots().contains(slotId + 1)) return false;
    return _isEquipChangeOk.call(this, slotId);
  };
})();

然后,在角色的注释框中添加 <Locked Slots: 2, 3, 4>。这些数字从装备列表顶部开始计数,所以在你的截图中对应的是那三个空的武器槽位。它们将显示为灰色,玩家无法选择它们,且“优化”和“清除”功能也会跳过它们。

如果你希望在游戏中后期解锁某个槽位,请使用带有 $gameActors.actor(1).unlockSlot(2) 的脚本事件命令。这将为角色 1 解锁槽位 2,而使用 lockSlot 则可以再次将其锁定。

那么你是怎么做到的?

锁定单个插槽比锁定整个武器类型更适合这种情况,尤其是对于那些拥有不同插槽布局的角色。延迟解锁选项也让进度保持灵活。

我不知道那是什么意思,但我更喜欢使用 Note One,否则装甲数据库会变得一团糟。

我把插件放在 Plugin Manager 中的 YEP_EquipCore 下方,只需复制文本即可生成,然后在 Cielo Note 中添加 <Locked Slots: 2, 3, 4>,没错!它起作用了!谢谢兄弟!