Pagina 1 di 1

Dare un'oggetto

MessaggioInviato: mer mar 02, 2016 1:58 pm
di Davide Cappelli
Spero sia la sezione appropiata, mi serve di sapere una volta che un utente effettua l'accesso nella mia Land come faccio a fargli ricevere una Notecard (da accettare) automaticamente ? Grazie

Re: Dare un'oggetto

MessaggioInviato: mer mar 02, 2016 3:25 pm
di cactus
- Risposta veloce:
llGiveInventory().

- Risposta noiosa e prolissa:
il sistema più veloce e lineare che mi viene in mente è di mettere nello script un 'rilevatore' che si attivi quando l'avatar fa il suo ingresso atterrando nel landing poing.

In seguito a ciò lo stesso script parte con un llGiveInventory() e passa la notecard all'utente.

Come rilevatore puoi usare un evento sensor o più preferibilmente un evento collision.

Il secondo caso (IMHO) è preferiible in quanto un sensor aggiunge un filo di lag, di per sè magari trascurabile ma non puoi sapere a priori quanti altri 'generatori di lag' possono essere presenti nell'area per cui è buona norma evitare di contribuire, quando e se possibile, ad appesantire l'ambiente.
Inoltre con i sensori non puoi agire sul volume se non come raggio e arco di sfera, mentre con il collision hai piena liberà per la forma.

Un'ulteriore rifinitura potrebbe essere data dall'impostare un'area sensibile (all'ingresso dell'avatar) molto piccola e circoscritta per evitare che l'avatar la faccia riattivare mentre semplicemente ci passa vicino durante l'esplorazione del luogo (in quanto che se l'avatar ha già ricevuto la notecard, sentirsi chiedere ancora e ancora se vuole sempre la stessa notecard diventa fastidioso).

In aggiunta, non obbligatoria ma giusto per finezza, potresti tenere traccia delle key dei visitatori in modo tale che se l'evento viene fatto scattare da un avatar che è tornato nella stessa land dopo 5 min non venga ri-disturbato. Per evitare che la lista degli avatar aumenti a dismisura col tempo puoi impostare un timer che periodicamente rimuove le key più vecchie (in questo modo eviti sempre la ripetizione di invii nei brevi lassi di tempo, ma se poi l'avatar torna dopo un giorno..o una settimana allora riceverà comunque la notecard.

La memorizzazione delle key ti darebbe anche modo di avere il polso di quanti stanno accedendo la land, quanti sono i nuovi e quanti sono coloro che stanno ri-tornando e tanto altro ancora (non so che cosa tu ne voglia fare di questo script, ma per un negozio ad esempio permetterebbe di distinguere i frequentatori casuali dai visitatori fidelizzati e incrociare questi dati per confrontare i visitatori con gli effettivi compratori, ecc....)

Altro dettaglio, sempre non obbligatorio, potrebbe essere comodo gestire un evento change che resetti lo script quando sostituisci la notecard con una versione aggiornata (es nuove condizioni, eventi, regole), in questo modo a te non resta altro da fare che sostituire le notecard e avrai già la certezza che da quel momento in poi tutti gli avatar riceveranno comunque la richiesta di accettare la nuova versione, anche se erano lì solo un minuto prima, e senza dover metter mano al codice. Altrimenti puoi sempre optare per una lettura 'al volo' dell'inventario di volta in volta, son gusti e scelte personali.

...altro non mi viene in mente.

Re: Dare un'oggetto

MessaggioInviato: mer mar 02, 2016 4:06 pm
di Davide Cappelli
cactus ha scritto:- Risposta veloce:
llGiveInventory().

- Risposta noiosa e prolissa:
il sistema più veloce e lineare che mi viene in mente è di mettere nello script un 'rilevatore' che si attivi quando l'avatar fa il suo ingresso atterrando nel landing poing.

In seguito a ciò lo stesso script parte con un llGiveInventory() e passa la notecard all'utente.

