blob: 681946b05a2fc2acce088a5f2a86450e077c1b09 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 int save_object(string name [, int format]);
3 string save_object([int format]);
4
5BESCHREIBUNG
6 Codiert die speicherbaren (s.u.) Variablen des aktuellen Objekts in
7 einen String.
8
9 In der ersten Form wir der String in die Datei <name> geschrieben. Eine
10 Endung ".c" in <name> wird entfernt, dafuer kann eine Endung ".o"
11 durch das Masterobjekt angefuegt werden, waehrend der Ueberpruefung
12 durch valid_read(). Die Efun save_object() liefert 0, wenn die
13 Speicherdatei erfolgreich erstellt wurde, sonst eine Zahl ungleich 0,
14 wenn ein nicht schwerwiegendee Fehler aufgetreten ist (die Datei
15 konnte nicht geschrieben werden oder das aktuelle Objekt wurde
16 inzwischen zerstoert).
17
18 In der zweiten Form wird der String direkt zurueck gegeben. Wenn das
19 Objekt zerstoert wurde, wird 0 zurueck gegeben. In beiden Faellen kann
20 durch das optionale Argument <format> das Format der Speicherdatei
21 angegeben werden:
22
23 -1: das normale Format des Treibers (Standard)
24 0: das Originalformat nach Amylaar's LPMud und LDMud <=3.2.8
25 1: LDMud >= 3.2.9: Non-Lambda Closures, Symbole und gequotete
26 Arrays koennen gespeichert werden
27
28 Eine Variable wird als 'speicherbar' betrachtet, wenn sie nicht als
29 'nosave' oder 'static' deklariert ist.
30
31 Bitte beachten, dass diese efun im MG durch eine Sefun ueberschrieben
32 wird und deren Manpage auch lesen!
33
34BEMERKUNGEN:
35 Damit ein Objekt in Verzeichnisse der Region/des Magiers schreiben
36 kann, muss es entsprechende Rechte, also eine gueltige EUID
37 besitzen. Im create() sollte daher ein:
38
39 seteuid(getuid(this_object()));
40
41 stehen.
42
43AENDERUNGEN
44 Seit LDMud 3.2.8 liefert save_object() einen fixen Wert bei Erfolg.
45 Das direkte Abspeichern in einen String wurde in LDMud 3.2.8
46 eingefuehrt, wird aber in Zukunft eventuell in eine separate Efun
47 umgezogen.
48 LDMud 3.2.9 ergaenzte die Funktion um das Speichern von Non-Lambda
49 Closures, Symbolen und gequoteten Arrays. Dazu wurde ein neues
50 Format fuer die Speicherdatei eingefuehrt.
51 LDMud 3.2.10 fuehrte das Argument <format> ein.
52
53SIEHE AUCH
54 restore_object(E), save_value(E), save_object (Sefun)