LlGetNumberOfNotecardLines/fr
Jump to navigation
Jump to search
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
Description
Fonction: Key llGetNumberOfNotecardLines( string nom );276 | N° de fonction |
0.1 | Delais |
10.0 | Energie |
Demande le nombre de lignes dans la note identifiée par son nom via un évenement de type dataserver
Renvoie un Key qui sert de clé pour identifier la réponse du serveur de données via l’évènement
dataserver.
• string | nom | – | un note de l'inventaire |
Avertissements
- Cette fonction fait dormir le script pendant 0.1 secondes.
- Si nom n'est pas dans l'inventaire de la prim ou n'est pas un note alors une erreur se produit sur le canal DEBUG_CHANNEL.
- Si la note contient des objets (telles de textures ou des landmarks), une donnée invalide sera renvoyée.
Exemples
string NOTECARD_NAME = "config"; // nom de la note à lire integer notecard_line = 0; integer num_notecard_lines = 0; key notecard_request = NULL_KEY; list card_data; // les données dans la note integer check_card(string name) // Vérifie que le nom correspond bien à une note { integer i = llGetInventoryType(name); return i == INVENTORY_NOTECARD; } default { state_entry() { state init; } } state ready { touch_start(integer detected) { llOwnerSay("La note contient les données suivantes : "); llOwnerSay(llDumpList2String(card_data, "\n")); } changed(integer change) { if (change & (CHANGED_INVENTORY)) // Si quelqu’un édite la note, le script est réinitialisé { llResetScript(); } } } state init { state_entry() { if (!check_card(NOTECARD_NAME)) // Vérifie que la note existe { state error; } llSetText("initialising...", <1, 1, 1>, 0); notecard_request = NULL_KEY; notecard_line = 0; num_notecard_lines = 0; notecard_request = llGetNumberOfNotecardLines(NOTECARD_NAME); // Demande le nombre de lignes de la note llSetTimerEvent(5.0); // Sans retour dans les 5sec, alors la carte peut être vide } timer() // si l’on sort du délai, cela peut signifier que quelque chose s’est mal passé et que la note était probablement vide { llSetTimerEvent(0.0); state error; } dataserver(key query_id, string data) { if (query_id == notecard_request) // Vérifie qu’il s’agit bien d’une réponse à notre demande (contrôle non obligatoire) { llSetTimerEvent(0.0); // au moins une ligne, donc on ne s’inquiète plus. if (data == EOF) // fin de la note, on repasse dans l’état ‘ready’ { state ready; } else if (num_notecard_lines == 0) // première requête du nombre de lignes { num_notecard_lines = (integer)data; notecard_request = llGetNotecardLine(NOTECARD_NAME, notecard_line); // renvoie à présent la première ligne } else { if (data != "" && llGetSubString(data, 0, 0) != "#") // ignore les lignes vides ou celles débutant par un "#" { card_data = (card_data = []) + card_data + data; } ++notecard_line; notecard_request = llGetNotecardLine(NOTECARD_NAME, notecard_line); // Demande la ligne suivante } } // Mise à jour du texte flottant pendant l’opération llSetText((string)(notecard_line) + " lignes lues sur " + (string)num_notecard_lines , <1, 1, 1>, 1); } state_exit() { llSetText("", <0, 0, 0>, 0); } } state error { state_entry() { llOwnerSay("Erreur, vérifiez que la note [ " + NOTECARD_NAME + " ] existe et n’est pas vide"); } changed(integer change) { if (change & CHANGED_INVENTORY) { llResetScript(); } } }
Voir également
Évènement
• | dataserver | – | Evènement déclenché par un appel au serveur de données |
Fonctions
• | llGetNotecardLine | – | Renvoie une ligne d’une note |
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.