Introduzione allo Scripting

Le basi dello scripting LSL
================

Questo tutorial è pensato per chi è ancora un principiante nello scripting. Lo scripting in Second Life è visto come una sorta di ‘arte oscura’ che molti non vogliono intraprendere, così noi proveremo un pò a rompere questa credenza studiandone le basi.

Inizialmente faremo pratica con tre funzioni fondamentali nello scripting di Second Life: llSay, llSetText, e llSetPos. Proveremo anche uno degli eventi fondamentali: l’evento ‘touch’. Vi spiegherò cosa significa, quindi non vi preoccupate se per ora sembra tutto confusionale.

Per prima cosa, vi segnalo una webpage (in inglese) che potrete trovare molto utile:

http://rpgstats.com/wiki/index.php?title=Main_Page

E’ un wiki molto pratico, specialmente quando iniziate a fare progressi, anche se inizialmente potrebbe mandarvi in confusione. E’ un buon sito da usare come riferimento mentre studiate.

Ora, vediamo le basi. Il linguaggio di scripting in Second Life è chiamato LSL (Linden Scripting Language).
Gli script sono piccoli programmi che compongono la maggior parte degli effetti in Second Life.
Magari già sapete che qualunque cosa in SL è composta da PRIMS, o oggetti primitivi. Gli script si collocano all’interno dei prims.
Avrete già visto effetti particellari nelle fontane, veicoli complessi, oppure i vendor.Tutte queste cose sono composte da script, anche molto complessi, che richiedono molta conoscenza. Naturalmente in questo tutorial non faremo ancora nulla di così complicato!

Proviamo a collocare uno script dentro un prim.
Create un prim di fronte a voi.
Ora è necessario editarlo in modo da scriverci dentro uno script. Se non è selezionato, cliccateci sopra col tasto destro e poi su Edit.
Una volta selezionato, aprite la scheda ‘Content’ nel menu Edit.
Vi accorgerete che non c’è nessun contenuto. E’ possibile inserire qualunque cosa in un prim – per esempio altri prims. Noi per ora inseriremo uno script.

Adesso cliccate sul tasto ‘New Script’, e nel prim verrà creato un nuovo script.
Aprite lo script cliccandoci sopra 2 volte, oppure cliccate col tasto destro e selezionate Open.

Quello che vedete è come appare uno script in LSL. Scrivendo i giusti parametri, è possibile creare comportamenti interessanti.
Lo script che vedete è un’introduzione. Contiene EVENTI (events), FUNZIONI (functions), e STATI (states) – sono parole che incontrerete spesso.
Cliccando su qualunque riga del programma, vedrete che in fondo, appena sopra la scheda ‘insert’, appare la posizione (column) in cui vi trovate. Questo è incredibilmente utile per navigare negli script, in particolare durante i tutorial come questo!

Noterete inoltre, se cliccate alla fine della parola ‘default’, che apparirà ‘line 0 column 7′ (riga 0 colonna 7). E’ una particolarità che molti compilatori utilizzano.
Ciascun carattere, spazi inclusi, risiede nella sua colonna, in modo che il testo è formattato in modo molto chiaro.

Adesso diamo un’occhiata allo script.
Per prima cosa, lo stato (state) descrive, letteralmente, lo ‘stato’ in cui lo script si trova in quel momento. Qui lo stato di apertura è ‘default’ (predefinito). Per ogni script che componete dovrete includere uno stato di default, che è lo stato in cui lo script avrà inizio.
Così, quando eseguite lo script, è come se dicesse ‘devo iniziare nello stato predefinito. adesso cosa faccio in questo stato?’
In questo caso, quello che dovrà fare è ciò che c’è scritto in mezzo alle parentesi graffe {}.

Nota: ci sono diversi tipi di parentesi, ed è importante distinguerle perchè hanno utilizzi diversi: parentesi rotonde (), graffe {}, quadre [] e triangolari <>. Cercherò di spiegare le loro funzioni man mano che le incontriamo.

