Lua

Lua
Logó.
Az első változat kelte 1993
Paradigma Multi-paradigma: eljárási , objektum-orientált prototípus és funkcionális
Szerző Luiz Henrique de Figueiredo, Roberto Ierusalimschy és Waldemar Celes
Utolsó verzió 5.4.3 ( 2021. március 29)
Gépelés dinamikus , gyenge
Befolyásolta ALAP , C , C ++
Befolyásolt Micro Lua DS
Végrehajtások Lua , LuaJIT , LLVM-Lua , LuaCLR , Nua , Lua Alchemy , MicroLua ,

Mochalua , Jill , luaj , LuaRT

Beírva VS
Operációs rendszer Cross-platform
Engedély MIT licenc
Weboldal lua.org
Fájlkiterjesztés lua, luna, hold és anair

A Lua egy ingyenes , reflektáló és elengedhetetlen szkriptnyelv .

1993-ban hozták létre , és úgy tervezték, hogy más alkalmazásokba beágyazható legyen. Lua (-tól portugál  : Lua [lu.ɐ] , in Brazil  : [lu.a] , azaz "  Hold  ") által kifejlesztett Luiz Henrique de Figueiredo , Roberto Ierusalimschy  (en) és Waldemar Celes , tagjai a TeCGraf kutatócsoport a katolikus Teológiai Egyetem Rio de Janeiro a brazil .

A Lua tolmács szigorú ANSI C nyelven íródott , ezért sokféle rendszeren összeállítható. Ez egyben nagyon kompakt, az 5.0.2-es verzió csak  95–185 KB- ot  foglal el, a használt fordítótól és a célrendszertől függően. Gyakran használják olyan beágyazott rendszerekben , mint az OpenWrt, ahol ezt a tömörséget nagyra értékelik. Kihasználja a C nyelv kompatibilitását a nagyszámú nyelvvel, hogy könnyen integrálható legyen a legtöbb projektbe.

Különösen népszerű a beágyazott, hálózatfejlesztő és videojátékok esetében .

A Lua-t olyan videojátékokban használják, mint: Transformice , World of Warcraft , Roblox , Garry's Mod , Onset , ComputerCraft mod ( mod a Minecraft számára ), Multi Theft Auto ( mod multiplayer Grand Theft Auto: San Andreas ) FiveM ( Grand Theft mod multiplayer) Auto V ), valamint olyan videojáték-motorok, mint a SourceEngine , a CryENGINE , a LÖVE , vagy akár a fantasy konzolok , például a Pico-8 .

Azt is használják a hálózat szintjén, mint a horog a Apache , Lighttpd (alapértelmezett), nginx (via OpenResty ), a Cisco routerek , a Wireshark csomaganalizálóval , Rspamd antispam , Asterisk saját telefon kapcsoló (opcionális)), a MediaWiki szkriptek .

Tábornok

Hozzászólások

Lua-ban a megjegyzések a sor elején kezdődnek --és a végén fejeződnek be, mint Adában . Ha az első sor # -nel kezdődik! ( sejbang ) kommentként is kezelik. A többsoros megjegyzések a szintaxissal is elérhetők

--[[...]]

Változók

A változók tartalmazhatnak nil(null érték, üres), logikai értéket, karakterláncot, számot (nincs különbség az egész és a lebegő között), táblázatot vagy függvényt. Vannak még más típusokat userdata, vagy threadritkábban találkozott. A típus userdatanagyon praktikus, megfelel a felhasználó által definiált C / C ++ objektumnak: ezért lehetséges létrehozni egy C struktúrát vagy egy C ++ osztályt, és az ilyen típusú objektumokat Lua szkriptben használni, miután ehhez a tárgyhoz csatolva egy metatáblát, amely a C ++ osztály funkcióinak meghívásáért felel. Elképzelhetjük tehát egy program alapvető üzleti osztályainak létrehozását C-ben, magának az alkalmazásnak a kódolását Lua-ban, ami a nyelv által biztosított magas szintű eszközöknek köszönhetően jelentősen felgyorsítja annak fejlesztését .

