Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
3. Libreria lsl
Per ogni evento c'è una "coda di eventi" per registrare le attività
che devono essere eseguite dall'oggetto (task). La coda di
eventi è limitata.
§ Notizia curiosa: se siete in una zona noscript il vostro
programma NON è in esecuzione, ma le code di eventi
continuano ad essere aggiornate (fino al loro limite).
- for(integer i=0;i<10;i++){}
- do {} while (<test>) ;
- while (<test> ) {}
- if(<test>) {}
- if(<test>) {} else {}
- @label ....... jump label
- chiamata di funzione
3. Libreria lsl
3.1 gestione stringhe
Fondamentali!!!
- x="string"
- llStringLength(x) per ottenere la sua lunghezza in caratteri
(non bytes!)
§ L'occupazione effettiva dipende dall'uso di caratteri UTF-8
estesi.
- llStringTrim(x,STRING_TRIM) per togliere spazi in testa e in
coda
- llGetSubString(x,start,end) per ottenere un pezzo di una
stringa. Nota l'uso di indici negativi per riferire agli ultimi
elementi della stringa. Nota la partenza da 0
- llDeleteSubString(x,start,end) per cancellare pezzi di stringa
- llSubStringIndex(src,pattern) cerca una stringa in un'altra
- llInsertString(dst,pos,src) inserisce una stringa dentro un'altra
§ - llMD5String(str,nonce) "firma" una stringa per sicurezza
§ - llXorBase64Strings(s1,s2) "cripta" una stringa con una
password
§ - llEscapeURL(s) trasforma una stringa in modo che sia
utilizzabile su internet
§ - llUnescapeURL(s) ritrasforma una stringa internet in formato
normale
Le più importanti:
- llGetListLength(lst)
- llList2<Type>(lst,index) estrae un elemento tipato
§ attenzione se è un vettore conviene estrarlo in genere con
(vector)llList2String(lst,index)
- llList2List(src,start,end) estrae una sottolista
- llListFindList(src, lst) cerca un insieme di elementi nella lista
- llListInsertList(dst,src,pos) inserisce una lista
- llListRandomize(lst,stride) mette una lista in ordine casuale
- llListReplaceList(dst,src,start,end)
§ Funzioni avanzate
touch_start(integer count)
3.7 llDialog
integer iLISTEN=0;
integer iCHANNEL=-3000;
default
{
touch_start(integer count)
{
key avkey=llDetectedKey(0);
list options=[ "o1", "o2", "o3" ];
iLISTEN=llListen(iCHANNEL,"",avKey,"");
llSetTimerEvent(60); // deve rispondere entro 60 secondi
llDialog(avkey, "please say something",options,iCHANNEL);
}
timer()
{
llRemoveListener(iLISTEN);
llSay(0,"Timeout please touch me again for talking");
llSetTimerEvent(0);
}
listen(integer channel, string name, key id, string str)
{
llSay(0,"you told me "+str);
llSetTimerEvent(0);
llRemoveListener(iLISTEN);
}
}