Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Scene Title según la variable Chapter

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP] Scene Title según la variable Chapter

Mensaje por Wecoc el 2014-06-14, 19:29

Vi la idea en el Topic de Ideas, no me convenció pero quise hacerla igualmente, la cito

@Eron escribió: Idea: Icono cambiante

Modificar el icono que sale en la parte de arriba de la ventana del juego (.ico de tamaño más pequeño creo x'D) según el capítulo del juego correspondiente a la última partida jugada. El "capítulo" éste sería una $game_variable. Si no es posible cambiar ese icono pues quizá se podría hacer con la pantalla de título al menos.

Hice lo segundo, lo del título, porque creo que lo primero no se puede hacer.
Según el capítulo al que esté la última partida guardada el título se verá de una manera u otra.

Script:
Código:
#==============================================================================
# Scene Title según la variable Chapter
# Autor: Wecoc
#------------------------------------------------------------------------------
# Título según el valor de una variable de la última partida guardada
#==============================================================================

class Scene_Title
  
  CHAPTER_VARIABLE = 1
  
  def main
    last_file_index = 0
    latest_time = Time.at(0)
    any_file = false
    for i in 0..3
      filename = make_filename(i)
      if FileTest.exist?(filename)
        any_file = true
        file = File.open(filename, "r")
        if file.mtime > latest_time
          latest_time = file.mtime
          last_file_index = i
        end
        file.close
      end
    end
    if any_file
      filename = make_filename(last_file_index)
      file = File.open(filename, "rb")
      chapter = read_variable(file)
      file.close
    else
      chapter = 0
    end
    if $BTEST
      battle_test
      return
    end
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    @sprite = Sprite.new
    case chapter
    when 0
      @sprite.bitmap = RPG::Cache.title("001-Title01")
    when 1
      @sprite.bitmap = RPG::Cache.title("001-Title01")
    end
    s1 = "Nuevo"
    s2 = "Cargar"
    s3 = "Salir"
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    $game_system.bgm_play($data_system.title_bgm)
    Audio.me_stop
    Audio.bgs_stop
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  
  def make_filename(file_index)
    return "Save#{file_index + 1}.rxdata"
  end
  
  def read_variable(file)
    characters      = Marshal.load(file)
    frame_count     = Marshal.load(file)
    game_system     = Marshal.load(file)
    game_switches   = Marshal.load(file)
    game_variables  = Marshal.load(file)
    return game_variables[CHAPTER_VARIABLE]
  end
end

No pido créditos

Cómo funciona

Primero de todo, cuidadín con títulos y sistemas de guardado personalizados, estás avisados.

Al principio del todo dónde pone CHAPTER_VARIABLE = 1 lo cambiáis por la id de la variable que será leída como capítulo. Por defecto si no hay ninguna partida guardada el capítulo vale 0.

Buscad donde pone case chapter, allí estan puestos los gráficos de título según el valor de chapter.
Puse 0 y 1, es tan fácil como poner más para más capítulos.

Se podría hacer lo mismo con la música por ejemplo, cambiando ésto:

Código:
$game_system.bgm_play($data_system.title_bgm)

por:
Código:
case chapter
when 0
  Audio.bgm_play("Audio/BGM/(nombre)", 100, 100)
when 1
  Audio.bgm_play("Audio/BGM/(nombre)", 100, 100)
end

Cualquier duda me lo decís.

Como idea a parte se podría hacer que en vez del último cargado, leyera el más alto. Eso sería un script similar pero distinto, aunque igualmente fácil de hacer.

Edita Wecoc:

@Wecoc escribió:Como idea a parte se podría hacer que en vez del último cargado, leyera el más alto. Eso sería un script similar pero distinto, aunque igualmente fácil de hacer.

Hice un script que hace básicamente esto, podéis verlo aquí: Desbloqueable - Cambiar título con variable


Última edición por Wecoc el 2018-10-25, 22:38, editado 2 veces
avatar
Wecoc
Administrador
Administrador



Créditos 12308

Gracias : 653

Volver arriba Ir abajo

Re: [XP] Scene Title según la variable Chapter

Mensaje por BlazeCrimson el 2014-06-14, 20:34

Pues me parece una idea muy idea este script Wecoc.
Por algunas razones no creo que lo utilice, pero me parece una gran aportación, muy sencilla de usar.

_________________
Image and video hosting by TinyPic
avatar
BlazeCrimson
Analista
Analista

0/3

Créditos 1128

Gracias : 111

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.