SYNOPSIS
object clone_object(string name)
object clone_object(object template)
BESCHREIBUNG
Clont ein neues Objekt aus der Definiton <name> oder alternativ aus
dem Objekt <template>. In beiden Faellen wird dem Clon ein
individueller Name zugeordnet, dann wird der Clon zurueck gegeben.
Das Original, Blueprint genannt, wird nur fuer das Clonen verwendet
und sollte deshalb nicht im Spiel genutzt werden. Die geclonten
Objekte enthalten nur Daten, der Blueprint hingegen auch den
Funktionscode.
Den Blueprint erkennt man daran, dass er keine Nummer im Objektnamen
traegt. clone_object() liefert niemals einen Blueprint zurueck.
Wenn der Blueprint existiert und einen heart_beat() aufweist, schaltet
clone_object() diesen aus.
Die Pfadangabe muss komplett sein. Relative Pfade sind nicht gestattet.
Wenn strikte EUIDs gefordert werden, muss das clonende Objekt eine
EUID != 0 haben.
-- Variablen Initialisierung --
Allgemein werden die Variablen in Blueprints und Clones gleichermassen
durch Aufruf der internen lfun __INIT() initialisiert.
Ist allerdings das #pragma share_variables in Effekt (entweder
explizit im Objekt angegeben, oder als allgemeine Laufzeitoption),
werden die Werte fuer die Klonvariable aus den _aktuellen_ Variablen
der Blueprint kopiert.
Variablen ohne explizite Initialisierung sind hiervon unbetroffen und
werden stets auf 0 gesetzt.
BEISPIELE
// Clone eine Fackel (Name des Files nicht im Compat Format)
object fackel;
fackel = clone_object("/obj/fackel");
// Clone zwei Schluessel (Name des Files im Compat Format)
object key1, key2;
key1 = clone_object(load_object("obj/key"));
key2 = clone_object(key1);
// Create a specialized weapons blueprint.
--- std/weapon.c: ---
#pragma share_variables
int weapon_class = 1;
--- broadsword.c: ---
inherit "/std/weapon";
int create() {
weapon_class = 2;
replace_program("/std/weapon");
}
GESCHICHTE
Modifiziert in LDMud 3.2.6: es werden auch Objekte als Argument
akzeptiert.
LDMud 3.3.378 fuehrte das pragma share_variables ein.
SIEHE AUCH
blueprint(E), clonep(E), destruct(E), clones(E), load_name(E),
load_object(E), move_object(E), uids(C), program_name(E), pragma(LPC)
|