Afficher un texte dynamique depuis un string

Discussion dans 'Tutos évent-making RPG Maker XP' créé par Amras Anárion, 4 Janvier 2020.

  1. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel Team Phoenix

    Ce tuto est inspiré de : https://psdk.pokemonworkshop.fr/wiki/fr/event_making/messages.html#cat_12
    Mais suite à un manque concret d'exemples dans ce cas précis, je vous montre les commandes. Ceci sera notament très utile pour un jeu PSDK qui est internationalisé (gestion des langues).

    Commandes d'Event making à mettre : (Ici, l'exemple sera du CSV n°100010, string n°32)
    -----------------
    Script : PFM::Text.set_variable("[TextTest]",ext_text(100010, 32))
    Message : Les termes "Châtellerie de Bréliande" doivent apparaitre.
    Message : TextTest contient : [TextTest]

    Script : PFM::Text.reset_variables
    -----------------

    Ligne 1 :
    Il s'agit de la ligne de commande
    Code:
    PFM::Text.set_variable("[ARemplacer]", "Texte remplaçant")
    "[ARemplacer]" et "Texte remplaçant" doivent être des strings (si ça contient que des chiffres, il faut terminer par un ".to_s").

    Ligne 2 :
    Purement illustrative pour indiquer que du texte dynamique va être affiché.

    Ligne 3 :
    La chaine de caractères [TextTest] est remplacé par le contenu du string. Ici ça correspond à "Châtellerie de Bréliande" si le jeu est en français.

    Ligne 4 :
    Malheureusement, c'est une commande temporaire, donc il faut effacer à la fin de l'évent avec cette ligne de script.

    A noter qu'il y a la variante
    Code:
    PFM::Text.set_variable("[TextTest]",text_get(10, 34))
    Soit "text_get" à la place de "ext_text". Cela fonctionne pour les CSV compilés (fichier .dat). Il faut soustraire 100000 à la valeur dans ce cas là.



    Pour quelque chose de plus permanent, yyyyj m'avait proposé ceci sur ce message :

    Alors pour répondre à cette question, il y aurait plusieurs méthodes. Mais selon moi, si on souhaite garder une architecture similaire à celle qu'on a déjà et que je t'ai déjà proposée à l'oral précédemment :
    Dans la classe Pokemon_Party déclarer dans la méthode game_state_initialize :
    Dans la méthode expand_global_var :
    et ne pas oublier la déclaration de :
    au tout début de la classe.
    Là, tu as donc tes variables sauvegardées.
    Ensuite, rien de plus simple il s'agit juste d'appliquer la méthode que tu as mentionné avec les éléments de l'array :
    Enfin, pour répondre à la dernière question tu obtiens le nom du Pokémon directement traduit grâce à la méthode :


    Je n'ai pas testé cette méthode encore.
     
    Dernière édition: 9 Janvier 2020
    yyyyj apprécie ceci.
  2. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel Team Phoenix

    Attention, les noms d'objets ne sont pas automatiquement générés dans la variable "[VAR ITEM2(0001)]" lorsque le joueur trouve un objet et qu'un texte automatique est affiché.
    Il faut au préalable appeler ceci :
    - Pour le nom du joueur -
    - Pour le nom de l'objet -
    (Et terminer à la fin par le "Script : PFM::Text.reset_variables")

    A noter qu'en natif, le pluriel (cas d'un même objet obtenu en multi exemplaires) n'est pas géré, ni le nombre d'objets obtenus. Le "[1]" de la constante ne correspond pas au nombre d'objets obtenus. (Si modifié, crash à la génération du texte.)
    Pour gérer le pluriel, il faut créer un string custom et manuellement appeler la phrase qui contiendra une variable pour le nombre d'objets obtenu et le string de l'objet obtenu écrit au pluriel.
     
    yyyyj apprécie ceci.
  3. yyyyj

    yyyyj Dresseur reconnu

    Superbe tuto, ça fait plaisir de voir que ça pourra resservir à quelqu'un :-). Juste c'est GameData::Pokemon.name(id);-).