Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Several questions?

1.I need to know how to assign messages to the help window in the menu.

2. I need Status effect name to be replaced with icons.

3. http://img.photobucket.com/albums/v291/ ... d/Menu.png[/IMG]
As you can see, the characters are displayed on a diagonal, but since they're all in one window the cursor moves vertically and outside of the window so
I need to know how to edit the distance of the cursor, when it highlights certain things.
 
You can add this to the update method when updating the command window. You could make something like:
Code:
case @command_window.index
when 0
@help_window.set_text("Item")
when 1
@help_window.set_text("Ability")
...
end
 
Code:
def update_command
    # B ボタンが押された場合

  if Input.trigger?(Input::A)

      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # アイテム
        # 決定  SE を演奏
        @help_window.set_text("Go to inventory")
        $game_system.se_play($data_system.decision_se)
        # アイテム画面に切り替え
        $scene = Scene_Item.new
      when 1  # スキル
        # 決定 SE を演奏
        @help_window.set_text("Use abilities")
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2 # 装備
        # 決定 SE を演奏
        @help_window.set_text("Equip weaopons and Armor")
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # ステータス
        # 決定 SE を演奏

        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 6
        
        $game_system.se_play($data_system.decision_se)
        @checker = 0
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0

      when 8  # セーブ
        # セーブ禁止の場合
        @help_window.set_text("Save progress")
        if $game_system.save_disabled
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # セーブ画面に切り替え
        $scene = Scene_Save.new
        

        end
      return
    end
  end
 
It requires the player to press the C button to do so, and if he does, a new scene is called. :P
Place it directly below def update_command, like:
Code:
def update_command
case @command_window.index
when 0
@help_window.set_text("Item")
when 1
@help_window.set_text("Ability")
...
end
if Input.trigger?(Input::A)
...
 
Code:
#============================================================================
# *Window_Base ADDITION
# Icon States ::)
#============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     menu_index : コマンドのカーソル初期位置
  #--------------------------------------------------------------------------
    
  def initialize(menu_index = 0)
    @menu_index = menu_index
    @changer = 0
    @where = 0
    @checker = 0
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new
    @Menu = Sprite.new
    @Menu.bitmap = RPG::Cache.picture("Menu/" + "Main Menu")
    @Help = Sprite.new
    @Help.bitmap = RPG::Cache.picture("Menu/" + "Help2")
    @sprite2 = Sprite.new
    @sprite2.bitmap = RPG::Cache.picture("shadow")
    @sprite2.z = 2
    @sprite2.opacity = 80


   
    
    # コマンドウィンドウを作成
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = " Status"
    s9 = " Æsir"
    s11 = " Limit"
    s7 = " Mognet"
    s10 = " Info"
    s5 = " Save"

 
 

    # ステータスウィンドウを作成
    @status_window = Window_MenuStatus.new
    @status_window.x = -10
    @status_window.y = 37
    @status_window.opacity = 0

    #-------------------
    @mapname_window = Window_Mapname.new
    @mapname_window.x = 15
    @mapname_window.y = 430
    @mapname_window.opacity = 0
    #--------------------------
    @location_window = Window_Location.new
    @location_window.x = 0
    @location_window.y = 410

    @help_window = Window_Help.new
    
    #--------------------
    @command_window = Window_Command.new(160, [s1,  s2, s3, s4,s9,s11, s7, s10, s5])
    @command_window.index = @menu_index
    @command_window.x = 530
    @command_window.y = 15
    @command_window.opacity = 0
    


    # パーティ人数が 0 人の場合
    if $game_party.actors.size == 0
      # アイテム、スキル、装備、ステータスを無効化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # セーブ禁止の場合
    if $game_system.save_disabled
      # セーブを無効にする
      @command_window.disable_item(8)
    end
    @faux_window = Window_Faux.new
    @faux_window.x = 480
    @faux_window.y = 308
    @faux_window.opacity = 0
    
    @sprite_window = Window_Character.new
    @sprite_window.x = 490
    @sprite_window.y = 320
    
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 470
    @playtime_window.y = 410
    @playtime_window.opacity = 0


    # 歩数ウィンドウを作成
     # ゴールドウィンドウを作成
    @gold_window = Window_Gold.new
    @gold_window.x = 490
    @gold_window.y = 390
    @gold_window.opacity = 0
    # プレイ時間ウィンドウを作成



   
    #


    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
     Graphics.freeze
    # ウィンドウを解放
    @spriteset.dispose
    @sprite2.dispose
    @command_window.dispose
    @playtime_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @location_window.dispose
    @mapname_window.dispose
    @sprite_window.dispose
    @Menu.dispose
    @help_window.dispose
  end
  
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    
    @help_window.update
    @command_window.update
    @playtime_window.update
    @gold_window.update
    @status_window.update
    @location_window.update
    @mapname_window.update
    @sprite_window.update
    # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
    if @command_window.active
      update_command
      return
    end
    # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
    if @status_window.active
      update_status
      return
    end
  end
  
