Lua/de

From The Powder Toy
Revision as of 19:28, 28 September 2011 by (talk)
Jump to: navigation, search

Contents

= Die Lua Konsole =

Du öffnest die Konsole mit dieser Taste.


BEVOR DU DIR SORGEN MACHST: DU KANNST AUCH DIE ALTEN KOMMANDOS BENUTZEN. PACK NUR EIN '!' OHNE ANFÜHRUNGSZEICHEN DAVOR

!set type dust metl

Dieses Kommando schreibt man in Lua so: tpt.set_property("type", "metl", "dust") (siehe hier)

Aber lerne die Lua-Sprache. Es wird nützlicher sein, als du denkst. (Hier lernst du nicht die Lua-Sprache allgemein. Hier lernst du nur ein API. Aber du kannst hier mehr darüber herausfinden.)//


Die neue Lua-Konsole bietet die Möglichkeit, die Kommandos zusammenzufassen, was in Script geschieht. Lua ist eine sehr einfache Scriptsprache.

Mit dieser Möglichkeit können User das Spiel modifizieren, ohne programmieren zu können.

= Schnelle Einführung in Scripts =

Wie man ein Script ausführt

Um ein Script auszuführen, speicher die .lua-Datei in den Speicherordner von Powder Toy(dort wo powdertoy.exe ist). Öffne die Konsole (siehe oben) und tippe ein: dofile("filename.lua") , wobei du filename.lua durch deinen Dateinamen ersetzt.

Variablentypen

Die verschiedenen Variablentype sind:


  • 'string'

