Merge branch 'master' of ssh://mgg/mudlib-public
diff --git a/std/player/protocols/gmcp.c b/std/player/protocols/gmcp.c
index 6c39608..3a84e86 100644
--- a/std/player/protocols/gmcp.c
+++ b/std/player/protocols/gmcp.c
@@ -280,7 +280,18 @@
// Gerufen, wenn Daten zu senden sind.
protected void GMCPmod_Core_v1_send(mapping data)
{
- // Zur Zeit nix, spaeter mal Core.Goodbye.
+ // Wenn Core registriert wird, wird diese Funktion gerufen und <data> als 0
+ // uebergeben. Wir nutzen das zur Erkennung, dass GMCP aktiviert wurde und
+ // senden die URI fuer das Client-UI-Package.
+ // Bemerkung: ja... Warum zur Hoelle macht Mudlet das so? Es sollte ein
+ // Modul UI definiert werden, was vom Client angefordert wird, anstatt dass
+ // wir auf Verdacht da etwas aus einem nicht-angeforderten Modul rauspusten,
+ // sobald GMCP aktiviert wird.
+ // *grrrrr*
+ if (!data)
+ GMCP_send("Client.GUI 1","http://mg.mud.de/download/testgui.mpackage");
+
+ // Zur Zeit passiert hier weiter nix, spaeter mal Core.Goodbye senden.
}
diff --git a/std/virtual/v_compiler.c b/std/virtual/v_compiler.c
index 80eb370..6c16c47 100644
--- a/std/virtual/v_compiler.c
+++ b/std/virtual/v_compiler.c
@@ -60,6 +60,7 @@
// obsolet.
int NoParaObjects() { return 0; }
+// Standardmaessig nur .c abschneiden und den EPMASTER anstossen.
string Validate(string file)
{
if(!file) return 0;
@@ -108,13 +109,21 @@
mixed CustomizeObject()
{
string file;
-
+ // Wenn !clonep ist es schon ein per VC umbenanntes File und wir koennen den
+ // BLUE_NAME von PO nehmen.
if(!clonep(previous_object()))
return Validate(explode(BLUE_NAME(previous_object()), "/")[<1]);
- if(stringp(last_loaded_file)) file = last_loaded_file;
- else file = Validate(explode(BLUE_NAME(previous_object()), "/")[<1]);
+ // Sonst muessen wir gucken, welche File wir zuletzt erzeugt haben - der
+ // Clone dafuer ist erzeugt (der ruft uns gerade), aber es ist noch nicht
+ // vom Driver umbenannt in den endgueltigen Namen. Wenn wir kein
+ // last_loaded_file haben, naja...
+ if(stringp(last_loaded_file))
+ file = last_loaded_file;
+ else
+ file = Validate(explode(BLUE_NAME(previous_object()), "/")[<1]);
if(!file) return 0;
last_loaded_file = 0;
+ // Das sollte nun das File sein, was wir gerade erzeugen.
return file;
}