Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 1 | GESCHUETZT |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 2 | SYNOPSIS |
| 3 | int exec(object new, object old) |
| 4 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 5 | BESCHREIBUNG |
| 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 User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 11 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 12 | Das Resultat von exec() ist 1 bei Erfolg, 0 sonst. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 13 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 14 | exec() wird verwendet, um unterschiedliche "user objects" zu laden |
| 15 | oder um User mit totem Netz wieder zu verbinden. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 16 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 17 | 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 User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 21 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 22 | Wenn <old> this_player() war, enthaelt this_player() nach dem Aufruf |
| 23 | von exec() <new> und umgekehrt. Gleiches gilt fuer this_interactive(). |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 24 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 25 | 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 User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 30 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 31 | BEISPIELE |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 32 | ob = clone_object("std/player"); |
| 33 | exec(ob, this_object()); |
| 34 | destruct(this_object()); |
| 35 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 36 | GESCHICHTE |
| 37 | LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 38 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 39 | SIEHE AUCH |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 40 | connect(M), disconnect(M), logon(A), interactive(E) |