Visade sidor under den senaste månaden

På den här bloggen ger vi tips m m för byggande, scriptande och klädskapande i Second Life.

Gå med i gruppen SEC - Swedish Educational Center!
Gruppens syfte är att bidra till medlemmarnas möjligheter att tillfredsställa sin kreativitet i Second Life.
Genom den kommer du att få inbjudningar, kursmaterial, texturer, mallar och intressanta objekt som du kanske kan ha nytta av i ditt skapande. Kontakta Kay Uggla: kay.uggla@gmail.com eller via IM!

SEC-gruppens medlemmar kan använda gruppens "notices" för att skicka ut sina egna skapelser, texturer råd och rön och gruppchatten för att få råd och dåd när man som mest behöver det i sitt skapande.
Vi hjälper varandra efter bästa förmåga att förverkliga våra kreativa drömmar!

Lärare, Byggare och klädskapare

Lärare, Byggare och klädskapare
Kay Uggla: kay.uggla@gmail.com och Snowy Montpark: snowychannel@gmail.com

Byggkurs 3 dokumentation

Vi kommer här att prata om grunderna med script. Det finns mängder av saker man kan göra med script och vi behöver många lektioner för att se ens en bråkdel. Linden har försett alla primmar med ett grund-script. Om vi öppnar primmen för editering med högerklick samt Edit-Content syns knappen "New script". De flesta har nog försökt detta någon gång, och man får ett klickbart objekt som säger "Hello avatar" samt "Touched" som resultat. Det går att köra flera script i samma prim och de kör då oberoende av varandra. Script kan samarbeta och ett av exemplen här gör just det. Lite längre fram i kursen ska vi titta på samarbetande scripts.

Här har vi utgått från vindvisar-scriptet som delades ut förra lektionen och lagt till funktioner för att snurra objektet, sitta på det och byta färg på det. Scriptet finns att få på Swedish Orientation; klicka på den snurrande kuben som har ett script tryckt på sig. Den version vi utgår ifrån har nästan ingen funktionalitet. Vi ska börja med att förstå vad en "kommentar" är i script. Så här kan början av ett script se ut:
____________________
// Vi startar här!!

default
{
state_entry()
{

// llTargetOmega(<0,0,1>,0.3,PI);

..

Scriptet börjar alltid köras där det står default{state_entry(). Raden innan, som börjar med två snedstreck - "//" - kommer inte att läsas av SL:s scriptläsare. Att på detta vis hindra att scriptrader läses och utförs kallas för att bortkommentera. För att testa de nya funktionerna i vårt script kan vi börja med att ta bort kommentarstecknen framför "llTargetOmega(<0,0,1>,0.3,PI);". Nu snurrar vindvisaren kring z-axeln. Vi har skickat följande till funktionen:

* Vald axel; =<0,0,1>.
* Hastighet; 0,3. Minustecken medför rotation åt andra hållet.
* PI; anger "motorstyrka" och ska vara skild från 0. Stora fysiska objekt kan behöva stor styrka.

Hoppas ni hänger med och inte blir yra. Vill jag nu stoppa kuben kan jag sätta antingen hastighet eller axel till 0. Så här står det om axeln nollas: llTargetOmega(<0,0,0>,0.3,PI);

Det var lite om snurrande objekt. Vi ska nu titta på färgval. Med bortkommentering kan man snabbt byta funktion när man testar och inte är helt säker på vilken funktion man vill ha. Vi sätter nu kommentarstecken framför llTargetOmega och tar bort alla som satt framför färgrader:

vector originalColor;

default
{
state_entry()
{
llSetTimerEvent(0.5);
//{
// llTargetOmega(<0,0,1>,0.3,PI);
//}
originalColor = llGetColor(0);
}

timer() {
vector wind = llWind(ZERO_VECTOR);
//llWhisper(0,(string)llWind(ZERO_VECTOR));
// llStopLookAt();
// llLookAt(llGetPos() + wind,10.0,1.0);
// llSetText("Wind Gauge: " + (string)llVecMag(wind) + " m/s",<1,1,1>,1.0);

llSleep(1.5);
llSetColor( <> , ALL_SIDES ); // set color to blue.
llSleep(1.5);
llSetColor( <> , ALL_SIDES ); // set color to green.
llSleep(1.5);
llSetColor( originalColor, ALL_SIDES ); // set color to original
}
}

Där blev det mycket kod! För att det inte ska blinka för snabbt har vi llSleep(1.5); en paus-kod. Original-vindmätaren mäter två gånger i sekunden och det blir ett fasligt blinkande om den får hålla den takten, så vi saktar ner med ett llSleep(1.5);

Vi har även sparat originalColor för att man ska kunna återvända till originalfärg. Färg sparas i en vektor, precis som rotationsaxeln. En vektor är en slags låda för flera värden som hör ihop. Många saker kan beskrivas med tre värden, t ex läge eller färg, och därför är våra script försedda med en standardvektor som har just tre värden.

Ett varningens ord om script! Det är väldigt lätt att gå bort sig när man ändrar och då är det bra att ha originalet kvar. Jag har ofta en mapp för varje dag när jag scriptar, så att jag kan backa till dagen innan.

Avslutningsvis tittar vi på ett script som kopplar dansbollar för synkronisering. Det innehåller också ett kommando som placerar avataren ca 75 cm ovanför mitten på en prim:

llSitTarget(<0,0,0.73>, <0,0,0,0>);

Om man vill använda en bit av scriptet flera gånger kan man bryta ut det och göra en "funktion". Man kanske vill att scriptet ska gömma objekt som man sitter på och dessutom minnas om man sitter eller inte. En sådan funktion kan se ut så här:

show_me()
{
llSetAlpha(1.0, ALL_SIDES);
sitting = FALSE;
}

P.S.

För den initierade hade vi en hel del kodfrågor under lektionen som besvaras här:

* Lindens script tillåter (men rekommenderar inte) kommentarsformen /* */.
* LSL-script körs i mono som motsvarar .net men är Open Source.
* Konstruktor/Destruktor är gömda i LSL-scriptens state_entry och state_exit.

D.S.

Inga kommentarer:

Skicka en kommentar