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
