Variablen und Message Objects

Tywele

Ehrbarer Bürger
Hallo Leute,

weiß jemand wie ich in einem erstellten Message Object eine Variable unterbringen kann?
Ich kann sie ja nicht einfach im "Message Text" Feld beim Erstellen eines Message Objects unterbringen.
Und mit debug.Notification oder debug.messageBox im Script will ich das auch nicht machen,
da es das Übersetzen der Mod nur komplizierter macht.

Ich hoffe da gibt es eine Möglichkeit. Danke schon mal.
 
Ganz einfach:

In der Message:

Viel text Viel text Viel text Viel text %.0f Viel text Viel text Viel textViel text

Im Script:

..................
jede Menge Script gedöhns
......................
....................

MessageID.Show(VariablenName)

oder

MessageID.Show(FesterWert)
zum Beispiel

NNWTascheNachricht.Show(5)

Der Wert, in diesem Fall 5 wird dir dann Ingame zwischen dem Text angezeigt.

=> Du hast 5 Äpfel aufgenommen

%.0f bedeutet => Wert mit einer Nachkommastelle.
%.2f => 2 Nachkomma Stellen

Es ist allerdings nur möglich Zahlen auf diese Weise auszugeben. Für Strings benötigt man eine Quest und einen Questalias.
Btw.

debug.Notification oder debug.messageBox

Sind eigentlich nur zu Debug Zwecken da und sollten nicht zur gewöhnlichen Textausgabe missbraucht werden. Wenn schon nicht weil es eigentlich Amateurpfusch ist, dann aus dem Grund, dass wenn das Plugin nun in eine andere Sprache übersetzt wird, muss jedes mal anschließend der Quelltext neu kompiliert werden. Selbiges gilt, wenn nur der Text in der/den Benachrichtigung/en verändert wird. Dass war schon für Oblivion Gang und gäbe......
Wer dafür oder für TES 3 schon mal einen Mod mit einem Haufen Skripten übersetzt hat, weis welche Tortur dass darstellt. Genau aus diesem Grund wurden vermutlich die Messages auch in eine eigene Kategorie von den Entwicklern ausgelagert...
Die Texte in der ESP zu ändern geht wesentlich einfacher, als jeden einzelnen Aufruf im Quelltext raus zu suchen und dann neu zu kompilieren.
 
Zuletzt bearbeitet von einem Moderator:
Aber geht das ganze auch mit Stringvariablen?

Sind eigentlich nur zu Debug Zwecken da und sollten nicht zur gewöhnlichen Textausgabe missbraucht werden. Wenn schon nicht weils eigentlich Amateurpfusch ist diese dazu zu verwenden, dann aus dem Grund, dass wenn deine Mod nun in eine andere Sprache übersetzt wird oder du nur den Text in der/den Benachrichtigung/en verändern möchtest, muss man jedes mal das Script neu kompilieren, wie das für Oblivion der Fall war und wer schon mal ein paar Dutzend Mods mit einem Haufen Skripten übersetzt hat, weis welche Tortur das darstellt. Genau aus diesem Grund wurden vermutlich die Messages auch in eine eigene Kategorie von den Entwicklern ausgelagert...
Die Texte in der ESP zu ändern geht wesentlich einfacher, als jeden einzelnen Aufruf im Quelltext raus zu suchen und dann neu zu kompilieren.

Warum erklärst du mir das nochmal? Das hab ich in meinem Post doch schon geschrieben. ^^
 
Aber geht das ganze auch mit Stringvariablen?
Nein geht meines Wissen nach nicht. Ich habe stundenlang danach gesucht. Vielleicht genau darum, dass man keine User Messages und auch nicht Teile davon in den Scripten hat.

Eine Ausnahme gibt es bei Charakter/NPC Namen damit geht es unter gewissen Bedingungen:
1. Der NPC ist in einem Quest Alias
2. die Quest ist Owner der Message.

Dann kann man die Namen Variabel ausgeben z.B:

Message Text:
<Alias.ShortName=xgfPferdeKarrenF02> ist nun Sitzplatz zwei zugewiesen.

Je Nach dem, welcher NPC grad in dem Alias ist, wird dessen Name in der Message ausgegeben.

Oder:

Message Text:
Dovahkiins Karre - Hauptmenü
..................................................
Sitzplatz 1. --> <Alias.ShortName=xgfPferdeKarrenF01>
Sitzplatz 2. --> <Alias.ShortName=xgfPferdeKarrenF02>
Geschwindigkeit --> Schritt

Damit ich aber auch die 4 Geschwindigkeiten "variabel" Anzeigen kann, habe ich dann diese Message 4x erstellt und rufe je nach dem, was eingestellt wurde, die entsprechende Message auf.
 
  • Like
Reaktionen: 1 Person
Bethesda hat es meiner Meinung nach versäumt, auch ganz normale Strings als Objekte im CK anzulegen, auf die man dann im Skript zugreifen kann und welche auch als Parameter bei der Textersetzung akzeptiert werden. Dann würde sich alles, was eventuell übersetzt werden muss, wirklich nur in der esp/esm befinden. Als Behelf kann man eigentlich nur Gegenstände anlegen, die niemals den Weg in die Welt finden werden und sich deren Name als String-Variable nutzbar machen. Das ganze auf einen Alias gelegt und schon hat man eine "String"-Variable, die man in Messages dynamisch nutzen kann. Mit GetName/SetName läßt sich ja der Name jederzeit aus dem Skript heraus ändern - und somit auch mit anderen Werten versehen.