
process_string()
****************

process_string(E)


FUNKTION
========

   string process_string(string str) string process_string(closure cl)


BESCHREIBUNG
============

   Beschreibung s. efun/process_string.

   Abweichend zu der Beschreibung gibt es im MG folgende wichtige
   Punkte:

   * nicht in neuem Code nutzen, aus altem Code ausbauen

   * nicht nutzbar fuer Objekte mit einer UID mit einem Level > 30.

   * nicht rufbar durch Magiershells

   * kann Funktionen in anderen Objekten nur rufen, wenn diese zum
     gleichen Magier gehoeren.

   Folgendes Properties und Details werden bei der Abfrage ueber
   process_string() gefiltert:

   * P_LONG

   * P_SHORT

   * Details

   * NPC-Chats

   * P_INT_LONG

   * P_INT_SHORT

   Die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
   process_call().


BEISPIEL
========

   // komplette Ersetzung ...
   SetProp(P_LONG,"@@current_long@@");
   ...
   string current_long() {
    if(x) return(break_string("Die Beschreibung."));
    else return(break_string("Die andere Beschreibung."));
   }

   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."

   // Teilersetzung
   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
   ...
   string farbenfun(string str) {
    return(str+" "+"gelbes");
   }

   -> bei Abfrage: "Ein huebsch gelbes Ding."


SIEHE AUCH
==========

   process_call(), replace_personal()

02.09.2020 Zesstra
