Szerző Téma: [Leírás] Változók  (Megtekintve 2633 alkalommal)

Nem elérhető Feher

  • 123
    • Profil megtekintése
[Leírás] Változók
« Dátum: 2015. augusztus 07. - 18:42:25 »
+6 Show voters
Sziasztok,
ebben a leírásban a változók használatát mutatom be kezdő/leendő scriptereknek. Próbálom minél egyszerűbben leírni, hogy könnyű legyen a megértése.
A változók alkalmasak adatok tárolására. Mielőtt belekezdünk, nézzük meg mik is az mta scipteléshez használt leggyakoribb adattípusok.
Adattípusok:
1. Szám:
   pl.:
x = 15

 
2. Szöveg:
   pl.:
x = \"alma\"

 
3. Igaz-hamis:
  pl.:
x = true

 
Általánosságban a változókról:
   A matekból már ismerős lehet a változó fogalma nagyjából így van ez itt is, a fent lévő példában egy értéket adtunk az x változónak, de mi történik, ha ez többször is megismételjük?
 pl.:
x = 15
x = 12

 
Ilyenkor az x váltózóban lévő érték(15) elveszik és helyére a 12 kerül.
Fontos tudni, hogy a LUA soronként dolgozik szóval, hogy ha kiszeretnéd íratni a változót, akkor mindig a kiírási parancs sora előtt lévő legközelebbi értéket fogja kiírni.
pl.:
a = 4
outputChatBox(a) -- ez 4-et fog kiírni
a = 9
outputChatBox(a) -- ez pedig 9-et

 
(ez a kód így önmagában nem működik, csak egy szemléltetés.) Az outputChatBox egy funkció, amit az mta csapat készített, arra szolgál, hogy kiírjon vmit a chatboxba.
Feltűnhetett a -- jel ami arra alkalmas, hogy egy sornyi megjegyzést írjunk amit a LUA figyelmen kívül hagy. Több sornyi megjegyzést ily módon írhatunk:  --[[szöveg
                                    szöveg]]
Nézzünk meg még pár példát változókkal kapcsolatosan:
 

a = 10
b = a

 
Ilyenkor a és b értéke is 10 lesz.
 

a = 12  -- a értéke 12
b = 10  -- b értéke 10
a = b   -- a régi értéke(12 elveszik) és b értékét tároljuk el az a változóban. Szóval a értéke is 10

 
Itt a értéke 12 lesz majd b értéke 10 aztán látjuk a 3. sort ami elsőre kicsit furcsa lehet mivel 10 nem lehet egyenlő 12-vel. A LUA-ban az = jel nem ugyanaz mint amit a matematikában használunk = jel. Itt ezzel, ahogy a leírás elején is említettem tárolni tudunk adatot egy változóban. A matematikai egyenlőségjel a LUA-ban == -vel jelöljük.
A következő példa a szöveg és a szám közti különbségre hívja el a figyelmet.
 

sajt = 15 -- sajt értéke 15
a = \"sajt\" -- a értéke sajt

 


sajt = 15 -- sajt értéke 15
a = sajt   --a értéke 15
b = \"15\" -- b értéke 15 lesz, de szövegként és nem számként, szóval ha számolni szeretnénk vele pl. c = b+15 akkor az nem fog működni.

 
Látható, hogy bármi ami \"\" jel között van kifog íródni, így az első scriptben nem 15lett a értéke hanem sajt ami szöveg típusú.
Műveletek használata változók segítségével:
 

a = 12 -- a értéke 12
b = 15 -- b értéke 15
c = a+b -- c értéke 27

 
Globális változók:
A globális változók az egész scriptben és resourceben érvényes.(persze szerver oldaliban definiált változó nem létezik a cliens oldaliba és fordítva sem)
pl.:
a = 10

 
Fontos megjegyezni, hogy a LUA soronként dolgozik, ahogy már említettem, és ha a változót a parancs ( ami használja a változót) után definiáljuk, akkor az még akkor nem létezik.
Helyi változók:
Ezek csak az adott funkcióban léteznek, ahol definiáljuk őket.
pl.:

