Versión imprimible del tema: Pedido: quitar "Save" en el menú!
URL: https://anterior.mundodeluxe.com/1254725/11513819-pedido-quitar-save-en-el-menu/

De la comunidad de foros: MundoDeluxe
URL: https://anterior.mundodeluxe.com


Autor: bathory123, 05/Jun/2015, 23:38


Quiero quitar la categoría "save" en el menú... para que sólo se pueda guardar con un npc, thks =D ojalá alguien sepa como.

<3


Autor: kyonides-arkanthos, 08/Jun/2015, 02:09


Para un scripter es tan simple como dejar como comentario todo lo que diga Guardar o Save en el script de Scene_Menu. Además al inicio hay una lista, ahí puedes hacer una de dos cosas, o se reemplaza por otra opción o se borra. Claro está que eso implica que hay que hacer algunos cambiecillos más adelante en ese mismo script que dudo que la mayoría pueda hacerlos, un scripter tendría que encargarse del asunto.

Primero te recomiendo que busques entre los scripts publicados a ver si ya existe alguno, pues este tipo de pedido y otros similares no eran tan raros tiempo atrás.

Si pasado un tiempo prudencial no puedes encontrarlo, ahí veré si me da tiempo de modificarlo para ti, pero me daría cosa solo modificarlo para que solo haga algo menos que el script original.


Autor: bathory123, 08/Jun/2015, 11:51


