Skyrim:Script File Structure: Unterschied zwischen den Versionen
Keris (Diskussion | Beiträge) K (Die Seite wurde neu angelegt: ==Links== {{Übersetzung|ckwiki|Script File Structure}} Script File Structure Script File Structure [[Category:Papyr...) |
Keris (Diskussion | Beiträge) K (→Beispiele) |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | <header line> | ||
+ | (<import>|<variable definition>|<property definition>|<state definition>| | ||
+ | <function definition>|<event definition>) | ||
+ | |||
+ | Ein Papyrus-Script ist eine Textdatei mit der Erweiterung ".psc", das aus einer Kopfzeile am Anfang der Datei besteht, gefolgt von einer Sammlung von Importen, [[sk:Variable Reference|Variable]], [[sk:Property Reference|Properties]], [[sk:State Reference|States]], [[sk:Function Reference|Funktionen]] und [[sk:Events Reference|Events]]. Die Reihenfolge dieser Elemente ist nicht wichtig solange die Kopfzeile die erste Nicht-Kommentarzeile in der Datei ist. | ||
+ | |||
+ | == Kopfzeile == | ||
+ | <Header Line> ::= 'ScriptName' <identifier> ['extends' <identifier>] (<flags>)* | ||
+ | Die Kopfzeile des Scripts, die Header Line, besteht aus dem [[sk:Keyword Reference|Keyword]] "ScriptName" gefolgt vom [[sk:Identifier Reference|identifier]] des Scripts (der dem Namen der Datei entsprechen muss). | ||
+ | |||
+ | Wenn das Script ein anderes Script erweitert, wird an den Namen des Script das [[sk:Keyword Reference|keyword]] "Extends" und der Name des Script angehängt, das erweitert wird. Und abschließend [[sk:Flag Reference|Flags]]. | ||
+ | |||
+ | === Script Extension === | ||
+ | Das Erweitern eines anderen Scripts erlaubt es, dessen Funktionen und Events zu übersteuern, um etwas anderes zu tun, oder um dem älteren Script zusätzliche Funktionalität hinzuzufügen. Die einzigen Einschränkungen sind, das gleichnamige Funktionen oder Event im Child-Script und Parentscript auch den selben Return-Typ und die selbe Parameterliste haben müssen. | ||
+ | |||
+ | |||
+ | === Beispiele=== | ||
+ | <papyrusscript> | ||
+ | ; MyScript.psc | ||
+ | ScriptName MyScript | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; HiddenScript.psc Das Script ist auf der Editorliste für Scripts und auf der Liste de | ||
+ | This script is hidden from the editor's normal script list, and extends ParentScript | ||
+ | ScriptName HiddenScript Extends ParentScript Hidden | ||
+ | </papyrusscript> | ||
+ | |||
+ | == Inhalt == | ||
+ | Der Rest der Datei nach der Kopfzeile besteht aus Importen, [[sk:Variable Reference#Variable Definition|Variablen-Definitionen]], [[sk:Property Reference|Properties]], [[sk:State Reference|States]], [[sk:Function Reference|Funktionen]] und [[sk:Events Reference|Events]] in beliebiger Reihenfolge. Man braucht die Scriptvariable, Properties, Funktionen, States und Events erst zu definieren, wenn sie benötigt werden (Variablen in Funktionen und Events müssen jedoch von der Nutzung definiert werden) | ||
+ | |||
+ | == Importe == | ||
+ | 'Import' <identifier> | ||
+ | Das "Import"-keyword lässt es zu, globale Funktionen in einem Script zu nutzen, ohne das den Namen des Scripts voranstellen muss, in dem sie sich befindet. Nutze einfach "Import" gefolgt vom Namen des Scripts, was importiert werden soll. Wenn eine Funktion mit dem selben Namen in beiden Scripts existiert, muss man allerdings nach wie vor den Namen des Scripts voranstellen, das die Version enthält, die man gebrachen will. | ||
+ | |||
+ | === Beispiele=== | ||
+ | <papyrusscript> | ||
+ | ; Aufruf von MyGlobal() in Utility, kein Import | ||
+ | Function MyFunction() | ||
+ | Utility.MyGlobal() | ||
+ | EndFunction | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; Aufruf von MyGlobal() in Utility, mit Import | ||
+ | import Utility | ||
+ | |||
+ | Function MyFunction() | ||
+ | MyGlobal() | ||
+ | EndFunction | ||
+ | </papyrusscript> | ||
+ | |||
+ | == Leerzeichen == | ||
+ | Leerzeichen sind in Papyrus unwichtig mit Ausnahme von Zeilenenden, was unten erklärt wird. Leerzeichen können überall eingesetzt werden solange dabei kein [[sk:Keyword Reference|Keyword]], [[sk:Operator Reference|Operator]], [[sk:Literals Reference|Literal]] oder ähnliches aufgeteilt wird. | ||
+ | |||
+ | |||
+ | === Beispiele=== | ||
+ | <papyrusscript> | ||
+ | ; gültiger Gebrauch eines Leerzeichens | ||
+ | ; (allerdings vielleicht nicht unbedingt besser lesbar) | ||
+ | x = (10+1* 2 ) as float | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; Leerzeichen zwischen den zwei Gleichheitszeichen im Gleichheitsoperator machen daraus | ||
+ | ; zwei einzelne Gleichheitszeichen, was zu einem Übersetzungsfehler führt. | ||
+ | x = = 1 | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; Leerzeichen zwischen der 10 und 12 machen daraus zwei Zahlen, was zu einem Übersetzungsfehler führt. | ||
+ | 10 12 | ||
+ | </papyrusscript> | ||
+ | |||
+ | == Zeilenende == | ||
+ | Papyrus-Scripte sind in Zeilen aufgeteilt, die festlegen, wo eine Anweisung endet und eine andere beginnt . Wenn man eine lange Anweisung hat, die man in mehrere Zeilen unterteilen möchte, kann man ein "\"-Zeichen am Ende der Zeile hinzu fügen und in der nächsten fortsetzen. "\"-Zeichen wird in einem Kommentar werden ignoriert (weil alles in einem Kommentar ignoriert wird), man kann aber Kommentar hinter ein "\"-Zeichen einfügen, wenn man mag. | ||
+ | |||
+ | === Beispiele=== | ||
+ | <papyrusscript> | ||
+ | ; Zwei Anweisungen, die durch ein Zeilenende getrennt sind | ||
+ | x = 1 + 2 | ||
+ | y = 2 * 3 | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; Eine lange Anweisung, die in zwei Zeilen aufgeteilt ist | ||
+ | x = 1 + 2 \ | ||
+ | + 3 + 4 | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | ; Der Backslash in dieser Zeile wird ignoriert weil es in einem Kommentar ist \ | ||
+ | x = 1 + 2 ; Diese Zeile gehört nicht! zum obigen Kommentar | ||
+ | </papyrusscript> | ||
+ | |||
+ | == Kommentare == | ||
+ | Kommentare in Papyrus gibt es in drei Formen: Einzelzeile, Mehrfachzeile, Dokumentation | ||
+ | |||
+ | === Einzelzeilen-Kommentare === | ||
+ | <single line comment> ::= ';' <any text> <end of line> | ||
+ | |||
+ | Einzelzeilen-Kommentare beginnen mit ";" und gehen bis zum Zeilenende. Sie enthalten allen Text nach dem Semikolon, auch einen Backslash, der anderswo eine Fortsetzung auf der nächsten Zeile markiert. | ||
+ | |||
+ | ==== Beispiele==== | ||
+ | <papyrusscript> | ||
+ | ; Ein Einzelzeilen-Kommentar | ||
+ | </papyrusscript> | ||
+ | |||
+ | === Mehrfachzeilen-Kommentare === | ||
+ | <multi-line comment> ::= ';/' <any text> '/;' | ||
+ | |||
+ | Mehrfachzeilen-Kommentare beginnen mit ";/". Sie enthalten allen anschließenden Text (auch Zeilenenden) bis zum einem "/;" | ||
+ | |||
+ | ==== Beispiele==== | ||
+ | <papyrusscript> | ||
+ | ;/ Ein einfacher | ||
+ | Mehrfachzeilen-Kommentar/; | ||
+ | ;/ Man kann auch Quellcode innerhalb dieser Zeichen haben, wenn man den auskommentieren möchte: | ||
+ | x = 2 * 1 | ||
+ | y.DoCoolStuff() | ||
+ | /; | ||
+ | </papyrusscript> | ||
+ | |||
+ | === Dokumentations-Kommentare === | ||
+ | <documentation comment> ::= '{' <any text> '}' | ||
+ | |||
+ | Dokumentations-Kommentare sind etwas Besonderes und können nur in der Zeile auftreten, die direkt dem Script-Header, einer Property-Definition oder einer Funktions-Definition folgt. Dokumentations-Kommentare beginnen mit einen "{"-Zeichen und gehen bis zu einem abschließenden "}"-Zeichen, einschließlich Zeilenenden oder ähnlichem. Diese Kommentare erscheinen als Tooltips im Editor, wenn man mit der Maus über das Script im Scriptpicker geht oder wenn man mit der Maus über eine Property im Property-Editor geht. | ||
+ | |||
+ | ==== Beispiele==== | ||
+ | <papyrusscript> | ||
+ | ScriptName MyCoolScript | ||
+ | {Dokumentation für mein tolles Script! | ||
+ | I das kann mehrere Zeilen dauern...} | ||
+ | </papyrusscript> | ||
+ | <br> | ||
+ | <papyrusscript> | ||
+ | int Property MyProperty Auto | ||
+ | {Diese Property ist nur Spaß. Auf 1 gesetzt kann man sehen, was für tolle Sachen passieren!} | ||
+ | </papyrusscript> | ||
+ | |||
+ | |||
==Links== | ==Links== | ||
{{Übersetzung|ckwiki|Script File Structure}} | {{Übersetzung|ckwiki|Script File Structure}} | ||
Zeile 5: | Zeile 146: | ||
[[Category:Scripting Wissen|Script File Structure]] | [[Category:Scripting Wissen|Script File Structure]] | ||
[[Category:Papyrus Sprachreferenzen|Script File Structure]] | [[Category:Papyrus Sprachreferenzen|Script File Structure]] | ||
− |
Aktuelle Version vom 15. August 2012, 16:26 Uhr
<header line>
(<import>|<variable definition>|<property definition>|<state definition>| <function definition>|<event definition>)
Ein Papyrus-Script ist eine Textdatei mit der Erweiterung ".psc", das aus einer Kopfzeile am Anfang der Datei besteht, gefolgt von einer Sammlung von Importen, Variable, Properties, States, Funktionen und Events. Die Reihenfolge dieser Elemente ist nicht wichtig solange die Kopfzeile die erste Nicht-Kommentarzeile in der Datei ist.
Inhaltsverzeichnis
Kopfzeile
<Header Line> ::= 'ScriptName' <identifier> ['extends' <identifier>] (<flags>)*
Die Kopfzeile des Scripts, die Header Line, besteht aus dem Keyword "ScriptName" gefolgt vom identifier des Scripts (der dem Namen der Datei entsprechen muss).
Wenn das Script ein anderes Script erweitert, wird an den Namen des Script das keyword "Extends" und der Name des Script angehängt, das erweitert wird. Und abschließend Flags.
Script Extension
Das Erweitern eines anderen Scripts erlaubt es, dessen Funktionen und Events zu übersteuern, um etwas anderes zu tun, oder um dem älteren Script zusätzliche Funktionalität hinzuzufügen. Die einzigen Einschränkungen sind, das gleichnamige Funktionen oder Event im Child-Script und Parentscript auch den selben Return-Typ und die selbe Parameterliste haben müssen.
Beispiele
<papyrusscript>
- MyScript.psc
ScriptName MyScript
</papyrusscript>
<papyrusscript>
- HiddenScript.psc Das Script ist auf der Editorliste für Scripts und auf der Liste de
This script is hidden from the editor's normal script list, and extends ParentScript ScriptName HiddenScript Extends ParentScript Hidden </papyrusscript>
Inhalt
Der Rest der Datei nach der Kopfzeile besteht aus Importen, Variablen-Definitionen, Properties, States, Funktionen und Events in beliebiger Reihenfolge. Man braucht die Scriptvariable, Properties, Funktionen, States und Events erst zu definieren, wenn sie benötigt werden (Variablen in Funktionen und Events müssen jedoch von der Nutzung definiert werden)
Importe
'Import' <identifier>
Das "Import"-keyword lässt es zu, globale Funktionen in einem Script zu nutzen, ohne das den Namen des Scripts voranstellen muss, in dem sie sich befindet. Nutze einfach "Import" gefolgt vom Namen des Scripts, was importiert werden soll. Wenn eine Funktion mit dem selben Namen in beiden Scripts existiert, muss man allerdings nach wie vor den Namen des Scripts voranstellen, das die Version enthält, die man gebrachen will.
Beispiele
<papyrusscript>
- Aufruf von MyGlobal() in Utility, kein Import
Function MyFunction()
Utility.MyGlobal()
EndFunction
</papyrusscript>
<papyrusscript>
- Aufruf von MyGlobal() in Utility, mit Import
import Utility
Function MyFunction()
MyGlobal()
EndFunction </papyrusscript>
Leerzeichen
Leerzeichen sind in Papyrus unwichtig mit Ausnahme von Zeilenenden, was unten erklärt wird. Leerzeichen können überall eingesetzt werden solange dabei kein Keyword, Operator, Literal oder ähnliches aufgeteilt wird.
Beispiele
<papyrusscript>
- gültiger Gebrauch eines Leerzeichens
- (allerdings vielleicht nicht unbedingt besser lesbar)
x = (10+1* 2 ) as float
</papyrusscript>
<papyrusscript>
- Leerzeichen zwischen den zwei Gleichheitszeichen im Gleichheitsoperator machen daraus
- zwei einzelne Gleichheitszeichen, was zu einem Übersetzungsfehler führt.
x = = 1
</papyrusscript>
<papyrusscript>
- Leerzeichen zwischen der 10 und 12 machen daraus zwei Zahlen, was zu einem Übersetzungsfehler führt.
10 12 </papyrusscript>
Zeilenende
Papyrus-Scripte sind in Zeilen aufgeteilt, die festlegen, wo eine Anweisung endet und eine andere beginnt . Wenn man eine lange Anweisung hat, die man in mehrere Zeilen unterteilen möchte, kann man ein "\"-Zeichen am Ende der Zeile hinzu fügen und in der nächsten fortsetzen. "\"-Zeichen wird in einem Kommentar werden ignoriert (weil alles in einem Kommentar ignoriert wird), man kann aber Kommentar hinter ein "\"-Zeichen einfügen, wenn man mag.
Beispiele
<papyrusscript>
- Zwei Anweisungen, die durch ein Zeilenende getrennt sind
x = 1 + 2
y = 2 * 3
</papyrusscript>
<papyrusscript>
- Eine lange Anweisung, die in zwei Zeilen aufgeteilt ist
x = 1 + 2 \
+ 3 + 4
</papyrusscript>
<papyrusscript>
- Der Backslash in dieser Zeile wird ignoriert weil es in einem Kommentar ist \
x = 1 + 2 ; Diese Zeile gehört nicht! zum obigen Kommentar </papyrusscript>
Kommentare
Kommentare in Papyrus gibt es in drei Formen: Einzelzeile, Mehrfachzeile, Dokumentation
Einzelzeilen-Kommentare
<single line comment> ::= ';' <any text> <end of line>
Einzelzeilen-Kommentare beginnen mit ";" und gehen bis zum Zeilenende. Sie enthalten allen Text nach dem Semikolon, auch einen Backslash, der anderswo eine Fortsetzung auf der nächsten Zeile markiert.
Beispiele
<papyrusscript>
- Ein Einzelzeilen-Kommentar
</papyrusscript>
Mehrfachzeilen-Kommentare
<multi-line comment> ::= ';/' <any text> '/;'
Mehrfachzeilen-Kommentare beginnen mit ";/". Sie enthalten allen anschließenden Text (auch Zeilenenden) bis zum einem "/;"
Beispiele
<papyrusscript>
- / Ein einfacher
Mehrfachzeilen-Kommentar/;
- / Man kann auch Quellcode innerhalb dieser Zeichen haben, wenn man den auskommentieren möchte
x = 2 * 1 y.DoCoolStuff() /; </papyrusscript>
Dokumentations-Kommentare
<documentation comment> ::= '{' <any text> '}'
Dokumentations-Kommentare sind etwas Besonderes und können nur in der Zeile auftreten, die direkt dem Script-Header, einer Property-Definition oder einer Funktions-Definition folgt. Dokumentations-Kommentare beginnen mit einen "{"-Zeichen und gehen bis zu einem abschließenden "}"-Zeichen, einschließlich Zeilenenden oder ähnlichem. Diese Kommentare erscheinen als Tooltips im Editor, wenn man mit der Maus über das Script im Scriptpicker geht oder wenn man mit der Maus über eine Property im Property-Editor geht.
Beispiele
<papyrusscript>
ScriptName MyCoolScript
{Dokumentation für mein tolles Script!
I das kann mehrere Zeilen dauern...}
</papyrusscript>
<papyrusscript>
int Property MyProperty Auto
{Diese Property ist nur Spaß. Auf 1 gesetzt kann man sehen, was für tolle Sachen passieren!}
</papyrusscript>
Links
- Script File Structure (das englische Original des obigen Artikels)