function nev()
local b = 10
end

 
(a local szó helyit jelent)
Ha egy funkcióban definiálunk egy globális változót akkor az csak azután fog létezni, miután előhívjuk a funkciót.
Ha pedig funkción kívül definiálunk egy helyi változót,
pl.:
local a = 10

 
akkor az az egész scriptben érvényes, de nem az egész resource-ben.
Ennyi lenne ez a kis leírás, ha szeretnétek többet, akkora jelezzétek és folytatom a táblákkal.
« Utoljára szerkesztve: 2015. augusztus 07. - 18:44:08 írta Feher »

Nem elérhető Toxic

  • 798
  • #elfújalágyszellő
    • Profil megtekintése
[Leírás] Változók
« Válasz #1 Dátum: 2015. augusztus 07. - 18:58:44 »
0 Show voters
Hasznos kis leírás, ment a zöld kezecske. :D

Nem elérhető !Adam

[Leírás] Változók
« Válasz #2 Dátum: 2015. augusztus 19. - 11:42:21 »
0 Show voters
Szép leírás, kezdőknek nem rosz... :)

[Leírás] Változók
« Válasz #3 Dátum: 2015. október 15. - 21:27:37 »
0 Show voters
Hasznos kis leírás. :)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
[Leírás] Változók
« Válasz #4 Dátum: 2015. október 22. - 06:45:56 »
0 Show voters
Fontos tudni\' date=\' hogy a LUA soronként dolgozik szóval, hogy ha kiszeretnéd íratni a változót, akkor mindig a kiírási parancs sora előtt lévő legközelebbi értéket fogja kiírni.[/quote\']
Ezt nem tudtam, jó tudni, ezért kaptam pár nappal ezelőtt más adatokat vissza. :D
[/quote]

[Leírás] Változók
« Válasz #5 Dátum: 2016. május 30. - 09:17:39 »
+1 Show voters
Idézetet írta: ƒeheristi97 date=1445489156\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"56848\" data-ipsquote-contentclass=\"forums_Topic

Fontos tudni\' date=\' hogy a LUA soronként dolgozik szóval, hogy ha kiszeretnéd íratni a változót, akkor mindig a kiírási parancs sora előtt lévő legközelebbi értéket fogja kiírni.[/quote\']
Ezt nem tudtam, jó tudni, ezért kaptam pár nappal ezelőtt más adatokat vissza. :D
 
Nem a lua dolgozik soronként, hanem egy változót értékét nem írhatod a funkció után deklarálásként.
Nem ugyanaz. Lásd, eventek funkción belüli másik funkcióhoz való kötésénél.
[/quote]

Nem elérhető Feher

  • 123
    • Profil megtekintése
[Leírás] Változók
« Válasz #6 Dátum: 2016. június 10. - 22:38:28 »
0 Show voters
Idézetet írta: Vegance Roleplay date=1464592659\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"56848\" data-ipsquote-contentclass=\"forums_Topic
Nem a lua dolgozik soronként, hanem egy változót értékét nem írhatod a funkció után deklarálásként.
Nem ugyanaz. Lásd, eventek funkción belüli másik funkcióhoz való kötésénél.
 
A LUA és a legtöbb programnyelv(ha nem mind) soronként dolgozik, ezért is kell sokszor deklarálnunk a funkcióinkat, eljárásainkat a program legelején mielőtt még megadnánk feladataikat(lásd C++, pascal stb). Ha nem tennénk akkor a programunk nem is venné észre, hogy az adott funkció létezik.
Abban igazad van, hogy a mondat második felét rosszul fogalmaztam meg de úgy gondoltam, hogy evidens miután kitértem a globális és a helyi változókra is a tutorial során, mivel a mondat második fele csak az adott scope-on belül igaz, ahogy írtad is egy funkció(ez is egy scope) amit egy event hív meg, időben később fut le és az módosíthatja a globális változó értékét.
Köszönöm az észrevételt :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal