アイテムを装備

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
TOMO
記事: 208
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

アイテムを装備

投稿記事by TOMO » 2020年2月28日(金) 20:46

普通のアイテムを装備出来るようになります

・本体

コード: 全て選択

# アイテムを装備ver1.01
# 制作者:TOMO
#
# アイテムを装備出来るようになります
# 戦闘時、アクターは装備したアイテムのみ使用可能です
#
#
# ※使い方
# アイテムのメモ欄に「<装備可能アイテム>」を入れる
#
#
# ※補足
# ・導入箇所は「( ここに追加 )」のすぐ下辺りにお願いします
#
# ・対象アイテムは装備タイプ:10となります
#  他サイト様の装備拡張系スクリプトを使用する際は気を付けて下さい

# ※更新内容
# ver1.01
#   メモ欄に記入してないアイテムは通常通りリストに載るように変更
#   戦闘時、装備したアイテムだけ個数表示をしないように変更
#   一部処理の変更

class << Vocab
  # 装備タイプ
  alias tomo_ex_item_equip_etype etype
  def etype(etype_id)
    case etype_id
    when 10;  return "アイテム"
    else;     return tomo_ex_item_equip_etype(etype_id)
    end
  end
end

class RPG::Item
  attr_accessor   :etype_id
  attr_accessor   :params
  def etype_id
    return @note.include?("<装備可能アイテム>") ? 10 : nil
  end
  def params
    @params ||= [0] * 8
    @params
  end
end
class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備可能判定
  #--------------------------------------------------------------------------
  alias tomo_ex_item_equip_equippable? equippable?
  def equippable?(item)
    tomo_ex_item_equip_equippable?(item) || item.is_a?(RPG::Item)
  end
  #--------------------------------------------------------------------------
  # ● アイテムオブジェクトの配列取得
  #--------------------------------------------------------------------------
  def items
    @equips.select {|item| item.is_item? }.collect {|item| item.object }
  end
  #--------------------------------------------------------------------------
  # ● アイテムの消耗
  #--------------------------------------------------------------------------
  def consume_item(item)
    slot_id = equips.index(item)
    force_change_equip(slot_id, nil) if slot_id && item.consumable
  end
end

class Window_EquipSlot
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  alias tomo_ex_item_equip_refresh refresh
  def refresh
    create_contents
    tomo_ex_item_equip_refresh
  end
end
class Window_EquipItem
  #--------------------------------------------------------------------------
  # ● アイテムをリストに含めるかどうか
  #--------------------------------------------------------------------------
  alias tomo_ex_item_equip_include? include?
  def include?(item)
    return true if item.is_a?(RPG::Item) && @slot_id >= 0 &&
    item.etype_id == @actor.equip_slots[@slot_id]
    tomo_ex_item_equip_include?(item)
  end
end
class Window_BattleItem
  #--------------------------------------------------------------------------
  # ● アクターの設定
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @normal_items = []
    @data = @actor ? @actor.items.compact : []
    $game_party.all_items.each do |item|
      next unless include?(item) && item.etype_id != 10
      @data.push(item)
      @normal_items.push(item)
    end
    @data.push(nil) if include?(nil)
  end
  #--------------------------------------------------------------------------
  # ● アイテムの個数を描画
  #--------------------------------------------------------------------------
  alias tomo_ex_item_equip_draw_item_number draw_item_number
  def draw_item_number(rect, item)
    return unless @normal_items.include?(item)
    tomo_ex_item_equip_draw_item_number(rect, item)
  end
end

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● コマンド[アイテム]
  #--------------------------------------------------------------------------
  alias tomo_ex_item_equip_command_item command_item
  def command_item
    @item_window.actor = BattleManager.actor
    tomo_ex_item_equip_command_item
  end
end

・(おまけ)装備スロット拡張

コード: 全て選択

class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備スロットの配列を取得
  #--------------------------------------------------------------------------
  def equip_slots
    return [0,0,2,3,4,10,10,10] if dual_wield?
    return [0,1,2,3,4,10,10,10]
  end
end


画像
画像
画像
画像
画像

※サポートは基本受け付けてますが、全てに答えられるわけではありません

※更新内容
ver1.01(2020/03/13)
メモ欄に記入してないアイテムは通常通りリストに載るように変更
戦闘時、装備したアイテムだけ個数表示をしないように変更
一部処理の変更

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

Re: アイテムを装備

投稿記事by TOMO » 2020年3月13日(金) 21:14

ver1.01に更新しました

なお、個数表示しないようにしたのは、
装備したアイテムだと分かるようにする為です

“Ace:スクリプト素材(RGSS3)” へ戻る