Menú de Pausa
El Menú de Pausa es la interfaz principal que aparece al pulsar el botón de menú (por defecto X o Esc) durante la partida. Desde aquí el jugador puede acceder a la Pokédex, su equipo, la mochila, la tarjeta de entrenador, guardar la partida, las opciones y más.
Componentes por defecto
El menú de pausa estándar en Pokémon Essentials v21.1 incluye las siguientes entradas:
| Entrada | Condición para aparecer | Descripción |
|---|---|---|
| Pokédex | El jugador tiene al menos una Pokédex desbloqueada | Abre la pantalla de la Pokédex |
| Pokémon | El jugador tiene al menos 1 Pokémon en el equipo | Abre la pantalla de equipo |
| Mochila | Siempre visible | Abre la mochila del jugador |
| Pokégear | $player.has_pokegear es true |
Abre el Pokégear (mapa, teléfono, radio) |
| [Nombre del jugador] | Siempre visible | Muestra la Tarjeta de Entrenador |
| Guardar | $game_system.save_disabled es false |
Guarda la partida actual |
| Opciones | Siempre visible | Abre la pantalla de opciones |
| Debug | Solo en modo Debug ($DEBUG) |
Abre el menú de depuración |
| Salir | Siempre visible | Cierra el menú de pausa |
Clase PauseMenu
El menú de pausa se gestiona a través de la clase PauseMenu en el script
UI_PauseMenu. Esta clase se encarga de construir la lista de opciones, mostrarlas y ejecutar la
acción correspondiente al seleccionar cada una.
Estructura básica
# El menú de pausa se abre llamando a:
pbPauseMenu
# Internamente, esto crea una instancia de PauseMenu
# y la ejecuta con pbStartPokemonMenu
Método principal: pbStartPokemonMenu
Este método construye la lista de comandos y los muestra. El flujo es:
- Se crea un array de comandos vacío.
- Se evalúan las condiciones para cada entrada.
- Se añaden las entradas que cumplen las condiciones.
- Se muestra el menú y se espera la selección del jugador.
- Se ejecuta la acción correspondiente.
Cómo añadir una entrada personalizada
Para añadir una nueva opción al menú de pausa, debes modificar el script UI_PauseMenu. El proceso
consiste en registrar un nuevo MenuHandler.
Ejemplo: Añadir entrada "Misiones"
# En un nuevo script o plugin, añade:
MenuHandlers.add(:pause_menu, :misiones, {
"name" => _INTL("Misiones"),
"order" => 40, # Posición en el menú (menor = más arriba)
"condition" => proc { next $game_switches[42] }, # Solo si el switch 42 está ON
"effect" => proc { |menu|
pbFadeOutIn {
# Aquí va la lógica de tu pantalla de misiones
scene = MisionesScene.new
screen = MisionesScreen.new(scene)
screen.pbStartScreen
}
next false # false = volver al menú, true = cerrar el menú
}
})
Propiedades de MenuHandlers
| Propiedad | Tipo | Descripción |
|---|---|---|
"name" |
String | Nombre que se muestra en el menú |
"order" |
Integer | Orden de aparición (menor número = más arriba) |
"condition" |
Proc | Condición para que aparezca la opción (devuelve true/false) |
"effect" |
Proc | Código que se ejecuta al seleccionar la opción |
Eliminar una entrada del menú
Para eliminar una entrada existente, puedes sobreescribir su condición para que nunca se cumpla:
# Eliminar el Pokégear del menú de pausa
MenuHandlers.add(:pause_menu, :pokegear, {
"name" => _INTL("Pokégear"),
"order" => 40,
"condition" => proc { next false }, # Nunca se muestra
"effect" => proc { |menu| next false }
})
Reordenar las entradas
Cada entrada tiene un valor "order" que determina su posición. Los valores por defecto son
aproximadamente:
| Entrada | Orden |
|---|---|
| Pokédex | 10 |
| Pokémon | 20 |
| Mochila | 30 |
| Pokégear | 40 |
| Tarjeta Entrenador | 50 |
| Guardar | 60 |
| Opciones | 70 |
| Debug | 80 |
| Salir | 90 |
Para mover una entrada, simplemente cambia su valor de "order". Por ejemplo, para poner la Mochila
antes de la Pokédex:
MenuHandlers.add(:pause_menu, :bag, {
"name" => _INTL("Mochila"),
"order" => 5, # Ahora aparece antes que Pokédex (10)
"effect" => proc { |menu|
pbFadeOutIn { pbBagScreen }
next false
}
})
Entradas condicionales
Puedes hacer que una entrada aparezca solo bajo ciertas condiciones de juego:
Mostrar solo con cierta cantidad de medallas
MenuHandlers.add(:pause_menu, :liga, {
"name" => _INTL("Liga Pokémon"),
"order" => 45,
"condition" => proc {
next $player.badge_count >= 8 # Solo con 8 o más medallas
},
"effect" => proc { |menu|
pbMessage(_INTL("¡Ya tienes todas las medallas! Dirígete a la Liga Pokémon."))
next false
}
})
Mostrar solo si el jugador tiene un objeto clave
MenuHandlers.add(:pause_menu, :mapa_ciudad, {
"name" => _INTL("Mapa de Ciudad"),
"order" => 35,
"condition" => proc {
next $bag.has?(:TOWNMAP) # Solo si tiene el Mapa en la mochila
},
"effect" => proc { |menu|
pbFadeOutIn { pbShowMap }
next false
}
})
Abrir el menú de pausa por script
Puedes abrir el menú de pausa directamente desde un evento con el siguiente comando de script:
# Abrir el menú de pausa manualmente
pbPauseMenu
Desactivar el menú de pausa
En ciertas situaciones (como escenas cinemáticas o zonas especiales) puedes querer desactivar el acceso al menú:
# Desactivar el menú de pausa
$game_system.menu_disabled = true
# Volver a activar el menú de pausa
$game_system.menu_disabled = false
Gráficos del menú
Los gráficos del menú de pausa se encuentran en la carpeta Graphics/UI/Pause Menu/. Los archivos
principales son:
| Archivo | Descripción |
|---|---|
bg.png |
Fondo del menú |
cursor.png |
Cursor de selección |
icon_*.png |
Iconos para cada entrada del menú |