Prima lezione di scripting a craft…. 24 aprile 2012

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
}

Advertisements
This entry was posted in LSL. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s