replace_personal()

FUNKTION

varargs string replace_personal(string str, mixed *obs [, int caps]);

DEFINIERT IN

/secure/simul_efun.c

ARGUMENTE

str    - zu bearbeitender String
obs    - Liste von Objekt1, Objekt2, ..., Objekt9
         (Objekte oder Strings)
caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
         0 sonst

BESCHREIBUNG

Ersetzt in Strings
@WERx, @WESSENx, @WEMx, @WENx durch
   Objectx->name(<casus>, 1);
@WERUx, @WESSENUx, @WEMUx, @WENUx durch
   Objectx->name(<casus>);
@WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
   Objectx->QueryPronoun(<casus>);
@WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
   Objectx->QueryArticle(<casus>, 1, 1);
@WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
   Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
oder den entsprechenden String bei "Objektx".

BEMERKUNGEN

x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.

Besonderheiten beim Possessivpronomen (@WERQPPGNx):
G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
oder P) ersetzt werden.
Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
bestimmt.

RUeCKGABEWERT

durchersetzter String

Beispiele

replace_personal("@WER1", ({find_player("gloinson")})) ==> "Gloinson"

replace_personal("@WEMQP1", ({find_player("gloinson")})) ==> "ihm"

// unbestimmter und bestimmter Artikel:
replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.",
                 ({find_player("gloinson"),
                   find_object("/obj/mpa"),
                   find_object("/obj/wanderer")}))
==> "Gloinson zueckt eine Zeitung und verhaut den Wanderer."

// Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
// Femininum, Plural) auf die Taschen, nicht auf Kessa:
replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
                 "Taschen.",
                 ({find_player("kessa"),
                   find_player("gloinson")}))
==> "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."

// Ein Beispiel mit laengerem *obs:
replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
                 "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
                 "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
                 "verschwinden laesst. @WERU5 schaut zu und kichert "
                 "irre. Wenn das @WER6 gesehen haette!",
                 ({find_player("gloinson"),
                   find_player("kessa"),
                   find_object("/obj/mpa"),
                   "Birne",
                   find_object("/obj/wanderer"),
                   find_netdead("jof")}),1)
==> "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so "
    "beeindruckt, dass sie ihm eine Zeitung auf die Birne haut und die "
    "Schuhe in ihrer Tasche verschwinden laesst. Ein Wanderer schaut "
    "zu und kichert irre. Wenn das Jof gesehen haette!"

SIEHE AUCH

AddCmd(L)
  1. September 2015, Arathorn