<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://www.wikirom.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=Syntaxe_du_Lua</id>
	<title>Syntaxe du Lua - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikirom.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=Syntaxe_du_Lua"/>
	<link rel="alternate" type="text/html" href="https://www.wikirom.fr/wiki/index.php?title=Syntaxe_du_Lua&amp;action=history"/>
	<updated>2026-07-06T20:54:49Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.wikirom.fr/wiki/index.php?title=Syntaxe_du_Lua&amp;diff=34021&amp;oldid=prev</id>
		<title>Agenusha : /* Fonctions sans paramètres */</title>
		<link rel="alternate" type="text/html" href="https://www.wikirom.fr/wiki/index.php?title=Syntaxe_du_Lua&amp;diff=34021&amp;oldid=prev"/>
		<updated>2011-10-25T21:38:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Fonctions sans paramètres&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Cette page a pour but d'expliquer le fonctionnement du Lua, au travers de plusieurs exemples. Suivre cette page permet de découvrir les différents aspects de ce langage. Si une information spécifique sur une fonction donnée est recherchée, se reporter à la page [[:Catégorie:Références du LUA|Références du LUA]].&lt;br /&gt;
&lt;br /&gt;
== Les Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Qu'est-ce qu'une variable ? ===&lt;br /&gt;
&lt;br /&gt;
Une variable est quelque chose que l'on nomme et qui va contenir une certaine valeur en mémoire. A chaque fois que le nom de la variable sera employé, l'ordinateur considérera la valeur de celle-ci.&lt;br /&gt;
&lt;br /&gt;
Une variable est donc un mot quelconque. Pour attribuer une valeur à une variable, il faut faire : &lt;br /&gt;
 VARIABLE = VALEUR&lt;br /&gt;
&lt;br /&gt;
Bien que l'on attribue une &amp;quot;valeur&amp;quot; à la variable, celle-ci peut être un nombre, mais également une chaîne de caractères.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Types de variables ===&lt;br /&gt;
&lt;br /&gt;
En Lua, les types de variables sont assez simples. On peut considérer qu'il existe trois types principaux de variables.&lt;br /&gt;
&lt;br /&gt;
*Variables numériques : Les nombres entiers ou décimaux&lt;br /&gt;
*Variables chaines de caractères : Une suite de caractères, donc pour faire simple, du texte&lt;br /&gt;
*Variables booléennes : Prennent la valeur &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt; (vrai) ou &amp;lt;em&amp;gt;false&amp;lt;/em&amp;gt; (faux)&lt;br /&gt;
&lt;br /&gt;
Lorsque l'on attribue une valeur à une variable, son type est automatiquement reconnu, ce qui simplifie les choses. Par exemple :&lt;br /&gt;
&lt;br /&gt;
 variable_alpha = 12.5&lt;br /&gt;
 variable_beta = 13&lt;br /&gt;
 variable_gamma = &amp;quot;Le petit oiseau&amp;quot;&lt;br /&gt;
 variable_pi = 3.1415926535898&lt;br /&gt;
 variable_bool = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La variable &amp;lt;em&amp;gt;variable_gamma&amp;lt;/em&amp;gt; est de type chaîne de caractères. Vous noterez que sa valeur (Le petit oiseau) est placée entre guillemets. Il faut toujours mettre une chaîne de caractères entre guillemets pour qu'elle soit reconnue.&lt;br /&gt;
&lt;br /&gt;
Tout texte qui n'est pas entre guillemets sera considéré comme une variable, fonction ou mot-clé.&lt;br /&gt;
&lt;br /&gt;
Notez également que les nombres décimaux sont marqués par des points, et non des virgules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Variable = Variable ===&lt;br /&gt;
&lt;br /&gt;
Puisqu'une variable conserve sa valeur, vous pouvez parfaitement attribuer à une variable la valeur d'une autre variable. Par exemple :&lt;br /&gt;
&lt;br /&gt;
 var1 = &amp;quot;chat&amp;quot;&lt;br /&gt;
 var2 = var1&lt;br /&gt;
