Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Základ: proměnná se DEKLARUJE, neboli napíšeš co je za typ a její jméno, a INICIALIZUJE, což znamená že jí přiřadíš počáteční hodnotu.
- #
- # Deklarace je tedy:
- key Avatar;
- # key je typ, Avatar je jméno proměnné => deklaruješ proměnnou.
- #
- # Každá proměnná má nějakou hodnotu. Jakou má ale hodnotu, když jí nezadáš? U LSL se o to stará kompiler, přiřadí jí za Tebe NULL_KEY, což je prázdný key... Když ale hodnotu zadáš sám, pak tu proměnnou inicializuješ, tedy zadáš jí počáteční hodnotu, nenecháš to na kompileru.
- Avatar = llGetOwner();
- # Teď jsi jí přiřadil hodnotu.
- #
- #
- # To je DEKLARACE a INICIALIZACE
- # Pak tu ale je DEKLARACE S INICIALIZACI... To je určení typu a jména A ZAROVEN jeji priřazení:
- key Avatar = llGetOwner();
- # Je to zkráceně toto:
- key Avatar;
- Avatar = llGetOwner();
- # Nejspíš už tušíš v čem je problém, ale musíme teď říci ještě, co je rozsah proměnné...
- #
- # Každá proměnná má rozsah platnosti, ve kterém k ní můžeš přistupovat a ukládat či načítat její hodnotu.
- # V LSL jsou 2, globální a lokální.
- #
- # - Globální platí v celém skriptu.
- # - Lokální platí v bloku kódu, jednoduše řečeno mezi závorkami { }.
- #
- # => Lokální má vždy přednost - to je ten problém na který jsi narazil...
- #
- key Avatar;
- default
- {
- state_entry()
- {
- key Avatar = llGetOwner();
- }
- }
- # Deklaruješ globální key Avatar, kompilátor přiřadí NULL_KEY protože jsi nezadal její hodnotu.
- # Deklaruješ lokální key Avatar a přiřadíš jí key ownera, tahle proměnná má přednost nad globální a její platnost končí se závorkou }
- #
- #
- # Ty jsi nechtěně deklaroval tu proměnnou 2x, můžeš to číst takto:
- key globalniAvatar;
- default
- {
- state_entry()
- {
- key lokalniAvatar = llGetOwner();
- }
- }
- # Takže do globální jsi nikdy nepřiřadil...
- #
- #
- #
- # Co jsi chtěl bylo přiřadit do proměnné, takže nesmíš použít ten typ key před názvem proměnné, to je jinak deklarace...
- key Avatar;
- default
- {
- state_entry()
- {
- Avatar = llGetOwner(); // žádný "key Avatar"
- }
- }
- # pak není lokální proměnná, co by byla nadřazená, a přiřadíš do globální...
- #
- #
- # Note - Doporučuji u globálních proměnných přidat na začátek názvu g jako global, tedy gAvatar, aby jsi poznal, že je globální a tedy už je někde deklarovaná...
- key gAvatar;
- #
- # Teď ještě k lokálním proměnným... Platí v rozsahu bloku kódu, blok je mezi závorkami { }, ale ty se můžou i vnořovat, viz:
- default
- {
- state_entry()
- { // Zacatek Bloku 01
- int promenna = 0;
- if( promenna = 0 )
- { // Zacatek Bloku 02
- promenna = 1;
- } // Konec Bloku 02
- } // Konec Bloku 01
- }
- # promenna je deklarovaná( a zároveň iniciovaná ) v bloku 01, a taky "přestupuje" i do bloku 02, kde platí, platila by i v bloku 03, 04 05 atd...
- default
- {
- state_entry()
- { // Zacatek Bloku 01
- int promenna = 0;
- if( promenna = 0 )
- { // Zacatek Bloku 02
- int takyPromenna = 2;
- promenna = 1;
- } // Konec Bloku 02
- takyPromenna = 3; // CHYBA
- } // Konec Bloku 01
- }
- # takyPromenna je deklarována v bloku 02, ale nemůže "přestoupit" do bloku 01, nejde se "odvnořit", pouze vnořit,
- # takže řádek přiřazení do takyPromenna = 3; vyvolá u kompilátoru chybu, protože platnost proměnné končí s blokem 02.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement