设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1509|回复: 0
打印 上一主题 下一主题

[已经过期] 请问如何让KGC的物品分类脚本适用于默认的战斗界面?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
359
在线时间
23 小时
注册时间
2012-5-22
帖子
4
跳转到指定楼层
1
发表于 2012-6-1 18:21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人刚刚接触RM VX,对脚本修改一窍不通,自己改了几个,bug百出,求帮助。
尝试在论坛里搜索了数次,结果找到的脚本都不够满意。
也尝试过使用“在战斗界面不显示无法使用的道具”脚本,但物品一多,还是很乱。
现在我想拜托大神们帮忙修改一下KGC的脚本,以实现在默认战斗界面复杂物品分类。
不管怎样,在这里先谢各位了。
详细物品分类.rar (3.56 KB, 下载次数: 43)



‘‘──Darkness9于2012-6-1 19:27补充以下内容:

真心求帮助啊!
’’


‘‘──Darkness9于2012-6-7 13:59补充以下内容:

好吧。。。都没人回我
好在我已自行解决困难
不用你们回了
’’


‘‘──Darkness9于2012-6-7 14:02补充以下内容:

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ アイテム分類 - KGC_CategorizeItem ◆ VX ◆
#_/    ◇ Last update : 2009/09/04 ◇
#_/----------------------------------------------------------------------------
#_/  アイテムや武器、防具を種類別に分類する機能を作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

$data_system = load_data("Data/System.rvdata") if $data_system == nil

#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================

