**Language / Langue :** **FR** | [[en:yaml:variables|EN]]
====== Variables (YAML) ======
===== Déclaration des variables =====
Les variables numériques se déclarent dans ''vars:'' :
vars:
score: 0
pv:
valeur: 10
description: "Points de vie"
Les variables textuelles se déclarent dans ''vars_texte:'' :
vars_texte:
nomjoueur:
valeur: "Aventurier"
description: "Nom du joueur"
La description est affichée si le joueur examine la variable ou si elle est liée à une option permanente. Une variable numérique s'écrit ''v_score_v'' dans un texte, une variable textuelle ''t_nomjoueur_t''.
===== Portée : normale, persistante ou online =====
Le suffixe du nom détermine la portée de la variable. La section de déclaration reste ''vars:'' ou ''vars_texte:'' dans les trois cas.
^ Nom ^ Portée ^ Stockage ^
| ''score'' | Partie courante | Disparaît avec la partie |
| ''record_p'' | Persistante locale | Conservée sur l'appareil entre les parties |
| ''record_o'' | Online | Partagée entre les joueurs du même scénario chargé |
id: mon-scenario
vars:
score: 0
meilleur_score_p: 0
record_mondial_o: 0
vars_texte:
derniere_fin_p: "aucune"
message_commun_o: "Bienvenue"
''vars_online:'' reste accepté pour les anciens scénarios, mais cette syntaxe est historique. Une nouvelle variable ''_o'' doit être placée dans ''vars:'' ou ''vars_texte:''.
===== Variables persistantes _p =====
Une variable ''_p'' est liée à la clé ''id:'' du scénario et non à sa sauvegarde. Elle survit à une victoire, une défaite, un abandon et une nouvelle partie. Elle convient aux records, collections, fins déjà découvertes et compteurs utilisés par plusieurs parties.
La clé ''id:'' racine est obligatoire dès qu'un scénario utilise une variable ''_p''. Elle doit rester stable après publication. Deux traductions portant le même ID partagent leurs variables persistantes.
Une valeur déjà enregistrée est relue au début du scénario. Le premier ''init:'' qui lui attribue une valeur fixe ne l'écrase pas ; une opération relative comme ''+1'' s'applique en revanche à la valeur conservée.
Le bouton **Réinitialiser** efface les variables ''_p'' et les [[fr:yaml:succes|succès]] du scénario courant, puis lance une partie neuve.
===== Variables online _o =====
Pour une source de scénario autorisée par le serveur, une variable ''_o'' est partagée entre les joueurs. Elle est liée à l'URL ou au chemin du scénario, pas à son ''id:''. Hors de ces sources, elle reste locale à la partie.
vars:
recordscore_o:
valeur: 0
description: "Meilleur score partagé"
La variable ''nb_parties_o'' existe automatiquement et augmente à chaque lancement. Dans un export standalone, les ''_o'' deviennent locales au standalone : aucun serveur commun n'est contacté.
===== Variables dans init: =====
''init:'' peut déclarer une variable au moment d'entrer dans une salle :
init:
- var: desresultat
valeur: "%=1:6"
description: "Résultat du lancer de dé"
- var_texte: etat
valeur: "repos"
Une opération relative sur un nom encore inconnu part de 0. Il est toutefois plus clair de donner d'abord une valeur initiale explicite.
===== Réponse libre =====
Dans le ''init:'' d'une salle, ''repondre: true'' autorise le joueur à saisir une valeur :
init:
- var_texte: nomjoueur
valeur: "Aventurier"
repondre: true
Les noms de salles, alias et actions connues restent prioritaires. Une réponse numérique est enregistrée sans message technique ; prévoyez un événement pour afficher le retour voulu.
===== Modificateurs de valeur =====
^ Syntaxe ^ Effet ^
| ''0'' | Fixe la valeur à 0 |
| ''"+1"'' | Ajoute 1 |
| ''"-3"'' | Soustrait 3 |
| ''"%=1:6"'' | Tire un nombre entre 1 et 6 |
| ''"%+1:3"'' | Ajoute un nombre tiré entre 1 et 3 |
| ''"%=v_force_v:v_pvmax_v"'' | Utilise des variables comme bornes |
===== Variables système et affichage =====
^ Variable ^ Valeur ^
| ''v_resultat_v'' | Résultat du dernier tirage ''%=X:Y'' |
| ''v_valeur_v'' | Dernier code saisi dans ''avancer salle code'' |
| ''v_reponse_v'' | Valeur saisie avec ''repondre'' |
| ''v_nom_timer_v'' | Secondes restantes du timer ''nom'' |
Pour une variable ''tour'' déclarée dans le scénario, ''v_tour_v|pad2'' affiche 7 sous la forme 07.
===== Piège classique =====
Le texte d'un événement est préparé avant l'action de ce même événement. Pour annoncer un nouveau record, affichez la variable source :
evenements:
- si: "v_score_v > v_record_o_v"
faire: "record_o.=.v_score_v"
texte: "Nouveau record : v_score_v"
===== Chemins et écritures espacées (4.17) =====
Les [[fr:yaml:listes-boucles|listes et collections]] ajoutent des chemins comme ''heros.vie'', ''sac[0]'' ou ''groupe[v_position_v].vie''. Les marqueurs restent ''v_..._v'' et ''t_..._t''.
Dans ''faire:'', ''vie + 10'' est l'équivalent de ''vie.+.10''. Opérateurs : ''= + - * / // ** %%'' et tirage ''%''. ''/'' arrondit au pair en cas d'égalité, ''//'' tronque vers zéro et ''%%'' donne le modulo. La division par zéro est une erreur.
faire:
- heros.vie + 10
- score + %1:6
- score + %2:70,5:30
Le dernier exemple tire 2 avec un poids de 70 ou 5 avec un poids de 30. ''resultat'' contient le nombre tiré avant l'application de l'opérateur. Les anciennes formes restent acceptées.
''init:'' accepte aussi ''var: heros.vie'' ou ''var_texte: heros.nom'', avec ''modifiable: true'' ou ''repondre: true''. Le chemin doit traverser uniquement des collections et viser une propriété simple existante ; les indices de liste sont exclus de ces saisies.
===== Décrire les données structurées =====
Les listes, collections, propriétés et éléments peuvent recevoir une description séparée de leur valeur dans ''infos_donnees:'' (anglais : ''data_info:''). ''examiner heros.vie'' affiche la valeur et sa description. Les racines peuvent aussi être liées à des tags pour réinitialiser l'ensemble de leur contenu. Voir [[fr:yaml:listes-boucles|Descriptions et tags des données structurées]].
Dans l'éditeur, les variables online restent rangées avec les nombres ou les textes selon leur type. Un nombre ''_o'' se déclare dans ''vars'', un texte ''_o'' dans ''vars_texte''. Les anciennes déclarations ''vars_online'' restent lisibles à l'import.