Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Velocidad de Transición

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Velocidad de Transición

Mensaje por AsFzKakarotto el 2018-04-16, 07:12

Permite ajustar la velocidad en que se pueden emplear las transiciones con 4 Modos diferentes.
Cada Modo podrá ser activado por diferentes interruptores.
Cuando un interruptor está activo, la transición será ejecutada dependiente a la velocidad que
se haya ajustado en el segundo script.

Instrucciones:

Copiar el contenido de este script arriba de main:

Código:
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make sprite set
    @spriteset = Spriteset_Map.new
    # Make message window
    @message_window = Window_Message.new
    # Transition run
    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
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of sprite set
    @spriteset.dispose
    # Dispose of message window
    @message_window.dispose
    # If switching to title screen
    if $scene.is_a?(Scene_Title)
      # Fade out screen
      Graphics.transition
      Graphics.freeze
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Loop
    loop do
      # Update map, interpreter, and player order
      # (this update order is important for when conditions are fulfilled
      # to run any event, and the player isn't provided the opportunity to
      # move in an instant)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # Update system (timer), screen
      $game_system.update
      $game_screen.update
      # Abort loop if player isn't place moving
      unless $game_temp.player_transferring
        break
      end
      # Run place move
      transfer_player
      # Abort loop if transition processing
      if $game_temp.transition_processing
        break
      end
    end
    # Update sprite set
    @spriteset.update
    # Update message window
    @message_window.update
    # If game over
    if $game_temp.gameover
      # Switch to game over screen
      $scene = Scene_Gameover.new
      return
    end
    # If returning to title screen
    if $game_temp.to_title
      # Change to title screen
      $scene = Scene_Title.new
      return
    end
#===============================================================================
    # If transition processing
    if $game_temp.transition_processing
      # Clear transition processing flag
      $game_temp.transition_processing = false
      # Execute transition
      # sweet dreams different speed edit
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      elsif $game_switches[TRANS1] == true
        Graphics.transition(TRANS1_SPEED, "Graphics/Transitions/" +
          $game_temp.transition_name)
        $game_switches[TRANS1] = false
      elsif $game_switches[TRANS2] == true
        Graphics.transition(TRANS2_SPEED, "Graphics/Transitions/" +
          $game_temp.transition_name)
        $game_switches[TRANS2] = false
      elsif $game_switches[TRANS3] == true
        Graphics.transition(TRANS3_SPEED, "Graphics/Transitions/" +
          $game_temp.transition_name)
        $game_switches[TRANS3] = false
      elsif $game_switches[TRANS4] == true
        Graphics.transition(TRANS4_SPEED, "Graphics/Transitions/" +
          $game_temp.transition_name)
        $game_switches[TRANS4] = false
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
        end    
      end