&lt;br /&gt;
La variable &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt; aura pour valeur &amp;quot;chat&amp;quot;, et la variable &amp;lt;em&amp;gt;var2&amp;lt;/em&amp;gt; aura pour valeur la valeur de &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt;, donc également &amp;quot;chat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Notez bien qu'il n'y a pas de guillemets autour de &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt;, car c'est la valeur de la variable &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt; et non le texte &amp;quot;var1&amp;quot; qui veut être attribué à la variable &amp;lt;em&amp;gt;var2&amp;lt;/em&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restrictions sur les noms de variables ===&lt;br /&gt;
&lt;br /&gt;
Bien qu'un nom de variable puisse être ce que l'on veut, il y a tout de même des limites.&lt;br /&gt;
&lt;br /&gt;
Premièrement, une variable doit obligatoirement être dépourvue d'espaces. Si vous mettez un espace, cela sera considéré comme deux noms séparés. Si vous voulez absolument séparer les deux noms, pour que ce soit plus lisible, vous pouvez utiliser un underscore (tiret bas), comme dans les exemples précédents : &amp;lt;em&amp;gt;variable_quelconque&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, un nom de variable peut contenir des chiffres, mais ne peut pas commencer par un chiffre. Les variables &amp;lt;em&amp;gt;test1&amp;lt;/em&amp;gt;, &amp;lt;em&amp;gt;l33t&amp;lt;/em&amp;gt;, &amp;lt;em&amp;gt;tt12rf3&amp;lt;/em&amp;gt; sont corrects, mais le nom &amp;lt;em&amp;gt;12test&amp;lt;/em&amp;gt; est incorrect.&lt;br /&gt;
&lt;br /&gt;
Enfin, il existe certains noms dit &amp;quot;réservés&amp;quot;. Ces noms signifient déjà quelque chose en Lua, et ne peuvent donc pas être employés en tant que nom de variables. Les valeurs des variables booléennes, &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt; et &amp;lt;em&amp;gt;false&amp;lt;/em&amp;gt; font partie de ces mots réservés.&lt;br /&gt;
&lt;br /&gt;
     and       break     do        else      elseif&lt;br /&gt;
     end       false     for       function  if&lt;br /&gt;
     in        local     nil       not       or&lt;br /&gt;
     repeat    return    then      true      until     while&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appels de fonctions ==&lt;br /&gt;