Gli script sono ‘case sensitive’. Se usate lettere maiuscole dove non sono richieste, per intenderci, non funzioneranno. Molti comandi sono composti sia da lettere maiuscole che da minuscole, che vanno quindi inserite al posto giusto.

La prima cosa che incontriamo all’interno delle parentesi graffe è un EVENTO.
Come suggerisce il nome, un evento è ‘qualcosa che innesca qualcos’altro’.
Nel nostro caso il primo evento è ‘state_entry()’. Nota: gli eventi all’interno dello script sono colorati in blu.
‘state_entry’ significa: ‘quando entro in questo stato, fai tutto ciò che c’è dentro le parentesi graffe {}’.

Vi ricorderete che lo stato di default comprende ciò che succede appena eseguite lo script, quindi il contenuto delle parentesi graffe viene eseguito una volta sola, quando il programma viene lanciato.
Per questo motivo, nell’esempio preimpostato, la scritta ‘Hello, Avatar!’ appare non appena lo script viene creato.

La prossima parte scritta in blu è l’evento successivo del nostro script: touch_start(integer total_number). Significa: ‘quando qualcuno tocca questo prim, fai tutto ciò che c’è dentro le parentesi graffe {}’.
Questo permetterà di eseguire cose interessanti quando il prim viene cliccato.
Provate dunque a cliccare sul prim.
‘Touched’.
Non essendoci restrizioni, funziona anche se viene cliccato da altri avatar.

(Ricordatevi che potete rendere muti gli oggetti, se vi infastidiscono, cliccando col tasto destro e selezionando Mute)

A questo punto modifichiamo lo script.
Vi accorgerete che modificare gli script già esistenti – anche i vostri – sarà di grande utilità per ottenere risultati efficienti.
Editate nuovamente il prim, tornate nella scheda Content e riaprite lo script.
Cancellate da ‘Line 2 Column 0’ a ‘Line 5 Column 5’, in pratica la parte:

state_entry()
{
llSay(0, “Hello, Avatar!”);
}

Ora siamo pronti per studiare le FUNZIONI.

llSay è una funzione. Tutte le funzioni iniziano con ‘ll’, che sta per Linden Labs.
Una funzione stabilisce ‘cosa deve fare’ lo script.
Quella che stiamo studiando ora, llSay, serve per ‘dire qualcosa in chat’.
Provate a modificare la parola “Touched.” Potete scrivere qualunque cosa, prestando attenzione a restare all’interno delle virgolette “” e a non aggiungerne altre. Nota: evitate il simbolo £.
Se aggiungete /me all’inizio, il prim parlerà in terza persona.
Una volta effettuate le modifiche, cliccate il tasto ‘Save’, e attendete che lo script venga compilato (per chi non si intende di programmazione, compilare significa ‘rendere in forma comprensibile per il computer’).
Subito dopo chiudete pure le finestre aperte, sia lo script che Edit.
Ora cliccate il vostro prim, e osservate cosa succede: dirà ciò che avete scritto.

A questo punto avete appena utilizzato la prima delle tre funzioni che vedremo.

Dovreste aver notato il punto e virgola ; alla fine della riga: è di vitale importanza nella composizione degli script. In pratica serve per separare un’istruzione dall’altra.

Nella sintassi llSay(0, “Touched.”); lo 0 corrisponde al CANALE in cui l’oggetto sta parlando.
E’ possibile impostare diversi canali; lo 0 corrisponde alla chat normale, dove gli avatar parlano.
Impostare un canale diverso può essere utile per esempio quando più oggetti devono dialogare tra loro in modo silenzioso.

La parte compresa tra le virgolette “” è chiamata STRINGA (string). Una stringa comprende essenzialmente il modo in cui LSL si comporta con le frasi testuali: le vede come stringhe di caratteri.
E’ possibile mettere letteralmente insieme più stringhe. Provate a inserire la seguente riga sotto quella che avete appena modificato:

llSay(0, “Questo prim è stato” + “toccato.”);

