Lua

Lua
Logo.
Datum der ersten Version 1993
Paradigma Multiparadigma: prozedural , objektorientiert bis prototypisch und funktional
Autor Luiz Henrique de Figueiredo, Roberto Ierusalimschy und Waldemar Celes
Letzte Version 5.4.3 (29. März 2021)
Tippen dynamisch , schwach
Beeinflusst von BASIC , C , C ++
Beeinflusst Micro Lua DS
Implementierungen Lua , LuaJIT , LLVM-Lua , LuaCLR , Nua , Lua Alchemie , MicroLua ,

Mochalua , Jill , luaj , LuaRT

Geschrieben in VS
Betriebssystem Plattformübergreifend
Lizenz MIT-Lizenz
Webseite lua.org
Dateierweiterung lua, luna, lunar und anair

Lua ist eine freie , reflektierende und zwingende Skriptsprache .

Es wurde 1993 erstellt und ist so konzipiert, dass es in andere Anwendungen eingebettet werden kann, um diese zu erweitern. Lua (aus dem Portugiesischen  : Lua [ˈlu.ɐ] , in Brasilien  : [ˈlu.a] , was "  Mond  " bedeutet) wurde von Luiz Henrique de Figueiredo , Roberto Ierusalimschy  (en) und Waldemar Celes , Mitgliedern der TeCGraf-Forschungsgruppe, entwickelt. von der Päpstlichen Katholischen Universität Rio de Janeiro in Brasilien .

Der Lua-Interpreter ist in der strengen ANSI- C-Sprache geschrieben und kann daher auf einer Vielzahl von Systemen kompiliert werden. Es ist auch sehr kompakt, Version 5.0.2 belegt je nach verwendetem Compiler und Zielsystem nur  95kb bis  185kb . Es wird oft in eingebetteten Systemen wie OpenWrt verwendet, wo diese Kompaktheit sehr geschätzt wird. Es nutzt die Kompatibilität der C-Sprache mit einer großen Anzahl von Sprachen, um sich problemlos in die meisten Projekte zu integrieren.

Es ist besonders beliebt für Embedded, Netzwerkentwicklung und Videospiele .

Lua wird in Videospielen verwendet wie: Transformice , World of Warcraft , Roblox , Garry's Mod , Onset , ComputerCraft Mod ( Mod für Minecraft ), Multi Theft Auto ( Mod Multiplayer Grand Theft Auto: San Andreas ) FiveM ( Mod Multiplayer von Grand Theft Auto V ) sowie Videospiel-Engines wie SourceEngine , CryENGINE , LÖVE oder sogar Fantasy-Konsolen wie Pico-8 .

Es wird auch auf Netzwerkebene als Hook auf Apache , Lighttpd (Standard), Nginx (via OpenResty ), in Cisco Routern , im Wireshark Packet Analyzer , Rspamd Antispam , Asterisk privater Telefonswitch (optional) ), für MediaWiki- Skripte verwendet .

Allgemein

Bemerkungen

In Lua beginnen Kommentare mit --und enden am Ende der Zeile, wie in Ada . Beginnt die erste Zeile mit #! ( shebang ) es wird auch als Kommentar behandelt. Mehrzeilige Kommentare sind auch mit der Syntax verfügbar

--[[...]]

Variablen

Die Variablen können nil(den Nullwert, leer), einen booleschen Wert, eine Zeichenkette, eine Zahl (kein Unterschied zwischen Integer und Floats), eine Tabelle oder eine Funktion enthalten. Es gibt auch andere Arten, wie userdataoder threadweniger häufig anzutreffen. Der Typ userdataist sehr praktisch, er entspricht einem vom Benutzer definierten C / C ++ -Objekt: Es ist daher möglich, eine C-Struktur oder eine C ++ -Klasse zu erstellen und Objekte dieses Typs in einem Lua-Skript zu verwenden, nachdem an dieses Objekt eine Metatabelle angehängt zu haben, die für den Aufruf der Funktionen der C++-Klasse verantwortlich ist. Wir können uns daher vorstellen, die grundlegenden Business-Klassen eines Programms in C zu erstellen und die Anwendung selbst in Lua zu codieren, was ihre Entwicklung dank der von der Sprache bereitgestellten High-Level- Tools erheblich beschleunigt .

