【解決済み】【RGSS3】TOMOのスクリプト置き場 様の『二刀流時に武器タイプ制限』で素手禁止状態を変更したい

タツミ
記事: 34
登録日時: 2015年12月29日(火) 23:51

【解決済み】【RGSS3】TOMOのスクリプト置き場 様の『二刀流時に武器タイプ制限』で素手禁止状態を変更したい

投稿記事by タツミ » 2022年10月07日(金) 19:57

TOMOのスクリプト置き場 様の『二刀流時に武器タイプ制限』を使用した際、
武器を個別に装備解除ができず(全て外すコマンドだと装備解除できます)、
武器の枠が素手禁止になります。装備解除する方法をよろしくお願いします。
最後に編集したユーザー タツミ on 2022年10月08日(土) 10:28 [ 編集 2 回目 ]

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】TOMOのスクリプト置き場 様の『二刀流時に武器タイプ制限』で素手禁止状態を変更したい

投稿記事by TOMO » 2022年10月07日(金) 23:47

設定方法が少し変わってるので注意して下さい
それと同時に処理内容も大きく変更しました

コード: 全て選択

#============================================================================
# 二刀流時に武器タイプ制限 ver1.03
# 制作者:TOMO
#
# 二刀流時に、右手と左手で装備できる武器タイプを別々に分ける
#============================================================================

#============================================================================
# ○更新履歴
# ver1.03
#   武器を外せないバグを修正
#   設定方法を変更
# ver1.02
#   このスクリプトに対応しやすいように改良
#   最強装備に適応されてなかったミスを修正
# ver1.01
#   指定されてないアクターでエラーが出る(かもしれない)問題を修正
#============================================================================
module TOMO
  module EquipDualWield
    Actor = []  # 弄るな
   
    # 武器タイプ
    # Actor[アクターID] = [
    #   [右手武器タイプ1, 右手武器タイプ2,・・・],
    #   [左手武器タイプ1, 左手武器タイプ2,・・・]
    # ]
    Actor[1] = [
      [4],  # 右手:武器タイプ4
      [10], # 左手:武器タイプ10
    ]
  end
end

$imported = {} if $imported.nil?
$imported["TOMOEquipDualWield"] = true

class Game_Actor
  #--------------------------------------------------------------------------
  # ● 最強装備
  #--------------------------------------------------------------------------
  alias tomo_dual_wield_optimize_equipments optimize_equipments
  def optimize_equipments
    if TOMO::EquipDualWield::Actor[self.id]
      data = TOMO::EquipDualWield::Actor[self.id]
      clear_equipments
      equip_slots.size.times do |i|
        next if !equip_change_ok?(i)
        hand = slot_list(0).index(i)
        items = $game_party.equip_items.select do |item|
          item.etype_id == equip_slots[i] &&
          equippable?(item) && item.performance >= 0 &&
          (item.etype_id == 0 ? data[hand].include?(item.wtype_id) : true)
        end
        change_equip(i, items.max_by {|item| item.performance })
      end
    else
      tomo_dual_wield_optimize_equipments
    end
  end
end

class Window_EquipItem
  #--------------------------------------------------------------------------
  # ● アイテムをリストに含めるかどうか
  #--------------------------------------------------------------------------
  alias tomo_dual_wield_include? include?
  def include?(item)
    if @actor && TOMO::EquipDualWield::Actor[@actor.id] &&
      @actor.dual_wield? && @actor.equippable?(item)
     
      hand = @actor.slot_list(0).index(@slot_id)
      return item.nil? || (!hand.nil? && item.is_a?(RPG::Weapon) &&
      TOMO::EquipDualWield::Actor[@actor.id][hand].include?(item.wtype_id))
    end
    tomo_dual_wield_include?(item)
  end
end
タツミ
記事: 34
登録日時: 2015年12月29日(火) 23:51

Re: 【RGSS3】TOMOのスクリプト置き場 様の『二刀流時に武器タイプ制限』で素手禁止状態を変更したい

投稿記事by タツミ » 2022年10月08日(土) 10:27

理想の二刀流装備ができるようになりました。
TOMO 様ありがとうございます。

“VX / Ace:質問” へ戻る