Le due stringhe sono state collegate, o ‘concatenate’ per usare il termine tecnico. Tuttavia potete notare che, nel risultato, c’è un piccolo difetto. Provate a risolverlo da voi.

Ci sono molte ragioni per cui è utile che gli oggetti parlino. Per esempio, un oggetto può dire ad un altro il momento in cui si muove, così il ricevente può seguirlo. Oppure, quando entrate in casa vostra, la porta potrebbe ordinare alle luci di accendersi!

La prossima funzione che vedremo è llSetText.

Cancellate le due righe di llSay, e sostituitele con la riga seguente:

llSetText(“Testo”, <0.0, 1.0, 0.0>, 1.0);

Salvate dunque lo script e chiudetelo.
Cliccate sul prim e osservate cosa succede. Il testo apparirà sopra di esso.
Nota: il testo è stato posizionato in modo permanente, e resterà sopra il prim anche se eliminate lo script! Questo accade perchè il testo diventa proprietà del prim e non più una funzione dello script.

Ora riaprite lo script.
Naturalmente potete cambiare come volete il testo nelle virgolette. Se non scrivete nulla e lasciate llSetText(“”, <0.0, 1.0, 0.0>, 1.0); il testo sul prim sarà eliminato non appena cliccate su di esso.
Potete anche installare lo script in un oggetto che indossate, per esempio un orecchino; in questo caso la scritta apparirà sulla vostra testa.

La parte all’interno delle parentesi triangolari <> è un VETTORE che stabilisce il colore.
Il primo numero è la quantità di ROSSO, il secondo sta per il VERDE, il terzo per il BLU.
1.0 è il valore massimo, 0.0 il minimo.
Invece, l’ultimo numero fuori dalle parentesi triangolari stabilisce la TRASPARENZA del testo. Se impostato a 1.0, il testo sarà completamente visibile, viceversa diminuendo il valore diminuirà anche la visibilità.
Così, se volete ottenere un testo porpora semi-trasparente, dovrete impostare:

llSetText(“Testo porpora”, <0.5, 0.0, 0.5>, 0.5);

Abbiamo già visto un bel pò di parametri, se volete potete provare a modificarli ed osservare i risultati.

Procediamo ora con una terza funzione: llSetPos.
Questa permette di muovere un prim in una posizione desiderata.

Editate di nuovo il vostro prim. Nella finestra di edit, in cima allo schermo, vedrete tre numeri scritti rispettivamente in rosso, verde e blu: sono le coordinate spaziali X, Y e Z del prim. Queste resteranno visibili anche quando aprite la finestra dello script.

In fondo al vostro script, aggiungete un commento: cominciate la riga con due barre //, così il programma ignorerà ciò che viene scritto di seguito.
Dopo le barre scrivete le vostre coordinate attuali, per esempio:

//il mio vettore attuale è <75.937, 138.664, 120.405>

I commenti sono utili per tenere nota di quello che state facendo, in particolare negli script complessi.

Ora, al posto delle righe di llSetText, inserite la seguente:

llSetPos(<75.937, 138.664, 120.405>);

ovviamente sostituendo le coordinate con le vostre, che avevate riportato nel commento.
Prestate attenzione alla punteggiatura, che sia al posto giusto come da esempio.

Adesso cambiate il terzo numero, incrementandolo di 1 (per esempio se era 120.405, cambiatelo in 121.405).
Salvate e chiudete sia la finestra di script sia quella di edit.

Provate ora a cliccare sul prim: lo vedrete alzarsi di 1 metro!

La funzione llSetPos può essere molto utile, pur avendo dei limiti: tenete presente che non può spostare un oggetto oltre 10 metri di distanza.
E’ tuttavia possibile usare un espediente: se volete spostare l’oggetto per distanze maggiori, potete ripetere la funzione più volte.

Bene, finora abbiamo visto le basi di LSL, e tre importanti funzioni.
Continuando a studiare LSL, vi accorgerete che molta della complessità consiste nell’interazione con gli altri oggetti.

