・本体
コード: 全て選択
# アイテムを装備ver1.041
# 制作者:TOMO
#
# アイテムを装備出来るようになります
# 戦闘時、アクターは装備したアイテムのみ使用可能です
#
#
# ※使い方
# ・装備可能アイテムの設定
# アイテムのメモ欄に「<装備可能アイテム>」を入れる
#
# ・戦闘時に使用可能な装備を設定
# 装備のメモ欄に「<装備使用効果:n>」と書く
# (アイテムID:nの設定通り使用されます)
#
#
# ※補足
# ・導入箇所は「( ここに追加 )」のすぐ下辺りにお願いします
#
# ・装備タイプIDは5以上の数値を設定して下さい
# また、他サイト様の装備拡張系で追加した数値も使わないで下さい
#
# ・使用可能な装備を設定する際は、アイテムの方は必ず「消耗しない」にして下さい
# ※更新内容
# ver1.041
# 装備不可能なアイテムが装備出来ていたバグを修正
# その他バグを修正
# ver1.03
# 武器・防具をアイテムとして使用できる機能を追加
# 装備タイプIDと装備タイプ名の設定をしやすいように変更
# おまけスクリプトだった「ID指定で装備を変更」を追加
# その他修正&変更
#
# ver1.02
# メニュー画面からアイテムを使用した際に消費されないバグを修正
#
# ver1.01
# メモ欄に記入してないアイテムは通常通りリストに載るように変更
# 戦闘時、装備したアイテムだけ個数表示をしないように変更
# 一部処理の変更
#----------------------------------------------------------------------------
# ● 設定項目
#----------------------------------------------------------------------------
module TOMO
module ItemEquip
EtypeID = 10 # 装備タイプID(5以上で未使用な数値を指定)
EtypeName = "アイテム" # 装備タイプ名
end
end
#----------------------------------------------------------------------------
# ● ここまで
#----------------------------------------------------------------------------
class << Vocab
# 装備タイプ
alias tomo_ex_item_equip_etype etype
def etype(etype_id)
return TOMO::ItemEquip::EtypeName if etype_id == TOMO::ItemEquip::EtypeID
return tomo_ex_item_equip_etype(etype_id)
end
end
class RPG::Item
attr_accessor :etype_id
attr_accessor :params
def etype_id
unless @etype_id
@etype_id = -1
if @note.include?("<装備可能アイテム>")
@etype_id = TOMO::ItemEquip::EtypeID
end
end
@etype_id
end
def params
@params ||= [0] * 8
end
def equippable_item?
self.etype_id == TOMO::ItemEquip::EtypeID
end
end
class RPG::EquipItem
attr_accessor :usable_item_id
def usable_item_id
unless @usable_item_id
@usable_item_id = 0
@usable_item_id = $1.to_i if @note.match(/<装備使用効果:(\d+)>/i)
end
@usable_item_id
end
def usable_equip_item
self.usable_item_id > 0 ? $data_items[self.usable_item_id] : nil
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) &&
item.equippable_item? && equip_slots.include?(item.etype_id))
end
#--------------------------------------------------------------------------
# ● アイテムオブジェクトの配列取得
#--------------------------------------------------------------------------
def items
@equips.select {|item| item.is_item? }.collect {|item| item.object }
end
#--------------------------------------------------------------------------
# ● 使用可能な装備の配列取得
#--------------------------------------------------------------------------
def usable_equips
equips.compact.collect {|item|
item.is_a?(RPG::EquipItem) ? item.usable_equip_item : nil
}
end
#--------------------------------------------------------------------------
# ● アイテムの消耗
#--------------------------------------------------------------------------
alias tomo_ex_item_equip_consume_item consume_item
def consume_item(item)
slot_id = equips.index(item)
if slot_id && item.consumable
force_change_equip(slot_id, nil)
else
tomo_ex_item_equip_consume_item(item)
end
end
#--------------------------------------------------------------------------
# ● アイテムの使用可能条件チェック
#--------------------------------------------------------------------------
alias tomo_ex_item_equip_item_conditions_met? item_conditions_met?
def item_conditions_met?(item)
if $game_party.in_battle && item.battle_ok?
return true if usable_equips.include?(item) || items.include?(item)
end
tomo_ex_item_equip_item_conditions_met?(item)
end
#--------------------------------------------------------------------------
# ● 装備の変更(ID で指定)
# slot_id : 装備スロット ID
# item_id : 武器/防具 ID
#--------------------------------------------------------------------------
alias tomo_ex_item_equip_change_equip_by_id change_equip_by_id
def change_equip_by_id(slot_id, item_id)
if equip_slots[slot_id] == TOMO::ItemEquip::EtypeID
change_equip(slot_id, $data_items[item_id])
else
tomo_ex_item_equip_change_equip_by_id(slot_id, item_id)
end
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.equippable_item? && 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.usable_equips.compact + @actor.items.compact : []
$game_party.items.each do |item|
next unless include?(item) && item.etype_id != TOMO::ItemEquip::EtypeID
@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.041(2022/07/09)
装備不可能なアイテムが装備出来ていたバグを修正
ver1.03(2022/07/08)
武器・防具をアイテムとして使用できる機能を追加
装備タイプIDと装備タイプ名の設定をしやすいように変更
おまけスクリプトだった「ID指定で装備を変更」を追加
その他修正&変更
おまけ(2022/03/30)
ID指定で装備を変更する際の処理を修正するスクリプトを追加
ver1.02(2020/10/26)
メニュー画面からアイテムを使用した際に消費されないバグを修正
ver1.01(2020/03/13)
メモ欄に記入してないアイテムは通常通りリストに載るように変更
戦闘時、装備したアイテムだけ個数表示をしないように変更
一部処理の変更