No pude encontrar ningún Script Para Xp sobre el tema =( Lo máximo es para Ace o VX, y no usos esos. Intenté experimentar con un juego nuevo tratar de quitarle la opcion en scene_menu, y lo unico que hice fue estragos hahaha.


Autor: kyonides-arkanthos, 08/Jun/2015, 20:46


Entiendo, pero entonces quedaría un espacio vacío en el menú. ¿Qué iría ahí?


Autor: bathory123, 10/Jun/2015, 12:53


Serpia genial una opcion que diga "Opciones".

Que al meterte, salga una ventana que tenga: Cambiar skin, Cambiar a pantalla completa, activar Huds, etc. Aunq seria genial una opcion que sea "señalar entradas": Se me ocurrio una idea y es dejar eventos en blanco con una pagina adicional que se activa con un interruptor, el cual hace q cuando se active muestre flechitas en las puertas o entradas para señalarle al jugador que eso de ahí se puede entrar. Obviamente, el jugador puede activar o desactivar esa opción desde el menú.


Autor: kyonides-arkanthos, 13/Jun/2015, 03:43


De momento esto lo que llevo hecho:

Código:
# * Scene Menu Modificado
module CONFIG
  # Opciones Principales
  MAIN_OPTIONS = [$data_system.words.item]
  MAIN_OPTIONS << $data_system.words.skill
  MAIN_OPTIONS << $data_system.words.equip
  MAIN_OPTIONS << "Estado"
  MAIN_OPTIONS << "Opciones"
  MAIN_OPTIONS << "Terminar"
  # Opciones Secundarias
  NEW_OPTIONS = ["Cambiar Skin"]
  NEW_OPTIONS << "Activar HUDs"
  NEW_OPTIONS << "Flechas"
end

class Scene_Menu
  def main
    # Make command window
    @command_window = Window_Command.new(160, CONFIG::MAIN_OPTIONS)
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    @options_window = Window_Command.new(160, CONFIG::NEW_OPTIONS)
    @options_window.index = 0
    @options_window.y = 160
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @options_window.dispose
  end

  def update
    # Update windows
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    @options_window.update
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
    # If settings window is active: call update_options
    if @options_window.active
      update_options
      return
    end
  end

  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # Options
        $game_system.se_play($data_system.decision_se)
        # Switch to next settings menu
        @command_window.active = false
        @options_window.active = true
      when 5  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end

  def update_options
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @options_window.active = false
      @options_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 1  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      when 2  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      when 3  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      end
      return
    end
  end
end

Las opciones se modifican donde dice NEW_OPTIONS siguiendo los ejemplos que ya están ahí.

De momento las opciones extras son:

Como no puedo adivinar qué es lo que utilizará para hacer realidad todo eso, no puedo continuar el desarrollo del script. Tampoco sé si le agregará otras opciones viables.


Autor: kyonides-arkanthos, 17/Jun/2015, 02:58


Bueno aquí traigo una nueva versión del script, ya lo puede probar. Como es de suponerse, no podrá acceder a ningún nuevo menú por el simple hecho de que no me ha dicho cuáles son esos scripts que le permitirán hacer eso o cómo quiere que se vean.

Código:
# * Scene Menu Modificado
module CONFIG
  system_data = load_data("Data/System.rxdata")
  # Opciones Principales
  MAIN_OPTIONS = [system_data.words.item]
  MAIN_OPTIONS << system_data.words.skill
  MAIN_OPTIONS << system_data.words.equip
  MAIN_OPTIONS << "Estado"
  MAIN_OPTIONS << "Opciones"
  MAIN_OPTIONS << "Terminar"
  # Opciones Secundarias
  NEW_OPTIONS = ["Cambiar Skin"]
  NEW_OPTIONS << "Activar HUDs"
  NEW_OPTIONS << "Flechas"
  system_data = nil
end

class Scene_Menu
  def main
    # Make command window
    @command_window = Window_Command.new(160, CONFIG::MAIN_OPTIONS)
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    @options_window = Window_Command.new(160, CONFIG::NEW_OPTIONS)
    @options_window.visible = false
    @options_window.index = 0
    @options_window.x = 160
    @options_window.y = 128
    @options_window.z = @status_window.z + 50
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @options_window.dispose
  end

  def update
    # Update windows
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    @options_window.update
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
    # If settings window is active: call update_options
    if @options_window.active
      update_options
      return
    end
  end

  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # Options
        $game_system.se_play($data_system.decision_se)
        # Switch to next settings menu
        @command_window.active = false
        @options_window.active = true
        @options_window.visible = true
        @options_window.index = 0
      when 5  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end

  def update_options
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @options_window.visible = false
      @options_window.active = false
      @options_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 1  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      when 2  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      when 3  # ???
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        
      end
      return
    end
  end
end

Autor: bathory123, 18/Jun/2015, 09:31


Omg genial!

Pero tengo 2 script. Uno; el de número de victorias, el cual el script interfiere y me pone número de pasos. El otro; Kyo Shop Gems, el cual me muestra oro y "gemas" en mi caso honor. Los dos, se dejan de ver en el menú cuando pongo el script, obviamente no es que me de error. Pienso que sería muy dificil hacerlo acoplar.

Kyo Shop Gems:

=begin
KyoShop Gems XP
by Kyonides-Arkanthos alias Kyonides, Shadowball
v 1.0.1 - 02.17.2010 - New Features and Bug Fix
v 1.0.0 - 02.16.2010

Num de victorias por Shadowball.

Código:
#==============================
#  Ventana_Estadísiticas v 1.0
#  por shadowball
#  08.02.2008
#==============================
class Ventana_Estadísticas < Window_Base
  def initialize
    super(0, 320, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 104
    refresh
  end  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, -8, 120, 32, 'Victorias')
    self.contents.font.color = normal_color
    self.contents.draw_text(4, -8, 120, 32, $shb_victorias.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(0, 14, 120, 32, 'Derrotas')
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 14, 120, 32, $shb_derrotas.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(0, 36, 120, 32, 'Escapes')
    self.contents.font.color = normal_color
    self.contents.draw_text(113, 36, 120, 32, $shb_escapes.to_s)
  end
end#=============================
#  *  Scene_title Add-on
#=============================
class Scene_Title
  alias shb_cng command_new_game
  def command_new_game
    shb_cng
    $shb_victorias = 0
    $shb_escapes = 0
    $shb_derrotas = 0
  end
end#=============================
#  *  Scene_Menu Add-on
#=============================
class Scene_Menu
  alias shb_sm_main main
  def main
    @estadisticas = Ventana_Estadísticas.new
    @estadisticas
    shb_sm_main
    @estadisticas.dispose
  end
 
  alias shb_sm_up update
  def update
    shb_sm_up
    # Si presionas Repág alias PageUp o Q, la ventana estadísticas desaparece
    if Input.trigger?(Input::L)
      @estadisticas.visible = true if @estadisticas.visible == false
      @estadisticas.visible = false if @estadisticas.visible == true
    end
  end
end#================================
#    Scene_Save Add-on
#================================
class Scene_Save
  alias shb_write_save_data write_save_data
  def write_save_data(file)
    shb_write_save_data(file)
    # Esto sirve para que guarde las variables globales en el archivo
    Marshal.dump($shb_victorias, file)
    Marshal.dump($shb_derrotas, file)
    Marshal.dump($shb_escapes, file)
  end
end#================================
#    Scene_Load Add-on
#================================
class Scene_Load
  alias shb_read_save_data read_save_data
  def read_save_data(file)
    shb_read_save_data(file)
    # Esto sirve para que cargue las variables globales del archivo
    $shb_victorias = Marshal.load(file)
    $shb_derrotas  = Marshal.load(file)
    $shb_escapess  = Marshal.load(file)
  end
end#=============================
#  *  Scene_Battle Mini Add-on
#=============================
class Scene_Battle
  def battle_end(result)
    # Clear in battle flag
    $game_temp.in_battle = false
    # Clear entire party actions flag
    $game_party.clear_actions
    # Remove battle states
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # Clear enemies
    $game_troop.enemies.clear
    # Call battle callback
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    case result
    when 0 # victoria (confirmado)
      $shb_victorias += 1
    when 1 # escape # según Enterbrain derrota...
      $shb_escapes += 1
    when 2 # derrota # según Enterbrain escape...
      $shb_derrotas += 1
    end
    # Switch to map screen
    $scene = Scene_Map.new
  end
end

att: Fernando.


Autor: kyonides-arkanthos, 18/Jun/2015, 21:38


Primero me gustaría saber cuál es el sistema de batallas que utilizará. Si no es el que viene por defecto, mi script no le será de mucha ayuda. Tendría que crear una versión para ese otro sistema de batallas.

Si es el que viene por defecto, entonces con descargar esta nueva versión le servirá.

DESCARGA DE DEMO

El enlace anterior ya caducó.


Autor: bathory123, 19/Jun/2015, 00:14


Peor en si creo q interfiere es con los dos script q te mencione arriba, el kyo shop y el de victorias, derrotas y escapes.

Empero, mi sistema de batalla es el siguiente:

â– Action Battle System
#-------------------------------------------------------------------------- ----
#  By: Near Fantastica
# Date: 07/2/05
# Version 2

Obviamente tambien mi juego tiene el sistema de batalla de turnos predeterminado para los jefes finales.


Autor: kyonides-arkanthos, 19/Jun/2015, 04:53


Bueno me fijé en el asunto y para resolverlo lanzo una nueva versión del demo de KyoShopGems XP.

DESCARGA EL DEMO


Autor: bathory123, 21/Jun/2015, 13:41


Uff... aunq  muero por ese que estas scripteando de las gemas.

<3


Autor: kyonides-arkanthos, 02/Jul/2015, 05:19


Nueva Versión del Script de Menú + Ventana Estadísticas Incluido En UNO SOLO

Código:
# * Ventana Estadísticas 1.2.1 + Scene Menu Modificado
#   Scripter : Kyonides-Arkanthos

#   Los Windowskins deben tener nombres como '001-Blue' o '010-Vanguard'. En el
#   juego aparecerán en ese mismo orden.

module KyoBattleStats
  # Mostrar Victorias
  SHOW_VICTORIES = true
  # Mostrar Derrotas
  SHOW_DEFEATS   = true
  # Mostrar Escapes o Huidas
  SHOW_ESCAPES   = true
  # Leyendas para Batallas, Victorias, Derrotas, Escapes
  LABELS = ['Batallas', 'Victorias', 'Derrotas', 'Escapes']
end

module Config
  system_data = load_data("Data/System.rxdata")
  # Opciones Principales
  MAIN_OPTIONS = [system_data.words.item] # Objetos en la BD
  MAIN_OPTIONS << system_data.words.skill # Habilidad en la BD
  MAIN_OPTIONS << system_data.words.equip # Equipamiento en la BD
  MAIN_OPTIONS << "Estado"
  MAIN_OPTIONS << "Opciones"
  MAIN_OPTIONS << "Terminar"
  # Opciones Secundarias
  NEW_OPTIONS = ["Cambiar Skin"]
  NEW_OPTIONS << "Activar HUDs"
  NEW_OPTIONS << "Flechas"
  NEW_OPTIONS << "Ver Pasos"
  NEW_OPTIONS << "Ver Tiempo"
  # Leyenda de Tiempo de Juego
  PLAYTIME = "Tiempo"
  # Leyenda de Pasos Dados
  STEPS = "Pasos"
  # Ver Ventana de Dinero : SI = true, NO = false
  GOLD_WINDOW_VISIBLE = false
  # Número de Líneas Visibles del Menú de Windowskins
  SKIN_MENU_MAX = 11
  SKINDIR = 'Graphics/Windowskins/'
  windowskins = Dir[SKINDIR+'*']
  WINDOWSKINS = windowskins.map{|s| s.gsub(/#{SKINDIR}/,'') }
  WINDOWSKIN_NAMES = WINDOWSKINS.map{|s| s.gsub(/\d+\-|\.\w+/,'') }
  system_data = windowskins = nil
end

class Sprite
  def x_y(x, y); self.x, self.y = x, y; end
end

class Sprite_KyoGold < Sprite
  def initialize
    super
    self.bitmap = Bitmap.new(160, 60)
    self.x, self.y, self.z = 0, 0, 1#Posicion_Moneda
    self.visible = true
    @gold_word = $data_system.words.gold
    update
  end
 
  def dispose
    self.bitmap.dispose if !self.bitmap.nil?
    super
  end
 
  def update
    super
    if $game_party.gold != @gold or $game_party.gems != @gems
      self.bitmap.clear # Clear window contents
      gold_bitmap = RPG::Cache.picture('goldspritesmall') # Sprite Back
      gold_icon = RPG::Cache.icon('032-Item01')
      gems_icon = RPG::Cache.icon('035-Item04')
      rect = Rect.new(0, 0, 160, 60)
      self.bitmap.blt(0, 0, gold_bitmap, rect)
      self.bitmap.blt(132, 4, gold_icon, rect)
      self.bitmap.blt(132, 32, gems_icon, rect)
      self.bitmap.draw_text(0, 0, 124, 32, $game_party.gold.to_s, 2)
      self.bitmap.draw_text(0, 28, 124, 32, $game_party.gems.to_s, 2)
      self.bitmap.font.color.set(120, 100, 120)
      #self.bitmap.draw_text(0, 0, 128, 32, @gold_word, 2)
      #self.bitmap.draw_text(0, 28, 128, 32, KyoMoney::GEMS, 2)
      @gold, @gems = $game_party.gold, $game_party.gems
    end
  end
end

class Window_PlayTime < Window_Base
  def initialize
    super(0, 0, 160, 80)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end

  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, -4, 120, 28, Config::PLAYTIME)
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 24, 120, 28, text, 2)
  end
end

class Window_Steps < Window_Base
  def initialize
    super(0, 0, 160, 80)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end

  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, -4, 120, 28, Config::STEPS)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 24, 120, 28, $game_party.steps.to_s, 2)
  end
