Donner un badge au joueur
Pokémon Studio v3.0 abandonnera RPG Maker. À ce moment-là, cette section sera archivée : les pages resteront accessibles comme référence mais ne seront plus mises à jour.
Dans PSDK, les badges d'arène font partie de l'état du dresseur, pas d'un interrupteur de jeu. Ce guide montre comment attribuer, retirer et tester un badge depuis un event, comment fonctionnent les paramètres optionnels de région et de valeur, et comment compter les badges obtenus par le joueur.
Contrairement aux méthodes de l'Interpreter, que l'on appelle sans préfixe, les badges vivent sur l'objet dresseur. On y accède via le global $trainer, donc toutes les commandes de cette page s'écrivent $trainer.quelque_chose(...). On les saisit toujours dans la commande Script d'un event, le préfixe est la seule différence.
Ce qu'est un badge dans PSDK
Quand le joueur bat un champion d'arène, l'event du champion lui remet un badge. PSDK le stocke comme un indicateur sur le dresseur : chaque badge est soit obtenu, soit non. Il n'y a pas d'interrupteur système à activer, et rien à déclarer à l'avance.
Le dresseur dispose de la place pour 6 régions de 8 badges chacune, donc un badge est identifié par deux nombres : son numéro (1 à 8) et sa région (à partir de 1). La plupart des jeux n'utilisent qu'une seule région, c'est pourquoi la région est optionnelle et vaut 1 par défaut. Les huit badges de la région 1 sont ceux affichés sur la Carte Dresseur.
Attribuer un badge
set_badge passe un badge à l'état obtenu :
$trainer.set_badge(badge_num, region = 1, value = true)
badge_num— le badge à définir, de1à8.region— la région à laquelle appartient le badge, à partir de1. Optionnel, vaut1par défaut.value— l'état d'obtention. Optionnel, vauttruepar défaut.
Dans l'event du champion d'arène, juste après le dialogue de victoire, on attribue le cinquième badge avec :
$trainer.set_badge(5)
Comme region et value utilisent leurs valeurs par défaut, cela donne le badge 5 de la région 1. Un badge_num hors de la plage 1–8 est rejeté et consigné comme une erreur au lieu d'être défini.
Retirer un badge
On passe false en troisième argument pour effacer un badge :
$trainer.set_badge(5, 1, false)
Ici, il faut écrire la région explicitement, car value est le troisième paramètre : on ne peut pas sauter celui du milieu. Cela ramène le badge 5 de la région 1 à l'état non obtenu.
Badges d'une autre région
Un jeu multi-régions stocke les badges de chaque région séparément. On en cible une en passant son numéro en deuxième argument :
$trainer.set_badge(5, 3)
Cela attribue le badge 5 de la région 3. La région doit valoir au moins 1 ; le dresseur a de la place pour six régions, et demander un badge dans une région que le jeu ne prévoit pas est rejeté et consigné comme une erreur.
Vérifier si le joueur possède un badge
badge_obtained? renvoie si un badge est défini :
$trainer.badge_obtained?(badge_num, region = 1)
Elle renvoie true ou false, elle a donc sa place dans l'onglet Script d'un branchement conditionnel. Pour verrouiller une route derrière le cinquième badge :
# Le joueur a-t-il le cinquième badge ?
$trainer.badge_obtained?(5)
Comme pour set_badge, la région est optionnelle et vaut 1 par défaut, donc $trainer.badge_obtained?(5, 3) teste le badge 5 de la région 3. La méthode est aussi disponible sous l'alias has_badge?, qui se lit mieux dans certaines conditions ; les deux font la même chose.
Compter les badges
badge_counter renvoie le nombre de badges obtenus par le joueur, toutes régions confondues :
$trainer.badge_counter
Elle renvoie un Integer, utile pour débloquer quelque chose une fois que le joueur a réuni assez de badges. Dans l'onglet Script d'un branchement conditionnel :
# Le joueur a-t-il réuni les huit badges ?
$trainer.badge_counter >= 8
Conclusion
- Les badges sont un état du dresseur, accessible via le global
$trainer, pas des interrupteurs de jeu. - On en attribue un avec
$trainer.set_badge(badge_num); on le retire avec$trainer.set_badge(badge_num, region, false). - Un badge est un numéro (1 à 8) plus une région (1 par défaut, jusqu'à 6) ; les badges de la région 1 s'affichent sur la Carte Dresseur.
- On teste un badge avec
$trainer.badge_obtained?(badge_num)(aliashas_badge?) dans l'onglet Script d'un branchement conditionnel. - On compte les badges obtenus avec
$trainer.badge_counter.