[RMVX]Adding a window scroll hotkey (one to go down, another to go up)

0 Members and 1 Guest are viewing this topic.

***
Rep:
Level 71
RMRK Junior
As the Subject implies, I need assistance creating a hotkey that allows you to scroll a window up, and another to scroll it down. If it would be easier to make these global, I am okay with that, otherwise, it needs to fit the script below. I am using the KGC extended equip and extended equip scene scripts, but it only showed up to like 8 stats in the equip scene. The problem with that is that my game has like 15 or 16 stats. I figured out how to make it..... able to show all of them. Now I just need to be able to make the window able to scroll up and down so that they are visible.
I was thinking that, if such a hotkey could be done and be unique to this script and window, A could be used for scroll down, and S for scroll up, or vice-versa. Or, maybe it could be done such that the buttons are easily customizable. Here is the script:

Code: [Select]
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/   ◆             Expanded Equip Scene - KGC_ExtendedEquipScene        ◆ VX ◆
#_/   ◇                       Last Update: 2008/09/13                         ◇
#_/   ◆                    Translation by Mr. Anonymous                       ◆
#_/   ◆ KGC Site:                                                             ◆
#_/   ◆ http://f44.aaa.livedoor.jp/~ytomy/                                    ◆
#_/   ◆ Translator's Blog:                                                    ◆
#_/   ◆ http://mraprojects.wordpress.com                                      ◆
#_/----------------------------------------------------------------------------
#_/  This script expands the equipment scene by adding a popup menu that allows
#_/ the player to manually equip, automatically equip, or remove all current
#_/ equipment. Also, this script will show more detailed information on what
#_/ stats are increased/decreased when equipping items, such as Accuracy.
#_/============================================================================
#_/  Install: Insert below KCG_HelpExtension and above KCG_EquipExtension
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================#
#                               ★ Customization ★                              # 
#==============================================================================#
module KGC
  module ExtendedEquipScene
  #                        ◆ Parameter Names ◆
  #  This affects the text displayed on the extended equip screen for these
  #   additional, normally hidden attribute bonuses.
  VOCAB_PARAM = {
    :hit => "Accuracy",           # Hit Ratio, AKA Accuracy
    :eva => "Evasion",            # Evasion
    :cri => "Crit",               # Critical
    :mag_def => "Will",           # Magic Defense
    :crit_dam => "Crit Damage",   # Critical Damage
    :luck => "Luck",              # Luck
    :hpr => "HP Regen",           # Health Regeneration
    :mpr => "MP Regen",           # MP Regeneration
    :pen => "ArmorPen",           # Armor Penetration
    :spen => "SpellPen",          # Spell Penetration
    :parc => "ParryChance",       # Parry Chance
    :para => "ParryAmount",       # Parry Amount

  }#<- Do Not Remove!

  #                        ◆ Equip Parameters ◆
  #  This is the default order in which parameters are displayed on the Equip
  #   screen.
  #  :maxhp .. Maximum HP
  #  :maxmp .. Maximum MP
  #  :atk   .. Attack
  #  :def   .. Defense
  #  :spi   .. Spirit (AKA Intelligence)
  #  :agi   .. Agility
  #  :hit   .. Hit Ratio (AKA Accuracy)
  #  :eva   .. Evasion
  #  :cri   .. Critical
  #  You may alter this order by rearranging the parameters in the brackets [].
  EQUIP_PARAMS = [ :maxhp, :maxmp, :atk, :def, :spi, :mag_def, :agi, :cri,
  :crit_dam, :luck, :hpr, :mpr, :pen, :spen, :parc, :para ]

  #                      ◆ Equipment Command Names ◆
  #  This affects the text displayed on the Equip command popup menu.
  COMMANDS = [
    "Equip",       # Equip/De-equip an item.
    # Optimize equipment configuration.
    # Remove all currently equipped items.
  ]# <- Do Not Remove!
 
  #                   ◆ Descriptive "Help" Window Text ◆
  #  This affects the text displayed in the "Help" (Top) Window when the
  #   cooresponding item from above has been selected.
  COMMAND_HELP = [
    "Change Equipment",      # Equip/De-equip an item.
      # Optimize equipment configuration.
      # Remove all currently equipped items.
  ]# <- Do Not Remove!

  #                         ◆ Optimize Equipment ◆
  #  Allows you to change what items are not automatically equipped when using
  #   the "Optimize" command. The numbers in the brackets will be excluded from
  #   automatic equipping with the optimize command.
  #  -1.Weapon  0.Shield  1.Headgear 
  #  2.Bodygear  3.Accessory  4 & 5. Equipment Expansions (See EquipExtention)
  IGNORE_STRONGEST_KIND = [3, 5]

  #                  ◆ Optimize Equipment Prioritization ◆
  #  Allows you the change the order in which equipment bonuses to parameters 
  #   are prioritorized for the "Optimize" command.
  #  Parameters are as follows:
  #  :maxhp .. Maximum HP
  #  :maxmp .. Maximum MP
  #  :atk .. Attack
  #  :def .. Defense
  #  :spi .. Spirit (AKA Intelligence)
  #  :agi .. Agility
  #  :hit   .. Hit Ratio (AKA Accuracy)
  #  :eva   .. Evasion
  #  :cri   .. Critical
  #  This affects the parameter order.
  #  You may alter or add to this order by rearranging the parameters in the
  #   brackets [].
  STRONGEST_WEAPON_PARAM_ORDER = [ :atk, :spi, :agi, :def ]
  #  This affects the armor (body gear) order.
  STRONGEST_ARMOR_PARAM_ORDER  = [ :def, :spi, :agi, :atk ]
  end
