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";
// Variabili Globali
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) {
// Assicurarsi che che l'index non esca dai limiti
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>