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 &grave; 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);                
            }
        }
    }
}
Strumenti personali