Steht für ein Wort, einen Buchstaben oder einen Satz. 'string'variablen müssen mit doppelten Anführungszeichen beginnen und enden.(")

Beispiel: local str = "Das ist eine Stringvariable."


  • 'number'

Steht für eine Zahl. Es gibt Fließpunktzahlen und Fixed-Punkt-Zahlen (was bedeutet, dass sie Nachkommastellen haben [Fließpunkt] oder das sie Zahlen ohne Bruchteil sind [Fixed-Punkt].)

Beispiel: local num = 1234


  • 'boolean'

Es ist eine Art Schalter, der entweder An (true) oder Aus (false) ist.

Beispiel: local bool = true


  • 'function'

Steht für eine Methode oder Funktion in Lua.

Beispiel: function func(Argument)

Merke: Funktionen, die eine 'function' als Argument haben, brauchen kein () am Ende. Nur der Name muss angegeben werden.


  • 'table'

Tables, also Tabellen, sind mehrere Variablen zusammen. Tables können auch ein Array sein, was in jeder Programmiersprache für eine Abfolge von Variablen steht. Sie können alle Variablen beinhalten, außerdem verschiedene Typen auf einmal.

Beispiel: local tbl = {} Dies erzeugt eine leere Tabelle.


Beispiel: local tbl = {1, 2, 3, "string"}

Erzeugt eine Tabelle mit den Elemente 1,2,3 und "string".

Man kann diese Werte so abrufen:

tbl[1] --gibt 1 zurück tbl[2] --gibt 2 zurück tbl[3] --gibt 3 zurück tbl[4] --gibt "string" zurück


Beispiel:

local tbl = {} tbl.x = 7 tbl.y = 5 tbl.str = "dies ist ein String" tbl.sqr = function(v) return v * v end

Erzeugt eine Tabelle mit den Variablen x, y, str und der Funktion sqr.

Du kannst diese Variablen so aufrufen:

tbl.x --gibt 7 zurück tbl.y --gibt 5 zurück tbl.str --gibt "dies ist ein String" zurück tbl.sqr(2) --gibt 4 zurück (dies ist also eine Funktion, die v nimmt und es quadriert. )


  • 'object'

Verhält sich wie eine Wildcard.Acts as a wildcard. Es kann für jede der oben genannten benutzt werden, was nicht bedeutet, dass es von jedem Typ sein kann. Es hängt von der Funktion ab.

Generelle Argumente

The arguments given here are general, here are some examples:


'string Eigenschaft

Hiermit lässt sich festlegen, welche Eigenschaft eines Teilchens zu verändern ist. Nicht vergessen: Das ist eine 'string'variable, sodass ein Wort dahinter mit doppelten Anführungszeichen geschrieben werden muss.(") Die möglichen Eigenschaften sind:

"type"

"life"

"ctype"

"temp"

"tmp"

"vx"

"vy"

"x"

"y"

Alle anderen gegebenen Wörter rufen einen "invalid property error" hervor.


'object Wert

In was du die Eigenschaft ändern willst. Weil das eine objectvariable ist, hängt der Typ von der Funktion ab.


'string Type

Ein 'String', der der Code von einem Element ist, wie "dust" "watr" "spng".


'number index

Ein bestimmtes Teilchen, das von dem Index angegeben wird.


'number Status

0 oder 1, 0 für aus, 1 für an.


'number Breite und 'number Höhe

Steht für ein Rechteck.


'number x und 'number y

Eine 2-Dimensionale Koordinate.


Lua API

Powder toy hat die folgenden Funktionen als API:

Spiel

tpt.set_pause

Pausiere das Spiel

tpt.set_pause(number Status)

tpt.set_console

Stelle die Sichtbarkeit der Konsole ein.

tpt.set_console(number Status)

tpt.set_shortcuts

Sind Tastenkombinationen erlaubt?

tpt.set_shortcuts(number Status)

tpt.set_pressure

Stellt den Druck auf der Karte ein.

tpt.set_pressure(number x, number y)
tpt.set_pressure(number x, number y, number Breite, number Höhe)
tpt.set_pressure(number x, number y, number width, number height, number Wert)

Teilchen

tpt.reset_spark

Entfernt Materialien mit Strom von der Karte.

tpt.reset_spark()

tpt.set_property

Verändert die Art der Teilchen

tpt.set_property(string Eigenschaft, object Wert)
tpt.set_property(string Eigenschaft, object Wert, string Typ)
tpt.set_property(string Eigenschaft, object Wert, number index)
tpt.set_property(string Eigenschaft, object Wert, number index, string Typ)
tpt.set_property(string Eigenschaft, object Wert, number x, number y)
tpt.set_property(string Eigenschaft, object Wert, number x, number y, string Typ)
tpt.set_property(string Eigenschaft, object Wert, number x, number y, number Breite, number Höhe)
tpt.set_property(string Eigenschaft, object Wert, number x, number y, number Breite, number Höhe, string Typ)

object tpt.get_property

Erkennt verschiedene Eigenschaften eines Partikels und gibt sie als object zurück.

tpt.get_property(string Eigenschaft, number index)
tpt.get_property(string Eigenschaft, number x, number y)

tpt.create

Erzeugt ein Teilchen an einer bestimmten Stelle.

tpt.create(number x, number y, string Typ)

tpt.delete

Löscht ein Teilchen.

tpt.delete(number index)
tpt.delete(number x, number y)

Zeichnen

number tpt.textwidth

Gibt die Länge eines string in Pixeln an. Gibt eine number zurück.

tpt.textwidth(string Text)

Input/Output

tpt.log

Speichere eine Nachricht auf der Konsole

tpt.log(string Nachricht)

tpt.message_box

Zeigt ein OK-Fenster mit Titel und Nachricht an.

tpt.message_box(string Titel, string Nachricht)

string tpt.input

Lass den User Text eingeben und antwortet darauf mit immer der gleichen Nachricht. Die Einstellung "text" ist schon vorher eingegebener Text.

tpt.input(string Titel, string Nachricht)
tpt.input(string Titel, string Nachricht, string text)

Sonstige

string tpt.get_name

Erkennt den aktuellen Usernamen und gibt ihn als string heraus.

tpt.get_name()

tpt.register_step

Lass eine Funktion jeden Schritt ausgeführt werden.

tpt.register_step(function Funktion)

tpt.unregister_step

Entferne eine vorher automatisierte Funktion.

tpt.unregister_step(function Funktion)

Einfaches Beispiel

-- Diese Zeile ist ein Kommentar. Alles nach einem -- wird nicht von Lua gelesen.

-- Als erstes wird die Konsole entfernt: tpt.set_console(0)

-- Und jetzt kommt die Hauptfunktion: function ClassicPowder() local ox = 125 -- Dies ist unser Startpunkt für die Elemente, die wir erzeugen. local y = 4 -- Auf welchem y-Wert soll das Element erzeugt werden?

local x = ox -- Wo auf der x-Achse das Element erzeugt werden soll. Dies hängt von dem Startpunkt oben ab. for i=0, 10 do -- das ist eine Schleife, die von 0 bis 10 in 1erschritten geht und den Wert in i speichert. tpt.create(x + i, y, "DUST") --Erzeugt einen DUST-Partikel. end

x = x + ox -- Erhöhe x um das Offset von oben. for i=0, 10 do tpt.create(x + i, y, "WATR") --Erzeugt einen WATR-Partikel end

x = x + ox for i=0, 10 do tpt.create(x + i, y, "SALT") end

x = x + ox for i=0, 10 do tpt.create(x + i, y, "OIL") end

return false end

-- Als letztes wird sichergestellt, dass mit jedem Simulationsschritt die Funktion ausgeführt wird. tpt.register_step(ClassicPowder)