blob: 10a320a4c9f042dd9d70cb946f01edaeab554add [file] [log] [blame]
Zesstrad59c3892019-11-28 20:53:39 +01001GESCHUETZT
MG Mud User88f12472016-06-24 23:31:02 +02002SYNOPSIS
3 int exec(object new, object old)
4
Zesstrad59c3892019-11-28 20:53:39 +01005BESCHREIBUNG
6 exec() schaltet die Verbindung um vom interaktiven Objekt <old> zum
7 Objekt <old>. Wenn <new> ebenfalls interaktiv ist, wird dessen
8 Verbindung zum Objekt <old> uebertragen, die Verbindungne von <old>
9 und <new> werden also ausgetauscht. Wenn <new> nicht interaktiv ist,
10 ist <old> nach der Ausfuehrung von exec() nicht mehr interaktiv.
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstrad59c3892019-11-28 20:53:39 +010012 Das Resultat von exec() ist 1 bei Erfolg, 0 sonst.
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstrad59c3892019-11-28 20:53:39 +010014 exec() wird verwendet, um unterschiedliche "user objects" zu laden
15 oder um User mit totem Netz wieder zu verbinden.
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstrad59c3892019-11-28 20:53:39 +010017 Um Sicherheitsmechanismen zu gewaehrleisten, wird im Masterobjekt
18 valid_exec(<laufendes Programm>, <new>, <old>) aufgerufen. Dieser
19 Aufruf muss etwas von 0 verschiedenes liefern, um den Aufruf von
20 exec() zu erlauben.
MG Mud User88f12472016-06-24 23:31:02 +020021
Zesstrad59c3892019-11-28 20:53:39 +010022 Wenn <old> this_player() war, enthaelt this_player() nach dem Aufruf
23 von exec() <new> und umgekehrt. Gleiches gilt fuer this_interactive().
MG Mud User88f12472016-06-24 23:31:02 +020024
Zesstrad59c3892019-11-28 20:53:39 +010025 Vorsicht ist geboten, wenn eine simul-efun() um exec() herum gebaut
26 wird: das <laufende Programm>, das an valid_exec() uebergeben wird,
27 ist das simul-efun Objekt. Um dieses Problem zu umgehen, kann mittels
28 bind_lambda() #'exec an das richtige Objekt gebunden und anschliessend
29 mit funcall() aufgerufen werden.
MG Mud User88f12472016-06-24 23:31:02 +020030
Zesstrad59c3892019-11-28 20:53:39 +010031BEISPIELE
MG Mud User88f12472016-06-24 23:31:02 +020032 ob = clone_object("std/player");
33 exec(ob, this_object());
34 destruct(this_object());
35
Zesstrad59c3892019-11-28 20:53:39 +010036GESCHICHTE
37 LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein.
MG Mud User88f12472016-06-24 23:31:02 +020038
Zesstrad59c3892019-11-28 20:53:39 +010039SIEHE AUCH
MG Mud User88f12472016-06-24 23:31:02 +020040 connect(M), disconnect(M), logon(A), interactive(E)