end

#=============================================================================#
#                          ★ End Customization ★                              #
#=============================================================================#

#=================================================#
#                    IMPORT                       #
#=================================================#

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

#=================================================#

#==============================================================================
# □ KGC::ExtendedEquipScene
#==============================================================================

module KGC::ExtendedEquipScene
  # Compare Parameters Processing
  COMP_PARAM_PROC = {
    :atk => Proc.new { |a, b| b.atk - a.atk },
    :def => Proc.new { |a, b| b.def - a.def },
    :spi => Proc.new { |a, b| b.spi - a.spi },
    :agi => Proc.new { |a, b| b.agi - a.agi },
  }
  # Obtain Parameters Processing
  GET_PARAM_PROC = {
    :atk => Proc.new { |n| n.atk },
    :def => Proc.new { |n| n.def },
    :spi => Proc.new { |n| n.spi },
    :agi => Proc.new { |n| n.agi },
  }
end

#=================================================#

#==============================================================================
# ■ Vocab
#==============================================================================

module Vocab
  # 命中率
  def self.hit
    return KGC::ExtendedEquipScene::VOCAB_PARAM[:hit]
  end

  # 回避率
  def self.eva
    return KGC::ExtendedEquipScene::VOCAB_PARAM[:eva]
  end

  # クリティカル率
  def self.cri
    return KGC::ExtendedEquipScene::VOCAB_PARAM[:cri]
  end
 
  def self.mag_def
    return KGC::ExtendedEquipScene::VOCAB_PARAM[:mag_def]
  end 
end

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

#==============================================================================
# □ Window_ExtendedEquipCommand
#------------------------------------------------------------------------------
#   拡張装備画面で、実行する操作を選択するウィンドウです。
#==============================================================================

class Window_ExtendedEquipCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(160, KGC::ExtendedEquipScene::COMMANDS)
    self.active = false
    self.z = 1000
  end
  #--------------------------------------------------------------------------
  # ● ヘルプウィンドウの更新
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(KGC::ExtendedEquipScene::COMMAND_HELP[self.index])
  end
end

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

#==============================================================================
# □ Window_EquipBaseInfo
#------------------------------------------------------------------------------
#   装備画面で、アクターの基本情報を表示するウィンドウです。
#==============================================================================

class Window_EquipBaseInfo < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x     : ウィンドウの X 座標
  #     y     : ウィンドウの Y 座標
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(x, y, actor)
    super(x, y, Graphics.width / 2, WLH + 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 0, 0)
    # EP 制を使用する場合は EP を描画
    if $imported["EquipExtension"] && KGC::EquipExtension::USE_EP_SYSTEM
      draw_actor_ep(@actor, 116, 0, Graphics.width / 2 - 148)
    end
  end
end

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

#==============================================================================
# ■ Window_EquipItem
#==============================================================================

class Window_EquipItem < Window_Item
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x          : ウィンドウの X 座標
  #     y          : ウィンドウの Y 座標
  #     width      : ウィンドウの幅
  #     height     : ウィンドウの高さ
  #     actor      : アクター
  #     equip_type : 装備部位
  #--------------------------------------------------------------------------
  alias initialize_KGC_ExtendedEquipScene initialize
  def initialize(x, y, width, height, actor, equip_type)
    width = Graphics.width / 2

    initialize_KGC_ExtendedEquipScene(x, y, width, height, actor, equip_type)

    @column_max = 1
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  alias refresh_KGC_ExtendedEquipScene refresh  unless $@
  def refresh
    return if @column_max == 2  # 無駄な描画はしない

    refresh_KGC_ExtendedEquipScene
  end