end

class Window_SkinSelect < Window_Selectable
  def initialize
    new_height = [352, Config::SKIN_MENU_MAX * 32].min
    super(160, 64, 320, new_height)
    @item_max = Config::WINDOWSKIN_NAMES.size
    refresh
    self.index = $game_system.windowskin_index
  end

  def windowskin() Config::WINDOWSKINS[self.index] end

  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    self.contents = Bitmap.new(width - 32, row_max * 32)
    (0...@item_max).each {|i| draw_item(i) }
  end

  def draw_item(index)
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.draw_text(rect, Config::WINDOWSKIN_NAMES[index])
  end
end

class Game_System
  attr_accessor :battle_stats, :battle_stats_visible, :windowskin_index
  alias kyon_battle_stats_gm_sys_init initialize
  def initialize
    kyon_battle_stats_gm_sys_init
    @windowskin_index = 0
    @battle_stats = [0,0,0,0] # Total Batallas, Ganadas, Perdidas, Escapes
    show_victory = KyoBattleStats::SHOW_VICTORIES
    show_defeat = KyoBattleStats::SHOW_DEFEATS
    show_escape = KyoBattleStats::SHOW_ESCAPES
    @battle_stats_visible = [true, show_victory, show_defeat, show_escape]
  end
end

class Ventana_Estadisticas < Window_Base
  def initialize
    @stats = $game_system.battle_stats
    @stats_visible = $game_system.battle_stats_visible
    row_max = @stats_visible.map{|bool| bool == true }.size
    x, y = $game_temp.in_battle ? [240, 0] : [0, 302]
    super(x, y, 160, row_max * 21 + 32)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 104
    self.opacity = $game_temp.in_battle ? 120 : 255
    refresh
  end

  def refresh
    labels = KyoBattleStats::LABELS
    self.contents.clear
    y = -30
    labels.size.times do |n| next unless @stats_visible[n]
      y += 22
      self.contents.font.color = system_color
      self.contents.draw_text(0, y, 120, 32, labels[n])
      self.contents.font.color = normal_color
      self.contents.draw_text(0, y, 120, 32, @stats[n].to_s, 2)
    end
  end