&lt;br /&gt;
Les fonctions sont des morceaux de code qui vont accomplir une certaine tâche. Le Lua de Runes of Magic contient énormément de fonctions prédéfinies qui servent par exemple à envoyer du texte dans la fenêtre de discussion.&lt;br /&gt;
&lt;br /&gt;
Une fonction peut ou non posséder des paramètres. Les paramètres sont des valeurs qu'il faut fournir à la fonction pour qu'elle accomplisse sa tâche. Exemples : &lt;br /&gt;
&lt;br /&gt;
*ReloadUI() : Recharge l'interface utilisateur, en déconnectant de tous les canaux privés. Cette fonction ne possède aucun paramètre.&lt;br /&gt;
*SendChatMessage(X,Y) : Envoie un message sur la fenêtre de discussion, dans le canal considéré, les paramètres sont X (le message) et Y (le canal).&lt;br /&gt;
&lt;br /&gt;
Pour appeler une fonction, il suffit de marquer son nom en respectant la casse (minuscules et majuscules), et en indiquant les paramètres entre parenthèses, chaque paramètre étant séparé par une virgule. Par exemple :&lt;br /&gt;
&lt;br /&gt;
 SendChatMessage(&amp;quot;Salut la compagnie !&amp;quot;,&amp;quot;say&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Cette fonction enverra le message &amp;quot;Salut la compagnie !&amp;quot; sur le canal Dire.&lt;br /&gt;
&lt;br /&gt;
Certaines fonctions renvoient une ou plusieurs valeurs. Ce genre de fonctions sert à obtenir un résultat. Par exemple la fonction UnitName(unit) renvoie le nom de l'unité définie par le paramètre unit.&lt;br /&gt;
&lt;br /&gt;
 var_nom_cible = UnitName(&amp;quot;target&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
La variable &amp;lt;em&amp;gt;var_nom_cible&amp;lt;/em&amp;gt; aura alors pour valeur le nom de l'unité que vous avez ciblé. Si la fonction renvoie plusieurs valeurs, il faut alors mettre plusieurs variables devant pour pouvoir obtenir tous les résultats. C'est par exemple le cas de la fonction UnitLevel(unit), qui renvoie les niveaux des classes de l'unité définie par le paramètre unit.&lt;br /&gt;
&lt;br /&gt;
 var_niv_primaire, var_niv_secondaire = UnitLevel(&amp;quot;target&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Les niveaux des classes seront ainsi placés dans les variables &amp;lt;em&amp;gt;var_niv_primaire&amp;lt;/em&amp;gt; et &amp;lt;em&amp;gt;var_niv_secondaire&amp;lt;/em&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La liste des fonctions prédéfinies de Runes Of Magic, avec leur utilisation, se trouve sur la page [[:Catégorie:Fonctions Lua|Liste des fonctions Lua]].&lt;br /&gt;
&lt;br /&gt;
== Opérateurs arithmétiques et concaténation ==&lt;br /&gt;
&lt;br /&gt;
Un opérateur est une petite chose qui sert à effectuer une opération. Les opérateurs servent par exemple à effectuer des additions, assigner une valeur à une variable. Il existe différents types d'opérateurs, les premiers seront traités ici, les autres dans la partie suivante.&lt;br /&gt;
&lt;br /&gt;
=== Opérateurs arithmétiques ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opérateur&lt;br /&gt;
! Effet&lt;br /&gt;
! Exemple&lt;br /&gt;
! Résultat&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | +&lt;br /&gt;
| Addition&lt;br /&gt;
| var1 = 12 + 5&lt;br /&gt;
| &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt; prend la valeur 17&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| Soustraction&lt;br /&gt;
| var2 = 8 - 16&lt;br /&gt;
| &amp;lt;em&amp;gt;var2&amp;lt;/em&amp;gt; prend la valeur -8&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | *&lt;br /&gt;
| Multiplication&lt;br /&gt;
| var3 = 6 * 3&lt;br /&gt;
| &amp;lt;em&amp;gt;var3&amp;lt;/em&amp;gt; prend la valeur 18&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | /&lt;br /&gt;
| Division&lt;br /&gt;
| var5 = 5 / 2&lt;br /&gt;
| &amp;lt;em&amp;gt;var4&amp;lt;/em&amp;gt; prend la valeur 2.5&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | %&lt;br /&gt;
| Reste de division euclidienne&lt;br /&gt;
| var5 = 5 % 2&lt;br /&gt;
| &amp;lt;em&amp;gt;var5&amp;lt;/em&amp;gt; prend la valeur 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ^&lt;br /&gt;
| Puissance&lt;br /&gt;
| var6 = 11^2&lt;br /&gt;
| &amp;lt;em&amp;gt;var6&amp;lt;/em&amp;gt; prend la valeur 121&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bien entendu, il est possible d'utiliser ces opérateurs avec des variables au lieu de nombres directement.&lt;br /&gt;
&lt;br /&gt;
 var_result = (var1 + var2) * var3&lt;br /&gt;
&lt;br /&gt;
Les parenthèses fonctionnent comme en mathématiques, les calculs entre parenthèses seront traités en premier. Si par exemple &amp;lt;em&amp;gt;var1&amp;lt;/em&amp;gt;, &amp;lt;em&amp;gt;var2&amp;lt;/em&amp;gt; et &amp;lt;em&amp;gt;var3&amp;lt;/em&amp;gt; valent respectivement 17, -8 et 18, la variable &amp;lt;em&amp;gt;var_result&amp;lt;/em&amp;gt; vaudra 162.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Concaténation de chaînes de caractères ===&lt;br /&gt;
&lt;br /&gt;
La concaténation de chaînes de caractères permet d'accoler des chaînes de caractères, pour en former une seule. Cela permet également d'accoler des chaînes de caractères et des nombres.&lt;br /&gt;
&lt;br /&gt;
Pour concaténer deux chaînes, il faut employer placer l'opérateur &amp;lt;strong&amp;gt;..&amp;lt;/strong&amp;gt; entre les deux chaînes à accoler. Deux points à la suite. Donc par exemple, pour créer le mot &amp;quot;rateau&amp;quot;, on pourrai faire :&lt;br /&gt;
&lt;br /&gt;
 var_rateau = &amp;quot;rat&amp;quot;..&amp;quot;eau&amp;quot;&lt;br /&gt;
&lt;br /&gt;
La variable &amp;lt;em&amp;gt;var_rateau&amp;lt;/em&amp;gt; aura alors pour valeur &amp;quot;rateau&amp;quot;. Il est donc également possible de concaténer des variables pour obtenir un résultat. Seulement, si vous concaténez deux mots pour faire une phrase, il faut prendre garde à bien laisser un espace entre les deux. Voici les différentes possibilités :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Résultat&lt;br /&gt;
|-&lt;br /&gt;
|  var = &amp;quot;Chapeau&amp;quot; .. &amp;quot;blanc&amp;quot;&lt;br /&gt;
| Chapeaublanc&lt;br /&gt;
|-&lt;br /&gt;
|  var = &amp;quot;Chapeau &amp;quot; .. &amp;quot;blanc&amp;quot;&lt;br /&gt;
| Chapeau blanc&lt;br /&gt;
|-&lt;br /&gt;
|  var = &amp;quot;Chapeau&amp;quot; .. &amp;quot; blanc&amp;quot;&lt;br /&gt;
| Chapeau blanc&lt;br /&gt;
|-&lt;br /&gt;
|  var = &amp;quot;Chapeau&amp;quot; .. &amp;quot; &amp;quot; .. &amp;quot;blanc&amp;quot;&lt;br /&gt;
| Chapeau blanc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vous pouvez donc rajouter un espace à la fin du premier mot, ou un espace au début du deuxième. Enfin, vous pouvez ne laisser aucun espace, mais concaténer avec une chaîne de caractères ne contenant qu'un espace.&lt;br /&gt;
&lt;br /&gt;
La concaténation s'applique également pour les nombres, mais le résultat sera toujours une chaîne de caractères.&lt;br /&gt;
&lt;br /&gt;
 var = &amp;quot;J'ai &amp;quot; .. 2500 .. &amp;quot; pièces d'or&amp;quot; : Renvoie &amp;quot;J'ai 2500 pièces d'or&amp;quot;&lt;br /&gt;
 var = 12 .. 50 : Renvoie &amp;quot;1250&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez omettre les espaces avant et après les deux points si vous ne concaténez que des chaînes de caractère. Mais, si vous ne les mettez pas avec des chiffres, cela ne fonctionnera pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Structures conditionnelles ==&lt;br /&gt;
&lt;br /&gt;
Le Lua permet de vérifier si une condition est une vérifiée, par exemple, si la cible a moins de 80% de vie, utiliser un sort de soin faible, sinon si la cible a moins de 20% de vie, utiliser un sort de soin puissant.&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut d'abord définir ce qu'est une condition. Une condition prend la forme suivante :&lt;br /&gt;
&lt;br /&gt;
  Éléments OpérateurRelationnel Éléments&lt;br /&gt;
&lt;br /&gt;
Les éléments peuvent être des variables ou des valeurs, et peuvent également contenir des opérateurs logiques. Les différents opérateurs sont expliqués ci-dessous.&lt;br /&gt;
&lt;br /&gt;
Une condition renvoie une valeur booléenne, à savoir &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt; (vrai), ou &amp;lt;em&amp;gt;false&amp;lt;/em&amp;gt; (false)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opérateurs relationnels ===&lt;br /&gt;
&lt;br /&gt;
Les opérateurs relationnels servent à définir ce qui est vérifié dans une condition. Ce sont les opérateurs qui permettent de dire si l'on veut vérifier que ce soit égal, différent, etc.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opérateur&lt;br /&gt;
! Effet&lt;br /&gt;
! Exemple&lt;br /&gt;
! Résultat&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ==&lt;br /&gt;
| Égal à&lt;br /&gt;
| 12 == 12&amp;lt;br/&amp;gt;8 == 3&lt;br /&gt;
| true&amp;lt;br/&amp;gt;false&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ~=&lt;br /&gt;
| Différent de&lt;br /&gt;
| 12 ~= 12&amp;lt;br/&amp;gt;8 ~= 3&lt;br /&gt;
| false&amp;lt;br/&amp;gt;true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;&lt;br /&gt;
| Strictement inférieur à&lt;br /&gt;
| 12 &amp;lt; 12&amp;lt;br/&amp;gt;8 &amp;lt; 3&lt;br /&gt;
| false&amp;lt;br/&amp;gt;false&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;gt;&lt;br /&gt;
| Strictement supérieur à&lt;br /&gt;
| 12 &amp;gt; 12&amp;lt;br/&amp;gt;8 &amp;gt; 3&lt;br /&gt;
| false&amp;lt;br/&amp;gt;true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;=&lt;br /&gt;
| Inférieur ou égal à&lt;br /&gt;
| 12 &amp;lt;= 12&amp;lt;br/&amp;gt;8 &amp;lt;= 3&lt;br /&gt;
| true&amp;lt;br/&amp;gt;false&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;gt;=&lt;br /&gt;
| Supérieur ou égal à&lt;br /&gt;
| 12 &amp;gt;= 12&amp;lt;br/&amp;gt;8 &amp;gt;= 3&lt;br /&gt;
| true&amp;lt;br/&amp;gt;true&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Veuillez à bien mettre un double signe égal pour vérifier une égalité. Si par erreur vous ne mettez qu'un seul signe égal, cela ne sera plus une condition, mais une attribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Opérateurs logiques ===&lt;br /&gt;
&lt;br /&gt;
Les opérateurs logiques servent à assembler plusieurs conditions, par exemple si a est égal à b et si a est égal à c. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opérateur&lt;br /&gt;
! Effet&lt;br /&gt;
! Exemple&lt;br /&gt;
! Résultat&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | and&lt;br /&gt;
| Et&amp;lt;br/&amp;gt;Les différentes conditions doivent toutes êtres respectées pour que la valeur renvoyée soit &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt;&lt;br /&gt;
| 12 == 12 and 8 == 3&amp;lt;br/&amp;gt;1 == 1 and 2 == 2&lt;br /&gt;
| false&amp;lt;br/&amp;gt;true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | or&lt;br /&gt;
| Ou&amp;lt;br/&amp;gt;L'un des conditions doit être respectée pour que la valeur renvoyée soit &amp;lt;em&amp;gt;true&amp;lt;/em&amp;gt;&lt;br /&gt;
| 12 == 5 or 8 == 3&amp;lt;br/&amp;gt;1 == 1 or 2 == 8&lt;br /&gt;
| false&amp;lt;br/&amp;gt;true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | not&lt;br /&gt;
| Négation&amp;lt;br/&amp;gt;Renvoie l'opposé de la condition&lt;br /&gt;
| not(12 == 5)&amp;lt;br/&amp;gt;not(8 &amp;gt; 3)&lt;br /&gt;
| true&amp;lt;br/&amp;gt;false&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Si, alors, sinon ===&lt;br /&gt;
&lt;br /&gt;
Afin de vérifier une condition et d'effectuer des actions en conséquence, il faut employer la structure conditionnelle Si, alors, sinon. Cette structure a plusieurs formes, plus ou moins complètes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;strong&amp;gt;if&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;then&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_vrai&amp;lt;/em&amp;gt;  &amp;lt;strong&amp;gt;end&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La condition &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; sera donc vérifiée. Si celle-ci est vraie (true), l'action &amp;lt;em&amp;gt;action_si_vrai&amp;lt;/em&amp;gt; sera exécutée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org0.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;strong&amp;gt;if&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;then&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_vrai&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;else&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_faux&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;end&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La condition &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; sera donc vérifiée. Si celle-ci est vraie (true), l'action &amp;lt;em&amp;gt;action_si_vrai&amp;lt;/em&amp;gt; sera exécutée, sinon l'action &amp;lt;em&amp;gt;action_si_faux&amp;lt;/em&amp;gt; sera exécutée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;strong&amp;gt;if&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;then&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_vrai1&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;elseif&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;condition2&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;then&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_vrai2&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;else&amp;lt;/strong&amp;gt; &amp;lt;em&amp;gt;action_si_tout_faux&amp;lt;/em&amp;gt; &amp;lt;strong&amp;gt;end&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La condition &amp;lt;em&amp;gt;condition1&amp;lt;/em&amp;gt; sera vérifiée. Si celle-ci est vraie (true), l'action &amp;lt;em&amp;gt;action_si_vrai1&amp;lt;/em&amp;gt; sera exécutée. Si ce n'est pas le cas, la condition &amp;lt;em&amp;gt;condition2&amp;lt;/em&amp;gt; sera vérifiée. Si celle-ci est vraie (true), l'action &amp;lt;em&amp;gt;action_si_vrai2&amp;lt;/em&amp;gt; sera exécutée, sinon l'action &amp;lt;em&amp;gt;action_si_tout_faux&amp;lt;/em&amp;gt; sera exécutée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est possible de rajouter autant de elseif que voulu, pour tester différentes conditions si les précédentes sont fausses.&lt;br /&gt;
&lt;br /&gt;
Exemple de code, en appelant la fonction SendChatMessage énoncée dans un paragraphe précédent :&lt;br /&gt;
 if var1 == var2 or var2 == var3 then SendChatMessage(&amp;quot;Cela fonctionne&amp;quot;,&amp;quot;say&amp;quot;) else SendChatMessage(&amp;quot;Échec&amp;quot;,&amp;quot;say&amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Boucles ==&lt;br /&gt;
&lt;br /&gt;
Il peut parfois être utile de répéter une action plusieurs fois. Pour cela, il faut employer des instructions permettant de faire des boucles. Trois types de boucles sont détaillés ici.&lt;br /&gt;
&lt;br /&gt;
=== Tant que X, faire Y ===&lt;br /&gt;
&lt;br /&gt;
Cette boucle prend la forme suivante :&lt;br /&gt;
&lt;br /&gt;
 '''while''' &amp;lt;em&amp;gt;Condition1&amp;lt;/em&amp;gt; '''do''' &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; '''end'''&lt;br /&gt;
&lt;br /&gt;
La condition &amp;lt;em&amp;gt;Condition1&amp;lt;/em&amp;gt; sera tout d'abord vérifiée. Si elle est vraie (true), alors les &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; suivant le '''do''' seront effectuées. Puis, la condition &amp;lt;em&amp;gt;Condition1&amp;lt;/em&amp;gt; sera à nouveau testée, et cela recommencera jusqu'à ce que la condition ne soit plus respectée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple de code, en appelant la fonction SendChatMessage énoncée dans un paragraphe précédent :&lt;br /&gt;
 while var1~=var2 do SendChatMessage(&amp;quot;La variable vaut &amp;quot; .. var1,&amp;quot;say&amp;quot;) var1 = var1+1 end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Répéter X jusqu'à ce que l'on ait Y ===&lt;br /&gt;
&lt;br /&gt;
Cette boucle est similaire à la précédente. Elle a la forme :&lt;br /&gt;
&lt;br /&gt;
 '''repeat''' Instructions '''until''' Condition1 '''end'''&lt;br /&gt;
&lt;br /&gt;
Les instructions &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; seront tout d'abord effectuées. Puis, la condition &amp;lt;em&amp;gt;Condition1&amp;lt;/em&amp;gt; sera vérifiée. Si elle n'est pas respectée, les &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; sont reproduites, jusqu'à ce que la condition soit respectée. Contrairement à While-Do, les instructions sont au moins exécutées une fois.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple de code similaire au code précédent.&lt;br /&gt;
 repeat SendChatMessage(&amp;quot;La variable vaut &amp;quot; .. var1,&amp;quot;say&amp;quot;) var1 = var1+1 until var1&amp;gt;var2 end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Répéter X en allant de Y à Z ===&lt;br /&gt;
&lt;br /&gt;
Cette boucler permet de répéter une action un nombre défini de fois. Elle a la forme :&lt;br /&gt;
&lt;br /&gt;
 '''for''' &amp;lt;em&amp;gt;Compteur&amp;lt;/em&amp;gt;'''='''&amp;lt;em&amp;gt;début&amp;lt;/em&amp;gt;''','''&amp;lt;em&amp;gt;fin&amp;lt;/em&amp;gt; '''do''' &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; '''end'''&lt;br /&gt;
&lt;br /&gt;
La variable &amp;lt;em&amp;gt;Compteur&amp;lt;/em&amp;gt; prend la valeur &amp;lt;em&amp;gt;début&amp;lt;/em&amp;gt;. Si &amp;lt;em&amp;gt;Compteur&amp;lt;/em&amp;gt; inférieur ou égal à &amp;lt;em&amp;gt;fin&amp;lt;/em&amp;gt;, les &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt; sont exécutées, et la variable &amp;lt;em&amp;gt;Compteur&amp;lt;/em&amp;gt; augmente de 1. La différence entre les deux et revérifiée, et la boucle s'accomplit jusqu'à ce que la variable &amp;lt;em&amp;gt;Compteur&amp;lt;/em&amp;gt; soit égale à la valeur &amp;lt;em&amp;gt;fin&amp;lt;/em&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
[[Fichier:org5.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple de code similaire au code précédent&lt;br /&gt;
 for var1=1,4 do SendChatMessage(&amp;quot;La variable vaut &amp;quot; .. var1,&amp;quot;say&amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
Notez que ces fonctions peuvent être inscrites sur une seule ligne dans les macros, mais il préférable d'utiliser des addons pour les employer, vous pourrez ainsi écrire les boucles sur plusieurs lignes, améliorant la lisibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Déclaration de fonctions ==&lt;br /&gt;
&lt;br /&gt;
Nous avons vu précédemment qu'il est possible d'appeler des fonctions existantes. Il est également possible de créer ses propres fonctions. Par contre, ceci est utilisé la plupart du temps dans les addons uniquement, car écrire une fonction sur une seule ligne avec une macro n'est pas très pratique.&lt;br /&gt;
&lt;br /&gt;
=== Forme générale ===&lt;br /&gt;
&lt;br /&gt;
Une fonction est définie par :&lt;br /&gt;
&lt;br /&gt;
  '''function''' &amp;lt;em&amp;gt;Nom&amp;lt;/em&amp;gt;'''('''&amp;lt;em&amp;gt;paramètres&amp;lt;/em&amp;gt;''')'''&lt;br /&gt;
      &amp;lt;em&amp;gt;Instructions&amp;lt;/em&amp;gt;&lt;br /&gt;
  '''end'''&lt;br /&gt;
&lt;br /&gt;
*Le Nom de la fonction est le nom qu'il faudra marquer pour appeler la fonction. Faites attention à respecter la casse, à savoir l'emploi des majuscules et minuscules.&lt;br /&gt;
*Les paramètres sont des variables qui seront utilisables dans la fonction. Ces variables auront la valeur qui leur a été donnée en appelant la fonction. Par exemple :&lt;br /&gt;
&lt;br /&gt;
  function CollerTextes(Texte1,Texte2)&lt;br /&gt;
      SendChatMessage(Texte1..Texte2,&amp;quot;say&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Les deux paramètres sont ici Texte1 et Texte2. Appeler la fonction aura alors cette forme :&lt;br /&gt;
&lt;br /&gt;
  CollerTextes(&amp;quot;Le petit &amp;quot;, &amp;quot;chat blanc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Cette fonction aura pour effet d'afficher en canal dire &amp;quot;Le petit chat blanc&amp;quot;. Vous pouvez tester cette fonction sans macro ou addon en tapant uniquement ceci dans le canal Dire :&lt;br /&gt;
  /run function CollerTextes(Texte1,Texte2) SendChatMessage(Texte1..Texte2,&amp;quot;say&amp;quot;) end CollerTextes(&amp;quot;Le petit &amp;quot;, &amp;quot;chat blanc&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Cela tiens effectivement sur une ligne, mais ce n'est pas très joli. Cependant cela reste pratique pour tester les très petites fonctions. En effet, une fonction écrite en ligne comme ceci reste valable jusqu'à ce que le personnage se déconnecte ou face /run ReloadUI().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctions sans paramètres ===&lt;br /&gt;
&lt;br /&gt;
Toute les fonctions ne doivent pas nécessairement posséder des paramètres. La fonction [[ReloadUI]], n'en possède par exemple aucun. Pour déclarer une fonction sans paramètres, on procède de la même façon, sauf qu'il n'y a rien à mettre entre les parenthèses. Par exemple :&lt;br /&gt;
&lt;br /&gt;
 function AFKEating()&lt;br /&gt;
   SendChatMessage(&amp;quot;Je vais manger, à plus tard&amp;quot;,&amp;quot;say&amp;quot;)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Cette fonction sert ici à signaler en canal dire que l'on va manger. Pour l'appeler, il suffit alors de marquer :&lt;br /&gt;
&lt;br /&gt;
 AFKEating()&lt;br /&gt;
&lt;br /&gt;
Notez bien la présence des deux parenthèses. En effet, même s'il n'y a aucun paramètre, il faut tout de même spécifier les parenthèses.&lt;br /&gt;
&lt;br /&gt;
=== Renvoi de valeurs ===&lt;br /&gt;
&lt;br /&gt;
Les fonctions ne servent pas uniquement à accomplir une action donnée. Elles permettent aussi de récupérer un ou plusieurs résultats. Pour pouvoir dire à une fonction de renvoyer une valeur, on emploie le mot-clé '''return'''. Ce mot-clé s'emploie de la façon suivante :&lt;br /&gt;
&lt;br /&gt;
  '''return''' &amp;lt;em&amp;gt;valeur1&amp;lt;/em&amp;gt;''',''' &amp;lt;em&amp;gt;valeur2&amp;lt;/em&amp;gt;''',''' ... ''',''' &amp;lt;em&amp;gt;valeurN&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi, une fonction effectuant le calcul du périmètre d'un rectangle serait écrite ainsi :&lt;br /&gt;
&lt;br /&gt;
  function RectanglePerimeter(largeur, hauteur)&lt;br /&gt;
      return 2*(largeur+hauteur)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Donc, pour afficher le périmètre d'un rectangle, on pourrait appeler la fonction ainsi :&lt;br /&gt;
&lt;br /&gt;
  SendChatMessage(&amp;quot;Périmètre : &amp;quot; .. RectanglePerimeter(12,25),&amp;quot;say&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ceci était un exemple avec le renvoi d'une seule valeur. Si maintenant vous souhaitez en plus renvoyer l'aire du rectangle, avec la même fonction, celle-ci deviendrait par exemple :&lt;br /&gt;
&lt;br /&gt;
  function RectangleValues(largeur, hauteur)&lt;br /&gt;
      return 2*(largeur+hauteur), largeur*hauteur&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
La première valeur renvoyée serait le périmètre et la deuxième l'aire. Pour afficher cette fois-ci le résultat, il faut tout d'abord obtenir les valeurs dans deux variables séparées. En effet, il n'est plus possible de mettre directement la fonction dans un SendChatMessage si plusieurs valeurs sont renvoyées. Donc, pour afficher le résultat, il faut faire :&lt;br /&gt;
&lt;br /&gt;
  perim, area = RectangleValues(12,25)&lt;br /&gt;
  SendChatMessage(&amp;quot;Périmètre : &amp;quot; .. perim .. &amp;quot; ; Aire : &amp;quot; .. area,&amp;quot;say&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Vous pouvez tester cette fonction sans macro ou addon, en mettant la fonction en une ligne, et en entrant séparément les deux lignes :&lt;br /&gt;
&lt;br /&gt;
 /run function RectangleValues(largeur, hauteur) return 2*(largeur+hauteur), largeur*hauteur end&lt;br /&gt;
 /run perim, area = RectangleValues(12,25)&lt;br /&gt;
 /run SendChatMessage(&amp;quot;Périmètre : &amp;quot; .. perim .. &amp;quot; ; Aire : &amp;quot; .. area,&amp;quot;say&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Cependant, une fois encore, ce n'est pas très pratique, d'où un meilleur confort en utilisant des addons, qui permettent notamment de se dispenser des /run.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un dernier exemple de fonction, qui renvoie une valeur et qui n'a pas besoin de paramètres :&lt;br /&gt;
&lt;br /&gt;
 function Pi()&lt;br /&gt;
    return 3.1415926535898&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Cette fonction servirait tout simplement à obtenir la valeur de Pi, en mettant juste Pi() dans le code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Liens utiles ==&lt;br /&gt;
*{{us}} [http://www.lua.org/manual/5.1/ Lua 5.1 Reference Manual]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Lua]]&lt;/div&gt;</summary>
		<author><name>Agenusha</name></author>
		
	</entry>
</feed>