Intern können wir sie auch treffen proto, eine Art Funktionsprototyp, bei dem der Bytecode dieser Funktion geladen, aber nicht ausgeführt wurde; Wir werden Prototypen treffen, wenn eine Datei geladen (kompiliert) aber nicht ausgeführt wird oder mit Closures .

Wenn eine Variable deklariert wird, gilt sie standardmäßig für die gesamte Ausführungsumgebung, sofern ihr nicht das Schlüsselwort vorangestellt ist local.

Die Zeichenketten werden durch einfache Anführungszeichen (') oder doppelte (") oder sogar das literale Zeichenkettenzeichen begrenzt

[[...]]

(mehrzeilig, kein Sonderzeichen).

Der String-Verkettungsoperator wird durch einen Doppelpunkt ( ..) dargestellt.

Funktionen

Funktionen werden als Variablen betrachtet. Dies bietet eine große Flexibilität: Es ist beispielsweise möglich, Funktionen lokal für eine andere Funktion zu erstellen, eine Funktion als Parameter einer anderen Funktion (oder als Rückgabewert) zu übergeben oder Funktionen in Tabellen abzulegen. Wenn wir nileiner Funktion zuweisen (zB print = nil), existiert die Funktion nicht mehr, kann nicht mehr aufgerufen werden.

Ein Vorteil von Funktionen in Lua besteht darin, dass sie eine unbegrenzte Anzahl von Parametern annehmen können, aber auch mehrere Werte zurückgeben können.

Tabellen, Metatabellen

Tabellen sind eine Lua-Struktur, die es Ihnen ermöglicht, durch einen Schlüssel indizierte Variablen zu speichern (wie zum Beispiel in PHP ). Tische werden in Lua für viele Dinge verwendet.


Diese werden auf zwei verschiedene Arten verwendet:

  • Eine Liste (mit einem Index beginnend bei 1 und nicht bei 0)
  • Eine Hashtabelle (die als Struktur fungiert), die in Schlüssel und Wert jede Art von Variable aufnehmen kann nicht nil.


Es ist durchaus möglich (aber aus Gründen der Codequalität dringend davon abzuraten), eine Tabelle zu haben, die Liste und Hashtabelle mischt.

Die Konvention besteht darin, eine Liste mit dem Iterator ipairsund die Hashtabelle mit dem Iterator zu durchsuchen pairs.


In einer Tabelle ist es nicht möglich, eine Variable auf nil zuzuweisen oder sie auf den Schlüssel zu indizieren nil.

Die Metatabellen sind Tabellen, für die jedem Basisoperator (+, -, (), [] ...) eine Funktion zugeordnet wurde. Dieser Mechanismus kommt dem Überladen von Operatoren in C++ sehr nahe . Wenn beispielsweise die Variable x eine Tabelle enthält, die mit einer entsprechenden Metatabelle verknüpft ist, ist der Funktionsaufruf x (Argumente) gültig, da Lua dann in der Metatabelle nach der Handhabung dieses Aufrufs sucht.

Auf diese Weise können wir die Vererbung zwischen Tabellen implementieren. Wenn ein Feld bei der Anforderung nicht gefunden wird, durchsucht Lua die Metatabelle, um die übergeordnete Tabelle zu finden, und fordert die übergeordnete Tabelle auf, das entsprechende Element bereitzustellen.

Beispiele

Zustand

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

Schnallen

repeat -- code until condition

und

while condition do -- code end

ebenso gut wie

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

Wo

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

Funktionserklärung

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

Wo

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

Funktionsaufrufe

res1, res2 = mafonction(var)

Bedingungslose Sperren

Unbedingte Blöcke werden beispielsweise verwendet, um Variablen lokal zu diesem Block zu deklarieren:

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

Tabellendeklaration

Tabelle mit fortlaufenden numerischen Indizes (In Lua ist der erste Index einer Tabelle 1)

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

Tabelle mit expliziten Indizes, angegeben in Klammern (Indizes, die Strings mit der Syntax einer Variablen sind, brauchen keine Anführungszeichen oder Klammern)

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

Wenn man eine Variable einer anderen zuweist und deren Wert keine Zahl, keine Zeichenkette oder ein boolescher Wert ist, dann wird die Referenz dieser Variable kopiert. Wenn also im Fall von Tabellen eine Variable a eine Tabelle hat und wir die Variable b der Variablen a zuweisen, sind alle von a vorgenommenen Änderungen direkt auf b sichtbar

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

Tabelle, die komplexe Variablen speichert: andere Tabellen, Funktionen, Querverweise ... Wenn die Werte als Index keine Zahlen, Strings oder Boolean sind, dann ist der Index die Referenz der betreffenden Variablen .

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

Funktionen

Mathematische Funktionen

Die Funktion math.pi gibt den Wert von pi zurück.

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

Die Funktion math.min (Liste) gibt die kleinste Zahl zurück, die in einer Liste enthalten ist

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.

Die Funktion math.max (Liste) gibt die größte Zahl in einer Liste zurück

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.

Die Funktion math.floor (x) gibt die größte ganze Zahl kleiner oder gleich x zurück.

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

Die Funktion math.abs (x) gibt den Absolutwert von x zurück.

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

Die Funktion math.pow (x, y) gibt x hoch y zurück. Wir können auch den Ausdruck x ^ y . verwenden

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

Die Funktion math.random (x, y) gibt eine Zufallszahl zwischen dem x-Wert und dem y-Wert zurück.

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

Die Funktion math.sqrt (x) gibt die Quadratwurzel von x zurück.

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

Knochenfunktionen

Die Funktion os.time() gibt die Anzahl der Sekunden zwischen den 1 st Januar 1970 um 00:00 und in der Sekunde rufen Sie die Funktion auf.

print(os.time())

Die Funktion os.date() gibt Tag, Monat, Monatsnummer, Stunde, Minuten, Sekunden und Jahr zurück, in dem Sie sich befinden, wenn Sie diese "Funktion" aufrufen.

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

Die Funktion os.clock() gibt die seit dem Start von Lua verstrichene Zeit in Sekunden zurück.

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

Die Typfunktion

Die Funktion type (x) gibt den Typ von x an.

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.

Tabellenfunktionen

In lua gibt es 9 Tabellenfunktionen.

Mit der Funktion table.insert (x, y, z) können Sie einen y-Wert in ein x-Array einfügen. Wir können ihm auch eine Position geben, die hinzugefügt werden soll, indem wir ein Argument z hinzufügen. Wenn kein Z-Argument angegeben wird, wird der Wert an der letzten Position der Tabelle angezeigt.

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.

Mit der Funktion table.remove (x, y) können Sie einen Wert aus dem Array x entfernen, indem Sie die Position des Werts y angeben.

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().

Die Funktion table.sort (x) wird verwendet, um die Elemente des Arrays x zu sortieren und ihre Position zu ändern.

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}

