【解決済】 メニューコマンドでスキルタイプを分けて表示

しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

【解決済】 メニューコマンドでスキルタイプを分けて表示

投稿記事by しろう » 2021年2月26日(金) 00:13

いつもお世話になっております。
表題の件でご助力お願いします。

アイテム
スキル
装備
ステータス
並び替え
セーブ
ゲーム終了

通常このようなメニューコマンドを

アイテム
スキルタイプ①
スキルタイプ②
装備
ステータス
並び替え
セーブ
ゲーム終了

のようにしたいのですが方法があれば教えて頂きたいです。
ちなみにメニューコマンド関連のスクリプトでレーネ様のメニューコマンドソート RGSS3というコマンドを並び替える機能のものを利用しています。
最後に編集したユーザー しろう on 2021年2月26日(金) 20:40 [ 編集 1 回目 ]

名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: メニューコマンドでスキルタイプを分けて表示

投稿記事by 名無し蛙 » 2021年2月26日(金) 01:29

どうもこんにちは
そのくらい簡単、と思ったら思いっきり競合しそうなスクリプト入れてますね
同順の場合不定なので確実を期す為にその辺も考慮しときましょうか
ソート指定には:skillの代わりに:skill1,:skill2を使用してください
スクリプトセクションの差し込み位置はどこでも良いけど強いて言うなら下の方が良いですかね
一応、スキルタイプに合わせて初期位置を変更程度の事はしていますけどこんなもんですか

コード: 全て選択

#==============================================================================
# ■ メニューコマンドでスキルタイプを分けて表示
#------------------------------------------------------------------------------
#  
#==============================================================================
module Frog
  MENU_STYPE_ID_1 = 1
  MENU_STYPE_ID_2 = 2
end

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # ○ 主要コマンドをリストに追加
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command($data_system.skill_types[Frog::MENU_STYPE_ID_1],   :skill1,   main_commands_enabled, Frog::MENU_STYPE_ID_1)
    add_command($data_system.skill_types[Frog::MENU_STYPE_ID_2],   :skill2,   main_commands_enabled, Frog::MENU_STYPE_ID_2)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
  end
end

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ○ コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill1,    method(:command_personal))
    @command_window.set_handler(:skill2,    method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # ○ 個人コマンド[決定]
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @command_window.current_symbol
    when :skill1, :skill2
      SceneManager.call(Scene_Skill)
      SceneManager.scene.prepare(@command_window.current_ext)
    when :equip
      SceneManager.call(Scene_Equip)
    when :status
      SceneManager.call(Scene_Status)
    end
  end
end

class Scene_Skill < Scene_ItemBase
  #--------------------------------------------------------------------------
  # ● 準備処理
  #--------------------------------------------------------------------------
  def prepare(stype_id)
    @init_stype_id = stype_id
  end
  #--------------------------------------------------------------------------
  # ○ 開始処理
  #--------------------------------------------------------------------------
  alias :_old_start :start
  def start
    _old_start
    @command_window.select_ext(@init_stype_id)
    @command_window.deactivate
    command_skill
  end
end
しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

Re: メニューコマンドでスキルタイプを分けて表示

投稿記事by しろう » 2021年2月26日(金) 03:37

名無し蛙さま、早速のご対応ありがとうございます。
ひとつ疑問なのですが

スキル①
スキル②

↑でスキル①を選択するとその先のコマンドもスキル①とスキル②があるのですがこれをスキル①一覧にする事は可能でしょうか?
名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: メニューコマンドでスキルタイプを分けて表示

投稿記事by 名無し蛙 » 2021年2月26日(金) 06:07

ああ。やっぱりそっちもですか
仕様上スキル画面とメニュー画面は連続していなくて
リクエストの範疇に無いスキル画面を過分に弄るのもどうかと思ったんですけど
まぁ、自分も中途半端だなと感じていたのでそこまで改造しておきましょうか
上記のコードはスクリプト素材に拠りスキル画面が改造済の場合もある程度考慮していましたが
下記の物は完全に度外視しています

コード: 全て選択

#==============================================================================
# ■ メニューコマンドでスキルタイプを分けて表示
#------------------------------------------------------------------------------
#
#==============================================================================
module Frog
  MENU_STYPE_ID_1 = 1
  MENU_STYPE_ID_2 = 2
end

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # ○ 主要コマンドをリストに追加
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command($data_system.skill_types[Frog::MENU_STYPE_ID_1], :skill1, main_commands_enabled, Frog::MENU_STYPE_ID_1)
    add_command($data_system.skill_types[Frog::MENU_STYPE_ID_2], :skill2, main_commands_enabled, Frog::MENU_STYPE_ID_2)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
  end
end

class Window_SkillStatus < Window_Base
  #--------------------------------------------------------------------------
  # ○ ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width
  end
end

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ○ コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill1,    method(:command_personal))
    @command_window.set_handler(:skill2,    method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # ○ 個人コマンド[決定]
  #--------------------------------------------------------------------------
  def on_personal_ok
    case @command_window.current_symbol
    when :skill1, :skill2
      SceneManager.call(Scene_Skill)
      SceneManager.scene.prepare(@command_window.current_ext)
    when :equip
      SceneManager.call(Scene_Equip)
    when :status
      SceneManager.call(Scene_Status)
    end
  end
end

class Scene_Skill < Scene_ItemBase
  #--------------------------------------------------------------------------
  # ● 準備処理
  #--------------------------------------------------------------------------
  def prepare(stype_id)
    @stype_id = stype_id
  end
  #--------------------------------------------------------------------------
  # ○ 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_status_window
    create_item_window
  end
  #--------------------------------------------------------------------------
  # ○ ステータスウィンドウの作成
  #--------------------------------------------------------------------------
  def create_status_window
    y = @help_window.height
    @status_window = Window_SkillStatus.new(0, y)
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
  #--------------------------------------------------------------------------
  # ○ アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    wx = 0
    wy = @status_window.y + @status_window.height
    ww = Graphics.width
    wh = Graphics.height - wy
    @item_window = Window_SkillList.new(wx, wy, ww, wh)
    @item_window.actor = @actor
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:return_scene))
    @item_window.set_handler(:pagedown, method(:next_actor))
    @item_window.set_handler(:pageup,   method(:prev_actor))
    @item_window.stype_id = @stype_id
    @item_window.select(0)
    @item_window.activate
  end
  #--------------------------------------------------------------------------
  # ○ アクターの切り替え
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @item_window.actor = @actor
    @item_window.activate
  end
end
しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

Re: メニューコマンドでスキルタイプを分けて表示

投稿記事by しろう » 2021年2月26日(金) 20:40

ありがとうございます。
希望通りの構成になりました!

解決済とさせていただきます。

“VX / Ace:質問” へ戻る