end


  #--------------------------------------------------------------------------
  # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_command
    case @command_window.index
      when 0
      @help_window.set_text("Item")

      when 1
      @help_window.set_text("Ability")

      when 2
        
      when 3
        
      when 4
        
      when 5
        
      when 6 
        
      when 7
        
      when 8
      @help_window.set_text("Save Progress")
      end

  if Input.trigger?(Input::A)

      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # アイテム
        # 決定  SE を演奏
        $game_system.se_play($data_system.decision_se)
        # アイテム画面に切り替え
        $scene = Scene_Item.new
      when 1  # スキル
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2 # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # ステータス
        # 決定 SE を演奏

        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 6
        
        $game_system.se_play($data_system.decision_se)
        @checker = 0
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0

      when 8  # セーブ
        # セーブ禁止の場合
        if $game_system.save_disabled
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # セーブ画面に切り替え
        $scene = Scene_Save.new
#=====================================================
    
        end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  
  def update_status
    # B ボタンが押された場合
if Input.trigger?(Input::A)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウをアクティブにする
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 1  # スキル
        # このアクターの行動制限が 2 以上の場合
        if $game_party.actors[@status_window.index].restriction >= 2
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # スキル画面に切り替え
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # 装備画面に切り替え
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # ステータス
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータス画面に切り替え
        $scene = Scene_Status.new(@status_window.index)
      when 6
        $game_system.se_play($data_system.decision_se)
        if @checker == 0
          @changer = $game_party.actors[@status_window.index]
          @where = @status_window.index
          @checker = 1
        else
          $game_party.actors[@where] = $game_party.actors[@status_window.index]
          $game_party.actors[@status_window.index] = @changer
          @checker = 0
          @status_window.refresh

end
      
      end
      return
    end
  end
 
