>> EN | English
>> ES | Español
>> RU | Русский
Das Erstellen eines Lua Skriptes ist ein extrem nützliches Werkzeug für das TASen. Obgleich einige Programmierkenntnisse notwendig sind, hat der Nutzer die Macht über Dinge, wie den Bildschirm des Spiels, den Input und den Speicher. Die Folgenden Stichpunkte stellen einige übliche Anwendungen vor, allerdings sind die Möglichkeiten Grenzenlos.
Snes9x war, im Jahre 2008, der erste Emulator der modifiziert wurde um Lua zu unterstützen. Jetzt unterstützen folgende Emulatoren Lua: FCEU(X), BizHawk, lsnes, Snes9x, Gens, VBA, Final Burn Alpha, PCSX, DeSmuME, PCEjin, VBjin, and JPC-RR.
Um Lua zu integrieren, wurden eine Anzahl von Emulator-spezifischen Funktionen erstellt, welche die Emulator-spezifische Lua-API bilden, die eine Kontrolle des Emulators ermöglicht. Wie auch immer, man ist nicht nur an Emulator-spezifische Lua Funktionen gebunden. Jeder kann jede Funktion der Haupt-Lua-API benutzen, inklusive der Datei I/O. Somit kann der Emulator programmiert werden um, sagen wir mal, mit Text Dateien zu kommunizieren!

Wie führt man ein Lua Skript aus

Um ein Lua Skript auszuführen, kopiere den Code und platziere ihn in einem Texteditor. Benenne die Datei als "file.lua" oder etwas, das in "lua" endet. Beim Speichern in Notepad auf Windows, musst du Anführungszeichen um den Namen "file.lua" setzen.
Gehe dann in den Emulator und führe die Lua Datei aus. Manche Emulatoren haben ein Lua Skript-Fenster; das Lua Skript wird automatisch beginnen, wen du es lädst.

Grundlagen

Um mit Lua vertraut zu werden, schau in das Lua 5.1 Handbuch rein. Es behandelt, wie die Lua-Sprache funktioniert und die Haupt-Lua-API.
Im Emulator ist es erstrebenswert eine Hauptausführungsschleife (main execution loop) zu haben. Die Hauptausführungsschleife kann eine von zwei Formen annehmen (-- heißt, der Rest der Zeile ist ein Kommentar):
--Hier Deklarationen

while true do
 --Anweisungen
 emu.frameadvance()
end

und
--Hier Deklarationen
function fn()
 --Anweisungen
end
gui.register(fn)
Die Zweite ist eigentlich eine Funktion, welche immer dann aufgerufen wird, wenn es ein Update auf dem Bildschirm gibt (was jede Frame passieren sollte, aber zusätzlich wird sie in manchen Emulatoren[1] auch aufgerufen, während der Bildschirm pausiert ist). Die zweite Form ist in DeSmuME erforderlich, da die erste Form auf eine andere Weise funktioniert, wie die meisten anderen Emulatoren (siehe dieses Thema für mehr Informationen).

MHS für Emulatoren benutzen, in denen Lua nicht eingebettet ist

Mehr Informationen


[1]: Es ist bekannt, dass dies in FCEUX, PCSX und DeSmuME der Fall ist.

DE/LuaScripting last edited by Darkman425 on 8/20/2023 4:35 PM
Page History Latest diff List referrers View Source