Buon scripting a tutti!

Lithion Miles
(a disposizione per qualsiasi chiarimento)

Indroduzione allo scripting- Parte 1

Cosa e’  LSL?
========

LSL e’ il linguaggio di programmazione dei Linden Lab. La sua struttura e’ basata su  Java e C.

Gli script sono una serie di istruzioni che vengono immesse all’interno di un object al fine di far interagire quest’ultimo con l’avatar o con l’ambiente. Possono infatti far cambiare colore,forma posizione o possono riconoscere se sono toccati e da chi.

Uno script rende in grado un object di ascoltare quelo che dite e persino di rispondere appropriatamente-

Se voi siete dei builder in SL  dovete sapere che tutto quello che voi determinate con la edit tab puo’ essere determinato anche attraverso uno script. Tutte le interazioni che voi vedete accadere tra object o tra object e avatar accadono a causa di script.

E’ vitale che voi abbiate una conoscenza di base di SL e del building per comprendere alcuni aspetti dello scripting

Gli script funzionano solo se inseriti in un prim o in un object

Creare il Vostro primo Script
==============
Poiche’ gli script funzionano solo all’interno di un object, prima di tutto dovete infatti gia’ sapere come creare un prim e inserire dentro di esso uno script

Ovviamente dovete essere in una land dove sia permesso il building, per esempio una Sandbox-
Dato per scontato che sappiate farlo…..:)….fatelo!!!
Nella finestrella che appare, scegliete la “Content” tab. Questa tab elenca infatti script,notecard o altri object contenuti nell’object.
Adesso premete “new script” per aggiungere un nuovo script.: cosi’ facendo aprirete l’editor LSL con uno script di default
All’interno della content tab vedrete infatti “new script”  : cliccate su di esso per aprirlo.

Appena lo avete creato avrete di sicuro visto nella chat le parole “Hello Avatar” – Ora chiudete completamente la finestrella del building (non lo script editor) e provate a toccare l’object con il mouse……”Touched”

Congratulazioni! Avete creato il Vostro primo Script!!!

Introduzione allo scripting – parte 2

Questo tutorial è pensato per chi è ancora un principiante nello scripting. Lo scripting in Second Life è visto come una sorta di ‘arte oscura’ che molti non vogliono intraprendere, così noi proveremo un pò a rompere questa credenza studiandone le basi.

Inizialmente faremo pratica con tre funzioni fondamentali nello scripting di Second Life: llSay, llSetText, e llSetPos. Proveremo anche uno degli eventi fondamentali: l’evento ‘touch’. Vi spiegherò cosa significa, quindi non vi preoccupate se per ora sembra tutto confusionale.

Per prima cosa, vi segnalo una webpage (in inglese) che potrete trovare molto utile:
http://rpgstats.com/wiki/index.php?title=Main_Page
E’ un wiki molto pratico, specialmente quando iniziate a fare progressi, anche se inizialmente potrebbe mandarvi in confusione. E’ un buon sito da usare come riferimento mentre studiate.

Ora, vediamo le basi. Il linguaggio di scripting in Second Life è chiamato LSL (Linden Scripting Language).
Gli script sono piccoli programmi che compongono la maggior parte degli effetti in Second Life.
Magari già sapete che qualunque cosa in SL è composta da PRIMS, o oggetti primitivi. Gli script si collocano all’interno dei prims.
Avrete già visto effetti particellari nelle fontane, veicoli complessi, oppure i vendor.Tutte queste cose sono composte da script, anche molto complessi, che richiedono molta conoscenza. Naturalmente in questo tutorial non faremo ancora nulla di così complicato!

Proviamo a collocare uno script dentro un prim.
Create un prim di fronte a voi.
Ora è necessario editarlo in modo da scriverci dentro uno script. Se non è selezionato, cliccateci sopra col tasto destro e poi su Edit.
Una volta selezionato, aprite la scheda ‘Content’ nel menu Edit.
Vi accorgerete che non c’è nessun contenuto. E’ possibile inserire qualunque cosa in un prim – per esempio altri prims. Noi per ora inseriremo uno script.