Your script should look like this:
Code:
#============================================================================
# *Window_Base ADDITION
# Icon States ::)
#============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     menu_index : コマンドのカーソル初期位置
  #--------------------------------------------------------------------------
    
  def initialize(menu_index = 0)
    @menu_index = menu_index
    @changer = 0
    @where = 0
    @checker = 0
  end
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new
    @Menu = Sprite.new
    @Menu.bitmap = RPG::Cache.picture("Menu/" + "Main Menu")
    @Help = Sprite.new
    @Help.bitmap = RPG::Cache.picture("Menu/" + "Help2")
    @sprite2 = Sprite.new
    @sprite2.bitmap = RPG::Cache.picture("shadow")
    @sprite2.z = 2
    @sprite2.opacity = 80


   
    
    # コマンドウィンドウを作成
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = " Status"
    s9 = " Æsir"
    s11 = " Limit"
    s7 = " Mognet"
    s10 = " Info"
    s5 = " Save"

 
 

    # ステータスウィンドウを作成
    @status_window = Window_MenuStatus.new
    @status_window.x = -10
    @status_window.y = 37
    @status_window.opacity = 0

    #-------------------
    @mapname_window = Window_Mapname.new
    @mapname_window.x = 15
    @mapname_window.y = 430
    @mapname_window.opacity = 0
    #--------------------------
    @location_window = Window_Location.new
    @location_window.x = 0
    @location_window.y = 410

    @help_window = Window_Help.new
    
    #--------------------
    @command_window = Window_Command.new(160, [s1,  s2, s3, s4,s9,s11, s7, s10, s5])
    @command_window.index = @menu_index
    @command_window.x = 530
    @command_window.y = 15
    @command_window.opacity = 0
    


    # パーティ人数が 0 人の場合
    if $game_party.actors.size == 0
      # アイテム、スキル、装備、ステータスを無効化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # セーブ禁止の場合
    if $game_system.save_disabled
      # セーブを無効にする
      @command_window.disable_item(8)
    end
    @faux_window = Window_Faux.new
    @faux_window.x = 480
    @faux_window.y = 308
    @faux_window.opacity = 0
    
    @sprite_window = Window_Character.new
    @sprite_window.x = 490
    @sprite_window.y = 320
    
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 470
    @playtime_window.y = 410
    @playtime_window.opacity = 0


    # 歩数ウィンドウを作成
     # ゴールドウィンドウを作成
    @gold_window = Window_Gold.new
    @gold_window.x = 490
    @gold_window.y = 390
    @gold_window.opacity = 0
    # プレイ時間ウィンドウを作成



   
    #


    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
     Graphics.freeze
    # ウィンドウを解放
    @spriteset.dispose
    @sprite2.dispose
    @command_window.dispose
    @playtime_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @location_window.dispose
    @mapname_window.dispose
    @sprite_window.dispose
    @Menu.dispose
    @help_window.dispose
  end
  
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    
    @help_window.update
    @command_window.update
    @playtime_window.update
    @gold_window.update
    @status_window.update
    @location_window.update
    @mapname_window.update
    @sprite_window.update
    # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
    if @command_window.active
      update_command
      return
    end
    # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
    if @status_window.active
      update_status
      return
    end
  end


  #--------------------------------------------------------------------------
  # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_command
    case @command_window.index
      when 0
      @help_window.set_text("Item")

      when 1
      @help_window.set_text("Ability")

      when 2
        
      when 3
        
      when 4
        
      when 5
        
      when 6 
        
      when 7
        
      when 8
      @help_window.set_text("Save Progress")
      end

  if Input.trigger?(Input::A)

      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 0  # アイテム
        # 決定  SE を演奏
        $game_system.se_play($data_system.decision_se)
        # アイテム画面に切り替え
        $scene = Scene_Item.new
      when 1  # スキル
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2 # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # ステータス
        # 決定 SE を演奏

        $game_system.se_play($data_system.decision_se)
        # ステータスウィンドウをアクティブにする
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 6
        
        $game_system.se_play($data_system.decision_se)
        @checker = 0
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0

      when 8  # セーブ
        # セーブ禁止の場合
        if $game_system.save_disabled
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # セーブ画面に切り替え
        $scene = Scene_Save.new
#=====================================================
    
        end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  
  def update_status
    # B ボタンが押された場合
if Input.trigger?(Input::A)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウをアクティブにする
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 1  # スキル
        # このアクターの行動制限が 2 以上の場合
        if $game_party.actors[@status_window.index].restriction >= 2
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # スキル画面に切り替え
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # 装備画面に切り替え
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # ステータス
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータス画面に切り替え
        $scene = Scene_Status.new(@status_window.index)
      when 6
        $game_system.se_play($data_system.decision_se)
        if @checker == 0
          @changer = $game_party.actors[@status_window.index]
          @where = @status_window.index
          @checker = 1
        else
          $game_party.actors[@where] = $game_party.actors[@status_window.index]
          $game_party.actors[@status_window.index] = @changer
          @checker = 0
          @status_window.refresh

end
      
      end
      return
    end
  end
end

You had an end command on the wrong spot which ended Scene_Menu, so it called the methods from the default Scene_Menu. Replace your script with this one and it should work. ^_^
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top