#===============================================================================
    # If showing message window
    if $game_temp.message_window_showing
      return
    end
    # If encounter list isn't empty, and encounter count is 0
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      # If event is running or encounter is not forbidden
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        # Confirm troop
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        # If troop is valid
        if $data_troops[troop_id] != nil
          # Set battle calling flag
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
    # If B button was pressed
    if Input.trigger?(Input::B)
      # If event is running, or menu is not forbidden
      unless $game_system.map_interpreter.running? or
             $game_system.menu_disabled
        # Set menu calling flag or beep flag
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    # If debug mode is ON and F9 key was pressed
    if $DEBUG and Input.press?(Input::F9)
      # Set debug calling flag
      $game_temp.debug_calling = true
    end
    # If player is not moving
    unless $game_player.moving?
      # Run calling of each screen
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Battle Call
  #--------------------------------------------------------------------------
  def call_battle
    # Clear battle calling flag
    $game_temp.battle_calling = false
    # Clear menu calling flag
    $game_temp.menu_calling = false
    $game_temp.menu_beep = false
    # Make encounter count
    $game_player.make_encounter_count
    # Memorize map BGM and stop BGM
    $game_temp.map_bgm = $game_system.playing_bgm
    $game_system.bgm_stop
    # Play battle start SE
    $game_system.se_play($data_system.battle_start_se)
    # Play battle BGM
    $game_system.bgm_play($game_system.battle_bgm)
    # Straighten player position
    $game_player.straighten
    # Switch to battle screen
    $scene = Scene_Battle.new
  end
  #--------------------------------------------------------------------------
  # * Shop Call
  #--------------------------------------------------------------------------
  def call_shop
    # Clear shop call flag
    $game_temp.shop_calling = false
    # Straighten player position
    $game_player.straighten
    # Switch to shop screen
    $scene = Scene_Shop.new
  end
  #--------------------------------------------------------------------------
  # * Name Input Call
  #--------------------------------------------------------------------------
  def call_name
    # Clear name input call flag
    $game_temp.name_calling = false
    # Straighten player position
    $game_player.straighten
    # Switch to name input screen
    $scene = Scene_Name.new
  end
  #--------------------------------------------------------------------------
  # * Menu Call
  #--------------------------------------------------------------------------
  def call_menu
    # Clear menu call flag
    $game_temp.menu_calling = false
    # If menu beep flag is set
    if $game_temp.menu_beep
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Clear menu beep flag
      $game_temp.menu_beep = false
    end
    # Straighten player position
    $game_player.straighten
    # Switch to menu screen
    $scene = Scene_Menu.new
  end
  #--------------------------------------------------------------------------
  # * Save Call
  #--------------------------------------------------------------------------
  def call_save
    # Straighten player position
    $game_player.straighten
    # Switch to save screen
    $scene = Scene_Save.new
  end
  #--------------------------------------------------------------------------
  # * Debug Call
  #--------------------------------------------------------------------------
  def call_debug
    # Clear debug call flag
    $game_temp.debug_calling = false
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Straighten player position
    $game_player.straighten
    # Switch to debug screen
    $scene = Scene_Debug.new
  end
  #--------------------------------------------------------------------------
  # * Player Place Move
  #--------------------------------------------------------------------------
  def transfer_player
    # Clear player place move call flag
    $game_temp.player_transferring = false
    # If move destination is different than current map
    if $game_map.map_id != $game_temp.player_new_map_id
      # Set up a new map
      $game_map.setup($game_temp.player_new_map_id)
    end
    # Set up player position
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    # Set player direction
    case $game_temp.player_new_direction
    when 2  # down
      $game_player.turn_down
    when 4  # left
      $game_player.turn_left
    when 6  # right
      $game_player.turn_right
    when 8  # up
      $game_player.turn_up
    end
    # Straighten player position
    $game_player.straighten
    # Update map (run parallel process event)
    $game_map.update
    # Remake sprite set
    @spriteset.dispose
    @spriteset = Spriteset_Map.new
    # If processing transition
    if $game_temp.transition_processing
      # Clear transition processing flag
      $game_temp.transition_processing = false
      # Execute transition
      Graphics.transition(20)
    end
    # Run automatic change for BGM and BGS set on the map
    $game_map.autoplay
    # Frame reset
    Graphics.frame_reset
    # Update input information
    Input.update
  end
end

no creo que sea necesario pero si es que no funciona, reemplazarlo por el
contenido del script "Scene_Map" encontrado por defecto en el maker.

Ahora este script debajo:

Código:
TRANS1 = 30  # Interruptor que al estar activo Cambia su Velocidad al Modo 1
TRANS2 = 31  # Interruptor que al estar activo Cambia su Velocidad al Modo 2
TRANS3 = 32  # Interruptor que al estar activo Cambia su Velocidad al Modo 3
TRANS4 = 29  # Interruptor que al estar activo Cambia su Velocidad al Modo 4
TRANS1_SPEED = 300 # Modo 1 Para Ajustar los Frames para iniciar una transición
TRANS2_SPEED = 160 # Modo 2 Para Ajustar los Frames para iniciar una transición
TRANS3_SPEED = 80  # Modo 3 Para Ajustar los Frames para iniciar una transición
TRANS4_SPEED = 400 # Modo 4 Para Ajustar los Frames para iniciar una transición

Con este ultimo script se puede configurar los interruptores y la velocidades que cambiarán al ejecutar una transición.

Antes de aplicar el comando de ejecutar la Transición en un evento o en cualquier parte del proyecto, debemos de
activar uno de los 4 diferentes modos de velocidades atrevas de los interruptores y luego usar el típico comando para
iniciar la transición en el maker.