Mit der Funktion table.concat (x, y) können Sie alle Werte eines Arrays zusammenfassen und in Zeichenketten umwandeln. Das y ist ein optionales Argument, das als Trennzeichen zwischen jeder Gruppierung von Werten verwendet werden kann.

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

Sie können beim Sortieren auch ein Trennzeichen hinzufügen (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.

Die Funktion table.foreach (x, z) funktioniert seit Version 5.1 von lua nicht mehr und muss durch gerade Schleifen () ersetzt werden, siehe unten.

-- Maintenant obsolète.

Die Funktion table.foreachi (x, y) funktioniert seit Version 5.1 von lua nicht mehr und muss durch ipairs()-Schleifen ersetzt werden.

-- Maintenant obsolète.

Die Funktion table.getn (x) zeigt die Größe eines x-Arrays an.

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

Die String-Funktionen

Die Strings-Funktionen werden verwendet, um die Strings zu verarbeiten, es gibt 15 davon.

Mit string.find (x, y) können Sie nach y-Zeichen in der x-Zeichenfolge suchen. Wenn es nil zurückgibt, wurde nichts gefunden. Wenn jedoch etwas gefunden wird, wird angezeigt, von wo aus die Zeichen gefunden wurden.

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

Sie können auch ein Argument z hinzufügen, mit dem Sie ab einem bestimmten Zeichen nach den Zeichen y suchen können.

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

Das string.byte (x, y, z) wird verwendet, um den numerischen Code der Zeichen (ASCII-Code) des Strings x zurückzugeben.

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

Es ist auch möglich, mit dem Argument y einen Konvertierungsbeginn und mit dem Argument z das Konvertierungsende (Zeichennummer) zu definieren.

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.

Das string.char (x) wandelt den numerischen Code x, der im ASCII-Code vorliegt, in normale Zeichen um.

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)

