Au commencement, il y avait seulement Philip Linden.
Philip regardait fixement les sims vides,
Exempte de vie et de personnes,
Et cela était triste.
Alors, Philip eu une idée.
Peuplant le vaste monde avec des personnes,
Philip choisi de leur donner le pouvoir de changer le monde.
Ce pouvoir tenait en un mot.
Ce mot était "LSL."
Et cela était bon.
Créer un script :
Il y a 3 manières de créer un script :
1. Faites un clic droit sur le sol, et choisissez "Create" dans le menu radial. Un cube va apparaître ainsi que la fenêtre "Edit". Choisissez l'onglet "Content", cliquez sur le bouton "More" puis sur le bouton "new script". La fenêtre de l'éditeur devrait alors s'ouvrir.
2. Faites un clic droit sur un répertoire de votre inventaire et choisissez "new script". Double cliquez sur le fichier de script qui est apparut et la fenêtre de l'éditeur devrait alors s'ouvrir.
3. Créez votre script dans un éditeur externe puis copiez/collez le dans SL selon l'une des méthodes ci dessus.
Mais qu'est ce donc ? Du code est apparu.
Il devrait ressembler à cela :
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
L'introduction classique en programmation est un programme qui dit "Hello, world!". Il vous donne un point de départ pour construire vos propres programmes.
Ne paniquez pas, cela est plus facile que cela en a l'air.
L'état default (Default State)
La première chose que vous voyez dans votre nouveau script est le mot "default". C'est ce que nous appellerons un état (state). Chaque script en LSL doit contenir un état Default avec du code à l'intérieur pour fonctionner correctement. Un script peut contenir de multiples états mais nous verrons cela plus tard.
L'état Default contient le code qui est exécuter en premier. "default" dit au compilateur (le programme qui convertit votre code en quelque qui va s'exécuter dans SL) "ok les gars, on va commencer par ici." Sur la ligne suivante, vous voyez une accolade ouverte ({). Cela dit au compilateur que l'information après elle est contenu dans l'état default. Si vous suivez le bord de l'écran vers le bas, vous allez trouver l'accolade fermée de l'état default (}) sur la dernière ligne du script. L'accolade fermée dit au compilateur "le code de l'état default se termine ici". L'espace entre un couple d'accolade est appelé un scope (ou bloc).
Un bloc peut contenir d'autres bloc. Dans cette exemple, le bloc default contient les blocs state_entry et touch_start. Comme vous pouvez le voir, chaque bloc a ses propres accolades ouvertes et fermées. Tous les blocs ouvert avec une accolade doivent être fermés, ou sinon vous obtiendrez une "Syntax error" quand vous allez sauvegarder votre script.
Vous voyez, ce n'est pas si dur !
Evenements (event)
Un évènement est un bloc qui est déclenché par quelque chose qui arrive dans SL.
Event state_entry
Le premier bout de code qui fait quelque chose est inclue dans le bloc de l'évènement state_entry. Jetons un coup d'oeil de plus près :
state_entry()
{
llSay(0, "Hello, Avatar!");
}
Quand le script entre dans son état default, cela déclenche l'évènement state_entry. Et donc le code du bloc state_entry est la première chose qui est exécuté.
Le nom de l'évènement est suivie par une paire de parenthèse. Pour le moment, laissons leur leur un goût de mystère ! Une paire d'accolades marque le début et la fin du bloc state_entry. Une déclaration est contenue dans ce bloc.
Déclarations (Statements)
La ligne commençant par "llSay" est une déclaration. Les déclarations sont des morceaux de texte qui font quelque chose. Chaque déclarations doit se terminer par un point-virgule ( ; ). Pensez au point-virgule à la fin de vitre déclaration comme au point à la fin d'un phrase (et pensez au compilateur comme à un professeur de grammaire tatillon.). Habituellement, chaque déclaration consiste en une simple ligne de texte.
Sauver le script
Dans l'éditeur, cliquez sur "save". Cela compile et reset le script. Si le script est dans un objet sur le sol, vous devriez voir dans le chat un message comme celui ci :
Object: Hello, Avatar!
Non l'objet ne dit pas bonjour par coïncidence. Cela arrive parce que reseter le script déclenche l'évènement state_entry qui contient la déclaration qui commence avec llSay.
Persistance
Maintenant, dans l'esprit de la science, vous avez touché l'objet pour voir s'il dit "Hello, avatar !" encore. Au lieu de cela, il dit "Touched." Cela réponds à l'évènement touch_start . Pourquoi est ce que l'évènement state_entry ne réponds pas ?
1) Vous avez touché l'objet, donc c'est cet évènement qui réponds.
2) Notre script ne s'est pas terminé. Il est toujours dans l'état default, et rien ne s'est passé qui déclencherais l'évènement state_entry à nouveau. Meme si vous quittez SL et que vous vous reconnectez, vous trouverez toujours votre script dans son état default.
Un script LSL est "persistant." Son état persiste dans le temps. Les valeurs courantes de ses variables persistent également. Vous pouvez le reseter, bien sur, mais vous ne pouvez pas le stopper. Un script LSL cesse de persister uniquement si vous :
1) Effacez le script de l'objet qui le contient.
2) Enlevez l'objet conteneur de SL en le supprimant.
Fonctions
La déclaration commençant avec llSay est un appel de la fonction llSay. Une fonction est un bloc qui fait quelque chose d'intéressant quand vous lui donnez les informations dont elle a besoin.
Toute fonction dont le nom commence avec 2 L minuscules est une fonction Linden qui réside dans l'environnement de SL. Ces morceaux de codes sont crées par les Lindens pour fournir aux scripteurs de nouvelles possibilités.
Passage de paramètres
Les informations que vous donnez à une fonction sont appelés des paramètres.
Quand vous appelez une fonction et que vous lui donnez des informations, vous lui "passez des paramètres. Ces paramètres sont passés entre parenthèses (()). Les parenthèses et les paramètres qu'elles contiennent forment une liste de paramètres.
Les blocs ont besoin d'informations variées. Pour que cela fonctionne, vous devez passer les paramètres dont il a besoin dans l'ordre ou il les attends. Si vous passez plus d'un paramètres, séparez chacun d'eux avec une virgule. Si un paramètre est optionnel, et que vous ne l'incluez pas, le bloc lui assignera une valeur par défaut.
Si vous voulez ne passer aucuns paramètres, mettez une paire de parenthèses vides. La liste de paramètres vide dit au bloc "Ne me regarde pas ! Tu va devoir trouver tes paramètres ailleurs." (Maintenant vous commencer a suspecter le rôle des parenthèses dans l'évènement state_entry() !)
Function llSay
Dissecquons llSay ! (ou plus précisément notre appel de la fonction llSay.)
state_entry()
{
llSay(0, "Hello, Avatar!");
}
llSay est une fonction qui parle sur un canal qui peut être "entendu" par des objets ou des avatars dans un rayon de 20 mètres.
llSay attend que vous lui donniez 2 paramètres, le canal sur lequel parler et le texte a prononcer. Les avatars parlent sur le canal 0, c'est pourquoi "Hello, Avatar!" apparais sur votre écran et dans la fenêtre de chat quand le script est réinitialisé. Les objets peuvent parler sur des canaux autres que le 0, mais cela n'apparais pas à l'écran. Les canaux autres que le 0 sont pratiques pour des communications privées entre 2 (ou plus) objets.
Le texte à prononcer est encadré par des double quotes ("). Cela dit au compilateur "Tout le texte entre ces doubles quotes est une valeur simple. Prends le littéralement et donne le a la fonction tel quel."
Souvenez vous de terminer la déclaration avec un point virgule (
! Oublier le point virgule est une erreur commune en LSL. (NDT : Pas qu'en LSL d'ailleurs ^^)
évènement touch_start
L'évènement suivant que vous voyez est touch_start. A proprement parler, cet évènement ne contribue en rien au fait de dire "Hello, Avatar !" Apparament, Philip, dans sa sagesse, réalisa que les débutants aimerais voir différents type d'évènements. Ce code est très similaire au précédant :
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
Cet évènement ressemble a un appel de fonction parce que son nom est suivit d'une liste de paramètres. Actuellement, un évènement est apparenté a une fonction plutôt qu'a un appel de fonction. (Vous n'avez jamais vu une fonction. Comment l'auriez vous su ?) Au lieu de paramètres, cette liste contient une variable: integer total_number.
Comme avec une fonction, cette variable est configurée à la valeur d'un paramètre. Une différence intéressante; Second Life lui-même fournit les paramètres pour des événements ! C'est très utile, particulièrement dans les événements comme money. Dans ce cas-ci, le total_number définit le nombre de personnes touchant l'objet à ce moment-là. Les avantages de savoir le nombre de "toucheurs" peuvent sembler douteux en ce moment ! Veuillez garder à l'esprit que nous avons besoin de ce nombre pour des fonctions detected, et qu'un jour vous pouvez être heureux de le savoir !
Mais maintenant, tout ce que nous faisons c'est appeler la fonction llSay pour dire "Touched" chaque fois que qqun touche l'objet. Nous passons à llSay une liste de paramètre tout comme celle que nous avons employée avant : canal 0, et texte "touched".
Félicitations ! Vous avez avec succès déchiffré votre premier script !