Funkce llSetPrimitiveParams
proměnné – fungují jako krabice s různě tvarovanými výřezy na horní straně, můžete do nich vložit nebo z nich vyndat objekty (hodnoty) pouze určitého typu
Typy proměnných
- integer celé číslo
- float reálné číslo
- string řetězec textu
- key identifikátor objektů, textur či avatarů
- vector skupina tří čísel
- rotation speciální proměnná pro rotování
- list seznam proměnných různých typů
default { state_entry() { string MojePromenna; MojePromenna = "Text 1"; llOwnerSay(MojePromenna); // vypíše Text 1 MojePromenna = "Text 2"; llOwnerSay(MojePromenna); // vypíše Text 2 } }
Počáteční hodnota proměnné
default { state_entry() { string MojePromenna = "Text 1"; //deklarace počáteční hodnoty llOwnerSay(MojePromenna); // vypíše Text 1 MojePromenna = "Text 2"; llOwnerSay(MojePromenna); // vypíše Text 2 } }
Práce s proměnnými
- Jméno proměnné může obsahovat písmena, čísla (jen ne na začátku) a znak _, ostatní znaky jsou ignorovány, maximální délka 256 znaků
- Většina funkcí v LSL používá proměnné jako vstupy pro svou činnost
- Technika typecasting převádí proměnné různých typů mezi sebou
Typecasting
- převod mezi různými typy hodnot se provádí uvedením nového typu hodnoty před proměnnou
Globální & lokální proměnná
Globální proměnné
- definované před state default
- platí v celém skriptu, ve všech state
- pro jejich hodnotu nemůže být použit výraz
Lokální proměnné
- definované kdekoliv mezi { a } – uvnitř state, event nebo jen bloku
- má platnost pouze v tomto bloku
- hodnotu lze naplnit výrazem
string Autor1 = "JK"; string Mapa1 = llGetRegionName(); //ŠPATNĚ - nelze použít výraz string Mapa2; default { state_entry() { Mapa2 = llGetRegionName(); string Autor2 = Bruce Lee; } touch_start(integer total_number) { llOwnerSay( Autor1 ); llOwnerSay( Autor2 ); //ŠPATNĚ - neplatí v tomto bloku llOwnerSay( Mapa1 ); llOwnerSay( Mapa2 ); } }
Proměnná integer
- popisuje celé číslo (bez desetinné čárky) v rozpětí –2147483648 až 2147483647 (32 bit)
- pro fajnšmekry: mohou být vkládány i čísla v hexadecimálním tvaru (např. 0x2bf)
Proměnná float
- popisuje reálné číslo s plovoucí desetinnou čárkou, zhruba ± ~10na44.85 až ~10na38.53 (32 bit)
- operace s proměnnou float způsobuje zaokrouhlování (zanedbatelné)
- pro fajnšmekry: mohou být vkládány i čísla v exponenciálním zápisu (např. 1.123E-2)
Proměnná string
- obsahuje řetězec znaků, délka je omezena jen celkovou pamětí pro skript (16 kB)
- řetězec se při zadávání ohraničuje znakem “
- speciální znaky \t (4 mezery), \n (nový řádek), \“ (uvozovky), \\ (lomítko samotné)
Proměnná key
- obsahuje unikátní identifikátor (UUID) objektu, avatara, skupiny či položky v inventory ve tvaru 00000000-0000-0000-0000-000000000000
- UUID se může měnit při vytváření kopií a nebo – notecard: při editaci – objekt: při rezznutí
Proměnná vector
- jde o tři čísla typu float spojené dohromady ve tvaru < x , y , z > a tato trojice umožňuje vyjádřit například polohu, rychlost, barvu, měřítko atd.
- pomocí tečkové notace mohu měnit jednotlivé složky vektoru, viz příklad
Proměnná rotation
- rotace není v LSL vyjádřena pomocí klasického otočení podle osy X, Y a Z, ale pomocí takzvaných kvaternionů – tvoří ji 4 hodnoty <X, Y, Z, S>
- naštěstí lze klasickou XYZ rotaci jednoduše převádět na a z kvaternionů pomocí dvou funkcí llEuler2Rot a llRot2Euler
Proměnná list
- jde o seznam (až 1000+) hodnot různých typů, zapisovaných mezi znaky [ a ] a oddělených čárkou, výhodné pro generované seznamy s předem neznámou délkou
- na čtení, hledání, přidávání, mazání nebo třídění jednotlivých položek se používají speciální funkce, např. llList2Integer nebo llListSort
Konstanty
- v podstatě jde o „proměnnou se stále stejnou hodnotou“
- pomáhají dělat kód skriptu čitelnější
- většina konstant je definována v rámci funkce
- některé konstanty, např. PI, SQRT2, TRUE, FALSE, ZERO_VECTOR či DEG_TO_RAD jsou všeobecně platné
Related posts