Der string.dump (x) wandelt die Funktion x in eine binäre Darstellung um, damit sie dann von der Funktion loadString (y) aufgerufen werden kann.

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

Mit string.format() können Sie eine formatierte Zeichenfolge zurückgeben.

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

Die string.gmatch (x, y) gibt einen Teil der Hauptsaite x.

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

Die string.gsub (x, y, z) erlaubt es, die Wörter y eines Strings x durch ein anderes Wort z zu ersetzen.

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

Mit string.upper (x) können Sie den Text einer Zeichenfolge x zurückgeben, indem Sie den Kleinbuchstaben in GROSSBUCHSTABEN ändern (außer Sonderzeichen).

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

Mit string.lower (x) können Sie den Text einer Zeichenfolge x zurückgeben, indem Sie die GROSSBUCHSTABEN in Kleinbuchstaben ändern.

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

Die string.reverse (x) ermöglicht die Rückgabe des Textes einer Zeichenkette x durch Invertieren der Zeichenkette.

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

Die Zeichenfolge.sub (x, y, z) ermöglicht es, eine Teilzeichenfolge der Zeichenfolge x zurückzugeben, indem nur das gewünschte Zeichen y beibehalten wird . Wenn ein z-Argument vorhanden ist, wird die Teilzeichenfolge von Zeichen y bis Zeichen z abgerufen. Wenn das Argument y negativ ist, beginnt es rückwärts und nimmt das Ende des Satzes an.

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

Die string.rep (x, y) erlaubt es, den Inhalt des Strings x mit der Zahl von y zu multiplizieren.

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

Die string.match (x, y, z) ermöglicht es, eine Teilkette von Zeichen der Zeichenkette x zurückzugeben, indem das Gewünschte genommen wird, indem dort mit dem Zeichen z begonnen wird. Z ist optional.

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

Die Paare () Funktion

Mit der Funktion pairs (x) können Sie verschiedene Elemente eines Arrays finden. Es wird derzeit verwendet, um die Funktion table.foreach zu ersetzen, die seit der Version von lua 5.1 defekt ist. Seine Verwendung ist einfach, es nimmt das erste Argument nach dem Wort for, um sicherzustellen, dass es der Index ist, damit es die Positionsnummer im Array trägt. Und danach das zweite Argument, das wir oft für den Wert v nennen, der den Wert angibt. Was gibt für i, v paarweise (x) tun. Das i ist die Positionsnummer des Wertes im Array und das v ist der Wert.

Um einen Wert im Array zu finden, fügen wir daher ein Argument ein, das den Namen von Array x hat.

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

Um einen Wert aus einem Array entfernen zu können, verwenden wir auch diese Funktion und verarbeiten sie, bis wir die richtige Zahl erhalten:

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

Die pcall()-Funktion

