Ediwiki

Wiki officiel de l'éditeur de carte du jeu Slayers Online

Outils pour utilisateurs

Outils du site


tutos:variables_booleens

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutos:variables_booleens [2021/01/11 00:02] – [Autres spécificités] editeursotutos:variables_booleens [2022/09/25 19:11] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ======= BOLEENS ET VARIABLES ======= ======= BOLEENS ET VARIABLES =======
- 
- 
 Bienvenue dans le tutoriel « Booléens et Variables », réalisé par __Vanivan__ ! Bienvenue dans le tutoriel « Booléens et Variables », réalisé par __Vanivan__ !
  
 Ce tutoriel fait suite au [[tutos:bases_events|Tutoriel de Symbiose]]. Ce tutoriel fait suite au [[tutos:bases_events|Tutoriel de Symbiose]].
 ---- ----
- +===== Avant-propos ===== 
- +Les variables et les booléens utilisés dans ce tutoriel servent à titre d'exemple. Si vous avez besoin d'un booléen ou d'une variable unique, la démarche à suivre est de demander à [[editeur@slayersonline.net|EditeurSO]] un numéro que vous pourrez utiliser.
- +
-===== Introduction ===== +
-Avant toute chose, je tiens à faire une mise en garde : les variables et les booléens utilisés ici servent à titre d'exemple. __Si vous avez besoin d'un booléen ou d'une variable unique, la démarche à suivre est de demander à [[editeur@slayersonline.net|EditeurSO]] un numéro que vous pourrez utiliser.__ +
- +
-{{ tutoriaux:attention.png }} +
-Les variables et booléens suivants sont dits **"publics"**, c'est-à-dire **utilisables ponctuellement**, dans le cadre d'un mini-jeu ou autre, mais ces variables et booléens **doivent impérativement être remis à 0 à la sortie de la carte**. +
- +
-^   Booléens     Variables   ^  +
-|   1 à 5         13 à 16     | +
-|   35 à 87       61 à 65     | +
-|   102 à 120     306 à 316   | +
- +
-Privilégiez de préférence, l'utilisation des variables / bools aux numéros les plus faibles. +
- +
-Il existe également certains booléens et variables qui sont **utilisables par tout le monde** mais **leurs valeurs ne peuvent être modifiées** ! Il s'agit des booléens et variables dits **"partagés"**. +
- +
-__Exemple :__ le booléen 511 permet de connaître le genre du personnage (masculin ou féminin). +
- +
-La liste complète est présente sur la page suivante : [[general:variables_partagees|Variables et booléens partagés]]. +
 ---- ----
 ===== Booléens ===== ===== Booléens =====
- 
 ==== Explications ==== ==== Explications ====
 === Qu'est-ce que c'est un "booléen" ? === === Qu'est-ce que c'est un "booléen" ? ===
-Un booléen est avant tout une variable, c'est-à-dire une inconnue dont on peut changer la valeur (voir la définition d'une variable). Mais c'est une variable qui peut prendre seulement deux valeurs différentes. Dans la vie courante, les deux valeurs d'un booléen sont le "vrai" et le "faux", ou encore le "oui" et le "non", mais sur l'éditeur, ce sont le "0" et le "1". Donc un booléen vaut soit 0, soit 1, et c'est ce qui va nous permettre de changer des états dans le jeu. +Un booléen est avant tout une variable, c'est-à-dire une **inconnue dont on peut changer la valeur**. Mais c'est une variable qui **ne peut avoir que deux valeurs différentes**. Dans la vie courante, les deux valeurs d'un booléen sont le "vrai" et le "faux", ou encore le "oui" et le "non", mais sur l'éditeur, ce sont le "0" et le "1". Donc **un booléen vaut soit 0, soit 1**, et c'est ce qui va nous permettre de changer des états dans le jeu.
 === A quoi ça sert ? === === A quoi ça sert ? ===
-Etant donné qu'il n'a que deux valeurs possibles (0 ou 1), on pourra l'utiliser pour, par exemple +Etant donné qu'il n'a que deux valeurs possibles (0 ou 1), les booléens pourront être utilisées pour : 
-  * Savoir si un joueur a ouvert un coffre, +  * Savoir si un joueur a ouvert un coffre ; 
-  * Savoir si le joueur a un ticket de bateau, +  * Savoir si le joueur a acheté un ticket de bateau ; 
-  * Savoir si le joueur a appuyé sur un bouton pour débloquer une porte, +  * Savoir si le joueur a appuyé sur un bouton pour débloquer une porte ; 
-  * ... +  * Et bien d’autres situations.
- +
 ==== Utilisation ==== ==== Utilisation ====
-Le booléen va fonctionner comme une réponse à une question fermée (question dont la réponse est "oui" ou "non"). On va donc interpréter ses valeurs comme étant "oui" et "non"+Le booléen __fonctionne comme une réponse à une question fermée__ (question dont la réponse est "oui" ou "non"). Nous allons donc interpréter ses valeurs comme étant "oui" et "non"
-  * 0 -> non +  * 0 -> Non 
-  * 1 -> oui +  * 1 -> Oui 
- +Evidemment, __un booléen est à 0 par défaut__.  En d’autres termes, si l’on souhaite savoir si un joueur a activé un évènement, la réponse par défaut sera « non »
-Evidemment, un booléen est à 0 par défaut (effectivement, si on veut savoir si le joueur a ouvert un coffre dès le début du jeualors la réponse sera non, donc le booléen à 0)+Voici un exemple de situation où le joueur devra appuyer sur un bouton pour débloquer une porte : 
-Prenons un exemple : un joueur doit appuyer sur un bouton pour permettre de débloquer une porte. +  * Au début, le joueur n'a touché à rien donc le booléen est à 0, la porte est bloquée
-  * Au début, le joueur n'a touché à rien, et le booléen est à 0. +  * Le joueur a alors deux choix, avec le booléen à 0 : 
-  * Le joueur a deux choix, avec le booléen à 0 : +    Si le joueur essaye d'ouvrir la porte, il ne peut pas. 
-    Si le joueur essaye d'ouvrir la porte, il ne peut pas. +    Si le joueur appuie sur le bouton, le booléen passe à 1 et la porte est débloquée.
-    Si le joueur appuie sur le bouton, le booléen passe à 1.+
   * Lorsque le booléen est à 1, le joueur a à nouveau deux choix :   * Lorsque le booléen est à 1, le joueur a à nouveau deux choix :