Come rilevatore puoi usare un evento sensor o più preferibilmente un evento collision.

Il secondo caso (IMHO) è preferiible in quanto un sensor aggiunge un filo di lag, di per sè magari trascurabile ma non puoi sapere a priori quanti altri 'generatori di lag' possono essere presenti nell'area per cui è buona norma evitare di contribuire, quando e se possibile, ad appesantire l'ambiente.
Inoltre con i sensori non puoi agire sul volume se non come raggio e arco di sfera, mentre con il collision hai piena liberà per la forma.

Un'ulteriore rifinitura potrebbe essere data dall'impostare un'area sensibile (all'ingresso dell'avatar) molto piccola e circoscritta per evitare che l'avatar la faccia riattivare mentre semplicemente ci passa vicino durante l'esplorazione del luogo (in quanto che se l'avatar ha già ricevuto la notecard, sentirsi chiedere ancora e ancora se vuole sempre la stessa notecard diventa fastidioso).

In aggiunta, non obbligatoria ma giusto per finezza, potresti tenere traccia delle key dei visitatori in modo tale che se l'evento viene fatto scattare da un avatar che è tornato nella stessa land dopo 5 min non venga ri-disturbato. Per evitare che la lista degli avatar aumenti a dismisura col tempo puoi impostare un timer che periodicamente rimuove le key più vecchie (in questo modo eviti sempre la ripetizione di invii nei brevi lassi di tempo, ma se poi l'avatar torna dopo un giorno..o una settimana allora riceverà comunque la notecard.

La memorizzazione delle key ti darebbe anche modo di avere il polso di quanti stanno accedendo la land, quanti sono i nuovi e quanti sono coloro che stanno ri-tornando e tanto altro ancora (non so che cosa tu ne voglia fare di questo script, ma per un negozio ad esempio permetterebbe di distinguere i frequentatori casuali dai visitatori fidelizzati e incrociare questi dati per confrontare i visitatori con gli effettivi compratori, ecc....)

Altro dettaglio, sempre non obbligatorio, potrebbe essere comodo gestire un evento change che resetti lo script quando sostituisci la notecard con una versione aggiornata (es nuove condizioni, eventi, regole), in questo modo a te non resta altro da fare che sostituire le notecard e avrai già la certezza che da quel momento in poi tutti gli avatar riceveranno comunque la richiesta di accettare la nuova versione, anche se erano lì solo un minuto prima, e senza dover metter mano al codice. Altrimenti puoi sempre optare per una lettura 'al volo' dell'inventario di volta in volta, son gusti e scelte personali.

...altro non mi viene in mente.


Sei stato fin troppo esaustivo,Grazie.
Ma un breve script no e ? :D

Re: Dare un'oggetto

MessaggioInviato: gio mar 03, 2016 5:04 am
di cactus
..è che di solito quando ti chiedono uno script senza specifiche passi più tempo a implementarle dopo che a scrivere lo script in sè..

Comunque, se ti serve solo uno script breve breve:
Codice: Seleziona tutto
default{
collision_start(integer num){
  llGiveInventory(llDetectedKey(0),llGetInventoryName(INVENTORY_NOTECARD,0));
}
}
e metti la notecard nello stesso prim dello script. fine.

Re: Dare un'oggetto

MessaggioInviato: ven mar 04, 2016 4:14 pm
di rubin_mayo
Ciao a tutti, Ciao Davide.

Se non tieni conto delle misure che ti ha suggerito Cactus rischi di essere segnalato per spam, oppure più semplicemente rischi che la gente non venga più nella tua land proprio per evitare di essere importunata dal tuo greeter.

Comunque per questo tipo di script che vanno in genere sotto il nome di greeter, ne puoi tranquillamente trovare sia freebie che a pagamento... basta che cerchi un po' fino a trovare quello che più fa per te.

Mister Rubin (Mayo)