Adesso cliccate sul tasto ‘New Script’, e nel prim verrà creato un nuovo script.
Aprite lo script cliccandoci sopra 2 volte, oppure cliccate col tasto destro e selezionate Open.

Quello che vedete è come appare uno script in LSL. Scrivendo i giusti parametri, è possibile creare comportamenti interessanti.
Lo script che vedete è un’introduzione. Contiene EVENTI (events), FUNZIONI (functions), e STATI (states) – sono parole che incontrerete spesso.
Cliccando su qualunque riga del programma, vedrete che in fondo, appena sopra la scheda ‘insert’, appare la posizione (column) in cui vi trovate. Questo è incredibilmente utile per navigare negli script, in particolare durante i tutorial come questo!

Noterete inoltre, se cliccate alla fine della parola ‘default’, che apparirà ‘line 0 column 7′ (riga 0 colonna 7). E’ una particolarità che molti compilatori utilizzano.
Ciascun carattere, spazi inclusi, risiede nella sua colonna, in modo che il testo è formattato in modo molto chiaro.

Adesso diamo un’occhiata allo script.
Per prima cosa, lo stato (state) descrive, letteralmente, lo ‘stato’ in cui lo script si trova in quel momento. Qui lo stato di apertura è ‘default’ (predefinito). Per ogni script che componete dovrete includere uno stato di default, che è lo stato in cui lo script avrà inizio.
Così, quando eseguite lo script, è come se dicesse ‘devo iniziare nello stato predefinito. adesso cosa faccio in questo stato?’
In questo caso, quello che dovrà fare è ciò che c’è scritto in mezzo alle parentesi graffe {}.

Nota: ci sono diversi tipi di parentesi, ed è importante distinguerle perchè hanno utilizzi diversi: parentesi rotonde (), graffe {}, quadre [] e triangolari <>. Cercherò di spiegare le loro funzioni man mano che le incontriamo.

Gli script sono ‘case sensitive’. Se usate lettere maiuscole dove non sono richieste, per intenderci, non funzioneranno. Molti comandi sono composti sia da lettere maiuscole che da minuscole, che vanno quindi inserite al posto giusto.

La prima cosa che incontriamo all’interno delle parentesi graffe è un EVENTO.
Come suggerisce il nome, un evento è ‘qualcosa che innesca qualcos’altro’.
Nel nostro caso il primo evento è ‘state_entry()’. Nota: gli eventi all’interno dello script sono colorati in blu.
‘state_entry’ significa: ‘quando entro in questo stato, fai tutto ciò che c’è dentro le parentesi graffe {}’.

Vi ricorderete che lo stato di default comprende ciò che succede appena eseguite lo script, quindi il contenuto delle parentesi graffe viene eseguito una volta sola, quando il programma viene lanciato.
Per questo motivo, nell’esempio preimpostato, la scritta ‘Hello, Avatar!’ appare non appena lo script viene creato.

La prossima parte scritta in blu è l’evento successivo del nostro script: touch_start(integer total_number). Significa: ‘quando qualcuno tocca questo prim, fai tutto ciò che c’è dentro le parentesi graffe {}’.
Questo permetterà di eseguire cose interessanti quando il prim viene cliccato.
Provate dunque a cliccare sul prim.
‘Touched’.
Non essendoci restrizioni, funziona anche se viene cliccato da altri avatar.

(Ricordatevi che potete rendere muti gli oggetti, se vi infastidiscono, cliccando col tasto destro e selezionando Mute)

A questo punto modifichiamo lo script.
Vi accorgerete che modificare gli script già esistenti – anche i vostri – sarà di grande utilità per ottenere risultati efficienti.
Editate nuovamente il prim, tornate nella scheda Content e riaprite lo script.
Cancellate da ‘Line 2 Column 0’ a ‘Line 5 Column 5’, in pratica la parte:

state_entry()
{
llSay(0, “Hello, Avatar!”);
}

Ora siamo pronti per studiare le FUNZIONI.

llSay è una funzione. Tutte le funzioni iniziano con ‘ll’, che sta per Linden Labs.
Una funzione stabilisce ‘cosa deve fare’ lo script.
Quella che stiamo studiando ora, llSay, serve per ‘dire qualcosa in chat’.
Provate a modificare la parola “Touched.” Potete scrivere qualunque cosa, prestando attenzione a restare all’interno delle virgolette “” e a non aggiungerne altre. Nota: evitate il simbolo £.
Se aggiungete /me all’inizio, il prim parlerà in terza persona.
Una volta effettuate le modifiche, cliccate il tasto ‘Save’, e attendete che lo script venga compilato (per chi non si intende di programmazione, compilare significa ‘rendere in forma comprensibile per il computer’).
Subito dopo chiudete pure le finestre aperte, sia lo script che Edit.
Ora cliccate il vostro prim, e osservate cosa succede: dirà ciò che avete scritto.

A questo punto avete appena utilizzato la prima delle tre funzioni che vedremo.

Dovreste aver notato il punto e virgola ; alla fine della riga: è di vitale importanza nella composizione degli script. In pratica serve per separare un’istruzione dall’altra.

Nella sintassi llSay(0, “Touched.”); lo 0 corrisponde al CANALE in cui l’oggetto sta parlando.
E’ possibile impostare diversi canali; lo 0 corrisponde alla chat normale, dove gli avatar parlano.
Impostare un canale diverso può essere utile per esempio quando più oggetti devono dialogare tra loro in modo silenzioso.

La parte compresa tra le virgolette “” è chiamata STRINGA (string). Una stringa comprende essenzialmente il modo in cui LSL si comporta con le frasi testuali: le vede come stringhe di caratteri.
E’ possibile mettere letteralmente insieme più stringhe. Provate a inserire la seguente riga sotto quella che avete appena modificato:

llSay(0, “Questo prim è stato” + “toccato.”);

Le due stringhe sono state collegate, o ‘concatenate’ per usare il termine tecnico. Tuttavia potete notare che, nel risultato, c’è un piccolo difetto. Provate a risolverlo da voi.

Ci sono molte ragioni per cui è utile che gli oggetti parlino. Per esempio, un oggetto può dire ad un altro il momento in cui si muove, così il ricevente può seguirlo. Oppure, quando entrate in casa vostra, la porta potrebbe ordinare alle luci di accendersi!

La prossima funzione che vedremo è llSetText.

Cancellate le due righe di llSay, e sostituitele con la riga seguente:

llSetText(“Testo”, <0.0, 1.0, 0.0>, 1.0);

Salvate dunque lo script e chiudetelo.
Cliccate sul prim e osservate cosa succede. Il testo apparirà sopra di esso.
Nota: il testo è stato posizionato in modo permanente, e resterà sopra il prim anche se eliminate lo script! Questo accade perchè il testo diventa proprietà del prim e non più una funzione dello script.

Ora riaprite lo script.
Naturalmente potete cambiare come volete il testo nelle virgolette. Se non scrivete nulla e lasciate llSetText(“”, <0.0, 1.0, 0.0>, 1.0); il testo sul prim sarà eliminato non appena cliccate su di esso.
Potete anche installare lo script in un oggetto che indossate, per esempio un orecchino; in questo caso la scritta apparirà sulla vostra testa.

La parte all’interno delle parentesi triangolari <> è un VETTORE che stabilisce il colore.
Il primo numero è la quantità di ROSSO, il secondo sta per il VERDE, il terzo per il BLU.
1.0 è il valore massimo, 0.0 il minimo.
Invece, l’ultimo numero fuori dalle parentesi triangolari stabilisce la TRASPARENZA del testo. Se impostato a 1.0, il testo sarà completamente visibile, viceversa diminuendo il valore diminuirà anche la visibilità.
Così, se volete ottenere un testo porpora semi-trasparente, dovrete impostare:

llSetText(“Testo porpora”, <0.5, 0.0, 0.5>, 0.5);

Abbiamo già visto un bel pò di parametri, se volete potete provare a modificarli ed osservare i risultati.

Procediamo ora con una terza funzione: llSetPos.
Questa permette di muovere un prim in una posizione desiderata.

Editate di nuovo il vostro prim. Nella finestra di edit, in cima allo schermo, vedrete tre numeri scritti rispettivamente in rosso, verde e blu: sono le coordinate spaziali X, Y e Z del prim. Queste resteranno visibili anche quando aprite la finestra dello script.

In fondo al vostro script, aggiungete un commento: cominciate la riga con due barre //, così il programma ignorerà ciò che viene scritto di seguito.
Dopo le barre scrivete le vostre coordinate attuali, per esempio:

//il mio vettore attuale è <75.937, 138.664, 120.405>

I commenti sono utili per tenere nota di quello che state facendo, in particolare negli script complessi.

Ora, al posto delle righe di llSetText, inserite la seguente:

llSetPos(<75.937, 138.664, 120.405>);

ovviamente sostituendo le coordinate con le vostre, che avevate riportato nel commento.
Prestate attenzione alla punteggiatura, che sia al posto giusto come da esempio.

Adesso cambiate il terzo numero, incrementandolo di 1 (per esempio se era 120.405, cambiatelo in 121.405).
Salvate e chiudete sia la finestra di script sia quella di edit.

Provate ora a cliccare sul prim: lo vedrete alzarsi di 1 metro!

La funzione llSetPos può essere molto utile, pur avendo dei limiti: tenete presente che non può spostare un oggetto oltre 10 metri di distanza.
E’ tuttavia possibile usare un espediente: se volete spostare l’oggetto per distanze maggiori, potete ripetere la funzione più volte.

Bene, finora abbiamo visto le basi di LSL, e tre importanti funzioni.
Continuando a studiare LSL, vi accorgerete che molta della complessità consiste nell’interazione con gli altri oggetti.

Introduzione allo scripting – Parte 3

Capire gli States (stati) e gli Events (eventi)
===================
Gli script LSL non vengono sempre eseguiti dall’inizio alla fine. Invece, cercano lo stato di default e attendono un evento. All’interno di questi eventi, ci può essere una ‘chiamata’ per entrare in un nuovo stato.

Diamo un’occhiata ad uno script con due stati e due eventi in ciascuno:

Il codice completo
==================
default  // lo stato di default è obbligatorio
{
    state_entry() // viene eseguito ogni volta che si entra nello stato
    {
        llSay(0, “acceso!”); // l’oggetto parla!
        llSetColor(<1,1,1>, ALL_SIDES);  // imposta tutti i lati al max valore brillante
        // notare il punto e virgola alla fine della riga.
    }

    touch_start(integer total_number)
    {
        state spento; 
    }
} // questa parentesi graffa termina il corpo dello stato di default.

state spento 
{
    state_entry()
    {
        llSay(0, “spento!”);
        llSetColor(<0,0,0>, ALL_SIDES);
    }

    touch_start(integer total_number)
    {
        state default;
    }   
   
}
// ——– fine del codice ———-

Tradotto per semplificazione, sarebbe:

default
{
    //imposta il colore chiaro e, se toccato, entra nello stato ‘spento’.
}

state spento
{
    //imposta il colore scuro e, se toccato, entra nello stato ‘default’.
}

Notare che dopo ‘default’ tutti i nuovi stati devono iniziare con la parola ‘state’. Inoltre, se l’oggetto ha una texture, il colore influirà sulla ‘tonalità’ più che sul colore reale.

GUARDIAMO PIU’ DA VICINO
========================
Esaminiamo lo stato di default. Aprite lo script che dovrebbe essere già stato copiato nel vostro inventario.
Prima vediamo l’evento ‘state_entry’, che viene innescato ogni volta che si entra nello stato di default.