-    Si le joueur appuie sur le bouton, il ne peut pas, le booléen est déjà à 1. +    Si le joueur appuie sur le bouton, cela ne change rien, le booléen est déjà à 1. 
-    Si le joueur essaye d'ouvrir la porte, la porte s'ouvre. +    Si le joueur essaye d'ouvrir la porte, la porte s'ouvre. 
- +En résuménous pouvons définir l'évènement de la porte comme une question dont la réponse correspond à la valeur d’un booléen :
-Pour résumeron peut définir l'évènement de la porte comme une questiondont la réponse est le booléen :+
 "Le joueur a-t-il appuyé sur le bouton ?" "Le joueur a-t-il appuyé sur le bouton ?"
-* "oui" (booléen = 1) -> ouverture de la porte +  * "Oui" (booléen = 1) -> la porte est débloquée ; 
-* "non" (booléen = 0) -> rien+  * "Non" (booléen = 0) -> rien ne se passe.
  
-L'utilisation d'un booléen se fait grâce à la variable Bool[XX], XX étant un nombre (chaque booléen dans le jeu a son propre numéro) à demander à [[editeur@slayersonline.net|EditeurSO]].+Lutilisation dun booléen dans un projet se fait grâce à la variable **Bool[XX]=...**. Dans ce-cas-cile XX correspond à un nombre qui peut s’obtenir de 2 façons : 
 +  * De façon libre via les booléens publiques et les booléens partagés ; 
 +  * Pour un usage privé en contactant [[editeur@slayersonline.net|EditeurSO]].
  
-NB : lorsque vous avez plusieurs booléens à modifier dans vos CE, il est vivement conseillé de les inscrire de la façon suivante : Bool[3..6]=0. Cette solution est bien plus rapide que la modification ligne par ligne.\\ +**//NB ://** lorsque vous avez plusieurs booléens à modifier dans vos CE (et uniquement dans les CE), il est vivement conseillé de les inscrire de la façon suivante : Bool[3..6]=0. Cette solution est bien plus rapide que la modification ligne par ligne.\\ 
 __/!\ Cela ne fonctionne que pour les CE et pas pour les CD /!\__ __/!\ Cela ne fonctionne que pour les CE et pas pour les CD /!\__
- 
 ==== Exemples ==== ==== Exemples ====
-Pour ceux qui veulent des exemples concrets, je vais donner deux exemples d'évènements qui utilisent les booléens. +Pour ceux qui aiment les exemples concrets, voici deux exemples d'évènements qui utilisent les booléens.
 === Coffre === === Coffre ===
-Le premier sera l'évènement [[Evenements:coffre|"Coffre"]].+== Explication == 
 +Le but de cet événement est de **pouvoir ouvrir un coffre** et ce, **__une seule fois seulement__**. Il faut pour cela utiliser un booléen dont la valeur nous informera de l'état du coffre : s'il est ouvert ou pas.  
 +Dans cet exemple, nous allons utiliser le booléen Bool[44] : 
 +  * S'il est à 0, c'est que le personnage n'a jamais ouvert le coffre
 +  * S'il est à 1, c'est qu'il l'a déjà ouvert. 
 +**__/!\__** Le booléen 44 (ou Bool[44]) est numéro privé et déjà utilisé sur le jeu, vous ne pouvez donc pas l’ajouter dans votre projet. 
 + 
 +**//NB ://** Des commentaires sont écrits après %%//%%, ce sont des lignes qui peuvent être intégrées aux pages événements, mais ce ne sont que des commentaires que je trouve utiles pour que vous compreniez bien de quoi on parle. Pour plus d'infos sur les commentaires, voir [[Commandes:commentaires|ici]].
  
 {{ :tutoriaux:ediwiki_-_tutovanivan_-_coffre.mp4?x400 |}} {{ :tutoriaux:ediwiki_-_tutovanivan_-_coffre.mp4?x400 |}}
 +
 +== Code ==
 +<html><center><table cellspacing=2>
 +<tr height=25><th colspan=3 align=left><b><u>Page 1</u></b></th></tr>
 +<tr><td><b>Conditions d'évènements</b></td><td></td><td><b>Commande évènements</b></td></tr>
 +<tr><td>
 +<TEXTAREA ROWS=10 WRAP=soft readonly>
 +Appuie sur bouton
 +Bool[44]=0
 +//Dans la première page, nous allons indiquer ce qu’il faut faire si le booléen n'a pas été activé. C’es-dire, si c’est la première fois que le joueur appuie sur le coffre.</TEXTAREA> 
 +</TEXTAREA>
 +</td>
 +<td width=20>
 +</td>
 +<td>
 +<TEXTAREA ROWS=10 WRAP=soft readonly>
 +AddObject('potion de vie')
 +//Bien sûr, vous pouvez remplacer la potion par autre chose, ce n'est qu'un exemple ;-). Cependant, assurez-vous d’avoir l’autorisation de mettre le contenu que vous souhaitez dans le coffre.
 +Bool[44]=1
 +//Une fois que le joueur a obtenu sa récompense, le booléen passe à 1, ce qui signifie qu’il a déjà regardé dans le coffre.
 +</TEXTAREA> 
 +</td> 
 +</tr> 
 +</table> 
 + 
 +<table cellspacing=2> 
 +<tr height=25><th colspan=3 align=left>Page 2</th></tr> 
 +<tr><td><b>Conditions d'événements</b></td><td></td><td><b>Commande événements</b></td></tr> 
 +<tr><td> 
 +<TEXTAREA ROWS=10 WRAP=soft readonly>
 +Appuie sur bouton
 +Bool[44]=1
 +//La deuxième page indique maintenant ce qu’il se passera si le booléen a été activité, c’est-à-dire que le joueur a déjà regardé dans le coffre.
 +</TEXTAREA> 
 +</td> 
 +<td width=20> 
 +</td> 
 +<td> 
 +<TEXTAREA ROWS=10 WRAP=soft readonly>
 +Message('Vous avez déjà pris le contenu du coffre.')
 +</TEXTAREA> 
 +</td> 
 +</tr> 
 +</table> 
 +</center>
 +</html> 
 +
 +Voilà, c'est fini, vous venez de créer la liste des conditions et des commandes qui permettent d'ouvrir un coffre. 
 +Mais vous me direz, pourquoi utiliser un booléen ? Tout simplement pour "bloquer" le joueur, pour éviter qu'il prenne plusieurs fois le contenu du coffre. Si vous programmiez le coffre comme suit, son contenu pourrait être gagner indéfiniment et vous seriez alors accusé de tentative de triche :
 +<html>
 +</style> 
 +<center> 
 +<table cellspacing=2> 
 +<tr height=25><th colspan=3 align=left>Page 1</th></tr> 
 +<tr><td><b>Conditions d'événements</b></td><td></td><td><b>Commande événements</b></td></tr> 
 +<tr><td> 
 +<TEXTAREA ROWS=1 COLS=70 SIZE=255 WRAP=soft readonly>Appuie sur bouton</TEXTAREA> 
 +</td> 
 +<td width=20> 
 +</td> 
 +<td> 
 +<TEXTAREA ROWS=1 COLS=70 SIZE=255 WRAP=soft readonly>AddObject('potion de vie')</TEXTAREA> 
 +</td> 
 +</tr> 
 +</table>
 +</center> 
 +</html>
 +Vous l'aurez compris, cet exemple est à ne surtout pas reproduire !
  
 === Bouton === === Bouton ===
