Scripting Tutorial
Dank der Scriptsprache Lua sind vielfältige Dinge möglich. Dieses Tutorial soll eine kleine Einführung in die Benutzung der Sprache sowie deren Zusammenhänge mit dem Server tmwserv sein. Eine Referenz der Skriptfunktionen für manaserv ist unter Scripting Referenz zu finden. Möchte man einige Lua Statements ausprobieren, so kann man das unter http://www.lua.org/cgi-bin/demo machen. Wie Skripte in Maps eingebunden werden ist unter Mapping_Howto#Platzieren_von_NPC beschrieben.
Hello World
Im ersten Schritt soll ein NPC erstellt werden, welcher nichts weiter macht als einfach "Hello World!" zu sagen. Dazu müssen wir den NPC erzeugen. Dies machen wir in der atinit Funktion, welche sich im Kopf der Skriptdatei befindet. Diese Funktion wird beim Start des Servers aufgerufen. Sie ist damit der richtige Platz um NPCs zu erstellen.
atinit(function()
create_npc("Peter", 46, 78 * TILESIZE + 16, 42 * TILESIZE + 16, peter_talk, nil) --- Peter
end)
Hier wird definiert, dass ein NPC namens Peter mit dem NPC Bild 46 an einer bestimmten Koordinate angelegt werden soll. "Peter" ist eine Zeichenfolge, die den Anzeigenamen des NPCs angibt. 46 das NPC Bild (siehe npcs.xml). 78 * TILESIZE + 16 gibt die x-Position des NPCs an. Diese wird in Pixeln angegeben und muss deswegen umgerechnet werden.
78 Tiles entsprechen 78 * 32 (die Breite eines Tiles). Damit der NPC in der Mitte des Tiles steht, werden noch 16 (die Hälfte eines Tiles) dazu addiert. 42 * TILESIZE + 16 ergibt dementsprechend die y-Position des NPCs an. Unser NPC wird sich also auf dem Tile (78|42) befinden. peter_talk ist die Funktion, die aufgerufen wird sobald ein Spieler den NPC anspricht. Diese sieht wie folgt aus:
function peter_talk(npc, ch) do_message(npc, ch, "Hello World!") do_npc_close(npc, ch) end
Der Funktion wird das NPC sowie das Charakterhandle übergeben. Mittels do_message wird unsere Hello Word! Nachricht ausgegeben. Das anschließende do_npc_close wird benötigt, damit sich der NPC Dialog wieder schließt. Damit ist der erste NPC geschrieben.