Difference between revisions of "User:Michel Lemmon/log Propedeutico"
Jump to navigation
Jump to search
(New page: {| width="100%" |- |valign="top"| <div id="box"> == Log - Formazione Propedeutica == <div style="padding: 0.5em"> </div> </div> <div id="box"> |valign="top" width="200 px"| {{User:Michel_...) |
|||
Line 5: | Line 5: | ||
== Log - Formazione Propedeutica == | == Log - Formazione Propedeutica == | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em"> | ||
*[12:57] Salahzar Stenvaag: allora, iniziamo | |||
*[12:57] Salahzar Stenvaag: l'idea era di far partire delle lezioni di script intermedi | |||
*[12:57] Salahzar Stenvaag: che fossero produttivi | |||
*[12:58] Salahzar Stenvaag: sulla lavagna vedere il programma che intendevo fare | |||
*[12:58] Salahzar Stenvaag: una lezione propedeutica | |||
*[12:58] Salahzar Stenvaag: (questa) | |||
*[12:58] Salahzar Stenvaag: per fare un riepilogo delle varie cose | |||
*[12:58] Salahzar Stenvaag: e poi una serie di lezioni | |||
*[12:58] Salahzar Stenvaag: su come scriptare oggetti | |||
*[12:58] Salahzar Stenvaag: ed approfondire tematiche | |||
*[12:59] Salahzar Stenvaag: 1: comunicare a distanza | |||
*[12:59] Salahzar Stenvaag: 2. rezzare oggetti | |||
*[12:59] Salahzar Stenvaag: 3. sensori e sonde | |||
*[12:59] Salahzar Stenvaag: 4. object inventory | |||
*[12:59] Salahzar Stenvaag: 5. lettura di notecard | |||
*[12:59] Salahzar Stenvaag: 6. costruzione di un vendor | |||
*[13:00] Salahzar Stenvaag: poi si pensava di fare anche corsi avanzati | |||
*[13:01] Salahzar Stenvaag: allora adesso vediamo le slide che ho preparato | |||
*[13:01] Salahzar Stenvaag: alcune probabilmente sono banali | |||
*[13:01] Salahzar Stenvaag: però le ho messe lo stesso | |||
*[13:01] Salahzar Stenvaag: perchè qualcuno potrebbe non saperle | |||
*[13:01] Salahzar Stenvaag: come vedete | |||
*[13:02] Salahzar Stenvaag: ho cominciato proprio con come si fa uno script | |||
*[13:02] Salahzar Stenvaag: poi si passa alla sintassi dello scripting | |||
*[13:02] Salahzar Stenvaag: istruzioni, pardon | |||
*[13:02] Salahzar Stenvaag: e poi si vede come funzionano alcuni comandi fondamentali | |||
*[13:03] Salahzar Stenvaag: se per voi le cose sono troppo elementari, ditemelo | |||
*[13:04] Salahzar Stenvaag: magari facciamo solo una piccola indagine | |||
*[13:04] Salahzar Stenvaag: quanti di voi sanno bene come si fa uno script? | |||
*[13:05] Salahzar Stenvaag: perfetto, allora vado un po' veloce | |||
*[13:05] Salahzar Stenvaag: il sistema a) | |||
*[13:05] Salahzar Stenvaag: che vedete qua | |||
*[13:05] Salahzar Stenvaag: create new script è il più veloce, ma ad esempio non funziona ancora con opensim | |||
*[13:05] Salahzar Stenvaag: scusa il modo b) | |||
*[13:06] Salahzar Stenvaag: quello di cliccare su "New Script" dal content di un oggetto | |||
*[13:06] Salahzar Stenvaag: invece creare uno script nell'inventory e poi trascinarlo sul content dell'oggetto funziona sempre | |||
*[13:06] Salahzar Stenvaag: anche se è un po' scomodo | |||
*[13:06] Salahzar Stenvaag: quando avete lo script creato | |||
*[13:06] Salahzar Stenvaag: con doppio click o con tasto destro open potete editarlo | |||
*[13:07] Salahzar Stenvaag: vedere sulla lavagna gli appunti | |||
*[13:07] Salahzar Stenvaag: sull'uso del copia / incolla | |||
*[13:07] Salahzar Stenvaag: credo che siano cose ovvie per voi | |||
*[13:07] Salahzar Stenvaag: giusto? | |||
*[13:07] Salahzar Stenvaag: è utile per cercare il testo | |||
*[13:08] Salahzar Stenvaag: e la sintassi viene spiegata discretamente dall'editor "embedded" nel vostro browser | |||
*[13:08] Salahzar Stenvaag: passando sopra una istruzione | |||
*[13:08] Salahzar Stenvaag: vi dice esattamente la sintassi e i parametri | |||
*[13:08] Salahzar Stenvaag: ok, passiamo allo stato dello script | |||
*[13:09] Salahzar Stenvaag: potete mettere uno script in stato NON running | |||
*[13:09] Salahzar Stenvaag: per fermarne l'esecuzione | |||
*[13:09] Salahzar Stenvaag: oppure fare il reset dello script | |||
*[13:09] Salahzar Stenvaag: quando uno script è non running | |||
*[13:09] Salahzar Stenvaag: mantiene tutte le informazioni che stava elaborando | |||
*[13:10] Salahzar Stenvaag: è un po' come quando lo mettete nell'inventory | |||
*[13:10] Salahzar Stenvaag: si "sospende" | |||
*[13:10] Salahzar Stenvaag: quando invece gli fate il reset | |||
*[13:10] Salahzar Stenvaag: perde tutte le sue informazioni | |||
*[13:10] Salahzar Stenvaag: il reset è l'unico modo per ripristinare uno stato di stack/collision | |||
*[13:10] Salahzar Stenvaag: vale a dire quando aveter mandato in "overflow" la memoria degli script | |||
*[13:11] Salahzar Stenvaag: che come sapete è molto bassa :( | |||
*[13:11] Salahzar Stenvaag: ci sono solo 16Kbyte | |||
*[13:11] Salahzar Stenvaag: ma in realtà di usabili effettivamente ce ne sono molto meno | |||
*[13:11] Salahzar Stenvaag: perchè bisogna lasciare spazio | |||
*[13:11] Salahzar Stenvaag: con il nuovo motore MONO | |||
*[13:11] Salahzar Stenvaag: lo spazio utilizzabile aumenta | |||
*[13:12] Salahzar Stenvaag: ma non in modo eccezionale :( | |||
*[13:12] Salahzar Stenvaag: è chiaro? | |||
*[13:12] Salahzar Stenvaag: questo invece è importante | |||
*[13:12] Salahzar Stenvaag: gli script hanno la tendenza a "fare i capricci" | |||
*[13:13] Salahzar Stenvaag: non funzionano quasi mai al primo colpo :) | |||
*[13:13] Salahzar Stenvaag: quindi occorre abituarsi all'idea di mettere istruzioni di debug | |||
*[13:13] Salahzar Stenvaag: per capire cosa stanno facendo | |||
*[13:13] Salahzar Stenvaag: io le metto sempre, anche quando magari non le userò | |||
*[13:13] Salahzar Stenvaag: questione di abitudine | |||
*[13:14] Salahzar Stenvaag: poi ognuno ha uno stile personale | |||
*[13:14] Salahzar Stenvaag: quindi quello che vi dico non è detto che debba essere la "verità rivelata" | |||
*[13:14] Salahzar Stenvaag: anzi | |||
*[13:14] Salahzar Stenvaag: cmq, la cosa più semplice è quella di fare dire all'oggetto con llSay | |||
*[13:14] Salahzar Stenvaag: in punti opportuni delle informazioni | |||
*[13:15] Salahzar Stenvaag: molti usano llOwnerSay | |||
*[13:15] Salahzar Stenvaag: oppure llSay(0 | |||
*[13:15] Salahzar Stenvaag: ad esempio llOwnerSay("Sono stato toccato, x vale "+(string)x); | |||
*[13:15] Salahzar Stenvaag: è sempre bello verificare il valore delle variabili che sia quello che ci aspettiamo | |||
*[13:16] Salahzar Stenvaag: qui consiglio di usare come metodo di debug un canale, il 10 che non è quello normalmente usato per chattare | |||
*[13:16] Salahzar Stenvaag: e nemmeno l'ownersay | |||
*[13:16] Salahzar Stenvaag: in modo tale che se per caso vi dimenticate il debug attivo | |||
*[13:16] Salahzar Stenvaag: non abbiate sporcamenti sulle vostre finestre | |||
*[13:16] Salahzar Stenvaag: scrivere sul canale 10 | |||
*[13:17] Salahzar Stenvaag: potete sempre avere un tool che vi legga il canale 10 | |||
*[13:17] Salahzar Stenvaag: e vi rimandi i debug a voi o sul canale 0 | |||
*[13:17] Salahzar Stenvaag: ad esempio il Mystitool | |||
*[13:17] Salahzar Stenvaag: che io uso normalmente lo fa facilmente | |||
*[13:17] Salahzar Stenvaag: è chiaro? | |||
*[13:17] You: il Mystitool è gratuito per i mentori, se lo desiderate inviatemi un IM alla fine | |||
*[13:18] Salahzar Stenvaag: il Mystitool è pieno di cose utilissime | |||
*[13:18] Salahzar Stenvaag: quindi io lo raccomando sempre | |||
*[13:18] Salahzar Stenvaag: ma anche se non lo avete non è un grosso problema | |||
*[13:18] Salahzar Stenvaag: sapendo scriptare si può ovviare LOL :) | |||
*[13:19] Salahzar Stenvaag: ecco qui metto in colore azzurro i concetti più avanzati | |||
*[13:19] Salahzar Stenvaag: si possono fare debug e tracciature usando altri sistemi oltre a llSay | |||
*[13:19] Salahzar Stenvaag: ad esempio si può usare llSetText | |||
*[13:20] Salahzar Stenvaag: per scrivere sulla cima di un oggetto delle informazioni preziose | |||
*[13:20] Salahzar Stenvaag: ho visto script che colorano dei bottoni | |||
*[13:20] Salahzar Stenvaag: per indicare che stanno elaborando | |||
*[13:20] Salahzar Stenvaag: si possono mandare IM | |||
*[13:20] Salahzar Stenvaag: ma la cosa più interessante è che si possono mandare le tracce | |||
*[13:20] Salahzar Stenvaag: i debug | |||
*[13:21] Salahzar Stenvaag: su un server web esterno, con comandi http | |||
*[13:21] Salahzar Stenvaag: questo è un esempio di una funzione di debug | |||
*[13:21] Salahzar Stenvaag: che scrive su un sito web | |||
*[13:21] Salahzar Stenvaag: e consente di vedere il tabulato | |||
*[13:22] Salahzar Stenvaag: l'ho messo in blu perchè è un argomento avanzato | |||
*[13:22] Salahzar Stenvaag: quindi non è necessario che lo capiate | |||
*[13:22] Salahzar Stenvaag: (almeno non adesso) | |||
*[13:22] Salahzar Stenvaag: prima dobbiamo fare le lezioni sull'http | |||
*[13:23] Salahzar Stenvaag: ma se qualcuno è interessato, lo script php è su un mio sito web | |||
*[13:23] Salahzar Stenvaag: qui l'ho messo solo per farvi vedere che si può operare in infiniti modi | |||
*[13:23] Kathrine Slade: il link che si trova lì? | |||
*[13:23] Salahzar Stenvaag: :) | |||
*[13:23] Salahzar Stenvaag: www.salahzar.info è il mio dominio personale | |||
*[13:24] Salahzar Stenvaag: /lsl/httplog.php è il programma php che appende una stringa su un file | |||
*[13:24] Salahzar Stenvaag: usando un file che si chiama diversamente a seconda della chiave k | |||
*[13:25] Salahzar Stenvaag: la traccia la si leggerà poi su un browser (firefox) con la url www.salahzar.info/lsl/data/log_k | |||
*[13:25] Salahzar Stenvaag: per evitare usi "abusivi" il programma risponde solo passandogli una password | |||
*[13:25] Salahzar Stenvaag: questo per altro è un modello di uso "avanzato" | |||
*[13:26] Salahzar Stenvaag: ma ne parleremo moolto più avanti :) | |||
*[13:26] Salahzar Stenvaag: ok | |||
*[13:26] Salahzar Stenvaag: qui parlo invece dei concetti legati alle permissions | |||
*[13:26] Salahzar Stenvaag: suppongo che voi conosciate bene le permission più normali, giusto | |||
*[13:26] Salahzar Stenvaag: ? | |||
*[13:27] Salahzar Stenvaag: ok, per gli script normalmente | |||
*[13:27] Salahzar Stenvaag: le permission che si usano sono le "full-permissions" per prodotti opensource | |||
*[13:27] Salahzar Stenvaag: che regalate a chiunque | |||
*[13:27] Salahzar Stenvaag: senza scopo di lucro | |||
*[13:27] Salahzar Stenvaag: mentre normalmente se volete conservare la proprietà intellettuale usate copy ma NON modify | |||
*[13:28] Salahzar Stenvaag: in modo che gli acquirenti non possano vedere il vostro script o trasferirlo | |||
*[13:28] Salahzar Stenvaag: l'assenza di permissions è sconsigliabile | |||
*[13:28] Salahzar Stenvaag: perchè rende praticamente impossibile usare gli oggetti scriptati | |||
*[13:29] Salahzar Stenvaag: l'operazione di settaggio delle permissions | |||
*[13:29] Salahzar Stenvaag: almeno per me | |||
*[13:29] Salahzar Stenvaag: è una delle cose più noiose | |||
*[13:29] Salahzar Stenvaag: e difficili | |||
*[13:29] Salahzar Stenvaag: si rischia sempre di sbagliare | |||
*[13:29] Salahzar Stenvaag: togliendo troppe permissions | |||
*[13:29] Salahzar Stenvaag: o lasciandone troppe | |||
*[13:29] Salahzar Stenvaag: chissà se sapete di tools che consentano | |||
*[13:29] Salahzar Stenvaag: di verificare le permissions | |||
*[13:29] Salahzar Stenvaag: o di impostarle in modo indolore? | |||
*[13:30] Salahzar Stenvaag: (questo è in comune anche con i builders etc...) | |||
*[13:30] Salahzar Stenvaag: ok | |||
*[13:30] Salahzar Stenvaag: adesso andiamo sulla sintassi del linguaggio | |||
*[13:30] Salahzar Stenvaag: non mi soffermo troppo sui numeri | |||
*[13:30] Salahzar Stenvaag: che vedete nella slide | |||
*[13:31] Salahzar Stenvaag: la cosa normalmente più interessante sono le stringhe | |||
*[13:31] Salahzar Stenvaag: che in lsl sono molto più complesse di quello che sembra | |||
*[13:31] Salahzar Stenvaag: specie se si usano caratteri "strani" | |||
*[13:32] Salahzar Stenvaag: in pratica | |||
*[13:32] Salahzar Stenvaag: se usate caratteri strani come le vocali accentate | |||
*[13:32] Salahzar Stenvaag: queste contano "per due" | |||
*[13:33] Salahzar Stenvaag: quindi una stringa di 10 caratteri può utilizzare anche 16-20 bytes | |||
*[13:33] Salahzar Stenvaag: come nell'esempio di "città" | |||
*[13:33] Salahzar Stenvaag: UTF-8 è la codifica dei caratteri che usa secondlife | |||
*[13:34] Salahzar Stenvaag: che è simile alla codifica ASCII per i caratteri non accentati | |||
*[13:34] Salahzar Stenvaag: la codifica ASCII è quella usata dalla maggior parte dei linguaggi di programmazione | |||
*[13:34] Salahzar Stenvaag: mentre l'UTF-8 è utilizzato da Java | |||
*[13:35] Salahzar Stenvaag: e serve per rappresentare i caratteri + strani | |||
*[13:35] Salahzar Stenvaag: ditemi se sono troppo complicato .... | |||
*[13:35] Salahzar Stenvaag: ok | |||
*[13:35] Salahzar Stenvaag: invece qua ci sono gli altri tipi | |||
*[13:36] Salahzar Stenvaag: la key che rappresenta un oggetto, un avatar etc | |||
*[13:36] Salahzar Stenvaag: ed è una specie di "stringa" | |||
*[13:36] Salahzar Stenvaag: i vettori e le rotazioni | |||
*[13:36] Salahzar Stenvaag: che servono per le posizioni spaziali e le rotazioni | |||
*[13:36] Salahzar Stenvaag: e le liste | |||
*[13:36] Salahzar Stenvaag: che sono insieme il gioiello e la croce di lsl :( | |||
*[13:37] Salahzar Stenvaag: conoscete tutti questi tipi? | |||
*[13:37] Salahzar Stenvaag: se avete qualche dubbio su queste cose potete chiedermi | |||
*[13:38] Salahzar Stenvaag: ok allora vado | |||
*[13:38] Salahzar Stenvaag: dunque le variabili | |||
*[13:38] Salahzar Stenvaag: sono dei pezzi di memoria | |||
*[13:38] Salahzar Stenvaag: e sono FONDAMENTALI | |||
*[13:39] Salahzar Stenvaag: tutti gli script usano almeno 1 variabile per memorizzare qualcosa | |||
*[13:39] Salahzar Stenvaag: anche solo per l'intervallo di qualche istruzione | |||
*[13:39] Salahzar Stenvaag: in lsl | |||
*[13:39] Salahzar Stenvaag: le variabili globali vanno dichiarate in testa al programma | |||
*[13:39] Salahzar Stenvaag: ogni volta che qualcuno modifica una variabile globale | |||
*[13:39] Salahzar Stenvaag: questa cambia | |||
*[13:40] Salahzar Stenvaag: e potrebbe dare fastidio ad altre parti di programma | |||
*[13:40] Salahzar Stenvaag: pensate se avete una variabile intera di nome "i" | |||
*[13:40] Salahzar Stenvaag: e ne cambiate il valore quando un pezzo di codice la sta usando per fare un loop | |||
*[13:40] Salahzar Stenvaag: il linguaggio lsl è difficile | |||
*[13:41] Salahzar Stenvaag: perchè molti eventi accadono praticamente nello stesso momento | |||
*[13:41] Salahzar Stenvaag: e quindi è fondamentale evitare che un pezzo di script "sporchi" variabili gestite da altri pezzi di codice | |||
*[13:41] Salahzar Stenvaag: le variabili locali invece si possono usare liberamente senza problemi | |||
*[13:42] Salahzar Stenvaag: il mio consiglio | |||
*[13:42] Salahzar Stenvaag: è quello di usare una convenzione | |||
*[13:42] Salahzar Stenvaag: in modo da capire subito se una variabile è globale e specificare il tipo | |||
*[13:42] Salahzar Stenvaag: quindi iNOTECARD | |||
*[13:42] Salahzar Stenvaag: è una variabile globale | |||
*[13:42] Salahzar Stenvaag: di tipo intero | |||
*[13:42] Salahzar Stenvaag: vPOS è un vettore | |||
*[13:43] Salahzar Stenvaag: globale e così via | |||
*[13:43] Salahzar Stenvaag: poi ci sono le funzioni | |||
*[13:43] Salahzar Stenvaag: le funzioni come scritto qua | |||
*[13:43] Salahzar Stenvaag: servono per "riciclare" pezzi di codice | |||
*[13:44] Salahzar Stenvaag: ad esempio per scrivere qualcosa in cima al vostro oggetto potreste avere una funzione | |||
*[13:44] Salahzar Stenvaag: info(str) | |||
*[13:44] Salahzar Stenvaag: che magari fa una llSetText(str,<1,0,0>,1) | |||
*[13:44] Salahzar Stenvaag: sono utilissime | |||
*[13:44] Salahzar Stenvaag: quindi ogni volta che fate una cosa ripetutamente utilizzatele | |||
*[13:45] Salahzar Stenvaag: ecco e qui veniamo alla struttua a stati | |||
*[13:45] Salahzar Stenvaag: struttura | |||
*[13:45] Salahzar Stenvaag: in lsl voi potete avere oggetti che hanno più di uno stato | |||
*[13:45] Salahzar Stenvaag: anche se francamente | |||
*[13:46] Salahzar Stenvaag: la maggior parte degli script che ho visto ne utilizzano 1 o 2 al massimo | |||
*[13:46] Salahzar Stenvaag: noi faremo finta per il momento che vi sia un solo stato quello di default | |||
*[13:46] Salahzar Stenvaag: quello che siete obbligati a scrivere | |||
*[13:47] Salahzar Stenvaag: all'interno di un evento vi sono gli eventi + importanti | |||
*[13:47] Salahzar Stenvaag: che sono quelli in basso sulla slide | |||
*[13:47] Salahzar Stenvaag: - touch_start | |||
*[13:47] Salahzar Stenvaag: on_rez | |||
*[13:47] Salahzar Stenvaag: state_entry | |||
*[13:47] Salahzar Stenvaag: listen | |||
*[13:47] Salahzar Stenvaag: timer | |||
*[13:47] Salahzar Stenvaag: conoscete tutti questi eventi? | |||
*[13:48] Salahzar Stenvaag: qualcuno mi sa dire la differenza fra touch_start e touch? | |||
*[13:48] Salahzar Stenvaag: si infatti il + importante è touch_start | |||
*[13:48] Salahzar Stenvaag: (ma c'è anche il touch_end) | |||
*[13:49] Salahzar Stenvaag: è quello utilizzato e parte al momento in cui l'oggetto viene toccato | |||
*[13:49] Salahzar Stenvaag: il touch(integer count) | |||
*[13:49] Salahzar Stenvaag: continua ad essere chiamato finchè l'avatar continua a toccare l'oggetto | |||
*[13:49] Salahzar Stenvaag: quindi diciamo ogni mezzo secondo | |||
*[13:50] Salahzar Stenvaag: il che crea anche un po' di stress | |||
*[13:50] Salahzar Stenvaag: si esatto | |||
*[13:50] Salahzar Stenvaag: quindi potreste fare uno script | |||
*[13:50] Salahzar Stenvaag: che distingue le 3 fasi | |||
*[13:50] Salahzar Stenvaag: se ne aveste bisogno | |||
*[13:50] Salahzar Stenvaag: o che calcoli quanti secondi un avatar ha tenuto cliccato un oggetto | |||
*[13:50] Salahzar Stenvaag: potrebbe essere un modo potente che so per | |||
*[13:50] Salahzar Stenvaag: fare dei flipper | |||
*[13:51] Salahzar Stenvaag: cmq ve l'ho fatto vedere | |||
*[13:51] Salahzar Stenvaag: perchè il linguaggio di scripting di sl | |||
*[13:51] Salahzar Stenvaag: pur apparentemente spartano | |||
*[13:51] Salahzar Stenvaag: è in realtà ricchissimo | |||
*[13:51] Salahzar Stenvaag: di cose particolari | |||
*[13:51] Salahzar Stenvaag: basta solo la fantasia per farci sopra le cose + strane | |||
*[13:52] Salahzar Stenvaag: ok veniamo ai costrutti elementari | |||
*[13:52] Salahzar Stenvaag: ritengo che i primi li conosciate tutti | |||
*[13:52] Salahzar Stenvaag: giusto? | |||
*[13:52] Salahzar Stenvaag: il comando @label | |||
*[13:52] Salahzar Stenvaag: e jum label | |||
*[13:52] Salahzar Stenvaag: jump | |||
*[13:52] Salahzar Stenvaag: sono l'equivalente del goto | |||
*[13:52] Salahzar Stenvaag: si esatto | |||
*[13:53] Salahzar Stenvaag: e viene utilizzato a volte per due motivi | |||
*[13:53] Salahzar Stenvaag: 1\ perchè risparmia bytes | |||
*[13:53] Salahzar Stenvaag: 2\ perchè può essere utile per uscire da un ciclo | |||
*[13:53] Salahzar Stenvaag: il goto | |||
*[13:53] Salahzar Stenvaag: permette di spostare l'elaborazione ad un altro punto dello script | |||
*[13:54] Salahzar Stenvaag: è simile all'if then else | |||
*[13:54] Salahzar Stenvaag: con la differenza che è "incondizionato" | |||
*[13:54] Salahzar Stenvaag: l'if then else va al blocco else se il test non è verificato | |||
*[13:54] Salahzar Stenvaag: il jump va "sempre" alla label | |||
*[13:54] Salahzar Stenvaag: e di solito come dicevo viene utilizzato | |||
*[13:54] Salahzar Stenvaag: per uscire da un loop | |||
*[13:55] Salahzar Stenvaag: oppure da qualche programmatore pazzo e scatenato | |||
*[13:55] Salahzar Stenvaag: lol | |||
*[13:55] Salahzar Stenvaag: io ho visto molti pezzi di codice dei guru pieni di jum | |||
*[13:55] Salahzar Stenvaag: jump | |||
*[13:56] Salahzar Stenvaag: diciamo che di solito si riesce "quasi" sempre a farne a meno :) | |||
*[13:56] Salahzar Stenvaag: ma ve l'ho messo così se lo vedete lo capite | |||
*[13:56] Salahzar Stenvaag: io la prima volta che l'ho visto in lsl mi ha messo un po' in crisi | |||
*[13:56] Salahzar Stenvaag: e qui veniamo invece alle cose "truci" | |||
*[13:56] Salahzar Stenvaag: la potenza di lsl sta nella sua libreria di funzioni | |||
*[13:57] Salahzar Stenvaag: queste in questa pagina le dovreste conoscere già | |||
*[13:57] Salahzar Stenvaag: uno scripter elementare dovrebbe averle già usate tutte | |||
*[13:57] Salahzar Stenvaag: giusto? :) | |||
*[13:57] Salahzar Stenvaag: queste invece | |||
*[13:57] Salahzar Stenvaag: sono per i "guru" | |||
*[13:58] Salahzar Stenvaag: mi sa che non le avete mai usate | |||
*[13:58] Salahzar Stenvaag: in particolare l'ultima istruzione | |||
*[13:58] Salahzar Stenvaag: studiatela bene | |||
*[13:58] Salahzar Stenvaag: perchè viene usata spesso da script che hanno problemi di memoria | |||
*[13:59] Salahzar Stenvaag: nella prima funzione non c'è una vera e prorpia chiave | |||
*[13:59] Salahzar Stenvaag: la key | |||
*[13:59] Salahzar Stenvaag: è una cosa che viene indicata anche come UUID | |||
*[13:59] Salahzar Stenvaag: nella letteratura dei guru | |||
*[13:59] Salahzar Stenvaag: ed è un algoritmo complessissimo | |||
*[14:00] Salahzar Stenvaag: che usa il computer su cui è stata generata | |||
*[14:00] Salahzar Stenvaag: la data e l'ora | |||
*[14:00] Salahzar Stenvaag: e alcuni elementi casuali | |||
*[14:00] Salahzar Stenvaag: le UUID sono garantite essere UNIVOCHE in tutto l'universo | |||
*[14:00] Salahzar Stenvaag: (almeno sulla terra) lol | |||
*[14:00] Salahzar Stenvaag: cmq si | |||
*[14:01] Salahzar Stenvaag: le puoi vedere come una specie di chiave di accesso all'oggetto | |||
*[14:01] Salahzar Stenvaag: qui con MD5 | |||
*[14:01] Salahzar Stenvaag: si intende invece un altro algoritmo diverso dall UUID | |||
*[14:01] Salahzar Stenvaag: che estrae un integer | |||
*[14:01] Salahzar Stenvaag: a partire da una stringa | |||
*[14:01] Salahzar Stenvaag: in questo caso non si garantisce l'univocità | |||
*[14:02] Salahzar Stenvaag: è un discorso un po' complesso da fare | |||
*[14:02] Salahzar Stenvaag: per cui lo saltiamo adesso | |||
*[14:02] Salahzar Stenvaag: ve lo facevo vedere come al solito | |||
*[14:02] Salahzar Stenvaag: per farvi vedere la ricchezza del linguaggio | |||
*[14:02] Salahzar Stenvaag: anche nella sua "semplicità" | |||
*[14:02] Salahzar Stenvaag: se trovate da qualche parte x=(x="")+x+c; | |||
*[14:02] Salahzar Stenvaag: adesso sapete cosa vuol dire? | |||
*[14:03] Salahzar Stenvaag: vuol dire semplicemente l'aggiunta della stringa c alla stringa x | |||
*[14:03] Salahzar Stenvaag: viene raccomandata dalla linden | |||
*[14:03] Salahzar Stenvaag: per risparmiare spazio | |||
*[14:03] Salahzar Stenvaag: ok | |||
*[14:04] Salahzar Stenvaag: qui abbiamo invece alcune funzioni matematiche | |||
*[14:04] Salahzar Stenvaag: non mi addentro | |||
*[14:04] Salahzar Stenvaag: ma llFrand | |||
*[14:04] Salahzar Stenvaag: può essere utile | |||
*[14:04] Salahzar Stenvaag: per generare dei channel casuali | |||
*[14:04] Salahzar Stenvaag: le rotazioni per il momento le lasciamo anche loro tranquille | |||
*[14:05] Salahzar Stenvaag: e qui invece abbiamo funzioni sempre + interessanti | |||
*[14:05] Salahzar Stenvaag: come dicevo prima le liste sono insieme il gioiello e la croce di lsl | |||
*[14:05] Salahzar Stenvaag: si possono fare tantissime cose | |||
*[14:06] Salahzar Stenvaag: ma spesso in modo abbastanza complesso | |||
*[14:06] Salahzar Stenvaag: comunque le funzioni su questa pagina sono quelle + intuitive | |||
*[14:06] Salahzar Stenvaag: tra queste le più usate | |||
*[14:06] Salahzar Stenvaag: sono llGetListLength | |||
*[14:07] Salahzar Stenvaag: e llList2<type> | |||
*[14:07] Salahzar Stenvaag: la seconda per estrarre un elemento da una lista | |||
*[14:08] Salahzar Stenvaag: queste invece sono le funzioni + avanzate | |||
*[14:11] Salahzar Stenvaag: allora | |||
*[14:11] Salahzar Stenvaag: in realtà molte di queste funzioni | |||
*[14:11] Salahzar Stenvaag: meriterebbero una lezione a parte per ognuna di loro | |||
*[14:12] Salahzar Stenvaag: io sto facendo solo una carrellata | |||
*[14:12] Salahzar Stenvaag: in modo tale che almeno le abbiate già viste | |||
*[14:12] Salahzar Stenvaag: poi di volta in volta quando le useremo | |||
*[14:12] Salahzar Stenvaag: vi spiegherò i loro vari aspetti | |||
*[14:13] Salahzar Stenvaag: delle funzioni di lista che vedete vi sono vari concetti che vi accenno | |||
*[14:13] Salahzar Stenvaag: 1\ strided list | |||
*[14:13] Salahzar Stenvaag: sono la cosa più vicina alle "matrici" | |||
*[14:13] Salahzar Stenvaag: array n-dimensionali | |||
*[14:13] Salahzar Stenvaag: che lsl possa fornire | |||
*[14:14] Salahzar Stenvaag: in realtà sono un trucco | |||
*[14:14] Salahzar Stenvaag: ad esempio se avete una matrice di 10 righe per 2 colonne | |||
*[14:14] Salahzar Stenvaag: in lsl si possono rappresentare con una lista "stirata" | |||
*[14:14] Salahzar Stenvaag: ad esempio la lista | |||
*[14:15] Salahzar Stenvaag: list matrix=*[ "a",5,"b",6,"c",7]; | |||
*[14:15] Salahzar Stenvaag: potrebbe corrispondere ad una matrice di 3 righe per 2 colonne | |||
*[14:15] Salahzar Stenvaag: la prima riga è "a" 5 | |||
*[14:15] Salahzar Stenvaag: la seconda "b" 6 | |||
*[14:15] Salahzar Stenvaag: ecc | |||
*[14:16] Salahzar Stenvaag: questa lista viene indicata come una lista con "stride=2" | |||
*[14:16] Salahzar Stenvaag: stride credo che si possa tradurre come "salto" od intervallo | |||
*[14:16] Salahzar Stenvaag: quindi dice che "ogni due" parte una nuova riga | |||
*[14:16] Salahzar Stenvaag: non so se ve l'ho presentato chiaramente | |||
*[14:17] Salahzar Stenvaag: ok allora stop con le stride per il momento | |||
*[14:17] Salahzar Stenvaag: l'altro grosso concetto | |||
*[14:17] Salahzar Stenvaag: è rappresentato dalla trasformazione di una lista in stringa | |||
*[14:17] Salahzar Stenvaag: e viceversa | |||
*[14:17] Salahzar Stenvaag: questo è IMPORTANTISSIMO | |||
*[14:17] Salahzar Stenvaag: perchè spesso nelle liste vi sono informazioni importanti | |||
*[14:18] Salahzar Stenvaag: che devono essere trasmesse fra oggetti | |||
*[14:18] Salahzar Stenvaag: come vedremo | |||
*[14:18] Salahzar Stenvaag: e dobbiamo avere uno strumento per mandare la lista come se fosse una stringa | |||
*[14:19] Salahzar Stenvaag: le funzioni più semplici per fare questo sono llList2CSV (lista=>stringa) | |||
*[14:19] Salahzar Stenvaag: e llCSV2List (stringa lista) | |||
*[14:19] Kathrine Slade: cosa fa llListStatistics? | |||
*[14:19] Salahzar Stenvaag: quella è molto potente | |||
*[14:19] Salahzar Stenvaag: data una lista con dei valori misurati | |||
*[14:19] Salahzar Stenvaag: consente di estrarre informazioni | |||
*[14:19] Salahzar Stenvaag: come la media | |||
*[14:19] Salahzar Stenvaag: lo scarto quadratico medio | |||
*[14:19] Salahzar Stenvaag: ed altre informazioni statistiche | |||
*[14:20] Salahzar Stenvaag: prova a farlo in cobol LOL | |||
*[14:20] Salahzar Stenvaag: ecco | |||
*[14:20] Salahzar Stenvaag: nell'ultima riga | |||
*[14:20] Salahzar Stenvaag: avete invece il solito trucco | |||
*[14:20] Salahzar Stenvaag: strano | |||
*[14:20] Salahzar Stenvaag: lst=(lst=*[])+lst+x | |||
*[14:21] Salahzar Stenvaag: in particolare per le liste | |||
*[14:21] Salahzar Stenvaag: una lista potrebbe essere lunga 4-5000 bytes | |||
*[14:21] Salahzar Stenvaag: se non si facesse in quel modo si perderebbero 5000 bytes | |||
*[14:21] Salahzar Stenvaag: lst+=x | |||
*[14:22] Salahzar Stenvaag: usa 3 volte la memoria per lst | |||
*[14:22] Salahzar Stenvaag: mentre la sintassi che vi ho detto usa solo 2 volte lo spazio di memoria | |||
*[14:22] Salahzar Stenvaag: se avete script cicciuti | |||
*[14:22] Salahzar Stenvaag: dovete sapere fare queste cose | |||
*[14:23] Salahzar Stenvaag: altrimenti non vanno :) | |||
*[14:23] Salahzar Stenvaag: okay ora | |||
*[14:23] Salahzar Stenvaag: torniamo ad argomenti + terra terra | |||
*[14:23] Salahzar Stenvaag: sicuramente avete già usato la lllisten | |||
*[14:23] Salahzar Stenvaag: (con 3 elle) lol | |||
*[14:23] Salahzar Stenvaag: sapete che è importante scegliere un canale | |||
*[14:23] Kathrine Slade: no con tre l mi manca..:D | |||
*[14:24] Salahzar Stenvaag: e sapete la differenza fra il canale 0, canali positivi e negativi | |||
*[14:24] Salahzar Stenvaag: allora lo zero è quello che dà più fastidio | |||
*[14:24] Salahzar Stenvaag: e dà anche più lag | |||
*[14:25] Salahzar Stenvaag: ma anche i canali positivi sono pesanti | |||
*[14:25] Salahzar Stenvaag: i canali negativi, essendo utilizzati solo dagli oggetti | |||
*[14:25] Salahzar Stenvaag: generano MENO lag | |||
*[14:25] Salahzar Stenvaag: ricordatevi di usare sempre la MINORE quantità possibile di llListen | |||
*[14:26] Salahzar Stenvaag: gli IM viaggiano su canali propri totalmente diversi | |||
*[14:26] Salahzar Stenvaag: si | |||
*[14:26] Salahzar Stenvaag: i canali negativi generano meno lag | |||
*[14:26] Salahzar Stenvaag: perchè non vengono rimbalzati su tutti i browser | |||
*[14:27] Salahzar Stenvaag: ma rimangono nel computer remoto | |||
*[14:27] Salahzar Stenvaag: => meno traffico di rete | |||
*[14:27] Salahzar Stenvaag: questa slide | |||
*[14:27] Salahzar Stenvaag: vi spiega la frustrazione | |||
*[14:27] Salahzar Stenvaag: che si ha a volte | |||
*[14:27] Salahzar Stenvaag: con le lllisten | |||
*[14:28] Salahzar Stenvaag: avete fatto uno splendido script | |||
*[14:28] Salahzar Stenvaag: ma quando gli parlate | |||
*[14:28] Salahzar Stenvaag: o quando fate touch e c'è il menu | |||
*[14:28] Salahzar Stenvaag: lui non fa nulla | |||
*[14:28] Salahzar Stenvaag: la soluzione è una cosa (a parte essere perfettissimi e non dimenticarsi nulla) | |||
*[14:28] Salahzar Stenvaag: lol | |||
*[14:29] Salahzar Stenvaag: mettete tante scritte di debug per essere sicuri che tutto sia come deve essere | |||
*[14:29] Salahzar Stenvaag: la llListen venga fatta sul canale giusto | |||
*[14:29] Salahzar Stenvaag: eccetera. | |||
*[14:29] Salahzar Stenvaag: poi a volte voi stessi fate in modo che l'oggetto reagisca SOLO se siete l'owner | |||
*[14:29] Salahzar Stenvaag: ad esempio io ho modificato questa lavagna | |||
*[14:30] Salahzar Stenvaag: in modo che SOLO IO posso cliccarne i tasti | |||
*[14:30] Salahzar Stenvaag: poi lo vediamo in apposita lezione | |||
*[14:30] Salahzar Stenvaag: e siamo al timer | |||
*[14:30] Salahzar Stenvaag: anche questo coso | |||
*[14:30] Salahzar Stenvaag: sembra semplice | |||
*[14:31] Salahzar Stenvaag: ma ho visto fare delle cose con il timer :) | |||
*[14:31] Salahzar Stenvaag: comunque nel suo comportamento più semplice | |||
*[14:31] Salahzar Stenvaag: fa esattamente quello che sembra | |||
*[14:31] Salahzar Stenvaag: fa scattare l'evento dopo tot secondi | |||
*[14:31] Salahzar Stenvaag: come scritto viene spesso utilizzato | |||
*[14:32] Salahzar Stenvaag: per rimuovere un listen dopo un certo intervallo di tempo | |||
*[14:32] Salahzar Stenvaag: ricordatevi che finchè non fate llSetTimerEvent(0) | |||
*[14:32] Salahzar Stenvaag: il timer rimane attivo | |||
*[14:32] Salahzar Stenvaag: e continua a scattare | |||
*[14:32] Salahzar Stenvaag: sul touch | |||
*[14:33] Salahzar Stenvaag: (forse l'evento + usato su secondlife) | |||
*[14:33] Salahzar Stenvaag: mi sa che lo sapete usare tutti | |||
*[14:33] Salahzar Stenvaag: mi sapete dire che cosa rappresenta quell'integer count? | |||
*[14:33] Salahzar Stenvaag: c'è scritto sulla slide :) | |||
*[14:34] Kathrine Slade: il numero di avatar che tocca l'oggetto... (uffi) | |||
*[14:34] Salahzar Stenvaag: però la maggior parte dei programmatori | |||
*[14:34] Salahzar Stenvaag: non lo considerano | |||
*[14:34] Salahzar Stenvaag: e usano semplicemente llDetectedKey(0) | |||
*[14:34] Salahzar Stenvaag: perchè si suppone che in circostanze normali un solo avatar tocchi l'oggetto | |||
*[14:34] Salahzar Stenvaag: e noi faremo anche così (siamo pigri) | |||
*[14:35] Salahzar Stenvaag: ecco cosa si dovrebbe fare | |||
*[14:35] Salahzar Stenvaag: ok saltiamo le altre interazioni | |||
*[14:35] Salahzar Stenvaag: la llDialog | |||
*[14:35] Salahzar Stenvaag: è anche usatissima | |||
*[14:35] Salahzar Stenvaag: e come vedete quasi sempre insieme a touch-start | |||
*[14:36] Salahzar Stenvaag: in questa slide | |||
*[14:36] Salahzar Stenvaag: vedete che elenco le opzioni | |||
*[14:36] Salahzar Stenvaag: dentro una lista | |||
*[14:36] Salahzar Stenvaag: e poi la llDialog visualizza il menù in alto a destra (il classico menu blu) | |||
*[14:36] Salahzar Stenvaag: la llDialog ha la particolarità | |||
*[14:36] Salahzar Stenvaag: che l'ordine delle scelte nella lista | |||
*[14:37] Salahzar Stenvaag: corrisponde in modo "strano" a come le visualizza | |||
*[14:37] Salahzar Stenvaag: nel menù | |||
*[14:37] Salahzar Stenvaag: questo succede quando avete più di 3 opzioni | |||
*[14:37] Salahzar Stenvaag: perchè il maledetto | |||
*[14:37] Salahzar Stenvaag: ordina le opzioni dal basso a sinistra verso destra | |||
*[14:37] Salahzar Stenvaag: e poi va su in verticale | |||
*[14:37] Salahzar Stenvaag: come se fossero coordinate X,Y | |||
*[14:38] Salahzar Stenvaag: e non un testo che parte dall'alto a sinistra e poi scorre verso il basso | |||
*[14:38] Salahzar Stenvaag: ci sono numerosi trucchi per ovviare a questo | |||
*[14:38] Salahzar Stenvaag: se vedete questo listato | |||
*[14:38] Salahzar Stenvaag: vedete che ho messo insieme un po' tutte le funzioni che vi ho descritto prima | |||
*[14:39] Salahzar Stenvaag: touch_start | |||
*[14:39] Salahzar Stenvaag: listen | |||
*[14:39] Salahzar Stenvaag: dialog | |||
*[14:39] Salahzar Stenvaag: timer | |||
*[14:39] Salahzar Stenvaag: è chiaro quello che fa? | |||
*[14:39] Kathrine Slade: si.. fa apparire un menù dando tot tempo di risposta | |||
*[14:39] Salahzar Stenvaag: perfect | |||
*[14:40] Salahzar Stenvaag: quella era l'ultima slide | |||
*[14:40] Salahzar Stenvaag: vuol dire che adesso siete pronti per la prima lezione | |||
</div> | </div> | ||
</div> | </div> |