Je crée ce thread dans le but d'apporter un exemple (personnel) de structure de script que j'utilise tout le temps, bien que ça soit différent selon chaque scripteur, ça pourra également permettre de proposer les vôtres si vous avez envie de les partager.
Je vais également présenter le système de communications interne que j'utilise mais je pense que pour cette partie, beaucoup de personnes utilisent la même technique ou une très ressemblante.
Voilà la structure de départ que j'utilise quand je commence à écrire un script, je l'expliquerai par la suite :
// --------------------------------------------- NOTE ------------------------------------------------------
// VERSION : 0.1
// DATE : 23/08/09
// AUTHOR : BLACKSHADE NIGHTFIRE
// ------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
// LIBRARY FUNCTIONS
//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
// SCRIPT FUNCTIONS
//----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
// CONSTANTS
//--------------------------------------------------------------------------------------
//----------------------------------------------
// INTERNAL COMM
//----------------------------------------------
//----------------
// ME
//----------------
//----------------
//SCRIPT ADRESSES
//----------------
//----------------
// GLOBAL
//----------------
//----------------------------------------------
// UTIL
//----------------------------------------------
string PRIM_SEP = "|";
string SUB_SEP = ":";
//--------------------------------------------------------------------------------------
// GLOBAL VARIABLES | State : Default
//--------------------------------------------------------------------------------------
//----------------------------------------------
//
//----------------------------------------------
default
{
state_entry() {
llSay( 0, "Hi !" );
}
}
Sans code ça parait un peu déroutant et incompréhensible je sais, mais il faut voir le résultat avec du code que je placerais après
Je vais commencer par expliquer ma façon de codifier les fonctions/variables/constantes etc...
[ Pour les fonctions ] :
Première lettre en majuscule pour chaque mot (y compris le premier)
Exemple :
integer MaFonction() {
return -1;
}
[ Pour les variables globales ] :
La première lettre doit être un "g" en minuscule, suivit des mots qui ont leur première lettre en majuscule.
Exemple :
[ Pour les constantes ] :
Le nom doit être entièrement en majuscules et les mots séparés par un underscore.
Exemple :
[ Pour les variables locales ] :
La première lettre du premier mot doit être en minuscule et les premières lettres des mots qui suivent doivent être en majuscule.
Exemple :
vector myPos = llGetPos();
[ Pour les variables paramètres de fonctions ] :
Même principe que les variables locales.
[ Pour les states ] :
Toutes les lettres en minuscules.
Exemple :
Je vais commencer par le haut du script vide, c'est à dire :
// --------------------------------------------- NOTE ------------------------------------------------------
// VERSION : 0.1
// DATE : 23/08/09
// AUTHOR : BLACKSHADE NIGHTFIRE
// ------------------------------------------------------------------------------------------------------------
Je met toujours en premier un bloc avec quelques notes comme la version du script, l'auteur et la date de la dernière modification. Ca me permet de faire la comparaison rapide pour savoir quel script identique est le plus récent (notamment quand mon inventaire est en bordel complet

).
//----------------------------------------------------------------------------------
// LIBRARY FUNCTIONS
//----------------------------------------------------------------------------------
Après ce bloc, je place des fonctions dites "library", c'est à dire des fonctions que j'utilise souvent et qui sont présentes dans plusieurs scripts.
//----------------------------------------------------------------------------------
// SCRIPT FUNCTIONS
//----------------------------------------------------------------------------------
Après ce bloc je place des fonctions propres au script courant, c'est à dire des fonctions spécialement créées pour ce script.
//-----------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
Cette partie sert à délimiter la section des fonctions de la section suivante.
La suite se compose en 2 grandes parties, c'est à dire les constantes et les variables globales.
//--------------------------------------------------------------------------------------
// CONSTANTS
//--------------------------------------------------------------------------------------
Indique la partie des constantes qui seront divisées en plusieurs sous-parties. La première est INTERNAL COMM. Cette partie sert à placer les adresses de scripts qu'on utilisera (je reviendrais sur le principe des adresses de script après). Nous avons 3 catégories : ME, SCRIPT ADRESSES et GLOBAL.
- ME : Sert à indiquer les adresses du script courant pour être contacté.
- SCRIPT ADRESSES : Sert à indiquer les adresses des autres scripts qu'on utilisera.
- GLOBAL : Sert à indiquer une adresse globale utilisée par plusieurs scripts à la fois.
J'ai également un principe d'écriture des adresses de scripts. Toutes les constantes représentant une adresse de script doivent avoir "IC_" (pour internal communication) en début de nom puis le nom (en raccourcit) du script et le nom (en raccourcit) de la fonction de cette adresse. Exemple : integer IC_SIMSCAN_ADDKEY = 484684; Le nom du script de destination est le simscan et la fonction est d'ajouter une key dans sa mémoire.
Pour les adresses globales c'est different, il faut mettre IC_GLOBAL_ en début de nom puis seulement la fonction de cette adresse. Exemple : integer IC_GLOBAL_ADDKEY = 1111;
Pour la suite de la partie CONSTANTS, on peut voir "UTIL", c'est des constantes que je me sert très souvent dont PRIM_SEP et SUB_SEP qui sont les séparateurs utilisés pour mes listes parsées, le premier est le séparateur primaire et l'autre secondaire pour faire des listes dans des listes: Exemple : test|1:2:3|test2|3:4:5
Les autres constantes sont affichées dans des bloc par thème comme pour UTIL et INTERNAL COMM, c'est un moyen simple pour les organiser.
//--------------------------------------------------------------------------------------
// GLOBAL VARIABLES | State : Default
//--------------------------------------------------------------------------------------
On passe maintenant à la seconde partie, les variables globales. Elles sont représentées dans un bloc indiquant sur quelle state elles sont utilisées (là par exemple, c'est pour la state default). On les place ensuite dans des bloc plus petits qui sont des thèmes. Exemple on fait un bloc SIMSCAN STORAGE pour représenter les listes des avatars enregistrés.
Suite au prochain épisode...