-Voici le second, l'évènement [[Evenements:bouton|"Bouton"]].+== Explication == 
 +Cet évènement permet au joueur d’appuyer sur un bouton pour débloquer une porte : 
 +  * Si Bool[44]= 0, le joueur n'a pas appuyé sur le boutonla porte est donc bloquée. 
 +  * Si Bool[44]= 1, le joueur a déjà appuyé sur le bouton, la porte est donc débloquée. 
 +Dans cet exemple, le joueur ne pourra appuyer qu'une seule fois sur le bouton. La porte sera donc constamment ouverte par la suite. 
 +**__/!\__** Le booléen 44 (ou Bool[44]) est numéro privé et déjà utilisé sur le jeu, vous ne pouvez donc pas l’ajouter dans votre projet. 
 +{{ :tutoriaux:ediwiki_-_tutovanivan_-_bouton.mp4?400 |}} 
 +== Code == 
 +<html>  
 +<style type=text/css>  
 +TEXTAREA {  
 +  background-color : white;  
 +  font-family : MS Sans Serif;  
 +  font-size : 8px;  
 +}  
 +</style>  
 +<center>  
 +<table cellspacing=2>  
 +<tr height=25><th colspan=3 align=left>Page 1</th></tr>  
 +<tr><td><b>Conditions d'événements</b></td><td></td><td><b>Commande événements</b></td></tr>  
 +<tr><td>  
 +<TEXTAREA ROWS=2 COLS=70 SIZE=255 WRAP=soft readonly>Appuie sur bouton 
 +Bool[44]=0 
 +</TEXTAREA>  
 +</td>  
 +<td width=20>  
 +</td>  
 +<td>  
 +<TEXTAREA ROWS=2 COLS=70 SIZE=255 WRAP=soft readonly>Message('Vous appuyez sur le bouton.'
 +Bool[44]=1 
 +</TEXTAREA>  
 +</td>  
 +</tr>  
 +</table>  
 +  
 +<table cellspacing=2>  
 +<tr height=25><th colspan=3 align=left>Page 2</th></tr>  
 +<tr><td><b>Conditions d'événements</b></td><td></td><td><b>Commande événements</b></td></tr>  
 +<tr><td>  
 +<TEXTAREA ROWS=2 COLS=70 SIZE=255 WRAP=soft readonly>Appuie sur bouton 
 +Bool[44]=1 
 +</TEXTAREA>  
 +</td>  
 +<td width=20>  
 +</td>  
 +<td>  
 +<TEXTAREA ROWS=2 COLS=70 SIZE=255 WRAP=soft readonly>Message('Vous avez déjà appuyé sur le bouton.')</TEXTAREA>  
 +</td>  
 +</tr>  
 +</table>  
 +</center> 
 +</html>  
 + 
 +Voilà, c’est déjà fini pour l'événement "bouton", à vous de voir pour quelles autres situations vous pouvez le reproduire =).
  
-{{ :tutoriaux:ediwiki_-_tutovanivan_-_bouton.mp4?x400 |}} 
 ==== Exercices ==== ==== Exercices ====
-Maintenant que vous avez compris le principe des booléens, et en vous inspirant des exemples donnés, je vais vous donner une petite liste d'évènements que vous pouvez gérer avec un booléen, en ordre croissant de difficulté : +Maintenant que vous avez compris le principe des booléens, voici quelques exercices pour vous entraîner 
-  - **La porte :** suite du [[Evenements:bouton|bouton]]. L'évènement pour le bouton étant déjà fait, vous n'avez plus qu'à faire l'évènement pour la porte (en utilisant le même booléen que précédemment). +  - **Le ticket de bateau :** l'évènement du PNJ qui accepte ou non d'emmener le joueur sur l'île en bateau (si le booléen est à 0, le joueur n'a pas de ticket, mais s'il est à 1, alors le joueur a un ticket et peut prendre le bateau). N'oubliez pas le système des [[commandes:inputquery|Query]]
-  - **Le ticket de bateau :** l'évènement du PNJ qui accepte ou non de vous amener sur l'île en bateau (si le booléen est à 0, le joueur n'a pas de ticket, mais s'il est à 1, alors le joueur a un ticket et peut prendre le bateau). Ne pas oublier le système des [[commandes:inputquery|Query]] (voir aussi le [[tutos:bases_events|Tutoriel de Symbiose]]).+  - **La clé** pour pouvoir sortir de prison, le joueur a besoin de la clé qui ouvre la porte. Malheureusement, celle-ci est gardée par le soldat endormi juste devant sa cellule.
  
-Envie de défi ? Essaye de reproduire ce que tu vois sur la vidéo ci-dessous !+Envie de plus défi ? Essayez de reproduire ce que vous voyez sur la vidéo ci-dessous ;-).
  
 {{ :tutos:ediwiki_-_tutovanivan_-_exercice_bool.mp4?x600 }} {{ :tutos:ediwiki_-_tutovanivan_-_exercice_bool.mp4?x600 }}
  
