Function processtext: Unterschied zwischen den Versionen

Aus Sternenschweif Wiki
Wechseln zu: Navigation, Suche
Zeile 48: Zeile 48:
  
 
Um ein Partymitglied in der dritten Person (oder mit anderen Personalpronomen) zu ersetzen, gibt es bereits feste Definitionen. Nachfolgend ein kleines Beispiel dazu wobei  
 
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
 
{0} der Platzhalter für den Namen
 +
 
{1} der Platzhalter für er/ sie  
 
{1} der Platzhalter für er/ sie  
 +
 
{2} der Platzhalter für sein/ihr
 
{2} der Platzhalter für sein/ihr
 +
 
{3} der Platzhalter für ihn/ihr
 
{3} der Platzhalter für ihn/ihr
 +
 
{4} der Platzhalter für ihn/sie  
 
{4} der Platzhalter für ihn/sie  
 +
 
ist.
 
ist.
  

Version vom 11. August 2014, 10:06 Uhr

Die Funktion "processtext" wird dafür verwendet, 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(deffinierterChar));
text = text.replace ( /{1}/g, getLangString("text_3rdperson_"+getGender(deffinierterChar),[]));
text = text.replace ( /{2}/g, getLangString("text_pp_"+getGender(deffinierterChar),[]));
text = text.replace ( /{3}/g, getLangString("text_pp3_"+getGender(deffinierterChar),[]));
text = text.replace ( /{4}/g, getLangString("text_pp2_"+getGender(deffinierterChar),[]));
return text;
}

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