end

class Scene_Menu
  def main
    start
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      break if $scene != self
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @status_window.dispose
    @options_window.dispose
    @windowskins_window.dispose
    @gold_sprite.dispose
    @estadisticas.dispose
  end

  def start
    @initial_skin = $game_system.windowskin_name
    # Make command window
    @command_window = Window_Command.new(160, Config::MAIN_OPTIONS)
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 224
    @steps_window.visible = false
    # Make gold window
    @gold_sprite = Sprite_KyoGold.new # Make gold sprite
    @gold_sprite.x_y(0, 418)
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    @options_window = Window_Command.new(160, Config::NEW_OPTIONS)
    @options_window.visible = false
    @options_window.active = false
    @options_window.index = 0
    @options_window.x = 160
    @options_window.y = 128
    @options_window.z = @status_window.z + 50
    @windowskins_window = Window_SkinSelect.new
    @windowskins_window.z = @options_window.z + 50
    @windowskins_window.visible = false
    @windowskins_window.active = false
    @estadisticas = Ventana_Estadisticas.new
    
  end

  def update
    # Update windows
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @status_window.update
    @options_window.update
    @windowskins_window.update
    @estadisticas.update
    # Si presionas Repag alias PageUp o Q, la ventana estadisticas desaparece
    if Input.trigger?(Input::L)
      @estadisticas.visible = !@estadisticas.visible
      return
    end
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
    # If settings window is active: call update_options
    if @options_window.active
      update_options
      return
    end
    # If windowskins window is active: call update_windowkin
    if @windowskins_window.active
      update_windowskin
      return
    end
  end

  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    # If C button was pressed
    elsif Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # Options
        $game_system.se_play($data_system.decision_se)
        # Switch to next settings menu
        @command_window.active = false
        @options_window.active = true
        @options_window.visible = true
        @options_window.index = 0
      when 5  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end

  def update_options
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @options_window.visible = false
      @options_window.active = false
      @options_window.index = -1
      return
    # If C button was pressed
    elsif Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @options_window.index
      when 0  # ???
        $game_system.se_play($data_system.decision_se)
        @windowskins_window.index = $game_system.windowskin_index
        @windowskins_window.active = true
        @windowskins_window.visible = true
        @options_window.active = false
        @options_window.visible = false
      when 1  # ???
        $game_system.se_play($data_system.decision_se)
        
      when 2  # ???
        $game_system.se_play($data_system.decision_se)
        
      when 3  # Ver Pasos
        $game_system.se_play($data_system.decision_se)
        @playtime_window.visible = false
        @steps_window.visible = true
      when 4  # Ver Tiempo
        $game_system.se_play($data_system.decision_se)
        @steps_window.visible = false
        @playtime_window.visible = true
      end
      return
    end
  end

  def update_windowskin
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @windowskins_window.index = -1
      @windowskins_window.visible = false
      @windowskins_window.active = false
      @options_window.active = true
      @options_window.visible = true
      $game_system.windowskin_name = @initial_skin
      return
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @initial_skin = @windowskins_window.windowskin
      $game_system.windowskin_index = @windowskins_window.index
      @windowskins_window.visible = false
      @windowskins_window.active = false
      @options_window.active = true
      @options_window.visible = true
      return
    elsif Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      $game_system.windowskin_name = @windowskins_window.windowskin
    end
  end
end
#=============================
#  *  Scene_Battle Mod
class Scene_Battle
  include KyoBattleStats
  alias kyon_battle_stats_main main
  def main
    $game_temp.in_battle = true
    @battle_stats = Ventana_Estadisticas.new
    @battle_stats.visible = false
    kyon_battle_stats_main
    @battle_stats.dispose
  end

  alias kyon_battle_stats_scn_battle_start_phase5 start_phase5
  def start_phase5
    kyon_battle_stats_scn_battle_start_phase5
      $game_system.battle_stats[0] += 1 # Total de Batallas
      $game_system.battle_stats[1] += 1 # Victoria
      @battle_stats.refresh
    @battle_stats.visible = true
  end

  def battle_end(result)
    $game_temp.in_battle = false
    $game_party.clear_actions
    $game_party.actors.each {|actor| actor.remove_states_battle }
    $game_troop.enemies.clear
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    $game_system.battle_stats[0] += 1 if result > 0
    case result
    when 1; $game_system.battle_stats[3] += 1 # escape # segun Enterbrain derrota
    when 2; $game_system.battle_stats[2] += 1 # derrota # segun Enterbrain escape
    end
    @battle_stats.refresh
    $scene = Scene_Map.new
  end
end

Esta nueva versión incorpora el script Ventana Estadísticas dentro de sí mismo, pero también agrega la opción de cambio de Windowskin, la cual es totalmente funcional.

Solo cabe recalcar una cosa, si la partida no se guarda, pues, no hay manera de que el windowskin elegido sea el de la partida o partida de prueba anterior. Se revertiría el cambio al skin que está por defecto, el primero en la carpeta Windowskin.

Los Windowskins deben ir nombrados así:

Espero que esta instrucción sea bastante clara porque deberá tenerla muy en cuenta.

Si no utiliza esta versión del script, la Ventana de Estadísticas no cambiará de windowskin.