Ali Accademia delle Land Italiane Ottobre 2008
“Facciamo un radar HUD”
Salahzar Stenvaag
Cos'è un “radarâ€? Serve per vedere se ci sono altri avatar vicino a noi. Molto utile per privacy, per registrare I partecipanti ad una riunione, per dare un oggetto ai nuovi venuti. Utilizza i comandi lsl llSensor e llSensorRepeat Il primo fa una scansione il secondo fa scansione ad intervalli regolari.
llSensor I parametri sono I seguenti: llSensorRepeat(string name, key id, integer type, float range, float arc, float rate) * name se volete restringere il sensing solo agli oggetti che si chiamano in un certo modo “� per tutti * id se volete restringere il sensing solo a certe key NULL_KEY per tutti
Tipo di oggetti * Agent => avatars * Active => oggetti fisici che si muovono o scriptati * Passive => oggetti non scriptati e fermi * Script => qualunque cosa scriptata E' un po' confuso e a volte non funziona esattamente come si pensa
Range, Arc, Rate * Range: Distanza in metri (sensibilità del radar). Max 96 metri per avere un radar + potente occorre fare un po' di trucchi * Arc: in radianti esprime un “cono” avanti ed indietro l'oggetto con il radar. Usate PI (180°) per fare uno scanning a 360° * Rate esprime la frequenza ogni quanti secondi il radar si riattiva.
Eventi collegati * no_sensor() se non c'è nessuno vicino * sensor(integer numero_oggetti) Per avere I singoli oggetti/avatar usate llDetectedName(i) in un ciclo for: integer i; for (i = 0; i < total_number; i++) { llWhisper(0, "Hello " + llDetectedName(i)); }
Script di esempio sensor(integer total_number) { llWhisper(0, default 1 (string)total_number + " avatars qui { vicino" ); touch_start(integer integer i; total_number) for (i = 0; i < total_number; i++) { { llSensor("", NULL_KEY, llWhisper(0, "Ciao " + AGENT, 10, PI); // cerca per llDetectedName(i)); 2 agenti/avatars entro 10 } metres } } // se non c'è nessuno no_sensor() { llSay(0, "Non c'è nessuno”); }
3
Per fare un HUD
Per mettere questo script dentro un HUD è semplicissimo!!! Basta che facciate un cubetto 0.3 x 0.3 x 0.3, ci mettete lo script dentro in world e verificate che funzioni. Poi lo indossate come HUD potete scegliere se metterlo al centro in basso etc, come gli altri HUD, una volta scelta la posizione poi la ricorda. Per evitare che “chiacchieri troppo” potete trasformare llSay() in llOwnerSay() oppure usare llSetText()
Radar Professionale
Licenza GNU opensource, potete usarlo ma NON venderlo e dovete lasciarlo aperto Il codice è un po' complesso ma lo spiego a blocchi per I piÚ esperti lo si può vedere poi insieme.
Blocchi radar
* parte di configurazione che si può cambiare (colore, distanza, frequenza) * count(): funzione che verifica se l'avatar è già in lista se no aggiunge alla lista e torna il # di avatar * time(): visualizza ore/minuti/secondi da quando acceso * getAngle(): capisce se a Sud, Nord,Est, Ovest
eventi
* state_entry(): imposta llSensorRepeat & Timer * sensor(): individua gli avatar vicini, la loro direzione, distanza, nome. Visualizza llSetText * no_sensor(): non fa nulla, aumenta la distanza di 10 metri * timer(): in funzione del carico della sim cerca di cambiare la frequenza di scansione in modo da non essere troppo intrusivo