Você está na página 1de 11

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
{
touch_start(integer vicino" );
total_number) integer i;
{ for (i = 0; i < total_number; i++)
llSensor("", NULL_KEY, {
AGENT, 10, PI); // cerca per llWhisper(0, "Ciao " +
agenti/avatars entro 10 llDetectedName(i)); 2
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

Você também pode gostar