El Jugador
En Pokémon Essentials, toda la información del jugador se almacena en el objeto global $player
(también accesible como $Trainer en versiones anteriores). Este objeto contiene el nombre, género,
dinero, medallas, equipo Pokémon y mucho más.
El objeto $player
La variable $player es una instancia de la clase Player y se crea automáticamente al
iniciar una nueva partida. A continuación se listan todas sus propiedades principales:
| Propiedad | Tipo | Descripción |
|---|---|---|
$player.name |
String | Nombre del jugador. |
$player.gender |
Integer | Género: 0 = masculino, 1 = femenino, 2 = no binario. |
$player.id |
Integer | ID completo del entrenador (número único generado al crear la partida). |
$player.public_ID |
Integer | ID público visible (los últimos 5 dígitos del ID completo). |
$player.secret_ID |
Integer | ID secreto (usado para determinar si un Pokémon es shiny). |
$player.money |
Integer | Cantidad de dinero actual del jugador. |
$player.coins |
Integer | Cantidad de fichas del Game Corner. |
$player.party |
Array | Array con los Pokémon del equipo (máximo 6). |
$player.party_count |
Integer | Número de Pokémon en el equipo. |
$player.badges |
Array | Array de booleanos que indica qué medallas se han obtenido. |
$player.badge_count |
Integer | Número total de medallas obtenidas. |
$player.has_pokedex |
Boolean | Si el jugador tiene la Pokédex. |
$player.has_pokegear |
Boolean | Si el jugador tiene el Pokégear. |
$player.has_running_shoes |
Boolean | Si el jugador tiene zapatillas para correr. |
$player.trainer_type |
Symbol | Tipo de entrenador del jugador (define su sprite). |
$player.language |
Integer | Idioma del jugador (para juegos multiidioma). |
Archivo player_metadata.txt
Los personajes jugables se definen en el archivo PBS player_metadata.txt. Aquí se configuran los
sprites y la apariencia del jugador en el mapa y en combate.
[0]
TrainerType = POKEMONTRAINER_Red
WalkCharset = trainer_POKEMONTRAINER_Red
RunCharset = trainer_POKEMONTRAINER_Red_run
CycleCharset = trainer_POKEMONTRAINER_Red_cycle
SurfCharset = trainer_POKEMONTRAINER_Red_surf
DiveCharset = trainer_POKEMONTRAINER_Red_dive
FishCharset = trainer_POKEMONTRAINER_Red_fish
SurfFishCharset = trainer_POKEMONTRAINER_Red_surf_fish
[1]
TrainerType = POKEMONTRAINER_Leaf
WalkCharset = trainer_POKEMONTRAINER_Leaf
RunCharset = trainer_POKEMONTRAINER_Leaf_run
CycleCharset = trainer_POKEMONTRAINER_Leaf_cycle
SurfCharset = trainer_POKEMONTRAINER_Leaf_surf
DiveCharset = trainer_POKEMONTRAINER_Leaf_dive
FishCharset = trainer_POKEMONTRAINER_Leaf_fish
SurfFishCharset = trainer_POKEMONTRAINER_Leaf_surf_fish
El número entre corchetes ([0], [1], etc.) indica el índice del personaje jugable.
[0] generalmente es el protagonista masculino y [1] el femenino.
| Propiedad | Descripción |
|---|---|
TrainerType |
Tipo de entrenador del jugador (define sprite de combate y tipo en PBS). |
WalkCharset |
Sprite del jugador caminando en el mapa. |
RunCharset |
Sprite del jugador corriendo. |
CycleCharset |
Sprite del jugador en bicicleta. |
SurfCharset |
Sprite del jugador surfeando. |
DiveCharset |
Sprite del jugador buceando. |
FishCharset |
Sprite del jugador pescando. |
SurfFishCharset |
Sprite del jugador pescando mientras surfea. |
Medallas (Badges)
Las medallas se gestionan mediante el array $player.badges. Cada medalla tiene un índice numérico
(empezando desde 0).
# Comprobar si el jugador tiene una medalla específica
if $player.badges[0] # Primera medalla (índice 0)
pbMessage("Tienes la primera medalla.")
end
# Otorgar una medalla
$player.badges[0] = true # Otorgar la primera medalla
# Quitar una medalla
$player.badges[0] = false # Quitar la primera medalla
# Contar medallas totales
pbMessage("Tienes #{$player.badge_count} medallas.")
# Comprobar si tiene una medalla específica con función auxiliar
if pbHasBadge?(3) # Cuarta medalla (índice 3)
pbMessage("Puedes usar Surf fuera de combate.")
end
Medallas y MOs (HMs)
Por defecto, cada medalla desbloquea el uso de una MO fuera de combate. Esto se configura en
Settings:
| Medalla (índice) | MO desbloqueada (por defecto) |
|---|---|
| 0 | Corte (Cut) |
| 1 | Destello (Flash) |
| 2 | Surf |
| 3 | Fuerza (Strength) |
| 4 | Vuelo (Fly) |
| 5 | Cascada (Waterfall) |
| 6 | Buceo (Dive) |
| 7 | Trepar (Rock Climb) |
Dinero
El dinero del jugador se gestiona con las siguientes funciones:
# Obtener dinero actual
pbMessage("Tienes #{$player.money}₽.")
# Añadir dinero
pbAddMoney(5000) # Añade 5000₽
# Quitar dinero
pbRemoveMoney(1500) # Quita 1500₽
# Comprobar si tiene suficiente dinero
if $player.money >= 3000
pbMessage("Puedes permitírtelo.")
pbRemoveMoney(3000)
else
pbMessage("No tienes suficiente dinero.")
end
# Establecer dinero directamente
$player.money = 10000
Settings::MAX_MONEY.
Fichas del Game Corner
# Obtener fichas
pbMessage("Tienes #{$player.coins} fichas.")
# Añadir fichas
$player.coins += 500
$player.coins = [$player.coins, Settings::MAX_COINS].min
# Quitar fichas
$player.coins -= 100
$player.coins = [$player.coins, 0].max
Configurar el personaje del jugador
Al inicio del juego, debes configurar el jugador. Generalmente esto se hace en el evento de introducción:
Elegir nombre y género
# Preguntar el género del jugador
pbMessage("¿Eres chico o chica?")
gender = pbShowCommands(nil, ["Chico", "Chica"], -1)
if gender == 0
pbChangePlayer(0) # Personaje masculino (índice 0)
elsif gender == 1
pbChangePlayer(1) # Personaje femenino (índice 1)
end
# Pedir el nombre al jugador
pbTrainerName
Establecer nombre directamente
# Establecer un nombre sin pedir al jugador
$player.name = "Red"
Gráficos del jugador
Los gráficos del jugador se almacenan en varias carpetas:
| Carpeta | Contenido | Ejemplo |
|---|---|---|
Graphics/Characters/ |
Sprites del mapa (overworld): caminar, correr, bici, surf, etc. | trainer_POKEMONTRAINER_Red.png |
Graphics/Trainers/ |
Sprite frontal del entrenador (pantalla de combate del oponente). | POKEMONTRAINER_Red.png |
Graphics/Trainers/ |
Sprite trasero (visto en combate como jugador). | POKEMONTRAINER_Red_back.png |
Sprites del mapa (Characters)
Los sprites de mapa son hojas de sprites con 4 filas × 4 columnas, donde cada fila corresponde a una dirección (abajo, izquierda, derecha, arriba) y cada columna es un cuadro de animación.
Sprite trasero de combate
El sprite trasero (_back) se muestra durante los combates. Es una imagen generalmente de
128×128 píxeles o mayor que muestra al jugador de espaldas.
Múltiples personajes jugables
Puedes ofrecer varias opciones de personaje. Cada uno se define en player_metadata.txt con un
índice diferente.
# Cambiar el personaje jugable durante el juego
pbChangePlayer(0) # Cambiar al personaje 0 (masculino)
pbChangePlayer(1) # Cambiar al personaje 1 (femenino)
# También puedes cambiar el outfit del jugador actual
$player.character_ID = 2 # Cambiar a un outfit alternativo
Ejemplo: selección de personaje al inicio
# ◆ Mensaje: ¡Bienvenido al mundo Pokémon!
# ¿Cómo te ves a ti mismo?
# ◆ Show Choices: [Chico], [Chica]
# ◆ When [Chico]:
# ◆ Script: pbChangePlayer(0)
# ◆ When [Chica]:
# ◆ Script: pbChangePlayer(1)
# ◆ Branch End
# ◆ Script: pbTrainerName
# ◆ Mensaje: ¡Así que te llamas \PN!
# ¡Tu aventura está a punto de comenzar!
Otras propiedades útiles
# Dar la Pokédex al jugador
$player.has_pokedex = true
# Dar el Pokégear
$player.has_pokegear = true
# Dar las zapatillas para correr
$player.has_running_shoes = true
# Comprobar horas de juego
horas = $stats.play_time.to_i / 3600
pbMessage("Llevas #{horas} horas jugando.")
# Curar todo el equipo
$player.heal_party