Skyrim:Script File Structure: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K
K (Beispiele)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 16: Zeile 16:
  
 
=== Beispiele===
 
=== Beispiele===
<tesscript>
+
<papyrusscript>
 
; MyScript.psc
 
; MyScript.psc
 
ScriptName MyScript
 
ScriptName MyScript
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; HiddenScript.psc Das Script ist auf der Editorliste für Scripts und auf der Liste de
 
; 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
 
This script is hidden from the editor's normal script list, and extends ParentScript
 
ScriptName HiddenScript Extends ParentScript Hidden
 
ScriptName HiddenScript Extends ParentScript Hidden
</tesscript>
+
</papyrusscript>
  
 
== Inhalt ==
 
== Inhalt ==
Zeile 35: Zeile 35:
  
 
=== Beispiele===
 
=== Beispiele===
<tesscript>
+
<papyrusscript>
 
; Aufruf von MyGlobal() in Utility, kein Import
 
; Aufruf von MyGlobal() in Utility, kein Import
 
Function MyFunction()
 
Function MyFunction()
 
   Utility.MyGlobal()
 
   Utility.MyGlobal()
 
EndFunction
 
EndFunction
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; Aufruf von MyGlobal() in Utility, mit Import  
 
; Aufruf von MyGlobal() in Utility, mit Import  
 
import Utility
 
import Utility
Zeile 49: Zeile 49:
 
   MyGlobal()
 
   MyGlobal()
 
EndFunction
 
EndFunction
</tesscript>
+
</papyrusscript>
  
 
== Leerzeichen ==
 
== Leerzeichen ==
Zeile 56: Zeile 56:
  
 
=== Beispiele===
 
=== Beispiele===
<tesscript>
+
<papyrusscript>
 
; gültiger Gebrauch eines Leerzeichens  
 
; gültiger Gebrauch eines Leerzeichens  
 
; (allerdings vielleicht nicht unbedingt besser lesbar)
 
; (allerdings vielleicht nicht unbedingt besser lesbar)
 
x    =    (10+1*    2 ) as  float
 
x    =    (10+1*    2 ) as  float
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; Leerzeichen zwischen den zwei Gleichheitszeichen im Gleichheitsoperator machen daraus  
 
; Leerzeichen zwischen den zwei Gleichheitszeichen im Gleichheitsoperator machen daraus  
 
; zwei einzelne Gleichheitszeichen, was zu einem Übersetzungsfehler führt.
 
; zwei einzelne Gleichheitszeichen, was zu einem Übersetzungsfehler führt.
 
x = = 1
 
x = = 1
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; Leerzeichen zwischen der 10 und 12 machen daraus zwei Zahlen, was zu einem Übersetzungsfehler führt.   
 
; Leerzeichen zwischen der 10 und 12 machen daraus zwei Zahlen, was zu einem Übersetzungsfehler führt.   
 
10 12
 
10 12
</tesscript>
+
</papyrusscript>
  
 
== Zeilenende ==
 
== Zeilenende ==
Zeile 77: Zeile 77:
  
 
=== Beispiele===
 
=== Beispiele===
<tesscript>
+
<papyrusscript>
 
; Zwei Anweisungen, die durch ein Zeilenende getrennt sind
 
; Zwei Anweisungen, die durch ein Zeilenende getrennt sind
 
x = 1 + 2
 
x = 1 + 2
 
y = 2 * 3
 
y = 2 * 3
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; Eine lange Anweisung, die in zwei Zeilen aufgeteilt ist
 
; Eine lange Anweisung, die in zwei Zeilen aufgeteilt ist
 
x = 1 + 2 \
 
x = 1 + 2 \
 
   + 3 + 4
 
   + 3 + 4
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
; Der Backslash in dieser Zeile wird ignoriert weil es in einem Kommentar ist \
 
; Der Backslash in dieser Zeile wird ignoriert weil es in einem Kommentar ist \
 
x = 1 + 2 ; Diese Zeile gehört nicht! zum obigen Kommentar
 
x = 1 + 2 ; Diese Zeile gehört nicht! zum obigen Kommentar
</tesscript>
+
</papyrusscript>
  
 
== Kommentare ==
 
== Kommentare ==
Zeile 103: Zeile 103:
  
 
==== Beispiele====
 
==== Beispiele====
<tesscript>
+
<papyrusscript>
 
; Ein Einzelzeilen-Kommentar
 
; Ein Einzelzeilen-Kommentar
</tesscript>
+
</papyrusscript>
  
 
=== Mehrfachzeilen-Kommentare ===
 
=== Mehrfachzeilen-Kommentare ===
Zeile 113: Zeile 113:
  
 
==== Beispiele====
 
==== Beispiele====
<tesscript>
+
<papyrusscript>
 
;/ Ein einfacher  
 
;/ Ein einfacher  
Mehrfachzeilen-Kommentare/;
+
Mehrfachzeilen-Kommentar/;
 
;/ Man kann auch Quellcode innerhalb dieser Zeichen haben, wenn man den auskommentieren möchte:  
 
;/ Man kann auch Quellcode innerhalb dieser Zeichen haben, wenn man den auskommentieren möchte:  
 
x = 2 * 1
 
x = 2 * 1
 
y.DoCoolStuff()
 
y.DoCoolStuff()
 
/;
 
/;
</tesscript>
+
</papyrusscript>
  
 
=== Dokumentations-Kommentare ===
 
=== Dokumentations-Kommentare ===
Zeile 128: Zeile 128:
  
 
==== Beispiele====
 
==== Beispiele====
<tesscript>
+
<papyrusscript>
 
ScriptName MyCoolScript
 
ScriptName MyCoolScript
 
{Dokumentation für mein tolles Script!
 
{Dokumentation für mein tolles Script!
 
I das kann mehrere Zeilen dauern...}
 
I das kann mehrere Zeilen dauern...}
</tesscript>
+
</papyrusscript>
 
<br>
 
<br>
<tesscript>
+
<papyrusscript>
 
int Property MyProperty Auto
 
int Property MyProperty Auto
 
{Diese Property ist nur Spaß. Auf 1 gesetzt kann man sehen, was für tolle Sachen passieren!}
 
{Diese Property ist nur Spaß. Auf 1 gesetzt kann man sehen, was für tolle Sachen passieren!}
</tesscript>
+
</papyrusscript>
  
  

Aktuelle Version vom 15. August 2012, 17: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.

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