PARLAMI!
========
La prima riga nell’evento state_entry è…

llSay(0, “acceso!”);

Questo fa pronunciare all’oggetto “acceso!” sul canale 0. Cos’è il canale 0? E’ lo stesso canale che viene usato nelle chat pubbliche. Potete parlare in canali diversi inserendo uno slash /, un numero, e uno spazio prima di parlare (più avanti approfondiremo)

Un punto e virgola termina la riga, dopodichè inizia un’altra istruzione.

llSetColor(<1,1,1>, ALL_SIDES);

Questo porta il prim alla sua tonalità più chiara. Se togliete la texture dal prim, dovreste vederlo bianco luminoso, altrimenti con una texture sembrerà ‘normale’.

Dopo che le due righe dell’evento sono state eseguite, lo script attende in default che avvengano altri eventi.

TOCCATO DA UN AVATAR
====================
Mentre è in attesa nello stato di default, un click innescherà l’evento ‘touch_start’.
Nell’evento ‘touch_start’ c’è solo un comando:

state spento;

Questo fa muovere lo script immediatamente in un nuovo stato chiamato ‘spento’.
E’ uno stato definito dopo lo stato di default, e quasi lo rispecchia, con la differenza che scurisce il prim, e una volta toccato riporta lo script nello stato di default.
Quindi crea un LOOP.

1. Entra nello stato di default
2. Esegue il codice dentro ‘state_entry’
3. Attende di essere toccato
4. Quando toccato entra in ‘state spento’
5. Esegue ‘state spento’
6. Esegue il codice dentro ‘state_entry’ (nota: nello stato ‘spento’)
7. Attende di essere toccato
8. Quando toccato entra nello stato di default

dove tutto ricomincia da capo.

Zittiamolo!
===========
Far parlare gli oggetti è un ottimo sistema per sapere come si comporta uno script, ma tutti possono sentirlo fino a 20 metri di distanza. In caso di script complessi, potrebbe infastidire parecchio!
Ci sono tre alternative:

SHHHH BISBIGLIO
===============
llWhisper( ) funziona come llSay( ) ma trasmette solo fino a metà distanza.
Dovete comunque specificare quale canale usare. Quindi…

llWhisper(0,”acceso!”);

…può servire un pò a salvare la sanità dei vostri vicini.

Usare llShout( ) raddoppia la distanza udibile, ma sicuramente dimezzerà la quantità dei vostri amici nei paraggi 😀

llOwnerSay( ) non usa canali, e solo voi potete ascoltare. E’ molto utile e sicuramente triplica la quantità dei vostri amici!

llOwnerSay(“acceso!”);

THE SOUND OF SILENCE
====================
Potete creare un messaggio totalmente silenzioso usando llSetText() in questo modo:

llSetText(“Sono acceso”, <1,1,1>,1.0);

Cosa significano i numeri? <1,1,1> l’abbiamo visto prima. Rappresentano rispettivamente i valori di rosso, verde e blu. Sappiate che con <1,1,1> si ottiene il bianco e con <0,0,0> il nero.
Sostituite llSay(0,”spento!”); con…

llSetText(“Sono spento”, <0,0,0>,1.0);

1.0 è il valore alfa. 1.0 significa completamente opaco, mentre 0.0 è completamente trasparente (invisibile).

PROVATE QUESTO
==============
Dove scrivereste un comando per dire qualcosa appena prima che lo script lasci lo stato di default?

Risposta:
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 V

Appena prima del comando ‘state spento;’ nell’evento ‘touch_start’ all’interno dello stato di default.
Non confondetevi con lo ‘state spento’ che definisce l’inizio del nuovo stato!

Vi consiglio l’ottimo forum di Bagaglio Albatros  in italiano a http://bagascript.forumup.it/index.php?mforum=bagascript


 

Introduzione allo Scriptingultima modifica: 2010-05-16T17:44:00+02:00da gaiarossini
Reposta per primo quest’articolo

Lascia un commento