Advertisement
Guest User

Untitled

a guest
Jul 18th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # 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.
  2. #
  3. # Deklarace je tedy:
  4.  
  5. key Avatar;
  6.  
  7. # key je typ, Avatar je jméno proměnné => deklaruješ proměnnou.
  8. #
  9. # 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.
  10.  
  11. Avatar = llGetOwner();
  12.  
  13. # Teď jsi jí přiřadil hodnotu.
  14. #
  15. #
  16. # To je DEKLARACE a INICIALIZACE
  17. # Pak tu ale je DEKLARACE S INICIALIZACI... To je určení typu a jména A ZAROVEN jeji priřazení:
  18.  
  19. key Avatar = llGetOwner();
  20.  
  21. # Je to zkráceně toto:
  22.  
  23. key Avatar;
  24. Avatar = llGetOwner();
  25.  
  26.  
  27.  
  28. # Nejspíš už tušíš v čem je problém, ale musíme teď říci ještě, co je rozsah proměnné...
  29. #
  30. # Každá proměnná má rozsah platnosti, ve kterém k ní můžeš přistupovat a ukládat či načítat její hodnotu.
  31. # V LSL jsou 2, globální a lokální.
  32. #
  33. # - Globální platí v celém skriptu.
  34. # - Lokální platí v bloku kódu, jednoduše řečeno mezi závorkami { }.
  35. #
  36. # => Lokální má vždy přednost - to je ten problém na který jsi narazil...
  37. #
  38.  
  39. key Avatar;
  40.  
  41. default
  42. {
  43.     state_entry()
  44.     {
  45.         key Avatar = llGetOwner();
  46.     }
  47. }
  48.  
  49. # Deklaruješ globální key Avatar, kompilátor přiřadí NULL_KEY protože jsi nezadal její hodnotu.
  50. # 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 }
  51. #
  52. #
  53. # Ty jsi nechtěně deklaroval tu proměnnou 2x, můžeš to číst takto:
  54.  
  55. key globalniAvatar;
  56.  
  57. default
  58. {
  59.     state_entry()
  60.     {
  61.         key lokalniAvatar = llGetOwner();
  62.     }
  63. }
  64.  
  65. # Takže do globální jsi nikdy nepřiřadil...
  66. #
  67. #
  68. #
  69. # 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...
  70.  
  71. key Avatar;
  72.  
  73. default
  74. {
  75.     state_entry()
  76.     {
  77.         Avatar = llGetOwner(); // žádný "key Avatar"
  78.     }
  79. }
  80.  
  81. # pak není lokální proměnná, co by byla nadřazená, a přiřadíš do globální...
  82. #
  83. #
  84. # 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á...
  85. key gAvatar;
  86.  
  87. #
  88. # 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:
  89.  
  90. default
  91. {
  92.     state_entry()
  93.     { // Zacatek Bloku 01
  94.         int promenna = 0;
  95.         if( promenna = 0 )
  96.         { // Zacatek Bloku 02
  97.             promenna = 1;
  98.         } // Konec Bloku 02
  99.     } // Konec Bloku 01
  100. }
  101.  
  102. # 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...
  103.  
  104.  
  105. default
  106. {
  107.     state_entry()
  108.     { // Zacatek Bloku 01
  109.         int promenna = 0;
  110.         if( promenna = 0 )
  111.         { // Zacatek Bloku 02
  112.             int takyPromenna = 2;
  113.             promenna = 1;
  114.         } // Konec Bloku 02
  115.        
  116.         takyPromenna = 3; // CHYBA
  117.     } // Konec Bloku 01
  118. }
  119.  
  120. # takyPromenna je deklarována v bloku 02, ale nemůže "přestoupit" do bloku 01, nejde se "odvnořit", pouze vnořit,
  121. # 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