Al momento de terminar la transición es conveniente desactivar el interruptor que hemos utilizado para cambiar la
velocidad, para que este, no se aplique al momento de la transición de una batalla u otros futuros comandos que ejecuten transiciones diferentes a lo que deseamos aplicar.
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 217

Gracias : 42

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Velocidad de Transición

Mensaje por Wecoc el 2018-04-22, 02:23

La idea no está mal, pero... ¿4 interruptores cada uno con un valor asignado en el script? Usa una variable y ya está, hombre... Además el script solo modifica el def update así que todo lo demás no hace falta. Por como está montado ese método en XP, el script sigue siendo bastante largo a la fuerza y no muy compatible, pero es lo que hay.

Código:
#==============================================================================
# ** [XP] Transition Command Time using a Variable
#------------------------------------------------------------------------------
# No credits required
#==============================================================================

class Scene_Map
  
  TRANSITION_FRAMES_VAR = 1   # ID of the transition frames variable
                              # 40 should be the default value of this variable
                              
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Loop
    loop do
      # Update map, interpreter, and player order
      # (this update order is important for when conditions are fulfilled
      # to run any event, and the player isn't provided the opportunity to
      # move in an instant)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # Update system (timer), screen
      $game_system.update
      $game_screen.update
      # Abort loop if player isn't place moving
      unless $game_temp.player_transferring
        break
      end
      # Run place move
      transfer_player
      # Abort loop if transition processing
      if $game_temp.transition_processing
        break
      end
    end
    # Update sprite set
    @spriteset.update
    # Update message window
    @message_window.update
    # If game over
    if $game_temp.gameover
      # Switch to game over screen
      $scene = Scene_Gameover.new
      return
    end
    # If returning to title screen
    if $game_temp.to_title
      # Change to title screen
      $scene = Scene_Title.new
      return
    end
    # If transition processing
    if $game_temp.transition_processing
      # Clear transition processing flag
      $game_temp.transition_processing = false
      # Execute transition
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        #-------------------------------------------------------------------
        f = $game_variables[TRANSITION_FRAMES_VAR]
        Graphics.transition(f, "Graphics/Transitions/" +
          $game_temp.transition_name)
        #-------------------------------------------------------------------
      end
    end
    # If showing message window
    if $game_temp.message_window_showing
      return
    end
    # If encounter list isn't empty, and encounter count is 0
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      # If event is running or encounter is not forbidden
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        # Confirm troop
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        # If troop is valid
        if $data_troops[troop_id] != nil
          # Set battle calling flag
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
    # If B button was pressed
    if Input.trigger?(Input::B)
      # If event is running, or menu is not forbidden
      unless $game_system.map_interpreter.running? or
             $game_system.menu_disabled
        # Set menu calling flag or beep flag
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    # If debug mode is ON and F9 key was pressed
    if $DEBUG and Input.press?(Input::F9)
      # Set debug calling flag
      $game_temp.debug_calling = true
    end
    # If player is not moving
    unless $game_player.moving?
      # Run calling of each screen
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
end

También hay que comentar que el script lo que modifica es el comando Ejecutar Transición del intérprete, y concretamente cuando ésta no está vacía (si pones ese comando sin gráfico seguirá como siempre). No cambia la velocidad de transición entre escenas ni esas cosas, solo eso.

Dicho esto, quiero aportar una alternativa quizá no tan amigable para inexpertos porque usa llamar script, pero que no requiere script y además tiene opciones extra que comentaré a continuación, así que lo recomiendo.

El comando "Ejecutar Transición" se puede recrear con una llamada de script en la que se define el parámetro tiempo manualmente.
Podéis verlo en detalle en este tutorial: [Tutorial] Transicions de pantalla

Ejemplo:
[line]Graphics.transition(40,
"Graphics/Transitions/" +
"001-Blind01")[/line]
Lo he puesto en tres líneas para que tengáis suficiente espacio para cualquier nombre de transición (tercera línea). El tiempo es ese primer valor (primera línea).
Como opción añadida podéis usar transiciones de otra carpeta distinta a la Transitions (segunda línea)
Finalmente después del nombre y justo antes de ese último paréntesis se puede añadir un último valor que es el parámetro vague, eso es la velocidad/suavidad del intercambio de cada píxel de la transición (ver tutorial).
avatar
Wecoc
Administrador
Administrador



Créditos 12311

Gracias : 571

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.