| GESCHUETZT |
| SYNOPSIS |
| int exec(object new, object old) |
| |
| BESCHREIBUNG |
| exec() schaltet die Verbindung um vom interaktiven Objekt <old> zum |
| Objekt <old>. Wenn <new> ebenfalls interaktiv ist, wird dessen |
| Verbindung zum Objekt <old> uebertragen, die Verbindungne von <old> |
| und <new> werden also ausgetauscht. Wenn <new> nicht interaktiv ist, |
| ist <old> nach der Ausfuehrung von exec() nicht mehr interaktiv. |
| |
| Das Resultat von exec() ist 1 bei Erfolg, 0 sonst. |
| |
| exec() wird verwendet, um unterschiedliche "user objects" zu laden |
| oder um User mit totem Netz wieder zu verbinden. |
| |
| Um Sicherheitsmechanismen zu gewaehrleisten, wird im Masterobjekt |
| valid_exec(<laufendes Programm>, <new>, <old>) aufgerufen. Dieser |
| Aufruf muss etwas von 0 verschiedenes liefern, um den Aufruf von |
| exec() zu erlauben. |
| |
| Wenn <old> this_player() war, enthaelt this_player() nach dem Aufruf |
| von exec() <new> und umgekehrt. Gleiches gilt fuer this_interactive(). |
| |
| Vorsicht ist geboten, wenn eine simul-efun() um exec() herum gebaut |
| wird: das <laufende Programm>, das an valid_exec() uebergeben wird, |
| ist das simul-efun Objekt. Um dieses Problem zu umgehen, kann mittels |
| bind_lambda() #'exec an das richtige Objekt gebunden und anschliessend |
| mit funcall() aufgerufen werden. |
| |
| BEISPIELE |
| ob = clone_object("std/player"); |
| exec(ob, this_object()); |
| destruct(this_object()); |
| |
| GESCHICHTE |
| LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein. |
| |
| SIEHE AUCH |
| connect(M), disconnect(M), logon(A), interactive(E) |