blob: fa991d64021eb70d62f453d9d92166dab6b72294 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 int restore_object(string name);
3 int restore_object(string str); (VORLAEUFIG)
4
5BESCHREIBUNG
6 Laedt Werte von Variablen fuer das aktuelle Objekt aus der Datei
7 <name> oder direkt aus dem String <str>.
8
9 Um direkt aus einem String Variablen laden zu koennen, muss dieser
10 mit der typischen Zeile "#x:y" beginnen. Strings, die von der Efun
11 save_object() erzeugt wurden, beginnen so.
12
13 Wenn Variablen aus einer Datei geladen werden, kann <name> mit .c
14 enden. Diese Dateiendung wird vom Treiber entfernt. Das Masterobjekt
15 fuegt dem Dateinamen ein .o hinzu. Die Gueltigkeit des Dateinamens
16 wird mit der Funktion check_valid_path() automatisch ueberprueft.
17
18 Die Funktion gibt 1 zurueck, wenn die Variablen erfolgreich geladen
19 wurden und 0, wenn es nichts zu laden gab.
20
21 Variablen mit dem Typenvermerk nosave werden nicht geladen, zum
22 Beispiel nosave int xxx;
23
24 Closures aus Lfuns, Variablne und simul_efuns werden nur geladen,
25 wenn sie gefunden werden. Falls nicht, werden sie mit dem Wert '0'
26 geladen.
27
28 Wenn Vererbung verwendet wird, kann es vorkommen, dass mehrere
29 Variablen mit dem gleichen Namen an unterschiedlichen Orten vorkommen
30 und deshalb in der Speicherdatei mehrmals auftreten. Beim Laden der
31 Variablen werden sie in Reihenfolge ihres Auftretens im Vererbungsbaum
32 geladen. Ein geeignetes Vorgehen ist die Verwendung von Verbose und
33 einzigartigen Namen bei nicht-statischen Variablen. So wird auch das
34 manuelle Lesen oder Editieren des Savefiles einfacher.
35
36AENDERUNGEN
37 Das direkte Laden aus einem String wurde in LDMud 3.2.8 eingefuehrt,
38 wird aber moeglicherweise in Zukunft in eine separate Efun
39 ausgelagert.
40 LDMud 3.2.9 ergaenzte die Funktion um die Moeglichkeit,
41 NonLambda-Closures, Symbole und gequotete Arrays zu laden,
42 indem ein neues Format fuer das Savefile verwendet wird.
43
44SIEHE AUCH
45 save_object(E), restore_value(E), valid_read(M)