Function processtext: Unterschied zwischen den Versionen
(5 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Die Funktion "processtext" wird | + | Die Funktion "processtext" ist ein sog. [[Dialog-Callback]] und wird verwendet, um Platzhalter in Textkeys zu ersetzen. |
Beispiel: | Beispiel: | ||
Zeile 41: | Zeile 41: | ||
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) | --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)