Landmark giver


Buna. Cum am promis in postul precedent a venit vremea sa va explic cum creati un script simplu care sa ofere la click un landmark ( am ales landmark pentru acest script, dar puteti incerca orice obiect sau obiecte).

1.Creati un obict in world, click dreapta create si apoi click stanga in enviroment. Veti crea un cub (sau ce ati ales voi). Recomand redenumirea lui, pentru a evita confuzii pe mai tarziu (in tab-ul General la Name).

2.Mergem la tab-ul Content si cream un nou script. Din nou recomand redenumirea scriptului (LMGiver, de ex).

3. Scrierea codului sursa. Am trecut tot codul mai jos…apoi sub comentariile.Dupa cum vedeti am pastrat cele 2 functii state_entry si touch_start, ceea ce difera e doar codul dintre ele. Astfel am ales ca obiectul sa afiseze un mesaj deasupra lui, folosind functia llSetText( string text, vector color, float alpha ). Deasupra obiectului se va afisa mesajul “Click for Landmark” in culoarea alba, folosind alpha blending de 1. Ok, cred ca v-am speriat putin, sa va explic. String-ul in LSL, adica sirul de caractere se initializeaza folosit ” ” (ghilimelele). Culoarea se retine intr-un vector sub format RGB(red, green blue), adica fiecare element al vectorului fiind intre 0.0 si 1.0, reprezentand intensitatea culorii respective. Astfel daca dorim sa scriem mesajul cu verde vom seta culoarea la componenta G >0.0 iar la celelate 0.0. Ultimul parametru al functiei este componenta alpha, adica transparenta. Daca dorim ca scrisul sa fie opac vom folosi 1, iar daca dorim sa se contopeasca putin cu mediul inconjurator (efect de blending) il vom seta mai mic (0.5, de ex).

In cea de-a doua functie este scris codul care ofera LM catre utilizator. Astefl in linia 9 se salveaza numele primului LM din inventarul obiectului (content). Acest lucru e facut cu functia string llGetInventoryName( integer type, integer number ). Primul parametru a functiei cere tipul de obiect, eu selectand INVENTORY_LANDMARK, pentru a facilita cautare, fiindca tocmai asta cautam (daca doriti sa cautati alt tip de obiect le gasiti pe toate in linkul functiei). Al doilea parametru reprezinta de la al catelea obiect gasit sa imi returneze numele. Odata ce avem numele obiectului ramane sa il si oferim celui ce a dat click. Asta se realizeaza in linia 10, apeland functia llGiveInventory( key destination, string inventory ). Pentru a stii cui sa oferim acest obiect trebuie intai sa aflam keya lui. Orice obiect, inclusiv avatar, are keye unica in SL (daca doriti sa va aflati keya mergeti pe profilul vostru si la 2’nd Life aveti sus Key). Pentru a afla keya celui ce a dat click apelam functia key llDetectedKey( integer number ). Intr-un final punen ca ultim parametru numele obiectului pe care dorim sa-l oferim, in cazul nostru numele LM din inventory-ul obiectului.

4. Introducerea unui LM in content. Ceea ce urmeaza este un simplu drag din inventoy-ul personal a unui LM (daca nu aveti unul : world-> create landmark here) si drop in content-ul obiectului creat.

5.Testare Ceea ce ramane de facut este sa dati un click si voila!…vi se ofera un LM 😀

Spor pe mai departe…voi reveni cu un post legat de crearea unui dialog cu optiuni…dar pana atunci have fun!

, , ,

  1. Leave a comment

Leave a comment