module KGC
module CategorizeItem
  # ◆ 非戦闘時に分類する
  ENABLE_NOT_IN_BATTLE = true
  # ◆ 戦闘時に分類する
  ENABLE_IN_BATTLE     = false

  # ◆ 戦闘時と非戦闘時で同じカテゴリを使用する
  #  分類ウィンドウの設定は個別に行ってください。
  USE_SAME_CATEGORY = true

  # ◆ 自動振り分けを行う
  ENABLE_AUTO_CATEGORIZE = true
  # ◆ 複数のカテゴリには配置しない
  #  true にすると、いずれか1つのカテゴリにしか振り分けなくなります。
  #  (「全種」は例外)
  NOT_ALLOW_DUPLICATE = false

  # ◆ 戦闘中に選択したアイテムの位置を記憶する
  REMEMBER_INDEX_IN_BATTLE = true


  # ━━━━━━━━ 非戦闘時 カテゴリ ━━━━━━━━

  # ◆ カテゴリ識別名
  #  メモ欄でカテゴリを識別するための名称を並べてください。
  #  以下の名称は、メモ欄に記述する必要はありません。
  #   "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
  CATEGORY_IDENTIFIER = [
    "通常アイテム",
    "戦闘用アイテム",
    "武器",
    "盾",
    "頭防具",
    "身体防具",
    "装飾品",
    "貴重品",
    "イベントアイテム",
    "全種",  # ← 最後の項目だけは , を付けても付けなくてもOK
  ]
  # ◆ アイテムのデフォルトカテゴリ
  #  どのカテゴリにも当てはまらないアイテムの割り当て先です。
  ITEM_DEFAULT_CATEGORY = "通常アイテム"

  # ◆ リストに表示する名称
  #  アイテム画面で分類ウィンドウに表示する名称です。
  #  「カテゴリ識別名」と同じ順に並べてください。
  CATEGORY_NAME = [
    "通常",
    "戦闘用",
    Vocab.weapon,           # 武器
    Vocab.armor1,           # 盾
    "#{Vocab.armor2}防具",  # 頭防具
    "#{Vocab.armor3}防具",  # 身体防具
    Vocab.armor4,           # 装飾品
    "貴重品",
    "イベント",
    "すべて",
  ]

  # ◆ 分類の説明文
  #  「カテゴリ識別名」と同じ順に並べてください。
  CATEGORY_DESCRIPTION = [
    "ごく普通の#{Vocab.item}を表示します。",
    "戦闘用の#{Vocab.item}を表示します。",
    "#{Vocab.weapon}を表示します。",
    "#{Vocab.armor1}を表示します。",
    "#{Vocab.armor2}防具を表示します。",
    "#{Vocab.armor3}防具を表示します。",
    "#{Vocab.armor4}を表示します。",
    "貴重品を表示します。",
    "イベント用の#{Vocab.item}を表示します。",
    "すべての#{Vocab.item}を表示します。",
  ]


  # ━━━━━━━━ 戦闘時 カテゴリ ━━━━━━━━
  # USE_SAME_CATEGORY = false  の場合のみ有効になります。
  # 設定方法は非戦闘時と同様です。

  # ◆ カテゴリ識別名
  CATEGORY_IDENTIFIER_BATTLE = [
    "通常アイテム",
    "戦闘用アイテム",
    "武器",
    "盾",
    "頭防具",
    "身体防具",
    "装飾品",
    "貴重品",
    "イベントアイテム",
    "全種",  # ← 最後の項目だけは , を付けても付けなくてもOK
  ]
  # ◆ アイテムのデフォルトカテゴリ
  ITEM_DEFAULT_CATEGORY_BATTLE = "通常アイテム"

  # ◆ リストに表示する名称
  CATEGORY_NAME_BATTLE = [
    "通常",
    "戦闘用",
    Vocab.weapon,           # 武器
    Vocab.armor1,           # 盾
    "#{Vocab.armor2}防具",  # 頭防具
    "#{Vocab.armor3}防具",  # 身体防具
    Vocab.armor4,           # 装飾品
    "貴重品",
    "イベント",
    "すべて",
  ]

  # ◆ 分類の説明文
  CATEGORY_DESCRIPTION_BATTLE = [
    "ごく普通の#{Vocab.item}を表示します。",
    "戦闘用の#{Vocab.item}を表示します。",
    "#{Vocab.weapon}を表示します。",
    "#{Vocab.armor1}を表示します。",
    "#{Vocab.armor2}防具を表示します。",
    "#{Vocab.armor3}防具を表示します。",
    "#{Vocab.armor4}を表示します。",
    "貴重品を表示します。",
    "イベント用の#{Vocab.item}を表示します。",
    "すべての#{Vocab.item}を表示します。",
  ]

  if USE_SAME_CATEGORY
    # 非戦闘時の設定を流用
    CATEGORY_IDENTIFIER_BATTLE   = CATEGORY_IDENTIFIER
    ITEM_DEFAULT_CATEGORY_BATTLE = ITEM_DEFAULT_CATEGORY
    CATEGORY_NAME_BATTLE         = CATEGORY_NAME
    CATEGORY_DESCRIPTION_BATTLE  = CATEGORY_DESCRIPTION
  end


  # ━━━━━━━━ 非戦闘時 分類ウィンドウ ━━━━━━━━

  # ◆ 分類ウィンドウの座標 [x, y]
  CATEGORY_WINDOW_POSITION  = [264, 128]
  # ◆ 分類ウィンドウの列数
  CATEGORY_WINDOW_COLUMNS   = 2
  # ◆ 分類ウィンドウの列幅
  CATEGORY_WINDOW_COL_WIDTH = 96
  # ◆ 分類ウィンドウの列間の空白
  CATEGORY_WINDOW_COL_SPACE = 32


  # ━━━━━━━━ 戦闘時 分類ウィンドウ ━━━━━━━━

  # ◆ 分類ウィンドウの座標 [x, y]
  CATEGORY_WINDOW_POSITION_BATTLE  = [264, 128]
  # ◆ 分類ウィンドウの列数
  CATEGORY_WINDOW_COLUMNS_BATTLE   = 2
  # ◆ 分類ウィンドウの列幅
  CATEGORY_WINDOW_COL_WIDTH_BATTLE = 96
  # ◆ 分類ウィンドウの列間の空白
  CATEGORY_WINDOW_COL_SPACE_BATTLE = 32
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["CategorizeItem"] = true