end

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

#==============================================================================
# □ Window_ExtendedEquipStatus
#------------------------------------------------------------------------------
#   拡張装備画面で、アクターの能力値変化を表示するウィンドウです。
#==============================================================================

class Window_ExtendedEquipStatus < Window_EquipStatus
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_writer   :equip_type               # 装備タイプ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x     : ウィンドウの X 座標
  #     y     : ウィンドウの Y 座標
  #     actor : アクター
  #--------------------------------------------------------------------------
  def initialize(x, y, actor)
    @equip_type = -1
    @caption_cache = nil
    super(x, y, actor)
    @new_item = nil
    @new_param = {}
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    super
    @caption_cache.dispose if @caption_cache != nil
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ内容の作成
  #--------------------------------------------------------------------------
  def create_contents
    self.contents.dispose
    self.contents = Bitmap.new(Graphics.width / 2 - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    return if @equip_type < 0

    if @caption_cache == nil
      create_cache
    else
      self.contents.clear
      self.contents.blt(0, 0, @caption_cache, @caption_cache.rect)
    end
    draw_item_name(@actor.equips[@equip_type], 0, 0)
    draw_item_name(@new_item, 24, WLH)
    KGC::ExtendedEquipScene::EQUIP_PARAMS.each_with_index { |param, i|
      draw_parameter(0, WLH* (i + 2), param)
    }
  end
  #--------------------------------------------------------------------------
  # ○ キャッシュ生成
  #--------------------------------------------------------------------------
  def create_cache
    create_contents
   
    self.contents.font.color = system_color
    self.contents.draw_text(0, WLH, 16, WLH, ">")
    # パラメータ描画
    KGC::ExtendedEquipScene::EQUIP_PARAMS.each_with_index { |param, i|
      draw_parameter_name(0, WLH* (i + 2), param)
    }

    @caption_cache = Bitmap.new(self.contents.width, self.contents.height)
    @caption_cache.blt(0, 0, self.contents, self.contents.rect)
  end
  #--------------------------------------------------------------------------
  # ○ 能力値名の描画
  #     x    : 描画先 X 座標
  #     y    : 描画先 Y 座標
  #     type : 能力値の種類
  #--------------------------------------------------------------------------
  def draw_parameter_name(x, y, type)
    case type
    when :maxhp
      name = Vocab.hp
    when :maxmp
      name = Vocab.mp
    when :atk
      name = Vocab.atk
    when :def
      name = Vocab.def
    when :spi
      name = Vocab.spi
    when :agi
      name = Vocab.agi
    when :hit
      name = Vocab.hit
    when :eva
      name = Vocab.eva
    when :cri
      name = Vocab.cri
    when :mag_def
      name = "Will"
    when :crit_dam
      name = "Crit Damage"
    when :luck
      name = "Luck"
    when :hpr
      name = "HP Regen"
    when :mpr
      name = "MP Regen"
    when :pen
      name = "ArmorPen"
    when :spen
      name = "SpellPen"
    when :parc
      name = "ParryChance"
    when :para
      name = "ParryAmount"
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x + 4, y, 96, WLH, name)
    self.contents.font.color = system_color
    self.contents.draw_text(x + 156, y, 20, WLH, ">", 1)
  end
  #--------------------------------------------------------------------------
  # ● 装備変更後の能力値設定
  #     new_param : 装備変更後のパラメータの配列
  #     new_item  : 変更後の装備
  #--------------------------------------------------------------------------
  def set_new_parameters(new_param, new_item)
    changed = false
    # パラメータ変化判定
    KGC::ExtendedEquipScene::EQUIP_PARAMS.each { |k|
      if @new_param[k] != new_param[k]
        changed = true
        break
      end
    }
    changed |= (@new_item != new_item)

    if changed
      @new_item = new_item
      @new_param = new_param
      refresh
    end
  end
  #--------------------------------------------------------------------------
  # ● 能力値の描画
  #     x    : 描画先 X 座標
  #     y    : 描画先 Y 座標
  #     type : 能力値の種類
  #--------------------------------------------------------------------------
  def draw_parameter(x, y, type)
    case type
    when :maxhp
      value = @actor.maxhp
    when :maxmp
      value = @actor.maxmp
    when :atk
      value = @actor.atk
    when :def
      value = @actor.def
    when :spi
      value = @actor.spi
    when :agi
      value = @actor.agi
    when :hit
      value = @actor.hit
    when :eva
      value = @actor.eva
    when :cri
      value = @actor.crit_growth
    when :mag_def
      value = @actor.mag_def
    when :crit_dam
      value = @actor.crit_dam
    when :luck
      value = @actor.luck
    when :hpr
      value = @actor.hp_regen
    when :mpr
      value = @actor.mp_regen
    when :pen
      value = @actor.armorPenetration_growth
    when :spen
      value = @actor.spellPenetration_growth
    when :parc
      value = @actor.dodgingChance_growth
    when :para
      value = @actor.dodgingAmount_growth
    end
    new_value = @new_param[type]
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 106, y, 48, WLH, value, 2)
    if new_value != nil
      self.contents.font.color = new_parameter_color(value, new_value)
      self.contents.draw_text(x + 176, y, 48, WLH, new_value, 2)
    end
  end
