Changed
Da Second Life Italia Wiki.
Indice |
[modifica] Evento changed
[modifica] Sintassi
changed( integer change )
[modifica] Descrizione
L'evento changed viene invocato quando avvengono modifiche al prim o all'oggetto nel quale è inserito lo script; il parametro intero change è un bitfield con i bit posti ad uno in corrispondenza delle seguenti costanti. Più flag possono essere stati impostati, se l'evento riporta modifiche di vario genere all'oggetto contenente lo script.
[modifica] Costanti
| Costante | Valore | Descrizione |
|---|---|---|
| CHANGED_INVENTORY | 0x1 | modifiche all'inventario dell'oggetto ciò includere un item aggiunto, rimosso, rinominato, o una notecard che è stata editata e salvata |
| CHANGED_COLOR | 0x2 | modifiche al colore o alla trasparenza dell'oggetto |
| CHANGED_SHAPE | 0x4 | modifiche alla forma dell'oggetto (per es. da box a cilindro), il cut, l'hollow, il twist, top size, o shear |
| CHANGED_SCALE | 0x8 | modifiche alla dimensione dell'oggetto |
| CHANGED_TEXTURE | 0x10 | modifiche alla texture dell'oggetto: l'offset, il repeats, la rotation, o le mappe reflection e bump (non la transparenza che è segnalata da CHANGED_COLOR) |
| CHANGED_LINK | 0x20 | linking o unlinking (compreso il caso in cui un avatar si è seduto o alsato dall'oggetto) |
| CHANGED_ALLOWED_DROP | 0x40 | un item è stato trascinato nell'oggetto (capacità abilitata tramite la funzione llAllowInventoryDrop. Ciò consente all'oggetto di identificare gli items trascinate da chiunque, anche chi non ha permessi di modifica sullo stesso oggetto |
| CHANGED_OWNER | 0x80 | la [[ownership|proprietà] dell'oggetto è cambiata. Questo valore è utilizzato quando un oggetto viene deeded ad un gruppo, quando un oggetto viene acquistato, o quando un oggetto appena acquistato viene rezzato |
| CHANGED_REGION | 0x100 | l'oggetto è passato ad un altra regione/sim |
| CHANGED_TELEPORT | 0x200 | l'oggetto è stato teleportato |
[modifica] Esempio
default { changed(integer change) { if (change & CHANGED_INVENTORY) llOwnerSay("L'inventario dell'oggetto e' cambiato."); if (change & CHANGED_COLOR) llOwnerSay("Il colore e/o la trasparenza dell'oggetto sono stati cambiati."); if (change & CHANGED_SHAPE) llOwnerSay("La forma della primitiva e' stata cambiata"); if (change & CHANGED_SCALE) llOwnerSay("La dimensione della primitiva e' cambiata."); if (change & CHANGED_TEXTURE) llOwnerSay("Una o piu' textures della primitiva o alcuni attributi sono cambiati."); if (change & CHANGED_LINK) llOwnerSay("Il numero di primitive che compone l'oggetto e' cambiato."); if (change & CHANGED_ALLOWED_DROP) llOwnerSay("L'utente ha inserito un nuovo oggetto nell'inventario pur non avendo i permessi di modifica"); if (change & CHANGED_OWNER) llOwnerSay("Il proprietario dell'oggetto e' cambiato."); if (change & CHANGED_REGION) llOwnerSay("La regione dove si trova l'oggetto e' cambiata."); if (change & CHANGED_TELEPORT) llOwnerSay("L'oggetto e' stato teleportato come attachment."); } }
Nota: la condizione usa & e non && essendo un bitwise.
[modifica] Esempio sit/unsit
// quando un avatar si siede sull'oggetto contenente lo script // viene fatto alzare di forza! default { state_entry() { // necessario per far funzionare llAvatarOnSitTarget llSitTarget(<0, 0, 0.1>, ZERO_ROTATION); } // qualcosa è cambiato nell'oggetto changed(integer change) { // ed è stata una modifica ai link if (change & CHANGED_LINK) { // attende mezzo secondo prima di chiamare llUnSit llSleep(0.5); // prende la chiave dell'avatar se si è seduto un avatar altrimenti sarà NULL_KEY key av = llAvatarOnSitTarget(); // se non è NULL_KEY allora si ` seduto qualcuno! if (av) { // pronuncia in chat tutto il suo disappunto ^^ llSay(0, "Alzati!"); // fa alzare a forza l'avatar maleducato (che non può imperdirlo) llUnSit(av); } } } }
Categorie: LSL | LSL:Eventi | LSL:Esempi
