User:Michel Lemmon/Script Presentazione

From Second Life Wiki
< User:Michel Lemmon
Revision as of 00:05, 2 April 2008 by Michel Lemmon (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Script Crea Presentazione Slide con Texture v0.2

Questo script vi permette di creare in-world attraverso un oggetto uno slide show. Rezzare un cubo, mettere le texture nel cubo che vogliamo usare per la nostra presentazione (Slide Show). Creare nei content dell'oggetto un New Script e copiate lo script che vedete qui sotto all'interno dello stesso cubo. Se numerate le vostre texture le stesse verranno presentate nel ordine definito.

Cliccare sul cubo per attivare lo SlideShow. Vi appare un menu con tutte le opzioni per gestire lo Slide Show. <lsl>// integer __debug = FALSE; string __version_id = "Script Presentazione Slide Show v 0.2";

// global variables integer interval; integer currentTexture = 0; integer previousTexture = 0; integer totalTextures = 0; list textureList =[]; integer messageChannel = 999888; list dynMenu =["Indietro", "Versione", "Avanti", "Reset"];

// Qui trovate la lista delle costanti possibili. list list_types = [INVENTORY_NONE, INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_LANDMARK,

                  INVENTORY_CLOTHING, INVENTORY_OBJECT, INVENTORY_NOTECARD, INVENTORY_SCRIPT,
                  INVENTORY_BODYPART, INVENTORY_ANIMATION, INVENTORY_GESTURE];

// Qui trovate la lista delle stringhe corrispondenti. list list_names = ["None", "Texture", "Sound", "Landmark", "Clothing", "Object", "Notecard",

                  "Script", "Body Part", "Animation", "Gesture"];

default {

   state_entry() {
       // Leggi le texture nel prim e salvale
       integer typeCount = llGetInventoryNumber(INVENTORY_TEXTURE);
       integer j;
       for (j = 0; j < typeCount; ++j) {
           string invName = llGetInventoryName(INVENTORY_TEXTURE, j);
           if (__debug) {
               llWhisper(0, "Inventory " + invName);
           }
           textureList += invName;
           ++totalTextures;
       }
       if (__debug) {
           llWhisper(0, "Found " + (string) totalTextures + " textures");
       }
       llSetTexture(llList2String(textureList, 0), 0);


       // inizializza il canale dove lo SlideShow comunica con l'owner via dialog
       messageChannel = (integer) llFrand(2000000000.0);
       llListen(messageChannel, "", NULL_KEY, "");
       // llOwnerSay((string)messageChannel);
       currentTexture = 0;
   }
   on_rez(integer start_param) {
       llResetScript();
   }


   touch_start(integer total_number) {
       if (llDetectedKey(0) == llGetOwner()) {
           llDialog(llDetectedKey(0), "Cosa vuoi fare?", dynMenu, messageChannel);
       }
   }
   // Ascolta il messaggio dialog box e risponde in modo appropriato
   listen(integer channel, string name, key id, string message) {
       if (id != llGetOwner()) {
           return;
       }
       if (message == "Versione") {
           llWhisper(0, __version_id);
           return;
       }
       if (message == "Reset") {
           llResetScript();
       }
       if (message == "Indietro" && currentTexture > 0) {
           previousTexture = currentTexture;
           --currentTexture;
       } else if (message == "Avanti" && (currentTexture >= 0) && (currentTexture < totalTextures)) {
           previousTexture = currentTexture;
           ++currentTexture;
       } else {
           llDialog(llGetOwner(), "Cosa vuoi fare?", dynMenu, messageChannel);
           return;
       }
       // Se ci sono Texture da applicare.  In caso contrario non fare niente.
       if (totalTextures > 0) {
           // Ensure that we do not go out of bounds with the index
           if (currentTexture >= totalTextures) {
               currentTexture = 0;
           }
           // Setta le nuove texture
           llSetTexture(llList2String(textureList, currentTexture), 0);
           // Setta a 3 secondi il tempo di visualizzazione delle texture
           llSetTimerEvent(3.00);
           llDialog(llGetOwner(), "Cosa vuoi fare?", dynMenu, messageChannel);
       }
   }
   timer() {
       // Elimina tutti gli eventi timer precedenti
       llSetTimerEvent(0.00);
       // Setta la prossima texture in pre-cache
       integer nextTexture = currentTexture + 1;
       if (nextTexture >= totalTextures) {
           nextTexture = 0;
       }
       llSetTexture(llList2String(textureList, nextTexture), 1);
   }

}</lsl>

Michel's Informazioni
Michel Lemmon2.jpg
Click per Ingrandire


Link VTeam

Michel Lemmon 20:00, 1 april 2008(PST)