end

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

#==============================================================================
# ■ Scene_Equip
#==============================================================================

class Scene_Equip < Scene_Base
  #--------------------------------------------------------------------------
  # ○ 定数
  #--------------------------------------------------------------------------
  STANDARD_WIDTH  = Graphics.width / 2
  ANIMATION_SPPED = 8
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias start_KGC_ExtendedEquipScene start
  def start
    start_KGC_ExtendedEquipScene

    # ステータスウィンドウを作り直す
    @status_window.dispose
    @status_window = Window_ExtendedEquipStatus.new(0, 0, @actor)

    create_command_window

    @last_item = RPG::Weapon.new
    @base_info_window = Window_EquipBaseInfo.new(
      0, @help_window.height, @actor)

    adjust_window_for_extended_equiop_scene
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # ○ ウィンドウの座標・サイズを拡張装備画面向けに調整
  #--------------------------------------------------------------------------
  def adjust_window_for_extended_equiop_scene
    @base_info_window.width = @equip_window.width

    @equip_window.x = 0
    @equip_window.y = @base_info_window.y + @base_info_window.height
    @equip_window.height = Graphics.height - @equip_window.y
    @equip_window.active = false
    @equip_window.z = 100

    @status_window.x = 0
    @status_window.y = @equip_window.y
    @status_window.width = STANDARD_WIDTH
    @status_window.height = @equip_window.height
    @status_window.visible = false
    @status_window.z = 100

    @item_windows.each { |window|
      window.x = @equip_window.width
      window.y = @help_window.height
      window.z = 50
      window.height = Graphics.height - @help_window.height
    }
  end
  #--------------------------------------------------------------------------
  # ○ コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_ExtendedEquipCommand.new
    @command_window.help_window = @help_window
    @command_window.active = true
    @command_window.x = (Graphics.width - @command_window.width) / 2
    @command_window.y = (Graphics.height - @command_window.height) / 2
    @command_window.update_help

    # 装備固定なら「最強装備」「すべて外す」を無効化
    if @actor.fix_equipment
      @command_window.draw_item(1, false)
      @command_window.draw_item(2, false)
    end
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  alias terminate_KGC_ExtendedEquipScene terminate
  def terminate
    terminate_KGC_ExtendedEquipScene

    @command_window.dispose
    @base_info_window.dispose
  end
  #--------------------------------------------------------------------------
  # ○ ウィンドウをリフレッシュ
  #--------------------------------------------------------------------------
  def refresh_window
    @base_info_window.refresh
    @equip_window.refresh
    @status_window.refresh
    @item_windows.each { |window| window.refresh }
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_KGC_ExtendedEquipScene update
  def update
    update_command_window
    if @command_window.active
      update_KGC_ExtendedEquipScene
      update_command_selection
    else
      update_KGC_ExtendedEquipScene
    end
  end
  #--------------------------------------------------------------------------
  # ○ コマンドウィンドウの更新
  #--------------------------------------------------------------------------
  def update_command_window
    @command_window.update
  end
  #--------------------------------------------------------------------------
  # ● ステータスウィンドウの更新
  #--------------------------------------------------------------------------
  def update_status_window
    @base_info_window.update
    @status_window.update

    if @command_window.active || @equip_window.active
      @status_window.set_new_parameters({}, nil)
    elsif @item_window.active
      return if @last_item == @item_window.item

      @last_item = @item_window.item
      temp_actor = Marshal.load(Marshal.dump(@actor))
      temp_actor.change_equip(@equip_window.index, @item_window.item, true)
      param = {
        :maxhp => temp_actor.maxhp,
        :maxmp => temp_actor.maxmp,
        :atk   => temp_actor.atk,
        :def   => temp_actor.def,
        :spi   => temp_actor.spi,
        :agi   => temp_actor.agi,
        :hit   => temp_actor.hit,
        :eva   => temp_actor.eva,
        :cri   => temp_actor.crit_growth,
        :mag_def => temp_actor.mag_def,
        :crit_dam => temp_actor.crit_dam,
        :luck => temp_actor.luck,
        :hpr => temp_actor.hp_regen,
        :mpr => temp_actor.mp_regen,
        :pen => temp_actor.armorPenetration_growth,
        :spen => temp_actor.spellPenetration_growth,
        :parc => temp_actor.dodgingChance_growth,
        :para => temp_actor.dodgingAmount_growth,
      }
      @status_window.equip_type = @equip_window.index
      @status_window.set_new_parameters(param, @last_item)
      Graphics.frame_reset
    end
  end
  #--------------------------------------------------------------------------
  # ○ コマンド選択の更新
  #--------------------------------------------------------------------------
  def update_command_selection
    update_window_position_for_equip_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::R)
      Sound.play_cursor
      next_actor
    elsif Input.trigger?(Input::L)
      Sound.play_cursor
      prev_actor
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0  # 装備変更
        Sound.play_decision
        # 装備部位ウィンドウに切り替え
        @equip_window.active = true
        @command_window.active = false
        @command_window.close
      when 1  # 最強装備
        if @actor.fix_equipment
          Sound.play_buzzer
          return
        end
        Sound.play_equip
        process_equip_strongest
      when 2  # すべて外す
        if @actor.fix_equipment
          Sound.play_buzzer
          return
        end
        Sound.play_equip
        process_remove_all
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 装備部位選択の更新
  #--------------------------------------------------------------------------
  alias update_equip_selection_KGC_ExtendedEquipScene update_equip_selection
  def update_equip_selection
    update_window_position_for_equip_selection
    if Input.trigger?(Input::A)
      if @actor.fix_equipment
        Sound.play_buzzer
        return
      end
      # 選択している装備品を外す
      Sound.play_equip
      @actor.change_equip(@equip_window.index, nil)
      refresh_window
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      # コマンドウィンドウに切り替え
      @equip_window.active = false
      @command_window.active = true
      @command_window.open
      return
    elsif Input.trigger?(Input::R) || Input.trigger?(Input::L)
      # アクター切り替えを無効化
      return
    elsif Input.trigger?(Input::C)
      # 前回のアイテムをダミーにする
      @last_item = RPG::Weapon.new
    end

    update_equip_selection_KGC_ExtendedEquipScene
  end
  #--------------------------------------------------------------------------
  # ● アイテム選択の更新
  #--------------------------------------------------------------------------
  alias update_item_selection_KGC_ExtendedEquipScene update_item_selection
  def update_item_selection
    update_window_position_for_item_selection

    update_item_selection_KGC_ExtendedEquipScene

    if Input.trigger?(Input::C)
      @base_info_window.refresh
    end
  end
  #--------------------------------------------------------------------------
  # ○ ウィンドウ位置の更新 (装備部位選択)
  #--------------------------------------------------------------------------
  def update_window_position_for_equip_selection
    return if @item_window.x == @equip_window.width

    @base_info_window.width = @equip_window.width
    @item_window.x = [@item_window.x + ANIMATION_SPPED, @equip_window.width].min
    @equip_window.visible = true
    @status_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ○ ウィンドウ位置の更新 (アイテム選択)
  #--------------------------------------------------------------------------
  def update_window_position_for_item_selection
    return if @item_window.x == STANDARD_WIDTH

    @base_info_window.width = STANDARD_WIDTH
    @item_window.x = [@item_window.x - ANIMATION_SPPED, STANDARD_WIDTH].max
    @equip_window.visible = false
    @status_window.visible = true
  end
  #--------------------------------------------------------------------------
  # ○ 最強装備の処理
  #--------------------------------------------------------------------------
  def process_equip_strongest
    # 以前のパラメータを保存
    last_hp = @actor.hp
    last_mp = @actor.mp
    # 最強装備対象の種別を取得
    type = [-1]
    type += ($imported["EquipExtension"] ? @actor.equip_type : [0, 1, 2, 3])
    type -= KGC::ExtendedEquipScene::IGNORE_STRONGEST_KIND
    weapon_range = (@actor.two_swords_style ? 0..1 : 0)

    # 装備対象の武具をすべて外す
    type.each_index { |i| @actor.change_equip(i, nil) }
    # 最強装備
    type.each_index { |i|
      case i
      when weapon_range  # 武器
        # 1本目が両手持ちの場合は2本目を装備しない
        if @actor.two_swords_style
          weapon = @actor.weapons[0]
          next if weapon != nil && weapon.two_handed
        end
        weapon = strongest_item(i, -1)
        next if weapon == nil
        @actor.change_equip(i, weapon)
      else               # 防具
        # 両手持ち武器を持っている場合は盾 (防具1) を装備しない
        if i == 1
          weapon = @actor.weapons[0]
          next if weapon != nil && weapon.two_handed
        end
        armor = strongest_item(i, type[i])
        next if armor == nil
        @actor.change_equip(i, armor)
      end
    }

    # 以前のパラメータを復元
    @actor.hp = last_hp
    @actor.mp = last_mp

    refresh_window
  end
  #--------------------------------------------------------------------------
  # ○ 最も強力なアイテムを取得
  #     equip_type : 装備部位
  #     kind       : 種別 (-1..武器  0~..防具)
  #    該当するアイテムがなければ nil を返す。
  #--------------------------------------------------------------------------
  def strongest_item(equip_type, kind)
    equips = nil
    param_order = nil

    case kind
    when -1  # 武器
      # 装備可能な武器を取得
      equips = $game_party.items.find_all { |item|
        valid = item.is_a?(RPG::Weapon) && @actor.equippable?(item)
        if valid && $imported["EquipExtension"]
          valid = @actor.ep_condition_clear?(equip_type, item)
        end
        valid
      }
      # パラメータ優先度を指定
      param_order = KGC::ExtendedEquipScene::STRONGEST_WEAPON_PARAM_ORDER
    else     # 防具
      # 装備可能な防具を取得
      equips = $game_party.items.find_all { |item|
        valid = item.is_a?(RPG::Armor) && item.kind == kind &&
          @actor.equippable?(item)
        if valid && $imported["EquipExtension"]
          valid = @actor.ep_condition_clear?(equip_type, item)
        end
        valid
      }
      # パラメータ優先度を指定
      param_order = KGC::ExtendedEquipScene::STRONGEST_ARMOR_PARAM_ORDER
    end

    # 対象アイテムがない
    return nil if equips.empty?

    # 優先度に基づいて最強装備を取得
    result = []
    param_order.each { |param|
      # 比較用プロシージャ取得
      comp_proc = KGC::ExtendedEquipScene::COMP_PARAM_PROC[param]
      get_proc = KGC::ExtendedEquipScene::GET_PARAM_PROC[param]
      # パラメータ順にソート
      equips.sort! { |a, b| comp_proc.call(a, b) }
      # 最もパラメータが高いアイテムを取得
      highest = equips[0]
      result = equips.find_all { |item|
        get_proc.call(highest) == get_proc.call(item)
      }
      # 候補が1つに絞れたら終了
      break if result.size == 1
      equips = result.clone
    }

    # 結果を ID 降順に整列
    result.sort! { |a, b| b.id - a.id }

    return result[0]
  end
  #--------------------------------------------------------------------------
  # ○ すべて外す処理
  #--------------------------------------------------------------------------
  def process_remove_all
    type_max = ($imported["EquipExtension"] ? @actor.equip_type.size : 3) + 1
    type_max.times { |i| @actor.change_equip(i, nil) }
    refresh_window
  end
end

***
Rep:
Level 30
RMRK Junior
Maybe use a frame update using the up and down arrow keys? Then have the state positions in an array and have the arrow keys plus and subtract the element number in the array. This really is a bad idea actually... It wouldn't be a smooth as you are wanting. Being new to scripting that is all I got. I am looking forward to seeing how you actually solve this. Good luck.

***
Rep:
Level 71
RMRK Junior
the problem is that this is in the equipment screen, so the arrows are moving up and down over the equipment selection (you choose to equip, or unequip a sword, the screen shifts to bring up the list of available items for the weapon slot on the right, and on the left, it shows your stats. but if you move the arrows up and down, it moves through the list of weapons available on the right. there is actually no controlling the stat screen part on the left. that is what i need done, to be able to press, for example, A to scroll the stat thing down, and S to scroll it back up)