Belsőleg találkozhatunk velük proto, egyfajta függvény prototípussal, ennek a függvénynek a bytecode- ja betöltődik, de az utóbbi nem lett végrehajtva; Prototípusokkal fogunk találkozni, ha egy fájlt betöltenek (lefordítanak), de nem hajtják végre vagy lezárással .

Alapértelmezés szerint egy változó deklarálásakor globális a teljes végrehajtási környezetben, kivéve, ha a kulcsszó előzi meg local.

A karakterláncokat egyetlen idézőjel ('') vagy kettős ("), vagy akár a szó szerinti karakterlánc határolja

[[...]]

(többsoros, nincs külön karakter).

A karakterlánc összefűzés operátorát kettőspont ( ..) jelöli .

Funkciók

A függvényeket változóknak tekintjük. Ez nagy rugalmasságot biztosít: például lehetőség van egy másik függvény lokális funkcióinak létrehozására, egy függvény átadására egy másik függvény paramétereként (vagy visszatérési értékként) vagy függvények táblázatokba helyezésére. Ha hozzárendelünk nilegy függvényt (pl. print = nil), Akkor a függvény már nem létezik, nem hívható tovább.

A Lua funkcióinak előnye, hogy határozatlan számú paramétert vehetnek fel, de több értéket is visszaadhatnak.

Táblázatok, metatáblák

A táblák egy Lua struktúra, amely lehetővé teszi változók tárolását egy kulcs által indexelve (például a PHP-ben ). Az asztalokat sok mindenre használják Lua-ban.


Ezeket kétféleképpen használják:

  • Lista (indexe 1-től kezdődik, és nem 0-tól)
  • A hash (eljáró struct), amely akár a kulcsfontosságú érték és bármilyen típusú változó nem nil.


Teljesen lehetséges (de kódminőségi okokból erősen nem ajánlott), ha van egy táblázat, amely vegyíti a listát és a hashtable-t.

Az egyezmény az, hogy egy listát tallózzon az iterátorral ipairsés a hashtable-t az iterátorral pairs.


Egy táblázatban nem lehet egy változót nullához rendelni vagy indexelni a kulcshoz nil.

A metatáblák olyan táblák, amelyekhez egy függvény társítva van az egyes alapoperátorokhoz (+, -, (), [] ...). Ez a mechanizmus nagyon közel áll a C ++ operátorok túlterheléséhez . Például, ha az x változó tartalmaz egy táblázatot, amely egy megfelelő metatáblához van társítva, akkor az x függvényhívás (argumentumok) érvényes lesz, mert a Lua ekkor megkeresi a metatáblában a hívás kezelését.

Így tudjuk megvalósítani a táblák közötti öröklődést. Ha kérésre nem található mező, a Lua megkeresi a metatáblát, hogy megtalálja, melyik tábla a szülő, és felkéri a szülőtáblát, hogy adja meg a megfelelő elemet.

Példák

Feltétel

if condition1 and condition2 then -- instructions exécutées si les conditions 1 et 2 sont vraies elseif condition1 then -- instructions exécutées si la condition 1 est vraie et la condition 2 est fausse elseif condition2 then -- instructions exécutées si la condition 2 est vraie et la condition 1 est fausse else -- instructions exécutées si les deux conditions sont fausses end

Csatok

repeat -- code until condition

és

while condition do -- code end

szintén

for var = start, valend, step do -- code end

Ahol

for var_1, ..., var_n in explist do -- code end

A funkciók deklarálása

function mafonction(arg1, arg2, ...) -- code return résultat1, résultat2 end

Ahol

mafonction = function (arg1, arg2, ...) -- code return résultat1, résultat2 end

Funkcióhívások

res1, res2 = mafonction(var)

Feltétel nélküli blokkok

Feltétel nélküli blokkokat használnak például a változók helyi deklarálásához ebben a blokkban:

do local mavariable = "chaîne" -- déclaration de variable, optionnel -- code utilisant mavariable end

Táblázatnyilatkozat

Táblázat egymást követő numerikus indexekkel (Lua-ban a táblázat első indexe 1)

a = { 5, "foo", [[C:\Lua\Lua.exe]], 'bar', 42 }

Táblázat explicit indexekkel, zárójelben feltüntetve (azoknak az indexeknek, amelyek egy változó szintaxisával rendelkező karakterláncok, nem kellenek idézőjelek vagy zárójelek)

a = { d = 5, [12] = "foo", ['chaîne avec espace'] = true }

Ha az egyik változót rendel egy másikhoz, ha ennek értéke nem szám, egy karakterlánc vagy egy logikai érték, akkor ennek a referenciája átmásolódik. Tehát táblázatok esetén, ha az a változónak van táblája, és a b változót az a változóhoz rendeljük, akkor az a által végrehajtott módosítások közvetlenül láthatók a b-n

local a = {1,"b",3} local b = a a.foo = "bar" print(b.foo) -- bar -- b et a on les mêmes références

Összetett változókat tároló tábla: egyéb táblák, függvények, kereszthivatkozások ... Ha az indexként megadott értékek nem számok, karakterláncok vagy Booleans-ok, akkor az index lesz a szóban forgó változó referenciája.

fonction = function (a, b) return (a + b) / a * b end t = { b = { -- Fonction comme clé -- La référence de la fonction agira comme clé [fonction] = 'Fonction !', -- Index numérique [5] = 42, -- Index chaîne simple (ie. syntaxe d'une variable) ls = [[Valeur Multiligne]] , -- Index chaîne quelconque ['Expression rationnelle'] = [[(?:\d{1,3}\.){3}\d{1,3}]], [ [[C:\Lua\Lua.exe]] ] = true, }, -- Stockage d'une fonction f = function () return math.random(100) end, ff = fonction, -- Table comme clé -- La table étant anonyme, aucune référence a cette table est stockée et donc la valeur stockée inaccessible [ { 'a', 'b' } ] = { "aa", "bb" }, } -- Référence dans la table t.reference = t.a t.self = t -- Référence a soi même t.self.réference = t.a print(t[ { t.a, t.b } ]) -- nil car aucune valeur n'a pour clé la référence de cette nouvelle table, l'ancienne table a une référence différente

Funkciók

Matematikai függvények

A math.pi függvény visszaadja a pi értékét.

print(math.pi) --> Affiche dans la console la valeur de pi (3.1415926535898)

A math.min (lista) függvény a listában szereplő legkisebb számot adja vissza

print(math.min(6,4,2,9,1)) --> Affiche 1 dans la console étant donné que 1 est le plus petit nombre de la liste.

A math.max (lista) függvény a listában szereplő legnagyobb számot adja vissza

print(math.max(4,6,7,9,1)) --> Affiche 9 dans la console étant donné que ce nombre est le plus grand de sa liste.

A math.floor (x) függvény a legnagyobb egész számot adja, amely kisebb vagy egyenlő, mint x.

print(math.floor(1.5)) --> Retourne dans la console le nombre 1 print(math.floor(1.5 + 0.5)) --> Retourne dans la console le nombre 2

A math.abs (x) függvény visszaadja az x abszolút értékét.

print(math.abs(-100)) --> Retourne dans la console le nombre 100.

A math.pow (x, y) függvény x-et ad vissza y erejére. Használhatjuk az x ^ y kifejezést is

print(math.pow(6,8)) --> Retourne dans la console le nombre 1679616. -- On peut également utiliser: print(6^8)

A math.random (x, y) függvény véletlenszerű számot ad vissza az x és az y érték között.

local x = 1 local y = 10 print(math.random(x, y)) --> Retourne dans la console un nombre entier aléatoire entre 1 et 10.

A math.sqrt (x) függvény az x négyzetgyökét adja vissza.

local x = 6 print(math.sqrt(x)) --> Retourne la racine carrée de x(6) donc 2.4494897427832.

Csontfunkciók

Az os.time () függvény visszaadja a másodpercek számát a 1 st január 1970 00: 00-kor, a második pedig meghívja a funkciót.

print(os.time())

Az os.date () függvény visszaadja azt a napot, hónapot, hónapot, órát, percet, másodpercet és évet, amelyben tartózkodik, amikor ezt a "funkciót" hívja

print(os.date()) --> Retourne Thu Jul 1 14:52:59 2021

Az os.clock () függvény másodpercekben adja vissza az eltelt időt a Lua elindítása óta.

print(os.clock()) --> Retourne dans la console 853312.913685

A típusfüggvény

A type (x) függvény megadja az x típusát.

local a = "Bonjour" local b = 5 local c = true local d print(type(a)) --> Retourne dans la console "string" car la variable est de type string. print(type(b)) --> Retourne dans la console "number" car la variable est de type number. print(type(c)) --> Retourne dans la console "boolean" car la variable est une valeur booléene print(type(print())) --> Retourne dans la console "function" car string est une fonction. print(type(d)) --> Retourne nil dans la console "nil" car la variable d ne contient pas de valeur.

Táblázatfüggvények

A lua nyelven 9 táblázatfunkció létezik.

A table.insert (x, y, z) függvény lehetővé teszi egy y érték beszúrását egy x tömbbe. Pozíciót is adhatunk hozzá, amelyhez hozzáadhatunk egy z argumentum hozzáadásával. Ha nem ad meg z argumentumot, akkor az érték a táblázat utolsó pozíciójában jelenik meg.

local tableau = {"je", "suis", "un", "utilisateur", "du"} table.insert(tableau, "wiki") --> Insert dans la variable tableau enla valeur wiki. Le troisième argument pour donner la position n'est pas donné donc la valeur se positionnera en dernière place du tableau.

A table.remove (x, y) függvény lehetővé teszi egy érték eltávolítását az x tömbből az y érték helyének megjelölésével.

local tableau = {"je", "suis", "un", "faux", "utilisateur"} table.remove(tableau, 4) --> Retire la valeur "faux" du tableau qui était en 4ème position. Malheureusement, on ne peut pas retirer de valeur en indiquant le nom de la valeur, si vous voulez retirer une valeur sans connaître le numéro de position, merci de suivre le paragraphe si dessous avec les boucles pairs().

A table.sort (x) függvény az x tömb elemeinek rendezésére és módosítására szolgál.

local tableau = {6, 4, 5, 3, 2, 1} table.sort(tableau) --> Va venir trier les valeurs du tableau et le modifier en {1, 2, 3, 4, 5, 6}

A table.concat (x, y) függvény lehetővé teszi egy tömb összes értékének csoportosítását és karakterláncokká alakítását. Az y egy választható argumentum, amely elválasztóként használható az egyes értékcsoportok között.

local tableau = {"un", "renard", "caché", "dans", 1, "arbre"} local concatTableau = table.concat(tableau) print(concatTableau) --> Retourne dans la console la valeur unrenardcachédans1arbre

Válogatót is felvehet rendezéskor (y).

local tableau = {"un", "renard", "caché", "dans", 1, "arbre"} local concatTableau = table.concat(tableau, " | ") print(concatTableau) --> Retourne dans la console: un | renard | caché | dans | 1 | arbre. L'argument y était " | " donc y a été ajouté entre chaque valeurs transformées.

A table.foreach (x, z) függvény a lua 5.1-es verziója óta már nem működik, és páros hurokkal () kell helyettesíteni, lásd alább.

-- Maintenant obsolète.

A table.foreachi (x, y) függvény a lua 5.1-es verziója óta már nem működik, ezért ipairs () hurokkal kell helyettesíteni.

-- Maintenant obsolète.

A table.getn (x) függvény egy x tömb méretét jeleníti meg.

local tableau = {"un", "renard", "gentil"} local longueur = table.getn(tableau) print(longueur) --> Retourne dans la console la longueur du tableau "tableau" donc 3.

A húrok működnek

A húrfüggvényeket a húrok feldolgozására használják, ezek közül 15 van.

A string.find (x, y) segítségével y karaktereket kereshet az x karakterláncban. Ha nullát ad vissza, akkor semmit sem találtak, azonban ha találtak valamit, akkor jelzi, hogy a karakterek melyik helyről kerültek elő.

local variable = "Bonjour, je m'appel Lua." local find = string.find(variable, "our") if find then -- Si find n'est pas égal à nil est donc il a trouvé quelque chose alors print(find) -- Retourne le numéro de commencement des caractères recherchaient. En l'occurence, 5. end

Hozzáadhat egy z argumentumot is, amely lehetővé teszi az y karakterek keresését egy bizonyos karakterből.

local MA_VARIABLE = "Je suis quelqu'un qui suis une autre personne." local resultat = string.find(MA_VARIABLE, "is", 17) if resultat then -- S'il a trouvé dans le string à partir du caractère 17 un mot contenant is alors: print(resultat) -- Retourne dans la console l'endroit où se situe le début des caractères souhaitaient. En l'occurence, 25. end

A string.byte (x, y, z) az x karakterlánc karaktereinek numerikus kódját adja vissza (ASCII kód).

local MA_VARIABLE = "Je suis une gentille personne" local RESULTAT_ASCII = string.byte(MA_VARIABLE) print(RESULTAT_ASCII) --> Retourne dans la console le résultat de la conversion de la string en code numérique ASCII

Az y argumentum segítségével megadható az átalakítás kezdete, valamint az z argumentum az átalakítás végének (karakterszám) meghatározásához.

local MA_VARIABLE = "Je suis une gentille personne" local RESULTAT_ASCII = string.byte(MA_VARIABLE, 1, 10) --> Retourne la conversion du caractère 1 à 10 de la string print(RESULTAT_ASCII) --> Retourne dans la console le résultat de la conversion en ASCII du caractère 1 à 10 de la string.

A string.char (x) az ASCII kódban lévő x numerikus kódot normál karakterekké alakítja.

local ASCII_CODE = 74 local RESULTAT = string.char(ASCII_CODE) print(RESULTAT) --> Retourne dans la console la conversion du code numérique ASCII en caractères numériques (de la variable ASCII_CODE)

A string.dump (x) az x függvényt bináris ábrázolássá alakítja át, így az a loadString (y) függvény segítségével meghívható.

function demonstration() print("Lancement de la fonction") end local dumped = string.dump(demonstration) assert(loadstring(dumped)) () --> Retourne dans la console "Lancement de la fonction."

A string.format () segítségével visszaadhat egy formázott karakterláncot.

print(string.format("Je suis %s, j'adore les %s, et j'aime le chiffre %i", "gentil", "bananes", 15)) --> Je suis gentil, j'adore les bananes, et j'aime le chiffre 15 --> %s permet de rajouter des strings --> %i permet de rajouter des nombres

A string.gmatch (x, y) az x fő karakterlánc részrészét adja vissza.

for i in string.gmatch("Je suis quelqu'un de gentil", "%a+") do print(i) end Je suis quelqu un de gentil

A string.gsub (x, y, z) karakterlánc lehetővé teszi az x karakterlánc y szavainak helyettesítését egy másik z szóval.

print(string.gsub("Je suis une personne", "une personne", "un zombie")) -- string.gsub(x(la string), y(mot à remplacer), z(mot qui remplace)) --> Je suis un zombie

A string.upper (x) segítségével visszaadhatja az x karakterlánc szövegét azáltal, hogy a kisbetűket FELSŐ ESETRE változtatja (a speciális karakterek kivételével).

local MA_STRING = "Je suis un éléphant Rose" print(string.upper(MA_STRING)) --> JE SUIS UN éLéPHANT ROSE

A string.lower (x) segítségével visszaadhatja az x karakterlánc szövegét azáltal, hogy a FELTÖTŐKET kisbetűvé változtatja.

local MA_STRING = "JE SUIS QUELQU'UN" print(string.lower(MA_STRING)) --> je suis quelqu'un

A string.reverse (x) lehetővé teszi az x karakterlánc szövegének visszaadását a karakterlánc megfordításával.

local MA_STRING = "je suis un scripter" print(string.reverse(MA_STRING)) --> retpircs nu sius ej

A string.sub (x, y, z) lehetővé teszi az x karakterlánc egy részének visszaadását, csak a kívánt y karakter megtartásával. Ha van egy z argumentum, akkor az al karakterláncot y karakterből z karakterbe juttatja. Ha az y argumentum negatív, akkor hátrafelé indul, és a mondat végét veszi fel.

local MA_STRING = "je suis un scripter" print(string.sub(MA_STRING, 1, 7)) --> je suis print(string.sub(MA_STRING, -2)) --> e

A string.rep (x, y) lehetővé teszi, hogy az x karakterlánc tartalmát megszorozzuk y számával.

local MA_STRING = "je suis " print(string.rep(MA_STRING, 5)) --> je suis je suis je suis je suis je suis

A string.match (x, y, z) karakterlánc lehetővé teszi az x karakterlánc karakterek részrészének visszaadását azáltal, hogy a z karakterrel kezdve a kívánt elemet felveszi . Z opcionális.

local MA_STRING = "Je suis un scripter" print(string.match(MA_STRING, "s...")) --> suis local DEUXIEME_STRING = "Je suis un scripter" print(string.match(MA_STRING, "s...", 12)) --> scri

A párok () függvény

A pair (x) függvény lehetővé teszi egy tömb különböző elemeinek megkeresését. Jelenleg a table.foreach függvény helyettesítésére szolgál, amely a lua 5.1 verziója óta megszakadt. Használata egyszerű, a szó után az első argumentumra kerül, hogy megbizonyosodjon arról, hogy ez az index, hogy a tömbben szerepeljen a pozíció száma. És utána a második érv, amelyet gyakran v-nek hívunk értéknek, amely az értéket jelzi. Ami megadja az i, v párokat (x) do. Az i az érték pozíciójának száma a tömbben, és v az érték.

Az érték megtalálásához a tömbben ezért beillesztünk egy argumentumot, amely az x tömb neve lesz.

local tableau = {"premier", "second", "troisième", "quatrième", "cinquième"} for i, v in pairs(tableau) do print(i, v) end --> Résultat dans la console: 1 premier 2 second 3 troisième 4 quatrième 5 cinquième

Ahhoz, hogy eltávolítsunk egy értéket egy tömbből, ezt a függvényt is használjuk, és addig feldolgozzuk, amíg meg nem kapjuk a megfelelő számot:

local tableau = {"un", "deux", "trois", "quatre", "cinq"} local compteur = 0 -- Mettre la valeur à 0 pour pouvoir ensuite ajouter une valeur à chaque traitement. for index, value in pairs(tableau) do compteur += 1 -- Ajoute un au compteur if value == "trois" then table.remove(tableau, compteur) -- Retire du tableau la valeur trois. break -- Arrêt de la boucle. end end

A pcall () függvény

A pcall () függvény a függvény hibáinak elkülönítésére szolgál. Ez megakadályozza a parancsfájl leállítását, és megmutatja, hogy van-e hiba, vagy sem, és megnézheti, hogy mi az.

pcall(function() print(table.find("s")) --> est une erreur. print("Salut") end) print("Je suis quelqu'un de gentil") --> Dans la console: Je suis quelqu'un de gentil

A pcall () függvény két korábbi változóval is aktiválható

local success, error = pcall(function() print(table.find("s")) --> est une erreur. print("Ca marche") end) print("Je suis quelqu'un de gentil") if not success then -- S'il y'a pas de succès et donc a une erreur, alors: print(error) end --> Dans la console: Je suis quelqu'un de gentil Script:2: invalid argument #1 to 'find' (table expected, got string)

Bonjour Monde

print('Hello World!')

Használ

Konzolok

A Lua beágyazódott a Sony PlayStation Portable programjába, köszönhetően a Lua Player programnak, újabban pedig a Lua Lua Player HM-nek és a Player Euphoria-nak, amelyek a konzol képességeinek bővítése érdekében a Lua-val írt alkalmazásokat olvassák. A videojátékok létrehozására szánt XtreamLua Player később jön. A PSP firmware-jének (nem hivatalos) módosítása lehetővé tette olyan programok indítását, amelyeket nem a Sony írt alá, ezért létrehozták a PSP-hez igazított Lua tolmácsot.

A Lua Player Euphoria az eredeti Lua Player szintaxisát használja, és villámgyorsan végrehajtja a szkriptet a Lua Player HM-hez képest. A Lua Player Euphoria azonban kevésbé teljes, mint régebbi társa.

A Lua Player One, az egyik legutóbb frissített Lua Player a PSP-hez, egy spanyol fejlesztők közösségében kifejlesztett Lua Player; lehetővé teszi többek között a 3D kezelését PSP-n. Ezen eszköz segítségével kifejlesztettek egy minigolf játékot az űrben.

A Lua Player Plus (LPP) a PlayStation Vita alkalmazásra jelent meg2015. augusztus 16. Ez a Lua Player lehetővé teszi játékok létrehozását a konzol számára.

A Lua a nyílt forráskódú Pocket Chip kézi konzol részét képezi ( Kickstater projekt ). Ez utóbbi valóban beágyazza a Pico-8 virtuális konzolprogramot, amely lehetővé teszi a játékokat és játékokat Lua-ban.

Videojáték-bővítmények

Között a videojátékok a homokozóban , hogy használja azt tartalmazzák Garry Mod , Roblox , Core , Stormworks  (in) és Minecraft . Ez utóbbi esetében a ComputerCraft , a Minecraft játék kiterjesztése, a Lua segítségével grafikai programokat vagy konzolokat és autonóm "robotokat" tervez a játék belsejében, lehetővé téve számos ismétlődő feladat automatizálását; A Minetest , egy LGPL-engedéllyel rendelkező, az utóbbihoz hasonló homokozós játék , a Lua nyelvet használja a kiterjesztések írásához, és magában a játékban (bizonyos módokon keresztül) mikrokontroller vagy FPGA programozással .

Van egy játékmotor is, amely a Lua-t használja programozási nyelvként (egyfajta Pygame for Lua): LÖVE .

Sok más videojáték használja, például a World of Warcraft a Blizzard Entertainment-től , a Far Cry (és általában a CryEngine motor ) a Crytek Studios-tól , a multiplayer szoftver a GTA-tól: SA Multi Theft Auto , SimCity 4 és Natural Selection 2 az Unknown Worlds Entertainmenttől (amely többek között kifejlesztette a Decoda-t , a Lua IDE- jét ). Végül néhány Zoo Tycoon 2 ( Blue Fang Games ) szkript nem összeállított formában is jelen van a játékfájlokban . The Binding of Isaac: Afterbirth + egy DLC a The Binding of Isaac: Rebirth játékhoz, amely lehetővé teszi a modok támogatását. Lua-ban írva.

Egyéb szoftverek

A Lua-t a VLC médialejátszó képességeinek bővítésére is használják , az Enlightenment EFL Edje ablakkezelőiben , valamint az Awesome-ban (konfigurációs és szkriptnyelvként).

Az Asterisk PABX a Lua alternatívájaként kínálja a számozási terv meghosszabbítását.

A MediaWiki és a Wikimedia webhelyek a Lua-t használják szkriptnyelvként a modellekhez ( modulok ).

A CraftStudio szoftver a Lua segítségével programozza a modellek dinamikus elemeit.

Az agy-számítógép interfész ingyenes szoftvere Az OpenViBE  (in) a Lua-t használja szkriptnyelvként, különösen az idegtudományi kísérletekhez szükséges ingerek kezelésére.

Az irccd IRC robot a Lua-t használja a beépülő modulok létrehozásához.

Az Rspamd antispam a Lua-t is használja a programozási felületéhez .

A Lua az a szkriptnyelv, amelyet elsősorban az OpenWrt beágyazott operációs rendszeréhez használnak, amely sok útválasztón fut. A LuCI adminisztrációs grafikus felület teljes egészében Lua nyelven íródott.

A Lua a Domoticz, a nyílt forráskódú otthoni automatizálási szoftver anyanyelve . Ez lehetővé teszi a fejlett funkciókkal rendelkező szkriptek készítését: a Domoticz automatikusan elindítja ezeket a szkripteket az állapotváltozásoknál, az idő függvényében stb.

A Lua az NSBase , az adatbázis-kezelő szoftver anyanyelve is . A szkriptek lehetővé teszik az űrlapok és jelentések dinamikusabbá tételét. Az így integrált Lua lehetővé teszi valódi adatbázis-kezelő alkalmazások létrehozását.

Az Orbiter űrrepülés-szimulációs szoftver és kiegészítői (UCGO, UMmu) a Lua segítségével lehetővé teszik a vezérlő képernyők ( MFD - többfunkciós kijelző), küldetések vagy hajók egyszerű létrehozását . Különösen a hajók építése, a DLL modulokkal ellentétben , nem igényel C ++ fájl összeállítását .

A BeamNG.drive a Lua segítségével egészíti ki fizikai egyenleteit.

Prozódia  : könnyű, teljes nyelven írt XMPP szerver .

A Awesome asztali környezet (linux) a 3. verzió óta a Lua- t is használja a konfigurációs fájlokban.

A FreeBSD tartalmaz egy lua tolmácsot a betöltőjébe a 11.3 verzió óta.

A szerkesztést , a színosztályozást , a vizuális effektusokat, a mozgásgrafikát és az audio utómunkálatokat ötvöző megoldás a Davinci Resolve a Lua, Py2 és Py3 technológiákat használja

Megjegyzések és hivatkozások

  1. 5.4.3. Kiadás  " ,2021. március 29(elérhető : 2021. március 30. )
  2. (in) "  About  " a lua.org oldalon
  3. Luci: LuCI: OpenWrt konfigurációs felület , openwrt,2017. október 12( online olvasás ).
  4. ComputerCraft kiterjesztés webhelye .
  5. Minetest mód digitális és analóg elektronikus áramkörök (például logikai kapuk, µvezérlők vagy FPGA-k) hozzáadásával, valamint bizonyos műveletek és események automatizálásának lehetővé tételével.
  6. "  TYRONE! ÚJRA NE!  » , On (hozzáférés : 2017. január 6. ) .
  7. Wikipedia Signpost, a Lua új sablon szkriptnyelvként lett kiválasztva , 2012. január 30. ( Projektoldal ).
  8. (in) IRC kliens démon  " .
  9. (in) "  Rspamd Features - Unique Features  " az rspamd.com webhelyen .
  10. "  BeamNG.drive  " (hozzáférés : 2016. augusztus 6. ) .
  11. „  A FreeBSD Projekt | FreeBSD 11.3-RELEASE Release Notes  ” , www.freebsd.org (elérve 2021. április 22. )

Függelékek

Bibliográfia

Kapcsolódó cikkek

Külső linkek