Sujet n°14347
Posté par Therand le 6 Jan - 13:11 (2015)
Titre : Ajouter une option dns le Scene_Title
Bonjour à tous,

Je voudrais rajouter un bouton "crédits" en dessous de nouvelle partie/la partie à charger.
J'arrive à afficher ma fenêtre correctement si il n'y à pas de sauvegarde ou si il y en à plusieurs.

Par contre, je n'arrive pas à lui attribuer une action à effectuer quand le joueur clique dessus,
ni à mettre une transparence sur les autres boutons...

Voici ma fenêtre (en dessous de celle "nouvelle partie":
Code:

    @credits = Window_Base.new(30, 113 + 83*@number, 580, 80)
    @credits.contents = Bitmap.new(548, 48)
    set_window(@credits)
    @credits.contents.draw_text(9,3,548,48,"CREDITS")


Ma méthode pour lancer la scène crédits:

Code:

  def credit_scene
    $Scene=Scene_Credits.new
  end


Pour l’opacité, je pense que c'est ici:

Code:

    if @index == @number
      @new_game_window.opacity = 255
      @new_game_window.y = 30 + 83*@number
      @credits.opacity = 255
      @credits.y = 30 + 83 + 83*@number#166*@number

    else
      @new_game_window.opacity = 128
      @new_game_window.y = 30 + 83*(@number+1)
      @credits.opacity = 128
      @credits.y = 30 + 83 + 83*(@number+1)


Voici le script en entier avec mes modifs, elle sont commenté par "####test" à chaque fois :p
Je suis sur PSP 0.7

Spoiler
Code:

      # -----------------------------------------------------------------
      #     Fin de la scène d'intro
      # -----------------------------------------------------------------
   
    elsif MAPINTRO.type == Array and $_temp_map_intro == nil
      $_temp_map_intro = true
      $map_link = {}
      Audio.bgm_stop
      Graphics.frame_count = 0
      $game_temp          = Game_Temp.new
      $game_system        = Game_System.new
      $game_switches      = Game_Switches.new
      $game_variables     = Game_Variables.new
      $game_self_switches = Game_SelfSwitches.new
      $game_screen        = Game_Screen.new
      $game_actors        = Game_Actors.new
      $game_party         = Game_Party.new
      $game_troop         = Game_Troop.new
      $game_map           = Game_Map.new
      $game_player        = Game_Player.new
      # ---- Pas forcément nécessaire
      $pokemon_party = POKEMON_S::Pokemon_Party.new
      $data_storage = [[0]]
      $pokemon_party.create_box
      Player.set_trainer_code(rand(2**32))
      $random_encounter = Array.new(7)
      $random_encounter[0] = 0
      $battle_var = POKEMON_S::Pokemon_Battle_Variable.new
      $existing_pokemon = []
      $string = []
      POKEMON_S::set_SAVESLOT = @index
      Player.trainer_trade_code
      # ---- Pas forcément nécessaire
      $game_party.setup_starting_members
      $game_map.setup(MAPINTRO[0])
      $game_player.moveto(MAPINTRO[1], MAPINTRO[2])
      $game_player.refresh
      $game_map.autoplay
      $game_map.update
      $scene = Scene_Map.new
      return
    end
   
    Audio.bgm_stop
    $_temp_map_intro = nil
   
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
   
    number = 0 # Nombre de cadres de sauvegarde à générer
    for i in 0..2
      if FileTest.exist?("Save#{i+1}.rxdata")
        number += 1
      end
    end
    @number = number
   
    @new_game_window = Window_Base.new(30, 30 + 83*@number, 580, 80)
    @new_game_window.contents = Bitmap.new(548, 48)
    set_window(@new_game_window)
    @new_game_window.contents.draw_text(9,3,548,48,"NOUVELLE PARTIE")
   
    @credits = Window_Base.new(30, 113 + 83*@number, 580, 80)
    @credits.contents = Bitmap.new(548, 48)
    set_window(@credits)
    @credits.contents.draw_text(9,3,548,48,"CREDITS")
   
    @save_game_window_list = []
    for i in 1..@number
      window = Window_Base.new(30, 30 + 83*(i-1), 580, 80)
      window.contents = Bitmap.new(548, 48)
      @save_game_window_list.push(window)
    end
   
    @index = 0
   
    @background = Plane.new(Viewport.new(0,0,640,480))
    @background.bitmap = RPG::Cache.picture("fondsaved.png")
    @background.z -= 10
   
    refresh_all
    Graphics.transition
   
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
   
    Graphics.freeze
    ####test
    @credits.dispose
    @new_game_window.dispose
    @background.dispose
    for window in @save_game_window_list
      window.dispose
    end
  end
 
  def update
    if Input.trigger?(Input::DOWN)
      @index += @index == @number ? 0 : 1
      if @erase and @index > 2
        @index = 2
      end
      refresh_all
    end
    if Input.trigger?(Input::UP)
      @index -= @index == 0 ? 0 : 1
      refresh_all
    end
    if Input.trigger?(Input::C)
      case @index
      when @number # Nouveau jeu
        if SAVEBOUNDSLOT and @number == 3
          $game_system.se_play($data_system.decision_se)
          @erase = true
          @index = 0
          ####test
          @credits.contents.clear
          @new_game_window.contents.clear
          @new_game_window.contents.draw_text(9,3,548,48,"RECOMMENCER QUELLE PARTIE?")
          refresh_all
        else
          command_new_game
        end
      else # Chargement
        if @erase
          command_new_game
        else
          $game_temp = Game_Temp.new
          on_decision("Save#{@index + 1}.rxdata")
        end
      end
    end
    if Input.trigger?(Input::B) and @erase
      $game_system.se_play($data_system.cancel_se)
      @erase = false
      @index = 3
      ####test
      @credits.contents.clear
      @new_game_window.contents.clear
      @new_game_window.contents.draw_text(9,3,548,48,"NOUVELLE PARTIE")
      refresh_all
    end
    if @auto_load != nil
      $game_temp = Game_Temp.new
      on_decision("SaveAuto.rxdata")
      File.delete("SaveAuto.rxdata")
    end
  end
 
  def refresh_all
    for i in 0..@number-1
      if i < @index
        @save_game_window_list[i].opacity = 128
        @save_game_window_list[i].y = 30 + 83*i
        @save_game_window_list[i].height = 80
        @save_game_window_list[i].contents = Bitmap.new(548, 48)
        set_window(@save_game_window_list[i])
        @save_game_window_list[i].contents.draw_text(9, 3, 530, 48, "CONTINUER PARTIE "+(i+1).to_s)
      elsif i == @index
        @save_game_window_list[i].opacity = 255
        @save_game_window_list[i].y = 30 + 83*i
        @save_game_window_list[i].height = 163
        @save_game_window_list[i].contents = Bitmap.new(548, 131)
        set_window(@save_game_window_list[i])
        @save_game_window_list[i].contents.draw_text(9, 3, 530, 48, "CONTINUER PARTIE "+(i+1).to_s)
        @filename = "Save#{i + 1}.rxdata"
        list = read_preview(@filename)
        data = list[0]
        time_sec = list[1]
        hour = (time_sec / 3600).to_s
        minute = "00"
        minute += ((time_sec%3600)/60).to_s
        minute = minute[minute.size-2, 2]
        time =  hour + ":" + minute
        name = data[0].to_s
        id = data[1].to_i
        captured = data[2].to_s
        @save_game_window_list[i].contents.draw_text(9, 42, 252, 48, "NOM:")
        @save_game_window_list[i].contents.draw_text(9, 42, 252, 48, name, 2)
        @save_game_window_list[i].contents.draw_text(285, 42, 252, 48, "ID:")
        @save_game_window_list[i].contents.draw_text(285, 42, 252, 48, sprintf("%05d",id) , 2)
        @save_game_window_list[i].contents.draw_text(9, 81, 252, 48, "POKéDEX:")
        @save_game_window_list[i].contents.draw_text(9, 81, 252, 48, captured, 2)
        @save_game_window_list[i].contents.draw_text(285, 81, 252, 48, "DUREE:")
        @save_game_window_list[i].contents.draw_text(285, 81, 252, 48, time, 2)
      elsif i > @index
        @save_game_window_list[i].opacity = 128
        @save_game_window_list[i].y = 30 + 83*i + 83
        @save_game_window_list[i].height = 80
        @save_game_window_list[i].contents = Bitmap.new(548, 48)
        set_window(@save_game_window_list[i])
        @save_game_window_list[i].contents.draw_text(9, 3, 548, 48, "CONTINUER PARTIE "+(i+1).to_s)
      end
    end
    if @index == @number
      @new_game_window.opacity = 255
      @new_game_window.y = 30 + 83*@number
      @credits.opacity = 255
      @credits.y = 30 + 83 + 83*@number

    else
      @new_game_window.opacity = 128
      @new_game_window.y = 30 + 83*(@number+1)
      @credits.opacity = 128
      @credits.y = 30 + 83 + 83*(@number+1)
    end
  end
 
  def set_window(window)
    window.contents.font.name = $fontface
    window.contents.font.size = $fontsizebig
    window.contents.font.color = window.normal_color
  end
   
  # --------------------------------------------------------
  # Credits
  # --------------------------------------------------------
  def credit_scene
    $Scene=Scene_Credits.new
  end
  # --------------------------------------------------------
  # Chargement
  # --------------------------------------------------------
  def read_preview(filename)
    file = File.open(filename, "r")
    time_stamp      = file.mtime
    characters      = Marshal.load(file)
    frame_count     = Marshal.load(file)
    game_system     = Marshal.load(file)
    game_switches   = Marshal.load(file)
    game_variables  = Marshal.load(file)
    total_sec = frame_count / Graphics.frame_rate
   
    # Non utilisé
    game_self_switches = Marshal.load(file)
    game_screen     = Marshal.load(file)
    game_actors     = Marshal.load(file)
    game_party      = Marshal.load(file)
    game_troop      = Marshal.load(file)
    game_map        = Marshal.load(file)
    game_player     = Marshal.load(file)
    # ------------
    read_data       = Marshal.load(file)
    file.close
    return [read_data, total_sec]
  end
 
  def read_save_data(file)
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    $read_data          = Marshal.load(file)
    if SAVE_CONVERT # Conversion des sauvegardes pre-v0.7 à v0.7+
      Player.set_trainer_code(Marshal.load(file)) # Variable trainer_code
      trainer_id                         = Marshal.load(file) # Variable
      $game_party.actors[0].name         = Marshal.load(file) # Game_Actor
      $game_party.actors[0].set_graphic($game_party.actors[0].character_name,
                                        $game_party.actors[0].character_hue,
                                        Marshal.load(file),
                                        $game_party.actors[0].battler_hue
                                       )# Game_Actor
    end
    $pokemon_party      = Marshal.load(file)
    $random_encounter   = Marshal.load(file)
    $data_pokedex       = Marshal.load(file)
    $data_storage       = Marshal.load(file)
    $battle_var         = Marshal.load(file)
    $existing_pokemon   = Marshal.load(file)
    $string             = Marshal.load(file)
    $map_link = ($read_data != nil and $read_data[3] != nil) ? $read_data[3] : {}
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
    POKEMON_S::set_SAVESLOT = @index
    Player.trainer_trade_code
  end
 
  def on_decision(filename)
    unless FileTest.exist?(filename)
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    $game_system.se_play($data_system.load_se)
    file = File.open(filename, "rb")
    read_save_data(file)
    file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
    $scene.update_encounter
    Player.pokedex_update
  end
 
  alias alias_command_new_game command_new_game
  def command_new_game
    $map_link = {}
    alias_command_new_game
    #-----------------------------------------------------
    # Variables créées automatiquement au début du jeu
    #   Elles sont absolument nécessaires
    #-----------------------------------------------------
    $pokemon_party = POKEMON_S::Pokemon_Party.new
    $data_storage = [[0]]
    $pokemon_party.create_box
    Player.set_trainer_code(rand(2**32))
    $random_encounter = Array.new(7)
    $random_encounter[0] = 0
    $battle_var = POKEMON_S::Pokemon_Battle_Variable.new
    $existing_pokemon = []
    $string = []
    POKEMON_S::set_SAVESLOT = @index
    Player.trainer_trade_code
    $data_pokedex = Array.new($data_pokemon.length-1)
    $data_pokedex[0] = false # Possède ou non
    for i in 1..$data_pokemon.length-1
      $data_pokedex[i] = [false, false] # Vu, Capturé
    end
  end
end


Merci beaucoup de m’éclairer Imbécile heureux