Lua nije interpretirani jezik i generira bajt kod iz drugog programa, kao što je Java. Ovaj program radi na virtualnom stroju Lua VM. Većina tih uređaja naziva se stacks, ali Lua se razlikuje po tome što se temelji na registrima i jedan je od prvih široko korištenih VM u sektoru igara. Prednost arhitekture registra je u tome što izbjegava veliku količinu kopiranih podataka i smanjuje opseg uputa za tu funkciju. Lua VM ima automatsko upravljanje memorijom i nepotrebno dohvaćanje podataka, pružajući savršenu konfiguraciju za scenarije brzog prototipa.
Ukratko o Louvi
Lua je jednostavan za učenje i brzi skriptni jezik s Pascalovom sintaksom. To omogućuje početnicima programera da napišu vlastite programe. Koristi se u mnogim igrama i aplikacijama za proširenje postojećih funkcionalnosti i programskih korisničkih sekvenci. Na Internetu postoje mnogi programi obuke koji vam pomažu raditi na ovom jeziku, uključujući mnogo informacija na početnoj stranici Lua.
Ovaj programski jezik izradili su 1993. programeri Roberto Jerusalem, Luis Enrique de Figuerido i Waldemar Celess na Sveučilištu u Rio de Janeiru gdje se nalazi ured LabLua. Ime dolazi od portugalskog, što znači "mjesec" u prijevodu. Jedan od prethodnika bio je SOL (Simple Object Language). Budući da je ime Lua imenica, nije kraticane bi trebalo pisati kao LUA, naime Lua. To je fleksibilan jezik, koristi se na nekoliko načina:
Wikipedia koristi Lua za predloške skripti.
VLC Media Player radi s Lua skriptama za quik skripte.
Lua se koristi u industrijskim primjenama kao što je Adobe Lightroom.
Programi za ugrađene sustave, kao što je srednji Ginga za digitalnu televiziju.
Gry je vodeća igra za skripte, na primjer, koja se koristi za stvaranje World of Warcraft i Angry Birds.
Svatko može pokušati koristiti online kod u Lua Demo s zanimljivim načinom da istraži i koristi motor igre.
Funkcionalnost ovog programa može se koristiti u L? VE, Defold i, naravno, u Pico-8.
Osnove sintakse
Lua koristi vrlo jednostavnu sintaksu. Korisniku nije potrebno koristiti točke odvojene zarezima ili velike praznine, jer te znakove interpretira sam program. Sve varijable u Lua skriptama za quik su globalne globalne. Stoga je uvijek potrebno odrediti kada su lokalne vrijednosti potrebne za sadašnju regiju i unaprijed ih objaviti. Zapravo, u praksi je vrlo malo slučajeva u kojima su globalne vrijednosti doista potrebne. Lokalnu varijablu možete definirati ključnom riječi local. Istodobno, nije potrebno iskazivati njegovu vrijednost. Globalne varijable znače kontekst trenutne skripte i stoga nisu za svaku pojedinačnu skriptu u igri, od kojih svaka radi samostalno i samostalno. Varijable mogu sadržavati bilo koji niz znamenki, slova i podcrtavanja, ali to ne činemora početi s brojem. Null predstavlja ključnu riječ kada varijable nisu definirane. Neobjavljene se razlikuju od deklariranih varijabli koje nisu važne. Primjeri Lua skripti:
Kodni blokovi i operatori ako
Blokovi su definirani određenim ključnim riječima, nakon čega slijedi "kraj". Uvjetima u if izjavama mora slijediti "tada" tipka. Ako izjave koriste "elseif", ne "else if". Možete stvoriti novo prazno područje s blokadom "doend". Lua koristi posebnu vrstu podataka, koja se naziva tablica namijenjena stvaranju niza, rječnicima, hash-tablicama, objektima drugih jezika. stol. Možete koristiti logičku vrijednost kao ključ. Budući da je Lua dinamički upisana, možete imati bilo koju kombinaciju tipova podataka u ključevima i korisničkim odabirima koje morate odrediti prije instaliranja Lua skripti. Vrijednosti tablica mogu se definirati interno i pojedinačno. Obično postoje dva načina dobivanja i postavljanja njihovih vrijednosti, sintaksa "dot", na primjer, "myTable.a", i sintaksa zagrada, na primjer, "myTable [" a "]". Kada koristite nizove, može se koristiti samo sintaksa točke i ne može se koristiti ako string počinje s brojem. Svaka vrijednost u tablici uzima se u obzir, nil - ako nije postavljena. To znači da je nemoguće odrediti je li vrijednost deklarirana u tablici ili je samo nula ako nikada prije nije bila definirana. To znači da ako tipke u tablicioznačeno i postavljeno na nulu, neće imati nikakvog učinka, odnosno radije će biti isto kao da uopće nije određeno. U Lua, numeričke tipkovnice počinju s indeksom 1, a ne s 0. To je ono što uzrokuje veliku glavobolju za programere. Možete podijeliti ugrađene stavke tablice zarezom ili točka-zarezom.
Komplicirani tip podataka
Tablice se u Lui smatraju složenim tipom podataka - to znači da se varijable u njima jednostavno odnose na isti objekt u memoriji, tako da ne možete izravno usporediti dvije vrijednosti i očekivati oni će učiniti nešto. Međutim, linije, brojevi, slova i druge primitivne vrste podataka mogu se izravno uspoređivati. Brojevi u Lui koriste se samo u jednom obliku - njihovom broju. Ne postoje tipovi kao što su int, float, long, double i drugi, kao u drugim jezicima, a to se mora uzeti u obzir prije instaliranja Lua skripti. Tehnički, sve vrijednosti u Lui su brojevi s pomičnim zarezom.
Lua ima samo "=" operatora da odredi i poveća. Ona nema "+ =", "- =", "++" ili bilo što drugo. Operator ulančavanja je "". Možete primijeniti ovu operaciju na linije i brojeve bez ikakvih problema. Međutim, ne možete kombinirati druge vrste podataka - logičke ili tablične. Duljinu tablice ili niza možete dobiti pomoću "#" operatora i to radi samo za nizove s numeričkim indeksima. Na primjer, kôd neće raditi s tablicama koje imaju indekse niza.
Tipovi petlje Petlje
Postoje četiri vrste ciklusa Petlja, što u prijevodu znači petlja ili skretanje. Dok je (srednje) najjednostavniji oblikciklusa i funkcija, kao što bi se trebalo očekivati u drugim jezicima, i znači da se provjera provodi prije početka internog bloka. Numerički za petlju (digitalno). Petlja primjenjuje lokalnu varijablu na svoje područje te je povećava ili smanjuje. Korisnik objavljuje i definira varijablu koja se koristi i značenje cilja. Generički za petlju (generirano) - koristi funkciju iteratora. Poziva se ponavljanjem svake petlje i vraća vrijednosti koje će se koristiti u njoj. Parovi (parovi) je funkcija iteratora na globalnoj razini. Ona prihvaća tablicu kao argument, vraća indeks i vrijednost svake varijable u tablici. Kod će pokupiti čak i ne-nulti indeks. Ona ima "brata" - parova, koji radi isto, osim što radi samo s numeričkim indeksima i zaustavlja se kada se dosegne nula. Ponavljanje petlje je slično vremenu, osim što se provjere uvjeta obavljaju na kraju bloka, a ne na početku. Prije otvaranja lua skripte, morate imati na umu da će se unutarnji kôd pokrenuti barem jednom. Ciklus ponavljanja obično izbjegava razvoj tog jezika, budući da je njegov presedan ograničen i teško čitljiv jer ne koristi standardnu doend sintaksu.
Metoda funkcije
Funkcije su još jedan složeni tip podataka, mogu se prenijeti kao varijable, a možete ih i pozvati da interno izvrše kod. Slični su metodama na drugim jezicima. Postoje dva načina za definiranje funkcije u Lua. Prvi oglas je globalni jer nema lokalne ključne riječi. U praviluglobalne funkcije se smatraju prihvatljivima. Ipak, korisnik ih može učiniti lokalnim, ako je potrebno, postavljanjem "lokalnog" fronta. Također možete deklarirati varijable prije identificiranja funkcija koje su još uvijek slične bilo kojoj drugoj vrsti podataka. Možete ih prenijeti, dodijeliti varijable ili prihvatiti onoliko argumenata koliko vam je potrebno pomoću sintakse "". Stvarni objekt je "tuple" (tuple), tako da ga morate okružiti vitičastim zagradama za pretvaranje podataka u tablicu. Tuple je jednostavno popis imena, kao što su parametri funkcije koji mogu vratiti višestruke vrijednosti, a oni se mogu nazvati varijablama. Ako stavite funkciju u tablicu, možete je pozvati na dva različita načina. Sintaksa standardne točke ili dvotočka šalje matricu kao prvi argument.
Globalni imenski prostor
"Loua" pruža nekoliko tablica u globalnom prostoru imena koji sadrže pomoćne funkcije kao što su "string", "table" i "math". Stoga korisnik nikada ne smije specificirati bilo koju varijablu iz imenovanog, jer će redistribuirati nizove koji sadrže korisne funkcije. Postoje dvije tablice koje dijele sve skripte na poslužitelju ili klijentu (ali ne za obje) - to je "_G" i "dijeljeno". Prva je doista globalna, koja se implementira kroz zasebne skripte, pa ako želite dobiti ili postaviti vrijednosti iz nje, koristite "_G.something". "Strings" (nizovi) - ova funkcija Lua može na više načina definirati doslovne i višelinijske podatke s dvostrukim zagradama. I takođerizmeđu uglastih zagrada ([=== [] ===]) možete postaviti bilo koji znak jednakosti (=). Oni su uravnoteženi, mogu uključivati sekvence unutar, kao]]. Lua također ima vlastiti skup ugrađenih funkcija za manipulaciju linijom i vlastitu, prigušenu verziju regularnih izraza, koji se nazivaju obrasci stringova.
Game Lunar Script
Ovo je vrlo jednostavan prvi korak u pisanju programa, ali su dobre polazne točke za probijanje Garry Mod 10 Lua skripti. Prvi korak je kreiranje stvarne datoteke skripte za Lua. Otvorite tekst ili urednik - bilježnica će dobro funkcionirati u tu svrhu. Zatim spremite ovu datoteku upisivanjem kao na slici.
Gdje:
- korisničko ime za lozinke.
- Steamov imenik za Garryjev Mod.
Zadano mjesto za Lua skripte za garry s mod je obično "C: Program FilesSteamsteamappsgarrysmod", ali se može razlikovati od "autorunclient" na vašem računalu. Sve datoteke skripte koje su smještene u ovaj direktorij će se pokrenuti kada Lua počne na klijentu, na primjer, kada se pokrene nova igra ili se korisnik pridruži poslužitelju. Zatim kreirajte datoteku Hello World, dodajući joj skriptu lua mod skriptu. Ovo je najjednostavnija opcija.
Ovo se može činiti pomalo zbunjujućim odjednom. Skripta ispisuje sadržaj tablice (koji se nazivaju nizovi ili popisi) i presreće podatke u naredbu konzole kako bi potvrdili da je potrebno definirati funkciju koja ne prihvaća nikakve parametre i ne vraća vrijednost, već nužno postavlja "kraj" na kraju svojih naredbi. Funkcije su modularni isječci koda koji sumože se koristiti nekoliko puta. Ovaj primjer pokazuje kako pokrenuti Lua skriptu. Ovdje se kreira popis nizova, ali korisnik može dodati i druge objekte. Tablice su asocijativne ili hašiš. To znači da se svaka stavka na popisu može odnositi na ključ.
Ove naredbe ispisuju sve elemente tablice, a struktura se naziva petlja. Obratite pozornost na par myTable, koji se pokreće jednom za svaku stavku i vraća par ključ /vrijednost za vrijednosti na popisu. Vrijednost je stavka u tablici, a ključ je samo način za povezivanje s njom. Ovaj primjer pokazuje kako se ispisuju varijable teksta i vrijednosti s istom naredbom ispisa. Varijable "ključ" i "vrijednost" postavljene su u gornjem ciklusu. Obratite pažnju na "" redove i varijable. Oznaka "" je operator Lua concatenation. To govori jeziku koji trebate spojiti dva elementa zajedno i razmotriti ih kao jedan tekstovni niz ".concommand.Add":
my_test_function;
myTestFunction.
Zapis stvara naredbu konzole koja pokreće jedinu pokrenutu funkciju. Prvi parametar je ime kontrolnog tima, u ovom slučaju: "my_test_function". To je ono što korisnik ulazi u konzolu Garry moda da bi pokrenuo skriptu. Drugi parametar je funkcija pokretanja, u ovom slučaju: myTestFunction. Ova datoteka bi trebala biti spremljena kasnije. Zatim testiraju skriptu, pokreću Garryjevu novu igru. Zatim otvorite konzolu pomoću tilde (~). Ako se ne pojavi, morate ga omogućiti tako da upišete "my_test_function" u red na dnu ploče. Kada se pokrene, započinje automatsko ispunjavanjezaslon s imenom naredbe, pritisnite Enter da biste je pokrenuli.
Značajke Lua-Quick-Try-Out
Ova je konzola namijenjena izravnom unosu Lua koda (na primjer, naredba Lua (8 + 9) odmah šalje rezultat 17). Njegove funkcije:
Glavni prozor izvornog koda sa svojim funkcijama spremanja i preuzimanja.
Program za ispravljanje pogrešaka skripte s točkama prekida, izvršavanje u jednom koraku i prikaz varijable.
Funkcije za izradu tablica.
Funkcije za izradu dijagrama.
Funkcije za izradu grafičkih slika.
Funkcije za kreiranje vektorskih grafova.
Online pomoć za stvaranje Lua funkcija. Točke zaustavne konzole mogu se postaviti klikom pored broja linije. Ako je ispravljanje pogrešaka omogućeno, prikaz varijable bit će vidljiv na desnoj strani glavnog prozora. Možete promijeniti njegovu veličinu povlačenjem lijeve granice. Razne postavke za način "uključeno" ili "isključeno" spremaju se i vraćaju kada su uključene ili isključene. Pomoću kotačića miša možete promijeniti vidljivu veličinu grafikona i grafikona. Desnom tipkom miša možete otvoriti kontekstni izbornik za grafikone sa svojim funkcijama zumiranja. SAMP Lua Scripts je lua knjižnica za Moonloader, koja dodaje neke naredbe za pojednostavljenje modifikacije SA: MP, SAMP. Događaji vam omogućuju da na vrlo jednostavan način nosite SA i MP ulazne i izlazne mrežne pakete niske razine. Podatke možete ponovno napisati postavljanjem svih argumenata u tablici u ispravnom redoslijedu, bez obzira na to možete li prekinuti obradu bilo kojeg paketa tako da vratite false, što sprječavaPrije instalacije Lua skripte možete dodati vlastiti paketni rukovatelj.
Lua-WoW distribucija
Ovo je distribucija izvornog koda Lua, modificirana tako da odgovara World of Warcraft dodatnom okruženju. Njegovi podaci:
Administratori: morlando.
Korisnici: morlando.
Licenca: MIT /X.
Jezik: c, lua 5.
Oznake: prevoditelji, alati za testiranje.
Operacijski sustavi: makroi, prozori, os autonomija.
Ova jezična verzija je konfigurirana tako da odgovara Lua World of Warcraft okruženju. Sve postavke kompatibilnosti 5.0-5.1 su onemogućene osim openlib. Bitlib knjižnica radi. Neki wow lua skripte specifične, lua-knjižnica funkcije provodi. Program pruža globalne aliase za funkcije "Lua.string.format", oni mogu koristiti izbor argumenata iz Lua 4.0. Binarne datoteke sustava Windows koje su uključene u ovo preuzimanje su statički povezane s izvedbom. Moguće je da neće funkcionirati prema očekivanjima korisnika kada se koriste s nekim drugim paketima. Povijest inačica:
V112 - Dodan pročišćavanje, nadogradnja, Visual Studio projekt nadograđen je na Visual Studio 2008 Visual C ++. Runtime je sada statički povezan, što mora riješiti neke probleme povezane s lua-wow s određenim Windowsima.
Lua skripte v34 c - dodan strrelpace (string.replace, wow.strreplace).
V1101 - msvcr80.dll dodaje se u prozore projekta.
V110 - redefinirane datoteke readme. Preimenovani msvc projekti i exe izlazni nazivi. Projekt msvc uključuje ikonu i Lua resurse za izvršne datoteke.
V1.9 - Dodane su globalne verzije trigonometrijskih funkcija. Program ispravno koristi stupnjeve .strsplit,ispisuje odgovarajuću poruku o pogrešci ako prelijeva hrpu, što je sada praktično nemoguće sa strjoin.
V1.8 - Ažurirana kompatibilnost 5.0 openlib jer WoW ionako ne koristi libs.
V1.7 - GCPAUSE promijenjen na 110 na WOW 2.1. Ispravljeno je nekoliko različitih upozorenja prevoditelja.
V161 - dodano #define LUA_LIB za lwowlib & amp; lbitlib popraviti kompajliranje problema u Lua skriptama za sampo.
V1.6 - bitlib nadograđen na najnoviju verziju. Sada ispravno koristi 32-bitne cjeline kao što je WoW. Globalni aliasi za bitlib i table.setn su izbrisani jer ne postoje u WoW-u.
V151 - zanemaruje redoslijed bajtova UTF-8.
V1.5 - dodani debugstack, neke male optimizacije i pojednostavljenja koda.
V1.2 - Ovaj se paket sada može koristiti kao zamjena za standardnu izvornu distribuciju Lua: projekt MSVC, uključujući predkompilirane binarne Windows datoteke, sada je u poddirektoriju msvc, a druga struktura direktorija nije pogođena.
Pico-8 je fantastičan program koji oponaša punu igraću konzolu s ograničenim 8-bitnim specifikacijama. Ima sve potrebne alate za programiranje u Lui. Razlog zašto korisnici odaberu Pico-8 je da se može koristiti izravno iz kutije, bezPotreba za instalacijom ili vanjskim urednicima, svi alati su uključeni u paket Lua skripti za sampo, a obuka je jednostavna.
Kako:
Obično se naziva prvi program koji je stvoren na novom jeziku, program "Pozdrav svijetu", ali za jezik programiranja Lua, "Hello Lua" je upisano.
Preuzimanje Pico-8.
Instalirajte i pokrenite.
Nakon preuzimanja, dobit ćete pozivnicu «& gt;».
Da biste dobili pregled mogućih naredbi, pritisnite tipku ESC. Sada, kada je uređivač otvoren, unesite kodove prikazane na slici gore.
Ponovno pritisnite ESC za povratak na pozivnicu, unesite CLS, a zatim RUN.
Nabavite prvu aplikaciju Lua na Pico-8.
Za spremanje skripte koristite naredbu SAVE: SAVE HELLOLUA.
Ako želite raditi s programom, možete koristiti BTN () funkciju, koja pruža odgovor na pritisak tipke.
Da biste imali više grafičkih mogućnosti, koristite dvije posebne funkcije povratnog poziva nazvane UPDATE i _DRAW. Sljedeći program omogućuje pomicanje kruga pomoću tipki sa strelicama.
Pritisnite ESC za otvaranje uređivača koda, unesite ili kopirajte i zalijepite kod kao na donjoj slici.
Pritisnite tipku za vraćanje kako biste se vratili na konzolu i unesite RUN.
Pico-8 je namijenjen samo velikim slovima, tako da možete samo upisati font, ne morate koristiti Shift ili Caps-lock. Urednik također ima sintaksnu boju za kôd. Ako pogledate u gornjem desnom kutu urednika, možetepogledajte neke ikone. Ugrađeni su alati za stvaranje spritesa, mapa, zvukova i glazbe. Ovaj je primjer vrlo jednostavan, ali daje ideju urednika i jezika. Da biste istražili zanimljivije primjere, možete otići u DEMOS imenik. Unesite INSTALL_DEMOS za ovo. Nakon otvaranja DEMOS imenika s nekoliko primjera studijskih programa. Jedna od glavnih prednosti Lua je njegova jednostavnost. Neke tvrtke koriste ovaj jezik samo zato što misle da će njihovi zaposlenici moći bolje raditi. Neki vrlo jednostavni jezici, kao što su Bash ili Batch, neće biti dovoljno jaki da izvrše potrebne zadatke, ali Lua je i moćan i jednostavan program. Još jedna važna prednost Lua skripti za css v34 je njihova sposobnost implementacije, koja je prepoznata kao jedna od najvažnijih karakteristika ovog proizvoda tijekom njegova razvoja. Igre poput World of Warcraft ili ROBLOX imaju mogućnost integrirati Lua u svoj program.