-Solution : {{ :tutos:ediwikitutos_2_.zip |télécharge-moi !}} :-)+Solution : {{ :tutos:ediwikitutos_2_.zip |Téléchargez-moi !}} :-) 
 + 
 +==== Booléens publics ==== 
 +Certaines booléens sont dits **"publics"**, c'est-à-dire **utilisables par tous**, que ce soit dans le cadre d'un mini-jeu ou autre. Toutefois, ces booléens **doivent impérativement être remis à 0 à la sortie de la carte**. 
 + 
 +^   Booléens publics 
 +|   1 à 5       | 
 +|   35 à 87     | 
 +|   102 à 120   | 
 + 
 +Il est important de **privilégier les booléens aux numéros les plus faibles** lorsque vous en avez besoin pour vos projets. Vous pourrez toutefois utiliser les numéros les plus forts si vous en avez besoin de beaucoup (pour éviter de passer de Bool[5] à Bool[35]). 
 + 
 +Vous pouvez également retrouver ces informations dans le [[general:recapitulatif_boolvar|récapitulatif]]. 
 + 
 +==== Booléens partagés ==== 
 +En plus des booléens publics cités précédemment, il existe également certains booléens qui sont **utilisables par tout le monde** mais **leurs valeurs ne peuvent être modifiées** ! Il s'agit des booléens dits **"partagés"**. 
 + 
 +→ __Exemple :__ le booléen 511 permet de connaître le genre du personnage (masculin ou féminin). 
 +Ces booléens ne doivent pas être modifiés, juste lus (“lecture seule”). Ils ne doivent être utilisés que dans vos CD ou en CE précédés de la fonction “Condition()”. 
 + 
 +<html><center><table cellspacing=2> 
 +<tr height=25><th colspan=3 align=left><b><u>Page 1</u></b></th></tr> 
 +<tr><td><b>Conditions d'évènements</b></td><td></td><td><b>Commande évènements</b></td></tr> 
 +<tr><td> 
 +<TEXTAREA ROWS=10 WRAP=soft readonly> 
 +Appuie sur bouton 
 +</TEXTAREA>  
 +</td>  
 +<td width=20>  
 +</td>  
 +<td>  
 +<TEXTAREA ROWS=10 WRAP=soft readonly> 
 +  //Dialogue pour personnage féminin. 
 +  Condition('Bool[511]=1'
 +  Message('Bonjour Madame.'
 +  //Dialogue pour personnage masculin. 
 +  Condition('Bool[511]=0'
 +  Message('Bonjour Monsieur.'
 +  //On reprend ensuite en non conditionnel. 
 +  Condition('1=1'
 +  Message('Comment allez-vous?'
 +</TEXTAREA>  
 +</td>  
 +</tr>  
 +</table>  
 +</center> 
 +</html>  
 + 
 +=== Genre du joueur === 
 +Le booléen qui détermine le choix du genre au début du jeu est : **Bool[511]**     
 + 
 +^ Position       ^ Choix          ^ 
 +| 1   | FEMININ    | 
 +| 0   | MASCULIN| 
 + 
 +Vous pouvez également retrouver ces informations dans le [[general:recapitulatif_boolvar|récapitulatif]].
  
 ---- ----
 ===== Variables ===== ===== Variables =====
 ==== Explications ==== ==== Explications ====
-Comme je le disais précédemment, dans la définition d'un booléen, une variable est une inconnue. Rappelez-vous de vos cours de mathsles inconnues sont ces "x" que l'on retrouve dans des équations de type "x-2=0" (dans cet exemplex vaut 2, évidemment). x n'est donc pas définie, c'est une inconnue qui peut prendre plusieurs valeurs. Par exemplesi on a "x*x=4", alors x peut prendre deux valeurs différentes, qui sont 2 et -2. Par x on va désigner une certaine valeur, que l'on ne connaît donc pas directement.  +Comme dit précédemment, dans la définition d'un booléen, une variable est une inconnue. Toutefois, dans ce cas-cicette inconnue peut avoir de nombreuses valeurs. En d’autres termes, une variable est une inconnue rattachée à une valeur qui peut changer, varier (d'où son nom). 
- + Sur l'éditeur, la valeur initiale d'une variable est 0comme pour un booléen, et il est possible de la modifier de deux façons différentes : 
-Pour résumer, la variable est une inconnue rattachée à une valeur qui peut changer, varier (d'où son nom). Sur l'éditeur, la valeur initiale d'une variable est 0 comme un booléen, et on peut la modifier de deux façons différentes : +  * En lui attribuant une certaine valeur (Ex : Variable[44]=52) ; 
-  - soit en lui attribuant une certaine valeur, par exemple : Variable[44]=52 +  * En l'incrémentant, c'est-à-dire en la modifiant selon son ancienne valeur, (Ex : Variable[44]=Variable[44]+1).
-  - soit en l'incrémentant, c'est-à-dire en la modifiant selon son ancienne valeur, exemple : Variable[44]=Variable[44]+1+
  
-Dans tous mes exemples, nous utiliserons la Variable[44], mais c'est arbitraire : ne l'utilisez pas sans l'autorisation de [[editeur@slayersonline.net|EditeurSO]].+**__/!\__** Le booléen 44 (ou Bool[44]) est numéro privé et déjà utilisé sur le jeuvous ne pouvez donc pas l’ajouter dans votre projet.
  
-NB : comme pour les booléens, lorsque vous avez plusieurs variables à modifier dans vos CE, il est vivement conseillé de les inscrire de la façon suivante : Variable[3..6]=0. Cette solution est bien plus rapide que la modification ligne par ligne.\\ +**//NB ://** comme pour les booléens, lorsque vous avez plusieurs variables à modifier dans vos CE, (et uniquement dans les CE), il est vivement conseillé de les inscrire de la façon suivante : Variable[3..6]=0. Cette solution est bien plus rapide que la modification ligne par ligne.\\ 
 __/!\ Cela ne fonctionne que pour les CE et pas pour les CD /!\__ __/!\ Cela ne fonctionne que pour les CE et pas pour les CD /!\__
  
 ==== Utilisation ==== ==== Utilisation ====
-Tout simplement comme un booléenmais qui peut prendre une panoplie de valeurs différentes, pas seulement deux. Cela implique beaucoup plus de tests en conditions, et une variable qui peut être utilisée pour beaucoup d'états différents, pas seulement deux. Les variables sont nécessaires à un jeu comme celui-ci, et sont utilisées, par exemple pour :  +La variable s’utilise comme un booléen mais elle peut prendre une panoplie de valeurs différentes, pas seulement deux, ce qui implique beaucoup plus de tests en conditions. Les variables sont nécessaires à un jeu comme celui-ci, et sont utilisées, pour :  
-  La quête principale  +  La quête principale ; 
-  Les mini-jeux  +  Les mini-jeux ; 
-  Les quêtes secondaires+  Les quêtes secondaires 
 +  * Et bien d’autres encore.
  
-==== Exemples ==== +==== Exemple ====
-=== Evènement bouton ===+
 === Le paquet du fermier === === Le paquet du fermier ===
 +//A VENIR//
  
 ==== Exercices ==== ==== Exercices ====
-Comme prévuje vais vous donner quelques "exercicesde pratique, ne vous inquiétez pas, vous ne serez pas notés dessus ! ;-). Ce sont simplement des exemples d'utilisation de variables pour l'éditeur de Slayers-Online (la liste est loin d'être exhaustive...). +Comme pour les booléensvoici quelques exercices pour vous exercer à l’utilisation des variables : 
-Evidemmentles exercices vont en ordre croissant de difficultédonc commencez par le début ;-+  * **La sphère de vie** : vous pouvez reproduire le début de la quête principalelorsque le roi vous envoie chercher la sphère de vie. Ici, il y aurait deux évènements : celui du roi et celui du prêtre. Dans cet exercice nous pourrons dire que le prêtre donne effectivement la sphère au joueur.  
 +  * **Boucle presque infinie** :  qu'est-ce qu'une boucle ? C'est un état qui se répète à l'infini, comme l'évènement clignotement. Quelle utilisation cela peut-il avoir ? Par exemple pour faire des quêtes qui contiennent quelque chose de répétitif, et dont le joueur ne peut sortir que s’il effectue une autre action. Si vous avez des idées de boucles, vous pouvez essayer de les réaliser ;-). Pour le moment, je vous en donne une... Lisez bien ! 
 +//Pour cet exercice, vous pourrez implémenter une petite quête : le joueur devra parler à un PNJ qui l'enverra chercher son chien. Une fois le chien attrapé, le joueur revient voir le PNJ, qui lui dit qu'il s'est encore enfuitEt ça continue tant que le joueur ira chercher son chienLa boucle s'arrête si le joueur va chercher l'os du chien avant d'aller chercher le chien (l'os se trouvant dans un placard du PNJ).// 
 +  * **Jeu de dés** : essayer de réaliser un jeu de dés entre le joueur et un PNJ, en deux manches gagnantes (donc trois manches au pire), en utilisant trois variables et trois booléens. 
 +//Les trois variables serviront à stocker le résultat courant du joueur, celui du PNJ, et le nombre de manches déjà jouées. Les booléens serviront à dire que la manche courante est finiedire si le joueur a gagné une manche et dire si le PNJ a gagné une manche. N'oubliez pas de prendre en compte les matchs nuls ! // 
 +==== Variables publiques ==== 
 +Comme pour les booléens, certaines variables sont dites **"publiques"**, c'est-à-dire **utilisables par tous**, que ce soit dans le cadre d'un mini-jeu ou autre. Toutefois, ces variables **doivent impérativement être remises à 0 à la sortie de la carte**.
  
-  * **La sphère de vie** : vous pouvez faire le début de la quête, lorsque le roi vous envoie chercher la sphère de vieIci, il y aurait deux évènements : celui du roi et celui du prêtre. Pour cet exemple nous pourrons dire que le prêtre donne effectivement la sphère au joueur. Pour aller plus loin, vous pouvez également faire jouer l'évènement "roi" dans la quête du paysan et dans celle laCela devient un peu plus complexe, mais ce n'est pas si dur ;-).  +  Variables publiques  ^  
-  * **Boucle presque infinie** :  Qu'est-ce qu'une boucle? C'est un état qui se répète à l'infinicomme l'évènement clignotementQuelle utilisation cela peut-il avoir ? Par exemple pour faire des quêtes qui contiennent quelque chose de répétitifet dont on ne peut sortir que si on effectue une autre actionSi vous avez des idées de boucles, vous pouvez essayer de les réaliser ;-). Pour le moment, je vous en donne une... Lisez bien ! +|   13 à 16     | 
-//Pour cet exercice, vous pourrez implémenter une petite quête : le joueur devra parler à un PNJ qui l'enverra chercher son chienUne fois le chien attrapé, le joueur revient voir le PNJ, qui lui dit qu'il s'est encore enfuit. Et ça continue tant que le joueur ira chercher son chienLa boucle s'arrête si le joueur va chercher l'os du chien avant d'aller chercher le chien (l'os se trouvant dans un placard du PNJ). +|   61 à 65     | 
-Le principe de la boucle est le suivant une fois l'action accomplie (le chien ramené), vous allez remettre la variable à la valeur qu'elle avait juste avant que l'action se fasseMais à partir du moment où on va chercher l'os, la variable changera, et ne reviendra pas à son état précédent.//+|   306 à 316   | 
 + 
 +Il est important de **privilégier les variables aux numéros les plus faibles** lorsque vous en avez besoin pour vos projetsVous pourrez toutefois utiliser les numéros les plus forts si vous en avez besoin de beaucoup (pour éviter de passer de Variable[16] à Variable[61]). 
 + 
 +Vous pouvez également retrouver ces informations dans le [[general:recapitulatif_boolvar|récapitulatif]]. 
 + 
 +==== Variables partagées ==== 
 +En plus des variables publiques citées précédemmentil existe également certaines variables qui sont **utilisables par tout le monde** mais **leurs valeurs ne peuvent être modifiées** ! Il s'agit des variables dites **"partagées"**. 
 + 
 +→ __Exemple :__ la variable 96 permet de connaître selon l'arme choisie par le joueur au début du jeu (ArcBaguette magique ou Epée). 
 +Ces variables ne doivent pas être modifiéesjuste lues (“lecture seule”). Elles ne doivent être utilisées que dans vos CD ou en CE précédées de la fonction “Condition()”. 
 + 
 +<html><center><table cellspacing=2> 
 +<tr height=25><th colspan=3 align=left><b><u>Page 1</u></b></th></tr> 
 +<tr><td><b>Conditions d'évènements</b></td><td></td><td><b>Commande évènements</b></td></tr> 
 +<tr><td> 
 +<TEXTAREA ROWS=14 WRAP=soft readonly> 
 +Appuie sur bouton 
 +</TEXTAREA>  
 +</td>  
 +<td width=20>  
 +</td>  
 +<td>  
 +<TEXTAREA ROWS=14 WRAP=soft readonly> 
 +  //Dialogue pour l'arc. 
 +  Condition('Variable[96]=1'
 +  Message('Oh ! Je vois que vous avez un arc.') 
 +  //Dialogue pour la baguette magique. 
 +  Condition('Variable[96]=2'
 +  Message('Oh ! Je vois que vous avez une baguette magique.') 
 +  //Dialogue pour l'épée. 
 +  Condition('Variable[96]=3'
 +  Message('Oh ! Je vois que vous avez une épée.'
 +  //On reprend ensuite en non conditionnel. 
 +  Condition('1=1'
 +  Message('Vous m'avez l'air bien sympathique !'
 +</TEXTAREA>  
 +</td>  
 +</tr>  
 +</table>  
 +</center> 
 +</html>  
 + 
 +=== Arme du joueur === 
 +La variable qui détermine le choix de l'arme au début du jeu est : **Variable[96]**     
 + 
 +^ Position       ^ Choix          ^ 
 +| 1   | ARC    | 
 +| 2   | BAGUETTE MAGIQUE| 
 +| 3   | EPEE     | 
 + 
 +=== Divinité du joueur === 
 +La variable qui détermine le choix de la divinité au début du jeu est : **Variable[95]**     
 + 
 +^ Position       ^ Choix          ^ 
 +| 1   | DEMONIO    | 
 +| 2   | DONBLAS| 
 +| 3   | DRANIGBA | 
 +| 4   | VANILIUS    | 
 +| 5   | DANAVA 
 +| 6   | ZANDAROS | 
 +| 7   | WILLANJIS    | 
 +| 8   | FULRULLIA 
 +| 9   | DRANIG | 
 +| 10  | BRASTOS    | 
 +| 11  | AARIBA | 
 +| 12  | NARTHE | 
 + 
 +Vous pouvez également retrouver ces informations dans le [[general:recapitulatif_boolvar|récapitulatif]].
  
-  * **Jeu de dés** : essayer de réaliser un jeu de dés entre le joueur et un PNJ, en deux manches gagnantes (donc trois manches au pire), en utilisant trois variables et trois booléens. 
-Les trois variables serviront à stocker le résultat courant du joueur, celui du PNJ, et le nombre de manches déjà jouées. Les booléens serviront à dire que la manche courante est finie, dire si le joueur a gagné une manche et dire si le PNJ a gagné une manche. 
-N'oubliez pas de prendre en compte les matchs nuls !  
 ---- ----
 ===== Variables serveur ===== ===== Variables serveur =====
 ==== Explications ==== ==== Explications ====
 +En plus des variables simples, il existe des variables dites « serveur ». La différence entre les deux est assez simple à retenir :
 +  * Variable : influence uniquement le joueur qui la modifie ;
 +  * Variable serveur : influence tous les joueurs. Elles servent donc à faire des quêtes, des évènements où tout le monde a une influence dessus.
 +Par exemple, si un joueur rentre dans une pièce et qu'il appuie sur un bouton pour ouvrir une porte, les effets sont différents selon le type de variable : \\
 +-> Variable : la porte ne s'ouvre uniquement pour ce joueur ; \\
 +-> Variable serveur : la porte s'ouvre pour tout le monde. 
  
-Comme on l'vu précédemment, les variables joueurs contiennent des entiers (des numéros, des chiffres, bref, un nombre). On sait également que certaines variables, comme [[var_char:string|%String1%]] ou autres, contiennent des string (des chaînes de caractères). Chaque variable avait donc un type associé bien défini. Or pour les variables serveur, c'est totalement différent. On peut les utiliser comme une chaîne de caractères, comme un entier ou encore comme un booléen (au choix). +==== Utilisation ==== 
-De plus, on peut faire exactement les mêmes opérations que sur les variables classiques. +Comme nous l’avons vu précédemment, les variables joueurs contiennent des nombres. Chaque variable avait donc un type associé bien défini. Or pour les variables serveur, c'est totalement différent : il est possible de les utiliser comme une chaîne de caractères, comme un entier ou encore comme un booléen (au choix).  
-L'incrémentation par exemple, si on veut stocker des entiers dans la variable serveur :+Il est donc possible de faire exactement les mêmes opérations que sur les variables classiques.\\ 
 +-> L'incrémentation par exemple, pour stocker des entiers dans la variable serveur :
   Serveur[VariableExemple] = Serveur[VariableExemple] + 1   Serveur[VariableExemple] = Serveur[VariableExemple] + 1
-Ou encore le [[commandes:inputstring]] ou le [[commandes:concat]], si l'on veut y stocker des chaînes de caractères (voir la partie sur les commandes) :+-> Ou encore les commandes [[commandes:inputstring|InputString]] ou [[commandes:concat|Concat]] pour y stocker des chaînes de caractères :
   Serveur[VariableExemple] = InputString('Rentrez le nom de la variable')   Serveur[VariableExemple] = InputString('Rentrez le nom de la variable')
- 
-Une autre chose à savoir, les variables serveur sont différentes des variables joueurs sur un autre point. Dans le jeu, les variables joueurs n'influent que sur le personnage (si votre personnage fait une quête, la variable de sa quête n'est modifiée que pour lui). Alors que les variables serveur influent sur le serveur, donc sur TOUS les personnages. Le principe d'une variable serveur est de faire des quêtes où tout le monde peut agir sur le jeu. 
-Un exemple : 
-Si un personnage rentre dans une pièce, qu'il appuie sur un bouton pour ouvrir une porte, alors les effets sont différents selon le type de variable : \\ 
--> variable joueur : la porte ne s'ouvre que pour ce joueur. \\ 
--> variable serveur : la porte s'ouvre pour tout le monde.  
  
 ==== Exemples ==== ==== Exemples ====
  
-On peut utiliser les variables serveur pour bon nombre de quêtes, ou beaucoup d'autre choses. Par exemple, on peut les utiliser pour :  +Les variables serveurs peuvent être utilisées pour de nombreuses choses comme 
-  * Limiter l'accès d'une pièce à un certain nombre de joueurs +  * Limiter l'accès d'une pièce à un certain nombre de joueurs ; 
-  * Pouvoir se marier +  * Pouvoir se marier ; 
-  * Pouvoir faire une quête où seul le premier personnage qui trouve gagne +  * Pouvoir faire une quête où seul le premier personnage qui trouve gagne ; 
-  * Faire un mini jeu où plusieurs personnages peuvent participer+  * Faire un mini jeu où plusieurs personnages peuvent participer ;
   * ...    * ... 
 +Les variables serveur sont très utiles pour une maison de guilde, un mini-jeux et d'autres fonctionnalités... Ce n'est pas tant dans les quêtes que les variables serveur vont servir, mais plutôt dans la conception d'évènements utiles aux joueurs et qui renforcent le Role Play.
  
-Les variables serveur sont très utiles pour une maison de guildeun mini-jeux et d'autres fonctionnalités... Ce n'est pas tant dans les quêtes que les variables serveur vont servirmais plutôt dans la conception de mini-jeux ou d'évènements utiles aux joueurs et qui renforcent le Role Play.+==== Particularités ==== 
 +=== Variable serveur contenant une variable joueur === 
 +Lorsque l'on utilise des variables serveurson peut en créer en intégrant des variables relatives aux joueursPar exemple : Serveur[VariableServeur%Name%]Dans ce cas-ciil existera alors autant de variables serveurs qu’il y a de noms de personnages différents.
  
-==== Autres spécificités ====+Évidemment, ces manipulations demandent beaucoup de place en mémoire. Il faut donc en parler à [[editeur@slayersonline.net|EditeurSO]] avant toute chose. Mais attention, ceci est réservé aux grosses quêtes ou aux projets assez conséquents, donc inutile d'utiliser ce type de manipulation pour une maison de guilde, par exemple.
  
-=== Variable Serveur partagée === +__Exemple :__\\ 
-Comme pour les variables et booléens joueurs, il y a aussi des variables serveurs dits **"partagées"**, dont la lecture est possible mais la modification non, sauf demande spécifique...+Prenons par exemple le système du mariage à l’église.
  
-__Exemple :__ la variable serveur Serveur[MoisVesperaeNamepermet de connaitre le mois actuel dans la langue de Vesperae.+  Serveur[Mariage%Name%]=…
  
-Voici la liste de ces variables : [[general:variables_partagees#variables_serveur_partagees|Variables et booléens partagés]].+Dans ce cas-ci, si Test (nom du joueur) se rend à l’église, la variable va se transformer en Seveur[MariageTest]. Cette variable serveur est initialisée à 0 comme toutes les autres. En fonction de sa valeur, nous pourrons alors savoir si le joueur est marié ou non.\\ 
 +-> Si la variable vaut 0, alors il n'est pas marié. Donc s’il va s'adresser au prêtre, ce dernier va lui demander s'il veut se marier. \\ 
 +-> Si la variable est différente de 0, c’est qu’elle contient donc une chaîne de caractères, qui est en fait le pseudo de la personne avec laquelle le joueur est marié
  
-=== Variable Serveur avec variable joueur === +Cela est possible parce qu’il est tout à fait possible d’incorporer des fonctions dans la construction de nouvelles variables. 
-Lorsque l'on utilise des variables serveur, on peut en créer en appelant des variables joueurs. +
-Par exemple (les exemples sont plus parlants dans ces cas-là), on va pouvoir créer une (enfin une multitude de) variable(s) serveur Serveur[VariableServeur%Name%]. Il existera alors autant de variables serveur que de noms de personnages différents+
  
-Évidemment, ces manipulations demandent beaucoup de place mémoire. Il faut donc en parler à [[editeur@slayersonline.net|EditeurSO]] avant toute chose (mais ceci est réservé aux grosses quêtes, ou aux projets assez conséquents, donc inutile d'utiliser ce type de manipulation pour une maison de guilde, par exemple).+  Serveur[InputString('Rentrez le nom de la variable')] (Prendra comme nom ce que le joueur aura écrit.
 +   
 +Ça peut paraître dingue, mais ça marche !
  
-Donc pour l'exemple, on va prendre le système de l'église et du mariage. Supposons que la variable utilisée est, si le personnage s'appelle Test, Serveur[MariageTest]. Comment créer cette variable simplement, en tenant compte du nom du joueur? Tout simplement en appelant cette fonction : Serveur[Mariage%Name%]. Cette variable est initialisée à 0, comme toutes les autres. En fonction de sa valeur, on va donc pouvoir en déduire si le personnage est marié ou non. \\ +**__/!\__**  Serveur[Test_Variable[22]] ne fonctionne pasMême chose pour les booléens.
--> Si la variable vaut 0, alors il n'est pas marié, donc lorsqu'il va s'adresser au prêtre, ce dernier va lui demander s'il veut se marier. \\ +
--> Si la variable est différente de 0, elle contient donc une chaîne de caractères, qui est en fait le pseudo de la personne avec laquelle le joueur est marié+
  
-NB : on peut tout à fait incorporer des fonctions dans la construction de nouvelles variables. Par exemple, la variable Serveur[InputString('Rentrez le nom de la variable')aura comme nom ce que le joueur aura écrit. +=== Variable Serveur se modifiant en dehors du jeu === 
-Ouiça paraît dinguemais ça marche ! +Il est également possible d'utiliser des variables qui se modifient toute seule en dehors de tout schéma de code de l'éditeurC'est la machine qui héberge le jeu qui s'en occupe. 
-NB2 : Serveur[Test_Variable[22]] ne fonctionne pas. Même chose pour les booléens.+Vous pouvez donc demander à ce que la variable serveur fasse plusieurs actions parmi les suivantes : 
 +  - **Se réinitialise à 0 à chaque relance du jeu :**\\ //-> Intégration manuelle à communiquer à EditeurSo//  \\ \\  
 +  - **Se réinitialise à 0 à chaque relance journalière (ou par semainemois, saison, année) :**\\ //-> Intégration par préfixe de la variable Serveur[ResetJour_Name], Serveur[ResetSemaine_Name], Serveur[ResetMois_Name], Serveur[ResetSaison_Name] et Serveur[ResetAnnee_Name]//  \\ \\  
 +  - **S'incrémente à chaque relance journalière (ou par semaine, mois, saison, année) :**\\ //-> Intégration par préfixe de la variable : Serveur[IncrementJour_Name], Serveur[IncrementSemaine_Name], Serveur[IncrementMois_Name], Serveur[IncrementSaison_Nameet Serveur[IncrementAnnee_Name]//  \\ \\  
 +  - **Se modifie avec un aléatoire N à N2 à chaque relance journalière (ou par semaine, mois, saison, année) :**\\ //-> Intégration par préfixe de la variable + paramètre N et N2 pour les bornes de l'aléatoire : Serveur[AleatoireJour_0_1000_Name], Serveur[AleatoireSemaine_0_1000_Name], Serveur[AleatoireMois_0_1000_Name], Serveur[AleatoireSaison_0_1000_Name] et Serveur[AleatoireAnnee_0_1000_Name]//  \\ \\
  
-=== Variable Serveur qui se modifie hors du jeu === +---- 
-Il est possible d'utiliser des variables qui se modifient toute seule en dehors de tout schéma de code de l'éditeur. C'est la machine qui héberge le jeu qui va s'en occuper.+===== Variables serveurs partagées ===== 
 +Comme pour les variables et booléens joueurs, il y a aussi des variables serveurs dits **"partagées"**, dont la lecture est possible mais la modification non, sauf demande spécifique...
  
-Vous pouvez demander à ce que la variable serveur fasse plusieurs actions comme vous pouvez le voir ci dessous.+__Exemple :__ la variable serveur Serveur[MoisVesperaeName] permet de connaitre le mois actuel dans la langue de Vesperae.
  
-__Fonctionnement :__ +Pour retrouver la listerendez-vous sur le [[general:recapitulatif_boolvar|récapitulatif]]
-  - **Se réinitialise à 0 à chaque relance du jeu :**\\ //-> Intégration manuelle à communiquer à EditeurSo//  \\ \\  + 
-  - **Se réinitialise à 0 à chaque relance journalière (ou : par semainemois, saison, année) :**\\ //-> Intégration par préfixe de la variable : Serveur[ResetJour_Name], Serveur[ResetSemaine_Name], Serveur[ResetMois_Name], Serveur[ResetSaison_Name] et Serveur[ResetAnnee_Name]//  \\ \\  +----
-  **S'incrémente à chaque relance journalière (ou : par semaine, mois, saison, année) :**\\ //-> Intégration par préfixe de la variable : Serveur[IncrementJour_Name], Serveur[IncrementSemaine_Name], Serveur[IncrementMois_Name], Serveur[IncrementSaison_Name] et Serveur[IncrementAnnee_Name]//  \\ \\  +
-  **Se modifie avec un aléatoire N à N2 à chaque relance journalière (ou : par semaine, mois, saison, année) :**\\ //-> Intégration par préfixe de la variable + paramètre N et N2 pour les bornes de l'aléatoire : Serveur[RamdomJour_0_500_Name], Serveur[RamdomSemaine_0_500_Name], Serveur[RamdomMois_0_500_Name], Serveur[RamdomSaison_0_500_Name] et Serveur[RamdomAnnee_0_500_Name]//  \\ \\ +
tutos/variables_booleens.1610319739.txt.gz · Dernière modification : 2022/09/25 19:10 (modification externe)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki