E
Ehemaliger Benutzer
Gast
Skripte mit Messages verbinden für Dummies
Begriffserläuterung:
LK = Links Klick
RK = Rechts Klick
TAB = Karteireiter des CK
Filter = Die kleine Zeile im Kopf des Object Window
Ziel der Übung:
[video=youtube;2PcNF4foTUE]http://www.youtube.com/watch?v=2PcNF4foTUE[/video]
Dieses Tutorial zeigt Euch wie Ihr eine Messagebox + die Textausgabe Messages erstellt und mit einem Pyprusskript verbindet, um aufzuzeigen wie das System funktioniert. Dazu wird eine Triggerbox & 3 Messages benötigt. Jetzt wird wieder jemand anmerken, dass man dazu doch auch die Debug Ausgabe von Papyrus kapern kann, da dies ja um so vieles einfacher und besser wäre....
Ja, könnte man, aber einfacher und besser?
Gegenargumente:
1.) Die Debug Ausgabe wurde dazu nicht gedacht, so dass keine Möglichkeit besteht einen Rückgabewert von ihr entgegen zu nehmen. Dies müsste man erst mit weiteren Skripting sozusagen "dazu bauen"....
2.) Es sinnfrei ist, jedesmal das Skript neu kompilieren zu müssen nur weil sich der/die Ausgabetext/e geändert hat/haben. Besonders witzig wird es, wenn man die Quelltexte nicht hat...
3.) Zeugt es von schlechtem Programmierstil, da Bethesda die Texte und Textausgabe Box nicht grundlos seit Fallout 3 in eine eigene Gruppe ausgelagert und in Papyrus eine spezielle Debugausgabe eingebaut hat.
4.) Man kann eine Torxschraube auch mit einem Schlitzschraubenzieher drehen, nur macht dass wenig Sinn wenn man einen Torxschraubendreher hat....
Das Skript
Das Skript ist kurz und simpel und enthält nur 3 Propertys, eine Variable vom Typ Integer sowie ein OnActivate Event.
Das Präfix der Propertys sowie des Skripts könnt Ihr frei Schnauze wählen, ich nehme wie immer meinen Nicknamen.
===============================================================================================================
ScriptName NNWMessageTutorialSkript extends ObjectReference
Message Property NNWFensterBox Auto
{Die MessageBox mit zwei Knoepfen}
Message Property NNWRichtig Auto
{Wenn die Antwort richtig ist}
Message Property NNWFalsch Auto
{Wenn die Antwort falsch ist}
Event OnActivate(ObjectReference akActionRef)
Int wert = NNWFensterBox.Show() ; Die MessageBox samt Variable für den Rückgabewert
If(wert == 0) ;Knopf 1
NNWRichtig.Show()
ElseIf(wert == 1) ;Knopf 2
NNWFalsch.Show()
Else ; Sollte aus einem unerfindlichen Grund sich ein anderer Wert in der Variablen befinden, geben wir eine Warnung über die Debug Ausgabe aus
Debug.Notification("Da funktioniert etwas nicht, den die Variable enthaelt weder 1 noch 0 sondern: " + wert)
EndIf
EndEvent
===============================================================================================================
Kompiliert das Skript und startet das CK.
Messages erstellen
Die EditorIds der Messages sollten genauso wie Namen der Propertys lauten, dann könnt ihr sie per Auto Fill im CK einbinden, ohne zuerst nach ihnen im Dropdownmenü des Skriptdialogs suchen zu müssen.
Aktivator erstellen
Das war schon die ganze Kunst. Platziert den Aktivator an einem Ort eurer Wahl und testet ihn Ingame.
Fragen / Anregungen / Verbesserungsvorschläge?
Begriffserläuterung:
LK = Links Klick
RK = Rechts Klick
TAB = Karteireiter des CK
Filter = Die kleine Zeile im Kopf des Object Window
Ziel der Übung:
[video=youtube;2PcNF4foTUE]http://www.youtube.com/watch?v=2PcNF4foTUE[/video]
Dieses Tutorial zeigt Euch wie Ihr eine Messagebox + die Textausgabe Messages erstellt und mit einem Pyprusskript verbindet, um aufzuzeigen wie das System funktioniert. Dazu wird eine Triggerbox & 3 Messages benötigt. Jetzt wird wieder jemand anmerken, dass man dazu doch auch die Debug Ausgabe von Papyrus kapern kann, da dies ja um so vieles einfacher und besser wäre....
Ja, könnte man, aber einfacher und besser?
Gegenargumente:
1.) Die Debug Ausgabe wurde dazu nicht gedacht, so dass keine Möglichkeit besteht einen Rückgabewert von ihr entgegen zu nehmen. Dies müsste man erst mit weiteren Skripting sozusagen "dazu bauen"....
2.) Es sinnfrei ist, jedesmal das Skript neu kompilieren zu müssen nur weil sich der/die Ausgabetext/e geändert hat/haben. Besonders witzig wird es, wenn man die Quelltexte nicht hat...
3.) Zeugt es von schlechtem Programmierstil, da Bethesda die Texte und Textausgabe Box nicht grundlos seit Fallout 3 in eine eigene Gruppe ausgelagert und in Papyrus eine spezielle Debugausgabe eingebaut hat.
4.) Man kann eine Torxschraube auch mit einem Schlitzschraubenzieher drehen, nur macht dass wenig Sinn wenn man einen Torxschraubendreher hat....
Das Skript
Das Skript ist kurz und simpel und enthält nur 3 Propertys, eine Variable vom Typ Integer sowie ein OnActivate Event.
Das Präfix der Propertys sowie des Skripts könnt Ihr frei Schnauze wählen, ich nehme wie immer meinen Nicknamen.
===============================================================================================================
ScriptName NNWMessageTutorialSkript extends ObjectReference
Message Property NNWFensterBox Auto
{Die MessageBox mit zwei Knoepfen}
Message Property NNWRichtig Auto
{Wenn die Antwort richtig ist}
Message Property NNWFalsch Auto
{Wenn die Antwort falsch ist}
Event OnActivate(ObjectReference akActionRef)
Int wert = NNWFensterBox.Show() ; Die MessageBox samt Variable für den Rückgabewert
If(wert == 0) ;Knopf 1
NNWRichtig.Show()
ElseIf(wert == 1) ;Knopf 2
NNWFalsch.Show()
Else ; Sollte aus einem unerfindlichen Grund sich ein anderer Wert in der Variablen befinden, geben wir eine Warnung über die Debug Ausgabe aus
Debug.Notification("Da funktioniert etwas nicht, den die Variable enthaelt weder 1 noch 0 sondern: " + wert)
EndIf
EndEvent
===============================================================================================================
Kompiliert das Skript und startet das CK.
Messages erstellen
Die EditorIds der Messages sollten genauso wie Namen der Propertys lauten, dann könnt ihr sie per Auto Fill im CK einbinden, ohne zuerst nach ihnen im Dropdownmenü des Skriptdialogs suchen zu müssen.
- Wählt in der Kategorie Miscellaneous den Unterpunkt Message aus. RK=>New. Gebt der neuen Nachricht die ID eurer ersten Property (NNWFensterBox) und kontrolliert ob das Häkchen vor MessageBox gesetzt ist.
- Gebt bei Title nun euren Messagetext ein, zum Beispiel: Wie hies der kaiser, der 433 der 3. Ära von der Mythischen Morgenröte ermordet wurde?
- Dann macht ihr in der Sparte Menu Buttons einen RK in die leere Tabelle und wählt NEW. In die jetzt aktive Zeile "Item Text" schreibt ihr die "richige" Antwort.
Der "Knopf" bekommt als Index automatisch 0 zugewiesen. Der Index ist gleichzeitig der Rückgabewert, der beim Aufruf der Funktion Show() der zuvor definierten Variablen zugewiesen wird. - Erstellt noch einen Knopf und schreibt eine "falsche" Antwort in die Textzeile.
Schliesst das Fenster mit einem Klick auf OK. - Nun erstellt noch eine Message (NNWRichtig) und gebt bei Message Text etwas sinnvolles wie z.B: Richtig, Uriel Septim wurde im Jahre 433 der 3. Ära durch die Mythische Morgenröte ermordet.
- Das selbe nochmal (NNWFalsch) und als Text: Ist nicht weiter schlimm, du warst ja nur dabei. Blindheit ist nicht strafbar.
Aktivator erstellen
*]Geht in der Kategorie World Objects zum Unterpunkt Activators und nehmt am besten etwas simples wie zum Beispiel ImpButton01.- Gebt diesem eine neue ID, schliesst das Fenster mit OK und öffnet den "neuen" Aktivator erneut. Löscht das angehängte Skript und schliesst das Fenster wieder mit LK auf OK. Dieses Prozedere ist leider notwendig, da beim ersten mal der Skriptanhang nicht gleich entfernt wird. CK Bug lässt grüssen....
Öffnet den Aktivatordialog zum dritten mal, klickt bei Scripts auf Add und fügt euer vorher zuvor erstelltes Skript hinzu.
Klickt nun auf Propertys und im neuen Dialog Fenster auf Auto Fill. - Schliesst beide Dialogfenster mit OK und speichert Euer Plugin.
Das war schon die ganze Kunst. Platziert den Aktivator an einem Ort eurer Wahl und testet ihn Ingame.
Fragen / Anregungen / Verbesserungsvorschläge?