Terza Lezione di LSL

Terza Lezione di LSL

Terza lezione di LSL alla Land del Forum!

Abbiamo continuato il discorso iniziato alla seconda lezione di LSL: la Comunicazione.

Ovvero come fa un oggetto ad ascoltare su di un canale ed a rispondere. Abbiamo creato due oggetti: il primo che ascolta su un canale, il secondo che appena toccato parla sullo stesso canale.

In questo modo abbiamo simulato la comunicazione tra i due oggetti. Il progetto consiste in due oggetti distinti, ognuno con il proprio script, che comunicano tra di loro.

Il primo script inizializza un listener tramite la chiamata a funzione llListen sul canale 1234567890. Al listen non vengono applicati filtri, quindi qualunque agent può interagire con esso.
Dentro l’evento listen è stata inserita una chiamata a funzione llSay su canale PUBLIC_CHANNEL (ovveo il canale 0), per avere un feedback del messaggio ascoltato.

integer CHANNEL = 1234567890;

default {
    state_entry() {
        key owner = llGetOwner();
        llSetText("Oggetto che riceve di "+llKey2Name(owner),<0.0,1.0,0.0>,1.0);
        llListen(CHANNEL,"",NULL_KEY,"");
    }

    listen(integer channel, string name, key id, string message) {
        llSay(PUBLIC_CHANNEL,name+" mi ha detto \""+message+"\" sul canale "+(string)channel);
    }

    changed(integer change) {
        if(change & CHANGED_OWNER) llResetScript();
    }
}

Il secondo script si occupa di attendere un click dal proprietario dell’oggetto per inviare nel canale prestabilito la stringa “NOME_AGENT mi ha toccato!”. In questo modo, questa stringa verrà intercettata dallo script del primo oggetto!

integer CHANNEL = 1234567890;

default {
	state_entry() {
		key owner = llGetOwner();
		llSetText("Oggetto che invia di "+llKey2Name(owner),<1.0,0.0,0.0>,1.0);
	}

	touch_start(integer total_number) {
		key agent = llDetectedKey(0);
		if(agent==llGetOwner()) {
			llOwnerSay("Invio messaggio '"+llKey2Name(agent)+" mi ha toccato!' sul canale "+(string)CHANNEL);
			llSay(CHANNEL, llKey2Name(agent)+" mi ha toccato!");
		}
		else {
			llInstantMessage(agent,"Non puoi toccare il mio oggetto!");
		}
	}

	changed(integer change) {
		if(change & CHANGED_OWNER) llResetScript();
	}
}

In tutti e due gli script è stata fatta un’aggiunta: l’evento changed. Questa è stata fatta per gestire un eventuale cambio di owner. In questo caso, infatti, l’intero script viene resettato per permettere la ridefinizione dei listener.

Possiamo provare il funzionamento del progetto in due modi:

  • Cliccando sul secondo oggetto;
  • Parlando sul canale (nel nostro caso ci basta scrivere nella chat “/1234567890 Prova!”).

Alla prossima lezione!

Attenti al Lupo

WolfDuff

Perché un moderatore smette di moderare? Perché un moderatore ha bisogno di una pausa? Per quale motivo un Lupo non ha più fame?
Tante domande ma nessuna apparente risposta.

Resta soltanto un sorriso orgoglioso. Quel sorriso che ti esce fuori quando vieni ignorato, quando lasci senza risposta la preda, quando senti che l’agnello continua a trovare giustificazioni inverosimili pur di dire “L’avevo detto io!”.
Per fortuna, hai la verità dentro di te, che custodisci gelosamente. Sai di aver lasciato per rispetto, rispetto a te stesso. Ma sai di averlo fatto al momento giusto. Dopo che hai attraversato due tempeste, felice di averle combattuto insieme a dei veri Lupi di mare.

Tre Lupi non hanno più fame. Alcuni hanno bisogno di leccarsi le ferite, altri sono solo stanchi, altri hanno capito che era arrivato il momento… il momento giusto per non rendere più debole tutto il Branco. Nessun Lupo è indispensabile, ogni Lupo fa parte del Branco. Il suo compito è capire quando lo rende più debole ed, in questi casi, farsi da parte.

E allora si capisce che la fame non è passata, che un Lupo ha sempre una preda, che continua a sbranare, che c’è ancora una tempesta, che altri Lupi sono pronti a combatterla. Ed esce di nuovo il sorriso, lo stesso di prima, sempre orgoglioso, ancora più cattivo… si ritirano le zanne, si allungano le orecchie, adesso si combatte insieme ai conigli.

Quello che bisogna domandarsi adesso è… è meglio farsi sbranare da un Lupo dichiarato o essere rosicchiato lentamente da un coniglio!

Duffman, lo voglio!

Duffman

Lo voglio! REGALATEMELO!

😯

SimpleModal Contact Form (SMCF)

SimpleModal Contact Form

Installato da qualche giorno un nuovo plug-in per WordPress: SimpleModal Contact Form (SMCF).

Questo plug-in vi consente di inviarmi una email direttamente dal sito. Semplice ma con un effetto molto carino!

Ci ho messo un paio di giorni per renderlo effettivo visto che era in inglese e andava in conflitto con il plug-in Lightbox. Mi sono messo a tradurre il plug-in (appena posso invio la traduzione direttamente all’autore) ed ho tentato di correggere il bug. Sul sito dell’autore, infatti, questo bug viene segnalato per una versione diversa dall’ultima disponibile, quindi non vi è una soluzione.

Dopo studi, ho scoperto che per risolvere il conflitto tra i due plug-in basta aggiungere la riga:

jQuery.noConflict();

alla fine del file js/jQuery.js e tutto magicamente funziona!

Quindi adesso non avete scuse… potete contattarmi sia tramite i commenti che direttamente tramite il form!

Ciau!