Die Funktion pcall() wird verwendet, um in einer Funktion enthaltene Fehler zu isolieren. Dies verhindert das Stoppen des Skripts und zeigt an, ob ein Fehler vorliegt oder nicht, mit der Möglichkeit zu sehen, um welchen Fehler es sich handelt.

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

Die Funktion pcall() kann auch mit zwei vorherigen Variablen aktiviert werden

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!')

Verwendet

Konsolen

Lua wurde dank des Lua Player-Programms in die PlayStation Portable von Sony eingebettet , und in jüngerer Zeit Lua Lua Player HM und Player Euphoria, die mit Lua geschriebene Anwendungen lesen, um die Fähigkeiten der Konsole zu erweitern. Der XtreamLua Player, der für die Erstellung von Videospielen gedacht ist, kommt später. Eine (inoffizielle) Modifikation der Firmware der PSP ermöglichte den Start von Programmen, die nicht von Sony signiert wurden, daher die Entwicklung eines für die PSP angepassten Lua-Interpreters.

Lua Player Euphoria verwendet die Syntax des ursprünglichen Lua Players und führt das Skript im Vergleich zum Lua Player HM blitzschnell aus. Lua Player Euphoria ist jedoch weniger vollständig als sein älteres Gegenstück.

Lua Player One, einer der letzten aktualisierten Lua Player für PSP, ist ein Lua Player, der innerhalb einer Gemeinschaft spanischer Entwickler entwickelt wurde. es ermöglicht unter anderem die Verwaltung von 3D auf der PSP. Mit diesem Tool wurde ein Minigolfspiel im Weltraum entwickelt.

Lua Player Plus (LPP) wurde für PlayStation Vita am veröffentlicht16. August 2015. Mit diesem Lua Player können Sie Spiele für die Konsole erstellen.

Lua ist in der Open-Source- Pocket-Chip- Handheld-Konsole ( Kickstater- Projekt ) enthalten. Letzteres bettet tatsächlich das virtuelle Konsolenprogramm Pico-8 ein, das es ermöglicht, Spiele in Lua zu spielen und zu erstellen.

Erweiterungen für Videospiele

Zu den Videospielen von Sandbox , die es verwenden, gehören Garry's Mod , Roblox , Core , Stormworks  (in) und Minecraft . Für letzteres verwendet ComputerCraft , eine Erweiterung des Minecraft- Spiels , Lua, um Grafikprogramme oder Konsolen und autonome "Roboter" innerhalb des Spiels zu entwerfen, die die Automatisierung vieler sich wiederholender Aufgaben ermöglichen; Minetest , ein LGPL-lizenziertes Sandbox-Spiel , das dem letzteren ähnelt, verwendet Lua als Sprache zum Schreiben von Erweiterungen und innerhalb des Spiels selbst (über bestimmte Modi) über Mikrocontroller- oder FPGA-Programmierung .

Es gibt auch eine Spiel-Engine, die Lua als Programmiersprache verwendet (eine Art Pygame für Lua): LÖVE .

Viele andere Videospiele verwenden es, wie World of Warcraft von Blizzard Entertainment , Far Cry (und die CryEngine- Engine im Allgemeinen) von Crytek Studios , Multiplayer-Software von GTA: SA Multi Theft Auto , SimCity 4 und Natural Selection 2 von Unknown Worlds Entertainment (die unter anderem Decoda entwickelt hat , eine IDE für Lua). Schließlich sind einige Zoo Tycoon 2 ( Blue Fang Games ) -Skripte auch in nicht kompilierter Form in den Spieldateien vorhanden.The Binding of Isaac: Afterbirth + ist ein DLC für das Spiel The Binding of Isaac: Rebirth, der die Unterstützung von Mods ermöglicht geschrieben in Lua.

Andere Software

Lua ist auch für die Erweiterung der Fähigkeiten des verwendeten VLC Media Player , in Aufklärung EFL Edje Fenster - Manager als auch Ehrfürchtig (als Konfigurations- und Skriptsprache).