module KGC::CategorizeItem
  # アイテムのデフォルトカテゴリ index
  ITEM_DEFAULT_CATEGORY_INDEX =
    CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)
  # アイテムのデフォルトカテゴリ index (戦闘時)
  ITEM_DEFAULT_CATEGORY_INDEX_BATTLE =
    CATEGORY_IDENTIFIER_BATTLE.index(ITEM_DEFAULT_CATEGORY_BATTLE)

  # 予約識別名
  RESERVED_CATEGORIES = [
    "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
  ]
  # 予約カテゴリ index
  RESERVED_CATEGORY_INDEX = {}
  # 予約カテゴリ index (戦闘時)
  RESERVED_CATEGORY_INDEX_BATTLE = {}

  # 予約カテゴリ index 作成
  RESERVED_CATEGORIES.each { |c|
    RESERVED_CATEGORY_INDEX[c]        = CATEGORY_IDENTIFIER.index(c)
    RESERVED_CATEGORY_INDEX_BATTLE[c] = CATEGORY_IDENTIFIER_BATTLE.index(c)
  }

  module Regexp
    module BaseItem
      # カテゴリ
      CATEGORY = /<(?:CATEGORY|分類|カテゴリー?)[ ]*(.*)>/i
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (非戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_cache
    if @__item_category == nil || !KGC::CategorizeItem::ENABLE_AUTO_CATEGORIZE
      @__item_category = []
    else
      @__item_category.compact!
    end

    self.note.each_line { |line|
      if line =~ KGC::CategorizeItem::Regexp::BaseItem::CATEGORY
        # カテゴリ
        c = KGC::CategorizeItem::CATEGORY_IDENTIFIER.index($1)
        @__item_category << c if c != nil
      end
    }
    if @__item_category.empty?
      @__item_category << KGC::CategorizeItem::ITEM_DEFAULT_CATEGORY_INDEX
    elsif KGC::CategorizeItem::NOT_ALLOW_DUPLICATE
      # 最後に指定したカテゴリに配置
      @__item_category = [@__item_category.pop]
    end
  end
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_battle_cache
    if @__item_category_battle == nil ||
        !KGC::CategorizeItem::ENABLE_AUTO_CATEGORIZE
      @__item_category_battle = []
    else
      @__item_category_battle.compact!
    end

    self.note.each_line { |line|
      if line =~ KGC::CategorizeItem::Regexp::BaseItem::CATEGORY
        # カテゴリ
        c = KGC::CategorizeItem::CATEGORY_IDENTIFIER_BATTLE.index($1)
        @__item_category_battle << c if c != nil
      end
    }
    if @__item_category_battle.empty?
      @__item_category_battle <<
        KGC::CategorizeItem::ITEM_DEFAULT_CATEGORY_INDEX_BATTLE
    elsif KGC::CategorizeItem::NOT_ALLOW_DUPLICATE
      # 最後に指定したカテゴリに配置
      @__item_category_battle = [@__item_category_battle.pop]
    end
  end
  #--------------------------------------------------------------------------
  # ○ アイテムのカテゴリ (非戦闘時)
  #--------------------------------------------------------------------------
  def item_category
    create_categorize_item_cache if @__item_category == nil
    return @__item_category
  end
  #--------------------------------------------------------------------------
  # ○ アイテムのカテゴリ (戦闘時)
  #--------------------------------------------------------------------------
  def item_category_battle
    create_categorize_item_battle_cache if @__item_category_battle == nil
    return @__item_category_battle
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::UsableItem
#==============================================================================

class RPG::UsableItem < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (非戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_cache
    @__item_category = []
    if self.price == 0
      @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["貴重品"]
    end
    super
  end
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_battle_cache
    @__item_category_battle = []
    if self.price == 0
      @__item_category_battle <<
        KGC::CategorizeItem::RESERVED_CATEGORY_INDEX_BATTLE["貴重品"]
    end
    super
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Weapon
#==============================================================================

class RPG::Weapon < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (非戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_cache
    @__item_category = []
    @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["武器"]
    super
  end
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_battle_cache
    @__item_category_battle = []
    @__item_category_battle <<
      KGC::CategorizeItem::RESERVED_CATEGORY_INDEX_BATTLE["武器"]
    super
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Armor
#==============================================================================

class RPG::Armor < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ 定数
  #--------------------------------------------------------------------------
  CATEGORIZE_TYPE = ["盾", "頭防具", "身体防具", "装飾品"]
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (非戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_cache
    @__item_category = []
    @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["防具"]
    type = CATEGORIZE_TYPE[self.kind]
    if type != nil
      @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
    end
    super
  end
  #--------------------------------------------------------------------------
  # ○ アイテム分類のキャッシュ生成 (戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_item_battle_cache
    @__item_category_battle = []
    @__item_category_battle <<
      KGC::CategorizeItem::RESERVED_CATEGORY_INDEX_BATTLE["防具"]
    type = CATEGORIZE_TYPE[self.kind]
    if type != nil
      @__item_category_battle <<
        KGC::CategorizeItem::RESERVED_CATEGORY_INDEX_BATTLE[type]
    end
    super
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Temp
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :item_window_category     # アイテム画面で表示するカテゴリ
  attr_accessor :item_category_disabled   # アイテム画面のカテゴリ無効化フラグ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_CategorizeItem initialize
  def initialize
    initialize_KGC_CategorizeItem

    @item_window_category   = nil
    @item_category_disabled = false
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_writer   :last_item_category       # カーソル記憶用 : アイテムカテゴリ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_id : アクター ID
  #--------------------------------------------------------------------------
  alias initialize_KGC_CategorizeItem initialize
  def initialize(actor_id)
    initialize_KGC_CategorizeItem(actor_id)

    @last_item_category = 0
  end
  #--------------------------------------------------------------------------
  # ○ カーソル記憶用のカテゴリ取得
  #--------------------------------------------------------------------------
  def last_item_category
    @last_item_category = 0 if @last_item_category == nil
    return @last_item_category
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_Item
#==============================================================================

class Window_Item < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :category                 # カテゴリ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x      : ウィンドウの X 座標
  #     y      : ウィンドウの Y 座標
  #     width  : ウィンドウの幅
  #     height : ウィンドウの高さ
  #--------------------------------------------------------------------------
  alias initialize_KGC_CategorizeItem initialize
  def initialize(x, y, width, height)
    @category = 0

    initialize_KGC_CategorizeItem(x, y, width, height)
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリ設定
  #--------------------------------------------------------------------------
  def category=(value)
    @category = value
    refresh
  end
  #--------------------------------------------------------------------------
  # ● アイテムをリストに含めるかどうか
  #     item : アイテム
  #--------------------------------------------------------------------------
  alias include_KGC_CategorizeItem? include?
  def include?(item)
    return false if item == nil

    # 「全種」なら無条件で含める
    if $game_temp.in_battle
      return true unless KGC::CategorizeItem::ENABLE_IN_BATTLE
      reserved_index = KGC::CategorizeItem::RESERVED_CATEGORY_INDEX_BATTLE
    else
      return true unless KGC::CategorizeItem::ENABLE_NOT_IN_BATTLE
      reserved_index = KGC::CategorizeItem::RESERVED_CATEGORY_INDEX
    end
    return true if @category == reserved_index["全種"]

    result = include_KGC_CategorizeItem?(item)

    unless result
      # 使用可能なら追加候補とする
      if $imported["UsableEquipment"] && $game_party.item_can_use?(item)
        result = true
      end
    end
    # カテゴリ一致判定
    item_category = ($game_temp.in_battle ?
      item.item_category_battle : item.item_category)
    result &= item_category.include?(@category)
    # 「全種」なら含める
    return true if @category == reserved_index["全種"]

    return result
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_ItemCategory
#------------------------------------------------------------------------------
#  アイテム画面でカテゴリ選択を行うウィンドウです。
#==============================================================================

class Window_ItemCategory < Window_Command
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    if $game_temp.in_battle
      cols     = KGC::CategorizeItem::CATEGORY_WINDOW_COLUMNS_BATTLE
      width    = KGC::CategorizeItem::CATEGORY_WINDOW_COL_WIDTH_BATTLE
      space    = KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE_BATTLE
      commands = KGC::CategorizeItem::CATEGORY_NAME_BATTLE
      position = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION_BATTLE
    else
      cols     = KGC::CategorizeItem::CATEGORY_WINDOW_COLUMNS
      width    = KGC::CategorizeItem::CATEGORY_WINDOW_COL_WIDTH
      space    = KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE
      commands = KGC::CategorizeItem::CATEGORY_NAME
      position = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION
    end
    width = width * cols + 32
    width += (cols - 1) * space
    super(width, commands, cols, 0, space)
    self.x = position[0]
    self.y = position[1]
    self.z = 1000
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    if $game_temp.in_battle
      text = KGC::CategorizeItem::CATEGORY_DESCRIPTION_BATTLE[self.index]
    else
      text = KGC::CategorizeItem::CATEGORY_DESCRIPTION[self.index]
    end
    @help_window.set_text(text)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Item
#==============================================================================

if KGC::CategorizeItem::ENABLE_NOT_IN_BATTLE
class Scene_Item < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias start_KGC_CategorizeItem start
  def start
    start_KGC_CategorizeItem

    @category_window = Window_ItemCategory.new
    @category_window.help_window = @help_window

    if $game_temp.item_window_category == nil
      show_category_window
    else
      # 指定カテゴリを表示
      category = $game_temp.item_window_category
      if category.is_a?(String)
        category = KGC::CategorizeItem::CATEGORY_IDENTIFIER.index(category)
      end
      @category_window.openness = 0
      hide_category_window
      @category_window.index = category
      @item_window.category  = category
      @item_window.call_update_help
    end
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  alias terminate_KGC_CategorizeItem terminate
  def terminate
    terminate_KGC_CategorizeItem

    @category_window.dispose
    $game_temp.item_window_category = nil
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_KGC_CategorizeItem update
  def update
    @category_window.update

    update_KGC_CategorizeItem

    if @category_window.active
      update_category_selection
    end
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリ選択の更新
  #--------------------------------------------------------------------------
  def update_category_selection
    unless @category_activated
      @category_activated = true
      show_category_window
      return
    end

    # 選択カテゴリー変更
    if @last_category_index != @category_window.index
      @item_window.category = @category_window.index
      @item_window.refresh
      @last_category_index = @category_window.index
    end

    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      hide_category_window
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム選択の更新
  #--------------------------------------------------------------------------
  alias update_item_selection_KGC_CategorizeItem update_item_selection
  def update_item_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      if $game_temp.item_category_disabled
        return_scene
      else
        show_category_window
      end
      return
    end

    update_item_selection_KGC_CategorizeItem
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの表示
  #--------------------------------------------------------------------------
  def show_category_window
    @category_window.open
    @category_window.active = true
    @item_window.active = false
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの非表示
  #--------------------------------------------------------------------------
  def hide_category_window
    @category_activated = false
    @category_window.close
    @category_window.active = false
    @item_window.active = true
    # アイテムウィンドウのインデックスを調整
    if @item_window.index >= @item_window.item_max
      @item_window.index = [@item_window.item_max - 1, 0].max
    end
  end
end
end  # <-- if KGC::CategorizeItem::ENABLE_NOT_IN_BATTLE

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle
#==============================================================================

if KGC::CategorizeItem::ENABLE_IN_BATTLE
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● アイテム選択の開始
  #--------------------------------------------------------------------------
  alias start_item_selection_KGC_CategorizeItem start_item_selection
  def start_item_selection
    start_item_selection_KGC_CategorizeItem

    # カテゴリウィンドウを作成
    @category_window = Window_ItemCategory.new
    @category_window.help_window = @help_window
    @category_window.z = @help_window.z + 10

    if $game_temp.item_window_category == nil
      @item_window.active = false

      # 記憶していたカテゴリを復元
      if KGC::CategorizeItem::REMEMBER_INDEX_IN_BATTLE
        @category_window.index = @active_battler.last_item_category
        @item_window.category = @category_window.index
      end
    else
      # 指定カテゴリを表示
      category = $game_temp.item_window_category
      if category.is_a?(String)
        category =
          KGC::CategorizeItem::CATEGORY_IDENTIFIER_BATTLE.index(category)
      end
      hide_item_category_window
      @category_window.openness = 0
      @category_window.index    = category
      @item_window.category     = category
      @item_window.refresh
      @item_window.call_update_help
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム選択の終了
  #--------------------------------------------------------------------------
  alias end_item_selection_KGC_CategorizeItem end_item_selection
  def end_item_selection
    if @category_window != nil
      @category_window.dispose
      @category_window = nil
    end
    $game_temp.item_window_category = nil

    end_item_selection_KGC_CategorizeItem
  end
  #--------------------------------------------------------------------------
  # ● アイテム選択の更新
  #--------------------------------------------------------------------------
  alias update_item_selection_KGC_CategorizeItem update_item_selection
  def update_item_selection
    @category_window.update
    if @category_window.active
      update_item_category_selection
      return
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      if $game_temp.item_category_disabled
        end_item_selection
      else
        show_item_category_window
      end
      return
    end

    update_item_selection_KGC_CategorizeItem
  end
  #--------------------------------------------------------------------------
  # ● アイテムの決定
  #--------------------------------------------------------------------------
  alias determine_item_KGC_CategorizeItem determine_item
  def determine_item
    # 選択したカテゴリを記憶
    if KGC::CategorizeItem::REMEMBER_INDEX_IN_BATTLE && @category_window != nil
      @active_battler.last_item_category = @category_window.index
    end

    determine_item_KGC_CategorizeItem
  end
  #--------------------------------------------------------------------------
  # ○ アイテムのカテゴリ選択の更新
  #--------------------------------------------------------------------------
  def update_item_category_selection
    @help_window.update

    # 選択カテゴリー変更
    if @last_category_index != @category_window.index
      @item_window.category = @category_window.index
      @item_window.refresh
      @last_category_index = @category_window.index
    end

    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_item_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      hide_item_category_window
    end
  end
  #--------------------------------------------------------------------------
  # ○ アイテムカテゴリウィンドウの表示
  #--------------------------------------------------------------------------
  def show_item_category_window
    @category_window.open
    @category_window.active = true
    @item_window.active = false
  end
  #--------------------------------------------------------------------------
  # ○ アイテムカテゴリウィンドウの非表示
  #--------------------------------------------------------------------------
  def hide_item_category_window
    @category_activated = false
    @category_window.close
    @category_window.active = false
    @item_window.active = true
    # アイテムウィンドウのインデックスを調整
    if @item_window.index >= @item_window.item_max
      @item_window.index = [@item_window.item_max - 1, 0].max
    end
  end
end
end  # <-- if KGC::CategorizeItem::ENABLE_IN_BATTLE

’’
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-28 03:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表