Function processtext: Unterschied zwischen den Versionen

Aus Sternenschweif Wiki
Wechseln zu: Navigation, Suche
 
(8 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Die Funktion "processtext" wird dafür verwendet, Platzhalter in Textkeys zu ersetzen.
+
Die Funktion "processtext" ist ein sog. [[Dialog-Callback]] und wird verwendet, um Platzhalter in Textkeys zu ersetzen.
  
 
Beispiel:
 
Beispiel:
Zeile 20: Zeile 20:
 
In dieser Funktion wird zunächst ein zufälliger Schaden (Variable "dmg") ermittelt und anschließend per Funktion "dealDamage" "ausgeteilt".
 
In dieser Funktion wird zunächst ein zufälliger Schaden (Variable "dmg") ermittelt und anschließend per Funktion "dealDamage" "ausgeteilt".
  
Die Funktion processtext durchläuft nacheinander die Textkeys der entsprechenden Dialog-ID, d.h. den "request" und die "responses". Der "request" entspricht "which" = 0, die responses "which = 1"usw. fortlaufend.
+
Die Funktion processtext durchläuft nacheinander die Textkeys der entsprechenden Dialog-ID, d.h. den "request" und die "responses". Der "request" entspricht dabei "which" = 0, die responses "which" = 1 usw. fortlaufend.
  
 
Der Eintrag
 
Der Eintrag
Zeile 30: Zeile 30:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
bewirkt also, dass alle "responses" unverändert wiedergegeben werden, da "which" ungleich 0 ist bei den "responses". Somit bezieht sich der folgende Teil der Funktion nur noch auf den "request":
+
bewirkt also, dass alle "responses" unverändert wiedergegeben werden, da "which" ungleich 0 ist bei den "responses". Somit bezieht sich der folgende Teil der Funktion nur noch auf den "request" (da hier "which" = 0):
  
  
Zeile 40: Zeile 40:
  
 
Für den "request" wird also der Platzhalter {0} durch den Namen des Chars, der in der Variable "currentid" definiert wurde, sowie der Platzhalter {1} durch den Schaden (Variable "dmg") ersetzt.
 
Für den "request" wird also der Platzhalter {0} durch den Namen des Chars, der in der Variable "currentid" definiert wurde, sowie der Platzhalter {1} durch den Schaden (Variable "dmg") ersetzt.
 +
 +
Es ist auch möglich, mehrmals denselben Platzhalter automatisch in einem Text zu ersetzen (wenn z.B. der Name des Helden mehrfach im Text vorkommt):
 +
 +
<syntaxhighlight lang="javascript">
 +
text = text.replace( /{0}/g, getName(0) );
 +
</syntaxhighlight>
 +
 +
Um ein Partymitglied in der dritten Person (oder mit anderen Personalpronomen) zu ersetzen, gibt es bereits feste Definitionen. Nachfolgend ein kleines Beispiel dazu wobei
 +
 +
{0} der Platzhalter für den Namen
 +
 +
{1} der Platzhalter für er/ sie
 +
 +
{2} der Platzhalter für sein/ihr
 +
 +
{3} der Platzhalter für ihn/ihr
 +
 +
{4} der Platzhalter für ihn/sie
 +
 +
ist.
 +
 +
<syntaxhighlight lang="javascript">
 +
function processtext(which, text) {
 +
if (which != 0) return text;
 +
text = text.replace ( /{0}/g, getName(definierterChar));
 +
text = text.replace ( /{1}/g, getLangString("text_3rdperson_"+getGender(definierterChar),[]));
 +
text = text.replace ( /{2}/g, getLangString("text_pp_"+getGender(definierterChar),[]));
 +
text = text.replace ( /{3}/g, getLangString("text_pp3_"+getGender(definierterChar),[]));
 +
text = text.replace ( /{4}/g, getLangString("text_pp2_"+getGender(definierterChar),[]));
 +
return text;
 +
}
 +
</syntaxhighlight>
 +
--lunatic 09:41, 13. Mär. 2014 (CET)
 +
[[Category:NLTScript Referenz]]

Aktuelle Version vom 16. März 2015, 21:04 Uhr

Die Funktion "processtext" ist ein sog. Dialog-Callback und wird verwendet, um Platzhalter in Textkeys zu ersetzen.

Beispiel:

function processtext(which,text) {
  if( which != 0 ) return text;
  var dmg = rollRandom(3,9);
  dealDamage({"who":currentid,"amount":dmg,"mandatory":true,"type":"ignorers","reason":"drop"});
  text = text.replace( "{0}", getName(currentid) );
  text = text.replace( "{1}", dmg);
  return text;
}
<text key="KK_neg">{0} kommt zu Fall und verliert durch den heftigen Aufprall {1} LE.</text>

In dieser Funktion wird zunächst ein zufälliger Schaden (Variable "dmg") ermittelt und anschließend per Funktion "dealDamage" "ausgeteilt".

Die Funktion processtext durchläuft nacheinander die Textkeys der entsprechenden Dialog-ID, d.h. den "request" und die "responses". Der "request" entspricht dabei "which" = 0, die responses "which" = 1 usw. fortlaufend.

Der Eintrag

  if( which != 0 ) return text;

bewirkt also, dass alle "responses" unverändert wiedergegeben werden, da "which" ungleich 0 ist bei den "responses". Somit bezieht sich der folgende Teil der Funktion nur noch auf den "request" (da hier "which" = 0):


text = text.replace( "{0}", getName(currentid) );
text = text.replace( "{1}", dmg);

Für den "request" wird also der Platzhalter {0} durch den Namen des Chars, der in der Variable "currentid" definiert wurde, sowie der Platzhalter {1} durch den Schaden (Variable "dmg") ersetzt.

Es ist auch möglich, mehrmals denselben Platzhalter automatisch in einem Text zu ersetzen (wenn z.B. der Name des Helden mehrfach im Text vorkommt):

text = text.replace( /{0}/g, getName(0) );

Um ein Partymitglied in der dritten Person (oder mit anderen Personalpronomen) zu ersetzen, gibt es bereits feste Definitionen. Nachfolgend ein kleines Beispiel dazu wobei

{0} der Platzhalter für den Namen

{1} der Platzhalter für er/ sie

{2} der Platzhalter für sein/ihr

{3} der Platzhalter für ihn/ihr

{4} der Platzhalter für ihn/sie

ist.

function processtext(which, text) {
if (which != 0) return text;
text = text.replace ( /{0}/g, getName(definierterChar));
text = text.replace ( /{1}/g, getLangString("text_3rdperson_"+getGender(definierterChar),[]));
text = text.replace ( /{2}/g, getLangString("text_pp_"+getGender(definierterChar),[]));
text = text.replace ( /{3}/g, getLangString("text_pp3_"+getGender(definierterChar),[]));
text = text.replace ( /{4}/g, getLangString("text_pp2_"+getGender(definierterChar),[]));
return text;
}

--lunatic 09:41, 13. Mär. 2014 (CET)