Die Asterisk PABX bietet Lua als Alternative zur Erweiterung ihres Nummerierungsplans an.

MediaWiki- und Wikimedia- Sites verwenden Lua als Skriptsprache für Modelle (sogenannte Module ).

Die CraftStudio- Software verwendet Lua, um dynamische Elemente von Modellen zu programmieren.

Freie Software der Gehirn-Computer-Schnittstelle OpenViBE  (in) verwendet Lua als Skriptsprache, insbesondere für die Verwaltung von Reizen für neurowissenschaftliche Experimente.

Der IRC-Roboter irccd verwendet Lua zum Erstellen von Plugins.

Rspamd Antispam verwendet auch Lua für seine Programmierschnittstelle .

Lua ist die Skriptsprache, die hauptsächlich für das eingebettete OpenWrt- Betriebssystem verwendet wird, das auf vielen Routern läuft. Die grafische Benutzeroberfläche der LuCI-Verwaltung ist vollständig in Lua geschrieben.

Lua ist die Muttersprache von Domoticz, einer Open-Source -Hausautomatisierungssoftware . Es ermöglicht Scripting mit erweiterten Funktionalitäten: Domoticz löst diese Scripts automatisch bei Zustandsänderungen, als Funktion der Zeit usw. aus.

Lua ist auch die Muttersprache von NSBase , einer Datenbankverwaltungssoftware. Scripting macht es möglich, Formulare und Berichte dynamischer zu gestalten. Die so integrierte Lua ermöglicht die Erstellung echter Datenbankverwaltungsanwendungen.

Die Orbiter- Raumflugsimulationssoftware und ihre Add-Ons (UCGO, UMmu) verwenden Lua, um die einfache Erstellung von Steuerbildschirmen ( MFD - Multi Function Display), Missionen oder Schiffen zu ermöglichen. Insbesondere der Bau von Schiffen erfordert im Gegensatz zu DLL- Modulen keine Kompilierung einer C++- Datei .

BeamNG.drive verwendet Lua, um seine physikalischen Gleichungen zu vervollständigen.

Prosody  : Leichtgewichtiger XMPP- Server , der vollständig in lua geschrieben ist.

Auch die Awesome Desktop-Umgebung (Linux) verwendet Lua in ihren Konfigurationsdateien seit Version 3.

FreeBSD enthält seit Version 11.3 einen lua-Interpreter in seinem Loader.

Die Lösung, die Schnitt , Farbkorrektur , visuelle Effekte, Motion Graphics und Audio-Postproduktion kombiniert Davinci Resolve verwendet Lua, Py2 und Py3

Hinweise und Referenzen

  1. Freigabe 5.4.3  " ,29. März 2021(Zugriff am 30. März 2021 )
  2. (in) "  Über  " auf lua.org
  3. Luci: LuCI: OpenWrt-Konfigurationsschnittstelle , openwrt,12. Oktober 2017( online lesen ).
  4. ComputerCraft- Erweiterungswebsite .
  5. Minetest-Modus, der digitale und analoge elektronische Schaltungen (wie Logikgatter, µController oder FPGAs) hinzufügt und die Automatisierung bestimmter Aktionen und Ereignisse ermöglicht.
  6. "  TYRONE! NICHT NOCH EINMAL!  » , Am (Zugriff am 6. Januar 2017 ) .
  7. Wikipedia-Wegweiser, Lua als neue Template-Skriptsprache gewählt , 30. Januar 2012 ( Projektseite ).
  8. (in) IRC-Client-Daemon  " .
  9. (in) "  Rspamd-Funktionen - Einzigartige Funktionen  " auf rspamd.com .
  10. "  BeamNG.drive  " (Zugriff am 6. August 2016 ) .
  11. „  Das FreeBSD-Projekt | FreeBSD 11.3-RELEASE Versionshinweise  “ , unter www.freebsd.org (Zugriff am 22. April 2021 )

Anhänge

Literaturverzeichnis

Verwandte Artikel

Externe Links