Lua | ||
![]() | ||
Ensimmäisen version päivämäärä | 1993 | |
---|---|---|
Paradigma | Moniparadigma: menettelyllinen , objektiivinen prototyyppiin ja toimiva | |
Kirjoittaja | Luiz Henrique de Figueiredo, Roberto Ierusalimschy ja Waldemar Celes | |
Viimeinen versio | 5.4.3 (29. maaliskuuta 2021) | |
Kirjoittaminen | dynaaminen , heikko | |
Vaikuttanut | PERUS , C , C ++ | |
Vaikuttanut | Micro Lua DS | |
Toteutukset | Lua , LuaJIT , LLVM-Lua , LuaCLR , Nua , Lua Alchemy , MicroLua , | |
Kirjoitettu | VS | |
Käyttöjärjestelmä | Monitasoinen | |
Lisenssi | MIT-lisenssi | |
Verkkosivusto | lua.org | |
Tiedostopääte | lua, luna, kuu ja anair | |
Lua on ilmainen , heijastava ja välttämätön komentosarjakieli .
Vuonna 1993 luotu se on suunniteltu siten, että se voidaan upottaa muihin sovelluksiin niiden laajentamiseksi. Lua ( portugaliksi : Lua [ˈlu.ɐ] , Brasiliassa : [ˈlu.a] , eli " kuu ") on kehittänyt Luiz Henrique de Figueiredo , Roberto Ierusalimschy (en) ja Waldemar Celes , TeCGraf-tutkimusryhmän jäsenet, alkaen Pontifical Catholic University of Rio de Janeirossa vuonna Brasiliassa .
Lua-tulkki on kirjoitettu tiukalla ANSI C -kielellä , ja siksi se voidaan koota monenlaisille järjestelmille. Se on myös hyvin kompakti, versio 5.0.2 kattavat vain 95kb on 185KB riippuen kääntäjä käyttää ja kohdejärjestelmässä. Sitä käytetään usein sulautetuissa järjestelmissä , kuten OpenWrt, missä tätä kompaktuutta arvostetaan suuresti. Se hyödyntää C-kielen yhteensopivuutta useiden kielten kanssa ja integroituu helposti useimpiin projekteihin.
Se on erityisen suosittu sulautetuissa, verkkokehityksessä ja videopeleissä .
Lua käytetään videopelejä kuten Transformice , World of Warcraft , uniform , Garry n Mod , Onset , ComputerCraft mod ( mod varten Minecraft ), Multi Theft Auto ( mod multiplayer GTA: San Andreas ) FiveM ( mod moninpeli on Grand Theft Auto V ), samoin kuin videopelimoottorit, kuten SourceEngine , CryENGINE , LÖVE , tai jopa fantasiakonsolit , kuten Pico-8 .
Se on myös käytetään verkon tasolla kuin koukku on Apache , Lighttpd (oletus), nginx (via OpenResty ), ja Ciscon reitittimet , että Wireshark packet analysaattori , Rspamd roskapostin , Tähti yksityinen puhelinvaihde (valinnainen)), ja MediaWiki skriptejä .
Luassa kommentit alkavat --ja päättyvät rivin loppuun, kuten Adassa . Jos ensimmäinen rivi alkaa #! ( shebang ) sitä pidetään myös kommenttina. Monirivisiä kommentteja on saatavana myös syntaksin kanssa
--[[...]]Muuttujat voivat sisältää nil(nolla-arvo, tyhjä), loogisen arvon, merkkijonon, luvun (ei eroa kokonaisluvun ja kelluvien välillä), taulukon tai funktion. On myös muita tyyppejä, joita esiintyy userdatatai threadharvemmin. Tyyppi userdataon hyvin käytännöllinen, se vastaa käyttäjän määrittelemää C / C ++ -objektia: Siksi on mahdollista luoda C-rakenne tai C ++ -luokka ja käyttää tämän tyyppisiä objekteja Lua-komentosarjassa sen jälkeen, kun liittänyt tähän objektiin metatabletin, joka on vastuussa C ++ -luokan toimintojen kutsumisesta. Voimme siis kuvitella, että luodaan ohjelman peruskurssit C-muodossa ja koodataan itse sovellus Lualle, mikä kiihdyttää huomattavasti sen kehitystä kielen tarjoamien korkean tason työkalujen ansiosta.
Sisäisesti voimme myös tavata heidät proto, eräänlaisen funktion prototyypin, jonka funktion tavukoodi ladataan, mutta jälkimmäistä ei suoritettu; Tapaamme prototyypit, kun tiedosto ladataan (käännetään), mutta sitä ei suoriteta tai suljetut tiedostot .
Oletuksena, kun muuttuja ilmoitetaan, se on globaali koko toteutusympäristössä, ellei sitä edeltää avainsana local.
Merkkijonot on erotettu lainausmerkeillä (') tai kaksoismerkillä (") tai jopa kirjaimellisella merkkijonomerkillä
[[...]](monirivinen, ei erikoismerkkiä).
Merkkijonon ketjutusoperaattoria edustaa kaksoispiste ( ..).
Funktioita pidetään muuttujina. Tämä tarjoaa suuren joustavuuden: esimerkiksi on mahdollista luoda funktioita, jotka ovat paikallisia toiselle toiminnolle, välittää funktio toisen funktion parametrina (tai palautusarvona) tai laittaa funktioita taulukoihin. Jos määritämme nilfunktion (esim. print = nil), Toimintoa ei ole enää olemassa, sitä ei voida enää kutsua.
Luan funktioiden etuna on, että ne voivat ottaa määrittelemättömän määrän parametreja, mutta myös että ne voivat palauttaa useita arvoja.
Taulukot ovat Lua-rakennetta, jonka avulla voit tallentaa muuttujia avaimen avulla (kuten esimerkiksi PHP : ssä). Taulukoita käytetään moniin asioihin Luassa.
Näitä käytetään kahdella eri tavalla:
On täysin mahdollista (mutta koodin laadun vuoksi erittäin suositeltavaa), että sinulla on taulukko, jossa sekoitetaan luettelo ja hashtable.
Periaatteena on selata luetteloa iteraattorilla ipairsja hashtable iteraattorilla pairs.
Taulukossa ei ole mahdollista määrittää muuttujaa nollaksi tai indeksoida sitä avaimeen nil.
Metataulukot ovat taulukoita, joiden toiminnot on liitetty kuhunkin perusoperaattoriin (+, -, (), [] ...). Tämä mekanismi on hyvin lähellä operaattoreiden ylikuormitusta C ++: ssa. Esimerkiksi, jos muuttuja x sisältää taulukon, joka on liitetty sopivaan metataulukkoon, funktiokutsu x (argumentit) on kelvollinen, koska Lua etsii sitten metatabletista tämän puhelun käsittelyä.
Näin voimme toteuttaa perinnön taulukoiden välillä. Jos kenttää ei löydy pyydettäessä, Lua etsii metatabletista etsimään mikä taulukko on ylätaso ja pyytää ylätaulukkoa toimittamaan sopivan kohteen.
ja
while condition do -- code endyhtä hyvin kuin
for var = start, valend, step do -- code endMissä
for var_1, ..., var_n in explist do -- code endMissä
mafonction = function (arg1, arg2, ...) -- code return résultat1, résultat2 endEhdotonta lohkoa käytetään esimerkiksi muuttujien ilmoittamiseen paikallisesti tälle lohkolle:
do local mavariable = "chaîne" -- déclaration de variable, optionnel -- code utilisant mavariable endTaulukko peräkkäisillä numeerisilla indekseillä (Lua-taulukon ensimmäinen indeksi on 1)
a = { 5, "foo", [[C:\Lua\Lua.exe]], 'bar', 42 }Taulukko, jossa on nimenomaiset indeksit, ilmoitettu sulkeissa (indeksit, jotka ovat merkkijonoja, joilla on muuttujan syntaksit, eivät tarvitse lainauksia tai sulkeita)
a = { d = 5, [12] = "foo", ['chaîne avec espace'] = true }Kun yksi määrittää muuttujan toiselle, jos tämän arvo ei ole numero, merkkijono tai looginen arvo, tämän viite kopioidaan. Joten taulukoiden tapauksessa, jos muuttujalla a on taulukko ja osoitamme muuttujalle b muuttujalle a, kaikki a: n tekemät muutokset näkyvät suoraan b: ssä
local a = {1,"b",3} local b = a a.foo = "bar" print(b.foo) -- bar -- b et a on les mêmes référencesTaulukko, joka tallentaa monimutkaiset muuttujat: muut taulukot, funktiot, ristiviitteet ... Kun indeksinä olevat arvot eivät ole numeroita, merkkijonoja tai Boolean-arvoja, indeksi on kyseisen muuttujan viite.
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érenteMath.pi-funktio palauttaa pi: n arvon.
print(math.pi) --> Affiche dans la console la valeur de pi (3.1415926535898)Math.min (luettelo) -funktio palauttaa pienimmän luettelossa olevan numeron
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.Math.max (luettelo) -funktio palauttaa luettelon suurimman luvun
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.Math.floor (x) -funktio palauttaa suurimman kokonaisluvun, joka on pienempi tai yhtä suuri kuin 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 2Math.abs (x) -funktio palauttaa x: n absoluuttisen arvon.
print(math.abs(-100)) --> Retourne dans la console le nombre 100.Math.pow (x, y) -funktio palauttaa x: n y: n voimaksi. Voimme käyttää myös lauseketta x ^ y
print(math.pow(6,8)) --> Retourne dans la console le nombre 1679616. -- On peut également utiliser: print(6^8)Math.random (x, y) -funktio palauttaa satunnaisluvun x-arvon ja y-arvon väliin.
local x = 1 local y = 10 print(math.random(x, y)) --> Retourne dans la console un nombre entier aléatoire entre 1 et 10.Math.sqrt (x) -funktio palauttaa x: n neliöjuuren.
local x = 6 print(math.sqrt(x)) --> Retourne la racine carrée de x(6) donc 2.4494897427832.Funktio os.time () palauttaa sekuntien määrän 1 st päivänä tammikuuta 1970 klo 00:00 ja toinen soitat funktioon.
print(os.time())Os.date () -funktio palauttaa päivän, kuukauden, kuukauden numeron, tunnin, minuutin, sekunnin ja vuoden, kun olet, kun kutsut tätä "toimintoa"
print(os.date()) --> Retourne Thu Jul 1 14:52:59 2021Funktio os.clock () palauttaa kuluneen ajan sekunteina Luan aloittamisen jälkeen.
print(os.clock()) --> Retourne dans la console 853312.913685Type (x) -funktio antaa x: n tyypin.
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.Luulla on 9 pöytäfunktiota.
Table.insert (x, y, z) -toiminnon avulla voit lisätä y arvon x jono. Voimme myös antaa sille mahdollisuuden lisätä lisäämällä argumentti z. Jos z-argumenttia ei anneta, arvo näytetään taulukon viimeisessä kohdassa.
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.Table.remove (x, y) funktio mahdollistaa poistaa arvon matriisin x ilmoittamalla asennon y.
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().Table.sort (x) funktio on käytetty lajitella ja muokata elementtien asento array x.
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}Table.concat (x, y) -toiminnon avulla voit ryhmitellä yhteen kaikki arvot array ja muuntaa ne merkkijonojen. Y on valinnainen argumentti, jota voidaan käyttää erottimena kunkin arvoryhmän välillä.
local tableau = {"un", "renard", "caché", "dans", 1, "arbre"} local concatTableau = table.concat(tableau) print(concatTableau) --> Retourne dans la console la valeur unrenardcachédans1arbreVoit myös lisätä erottimen lajitellessasi (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.Table.foreach (x, z) ei enää toimi, koska versio 5.1 lua ja on korvattava jopa silmukoita (), katso alla.
-- Maintenant obsolète.Table.foreachi (x, y) ei enää toimi, koska versio 5.1 lua ja on korvattava ipairs () silmukoita.
-- Maintenant obsolète.Table.getn (x) toiminto näyttää koko x array.
local tableau = {"un", "renard", "gentil"} local longueur = table.getn(tableau) print(longueur) --> Retourne dans la console la longueur du tableau "tableau" donc 3.Merkkijonofunktioita käytetään merkkijonojen käsittelyyn, niitä on 15.
String.find (x, y) avulla voit etsiä y merkkiä x merkkijono. Jos se palauttaa nollan, mitään ei löytynyt, mutta jos jotain löytyy, se osoittaa, mistä paikasta merkit löytyivät.
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. endVoit myös lisätä argumentin z, jonka avulla voit alkaa etsiä merkkejä y tietystä merkistä.
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. endString.byte (x, y, z) on käytetty palauttamaan numerokoodin merkkejä (ASCII koodi) merkkijonon x.
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 ASCIIOn myös mahdollista käyttää argumenttia y määrittelemään muunnoksen alku sekä argumenttia z määrittämään muunnoksen loppu (merkin numero).
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.String.char (x) muuntaa koodi x, joka on ASCII-koodi normaaliin merkkiä.
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)String.dump (x) muuntaa funktio x binäärinen esitys siten, että se voidaan sitten kutsua mukaan loadString (y) funktio.
function demonstration() print("Lancement de la fonction") end local dumped = string.dump(demonstration) assert(loadstring(dumped)) () --> Retourne dans la console "Lancement de la fonction."String.format () avulla voit palauttaa alustettu merkkijonon.
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 nombresString.gmatch (x, y) palauttaa alimerkkijono tärkeimmistä merkkijonon x.
for i in string.gmatch("Je suis quelqu'un de gentil", "%a+") do print(i) end Je suis quelqu un de gentilString.gsub (x, y, z) avulla voidaan korvata sanoja y merkkijonon x toisella sanalla z.
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 zombieString.upper (x) avulla voit palauttaa tekstin merkkijonon x vaihtamalla pienet isoiksi (paitsi erikoismerkkejä).
local MA_STRING = "Je suis un éléphant Rose" print(string.upper(MA_STRING)) --> JE SUIS UN éLéPHANT ROSEString.lower (x) avulla voit palauttaa tekstin merkkijonon x vaihtamalla isot kirjaimet ja pienet kirjaimet.
local MA_STRING = "JE SUIS QUELQU'UN" print(string.lower(MA_STRING)) --> je suis quelqu'unString.reverse (x) avulla palauttaa tekstin merkkijonon x kääntämällä merkkijono.
local MA_STRING = "je suis un scripter" print(string.reverse(MA_STRING)) --> retpircs nu sius ejString.sub (x, y, z) sallii palauttaa alimerkkijono merkkijono x pitämällä vain halutun merkin y. Jos z-argumentti on olemassa, se saa alimerkkijonon merkistä y merkkiin z. Jos argumentti y on negatiivinen, se alkaa taaksepäin ja vie lauseen loppuun.
local MA_STRING = "je suis un scripter" print(string.sub(MA_STRING, 1, 7)) --> je suis print(string.sub(MA_STRING, -2)) --> eString.rep (x, y) avulla kertoa sisällöstä merkkijonon x määrä y.
local MA_STRING = "je suis " print(string.rep(MA_STRING, 5)) --> je suis je suis je suis je suis je suisString.match (x, y, z) sallii palauttaa alimerkkijono merkkiä merkkijonon x ottamalla mitä halutaan aloittamalla siellä merkin z. Z on valinnainen.
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)) --> scriParit (x) -toiminnon avulla voit etsiä taulukon eri elementtejä. Sitä käytetään tällä hetkellä korvaamaan table.foreach-toiminto, joka on rikki lua 5.1 -versiosta lähtien. Sen käyttö on yksinkertaista, se vie ensimmäisen argumentin sanan jälkeen sen varmistamiseksi, että se on indeksi, jotta siinä olisi sijainnin numero matriisissa. Ja sen jälkeen toinen argumentti, jota kutsumme usein arvoksi v, joka osoittaa arvon. Mikä antaa i: lle, v pareittain (x) tehdä. I on matriisin arvon sijaintinumero ja v on arvo.
Arvon löytämiseksi taulukosta lisätään siksi argumentti, joka on taulukon x nimi.
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èmeArvon poistamiseksi taulukosta käytämme myös tätä toimintoa käsittelemällä niitä, kunnes saamme oikean numeron:
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 endToimintoa pcall () käytetään funktion sisältämien virheiden eristämiseen. Tämä estää komentosarjaa pysähtymästä ja näyttää onko virhe tai mahdollisuus nähdä mikä virhe se on.
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 gentilPcall () -toiminto voidaan aktivoida myös kahdella edellisellä muuttujalla
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)Lua on upotettu PlayStation Portable alkaen Sonyn ansiosta Lua Player -ohjelman, ja viime aikoina Lua Lua Player HM ja pelaaja Euphoria että lukea sovelluksia kirjoitettu Lua laajentaa ominaisuuksia konsoliin. Videopelien luomiseen tarkoitettu XtreamLua Player tulee myöhemmin. PSP: n laiteohjelmiston (epävirallinen) muutos mahdollisti sellaisten ohjelmien käynnistämisen, joita Sony ei ollut allekirjoittanut, ja näin luotiin PSP: lle mukautettu Lua-tulkki.
Lua Player Euphoria käyttää alkuperäisen Lua Playerin syntaksia ja suorittaa komentosarjan salamannopeasti kuin Lua Player HM. Lua Player Euphoria on kuitenkin vähemmän täydellinen kuin vanhempi kollegansa.
Lua Player One, yksi viimeisimmistä päivitetyistä LSP-soittimista PSP: lle, on Lua Player, joka on kehitetty espanjalaisten kehittäjien yhteisössä. se mahdollistaa muun muassa 3D: n hallinnan PSP: llä. Tällä työkalulla on kehitetty minigolfpeli avaruudessa.
Lua Player Plus (LPP) julkaistiin PlayStation Vita päälle16. elokuuta 2015. Tämän Lua Playerin avulla voit luoda pelejä konsolille.
Lua sisältyy avoimen lähdekoodin Pocket Chip -käsikonsoliin ( Kickstater- projekti ). Itse asiassa jälkimmäinen upottaa virtuaalikonsoliohjelman Pico-8, jonka avulla voi pelata ja luoda pelejä Luassa.
Niistä videopelit on hiekkalaatikko , jotka käyttävät sitä sisältävät Garry n Mod , Roblox , Core , Stormworks (in) ja Minecraft . Jälkimmäisen osalta ComputerCraft , Minecraft- pelin laajennus , käyttää Luaa grafiikkaohjelmien tai -konsolien ja itsenäisten "robottien" suunnitteluun pelin sisällä, mikä mahdollistaa useiden toistuvien tehtävien automatisoinnin; Minetest , LGPL-lisensoitu hiekkalaatikkopeli, joka on samanlainen kuin jälkimmäinen, käyttää Lua-kieltä laajennusten kirjoittamiseen ja pelin sisällä (tiettyjen tilojen kautta) mikro-ohjaimen tai FPGA-ohjelmoinnin kautta .
On myös pelimoottori, joka käyttää Lua: ta ohjelmointikielenä (eräänlainen Lygan Pygame ): LÖVE .
Monet muut videopelit käyttää sitä, kuten World of Warcraft alkaen Blizzard Entertainment , Far Cry (ja CryEngine moottori yleensä) alkaen Crytek Studios , moninpeli ohjelmisto GTA: SA Multi Theft Auto , SimCity 4 ja Natural Selection 2 päässä Unknown Worlds Entertainment (joka muun muassa kehitti Decodan , Luan IDE : n). Lopuksi joitain Zoo Tycoon 2 ( Blue Fang Games ) -skriptejä on myös pelitiedostoissa , joita ei ole koottu. The Binding of Isaac: Afterbirth + on DLC pelille The Binding of Isaac: Rebirth, joka sallii modien tuen. kirjoitettu Lua.
Lua käytetään myös laajentaa ominaisuuksia VLC Media pelaaja , on valaistumisen n EFL Edje ikkuna johtajat , kuten sekä Awesome (kuten konfiguraatio ja skriptikieli).
Asterisk PABX tarjoaa Luan vaihtoehtona numerointisuunnitelmansa laajentamiselle.
MediaWiki- ja Wikimedia- sivustot käyttävät Lua-mallien komentokielenä (kutsutaan moduuleiksi ).
CraftStudio- ohjelmisto käyttää Lua-ohjelmaa mallien dynaamisten elementtien ohjelmointiin.
Aivojen ja tietokoneiden välisen käyttöliittymän ilmainen ohjelmisto OpenViBE (in) käyttää Lua: ta komentosarjakielenä, erityisesti neurotieteellisten kokeiden ärsykkeiden hallinnassa.
Irccd IRC -robotti käyttää Lua-liitännäisiä.
Rspamd antispam käyttää myös Lua: ta ohjelmointirajapinnassaan .
Lua on komentosarjakieli, jota käytetään ensisijaisesti OpenWrt- sulautettuun käyttöjärjestelmään, joka toimii monilla reitittimillä. LuCI-järjestelmän graafinen käyttöliittymä on kirjoitettu kokonaan Lua-kielellä.
Lua on Domoticzin, avoimen lähdekoodin kotiautomaatio- ohjelmiston , äidinkieli . Se sallii komentosarjat edistyneillä toiminnoilla: Domoticz laukaisee nämä skriptit automaattisesti tilamuutoksista ajan funktiona jne.
Lua on myös NSBase- tietokannan hallintaohjelmiston äidinkieli . Komentosarjat tekevät lomakkeista ja raporteista dynaamisempia. Näin integroitu Lua mahdollistaa todellisten tietokannanhallintasovellusten luomisen.
Orbiter- avaruuslennon simulointiohjelmisto ja sen lisäosat (UCGO, UMmu) käyttävät Lua-toimintoa mahdollistamaan helpon säätöruudun ( MFD - monitoiminäyttö), tehtävien tai alusten luomisen . Erityisesti alusten rakentaminen, toisin kuin DLL- moduulit , ei vaadi C ++ -tiedoston kokoamista .
BeamNG.drive käyttää Luaa fyysisten yhtälöiden täydentämiseen.
Prosody : kevyt XMPP- palvelin, joka on kirjoitettu kokonaan lua-muodossa.
Awesome- työpöytäympäristö (linux) on myös käyttänyt Lua-asetustiedostoja versiosta 3 lähtien.
FreeBSD sisältää lataajan tulkin laturiinsa versiosta 11.3 lähtien.
Ratkaisu, joka yhdistää muokkauksen , värilajittelun , visuaaliset tehosteet, liikegrafiikan ja äänen jälkituotannon, Davinci Resolve käyttää Lua, Py2 ja Py3