Le lezioni di scripting su opensim sono ormai possibili a livelli qualitativi equivalenti a SecondLife e per certi versi anche meglio 🙂
Anche ieri c’erano almeno 7-8 avatar molto interessati che pur nella giornata prefestiva si sono ingegnati a seguire il mio corso. Grazie a Ivan Ragu per questi appunti presi in forma di script che potete usare per recuperare il contenuto del corso se per caso l’avete perduto..
Script Running
// Questa è una linea di commento, serve appunto per commentare quello che succede dentro lo script
// la linea di commento inizia con le due barrette e viene ignorata durante l'esecuzione dello script
// Setta lo stato dell'oggetto. e' lo stato di inizio. Tutti gli script cominciano dichiarando questo stato.
// se paragoniamo uno script a un libro possiamo dire che se lo script corrisponde a un libro
// gli stati corrispondono ai capitoli.L'esempio più classico dove uno script usa più stati
// è lo script di una porta dove ci sono di solito due Stati, uno aperto quando la porta è aperta e quindi
// in quello stato ci sarà il prezzo di script e controlla la porta quando e' aperta
// è uno stato chiusa quando la porta è chiusa e lo script controlla quando la porta è chiusa.
default
// qui apro una parentesi graffa per indicare che da qui inizia parte di script relativa allo stato di default
{
// all'interno degli vari stati ci sono gli eventi dove a sua volta contengono la parte di programma che viene eseguito
// quando l'evento si verifica.
// Sempre rifacendosi all'esempio della porta all'interno dell'evento tocco
// ci sarà il pezzo di programma che si occuperà di fare aprire la porta.
// Nel nostro caso troviamo l'evento "state_entry()" che è l'evento che si verifica tutte le volte
// che si entra in un nuovo stato. Ogni stato avrà il suo "state_entry()"
// Ricapitolando: Quando eseguo lo scrpt si entra nello stato di default e quindi si verificherà l'evento state_entry.
state_entry()
// Apro ora un'altra parentesi graffa per indicare quale parte dello script deve essere eseguito quanto si verifica
// l'evento
{
// llSay è il primo vero comando e significa parla. Il contenuto all'interno delle parentesi tonde sono i parametri
// il comando llSay si aspetta due parametri, i parametri vanno separati dalla virgola.
// Il primo è su quale canale deve parlare il secondo è cosa deve dire.
// il canale zero è il canale della chat pubblica è la frase che deve dire deve essere racchiusa tra virgolette.
// tutte le le linee di comando finiscono con un punto e virgola ;
// quindi questa riga significa:
// parla sul canale zero e di "Script running"
llSay(0, "Script running");
// chiudo ora la parentesi graffa che indica che l'evento state_entry è terminato
}
// chiudo ancora la parentesi graffa per indicare che è lo stato di default è terminato.
}
Metto del testo sopra il cubo
// entra nello stato di default
default
{
// evento che si verifica quando si esegue il programma
state_entry()
{
// questa comando fa scrivere un testo sopra a un prim. E si apetta tre parametri. Il primo è la frase che deve scrivere,
// il secondo è un vettore ed è composto a sua volta dalle componenti R G B del colore. Il valore va da zero a uno
// il vettore è contenuto all'interno dei due simboli minore maggiore < > E i vaori sono separati da una virgola
// il terzo parametro indica l'opacità, più la scritta e' opaca è piu visibile. il valore va da zero a uno
// ricapitolando: Scrivi un testo con scritto CIAO e sotto ancora ciao
// (il carattere n forza di scrivere la parola sucessiva in una nuova linea
// con colore massimo delle 3 componenti RGB verra' quindi visualizzata in colore bianco e con la massima opacita' visibilita' massima.
llSetText ("CIAO! n ciao",<1,1,1>,1);
// questo comando serve per colorare il cubo e si aspetta due parametri il primo è indicato dal vettore RGB il secondo
// indica quale faccia del primo deve essere colorata ALL_SIDES è un valore costante e dice che deve colorare tutte le facce
// quindi colora il prim di rosso tutte le facce.
llSetColor (< 1,0,0>, ALL_SIDES);
// colora il prima con il colore generato dal valore 0,5 componente rossa,
// con il valore 0,5 componente verde e massima componente blu la faccia zero del cubo
// si ricorda che il cubo a sei facce ma sono numerate da zero a cinque.
llSetColor (<0.5,0.5,1>,0);
// chiudo la parentesi graffa per indicare che e' finito lo state_entry
}
// chiudo la parentesi graffa per indicare che e' finito lo stato default
}
Colori facce a caso
// inizia stato di default
default
{
// inizia state_entry
state_entry()
{
// scrive "Cambio Colore" sopra il prim con il colore blu
llSetText(" Cambio colore ",<0,0,1>,1 );
//questo comando fa partire un cronometro con cadenza il tempo espresso in secondi contenuto nel suo parametro
//quindi fa partire un cronometro che scandisce il tempo ogni mezzo secondo e serve per provocare l'evento timer
llSetTimerEvent(0.5);
//chiudo la graffa per indicare che e' finito lo stato_entry
}
//Questo evento si verifica ogni volta che scade il tempo del cronometro llSetTimerEvent
// quindi ogni mezzo secondo verra' eseguita questa parte di programma.
timer()
// Apro la graffa per indicare che inizia l'evento timer
{
// in questa riga troviamo 2 comandi nuovi:
// llFrand crea un numero casuale da zero al numero contenuto nel suo parametro.
// Il numero non sara' un numero intero ma avra' all'interno dei decimali.
// il comando llRound arrotonda il suo parametro contenuto al numero intero inferiore in sostanza elimina i valori dopo la virgola
// esempio trasforma il valore 3,76 al valore 3
// quindi ecco cosa fa questa linea:
// setta il prim di colore avente un numero Casuale da 0 a 1 come valore sia R che valore G che valore B
// e colora di quel colore una faccia nomero a caso da zero a 5.
llSetColor ( <llFrand(1),llFrand(1),llFrand(1)>, llRound (llFrand (5.9)));
// chiudo la graffa per indicare che e' finito l'evento timer
}
// chiudo la graffa per dire che e' finito lo stato di default
}
Leave a comment