Meldung nur an ErrorD, wenn Objekt nicht loggt.
Wenn ein Objekt aus SmartLog() meldet, dass es die Meldung
selber geloggt hat (Rueckgabewert != 0), dann wird diese
nicht mehr an den zentralen ErrorD uebermittelt.
Change-Id: Iabc87a495e1d394b7d7ca0dd08ce2ccb940f407c
diff --git a/std/player/base.c b/std/player/base.c
index 27c4e70..89684e6 100644
--- a/std/player/base.c
+++ b/std/player/base.c
@@ -1414,7 +1414,7 @@
* \param[in] myname Art der Spielermeldung (DETAILS, BUG, TYPO, MD)
* @see md(string), idea(string), bug(string), typo(string)
*/
-void smart_log(string myname, string str, object obj)
+protected void smart_log(string myname, string str, object obj)
{
mapping err = ([ F_PROG: "unbekannt",
F_LINE: 0,
@@ -1446,17 +1446,28 @@
break;
}
- // Eintragung in die Fehler-DB
- string hashkey = (string)ERRORD->LogReportedError(err);
-
- // ggf. will das Objekte mit noch irgendwas anfangen.
- obj->SmartLog(0, myname, str, strftime("%d. %b %Y"));
-
- tell_object(this_object(), break_string( sprintf(
- "Du hast an %s erfolgreich %s abgesetzt.\n"
- "Die ID der abgesetzten Meldung lautet: %s\n",
- (obj->IsRoom() ? "diesem Raum" : obj->name(WEM,1)),desc,
- hashkey||"N/A"),78,BS_LEAVE_MY_LFS));
+ // ggf. will das Objekte selber loggen, dann wird nicht zentral geloggt.
+ if (obj->SmartLog(0, myname, str, strftime("%d. %b %Y")))
+ {
+ ReceiveMsg(sprintf(
+ "Du hast an %s erfolgreich %s abgesetzt.\n"
+ "Hinweis: Das Objekt selber hat die Meldung protokolliert.",
+ (obj->IsRoom() ? "diesem Raum" : obj->name(WEM,1)),desc),
+ MT_NOTIFICATION | MSG_BS_LEAVE_LFS | MSG_DONT_BUFFER |
+ MSG_DONT_STORE | MSG_DONT_IGNORE, MA_UNKNOWN, 0, ME);
+ }
+ else
+ {
+ // Eintragung in die Fehler-DB
+ string hashkey = (string)ERRORD->LogReportedError(err);
+ ReceiveMsg(sprintf(
+ "Ein kleiner Fehlerteufel hat D%s an %s unter der ID %s "
+ "notiert.",
+ (obj->IsRoom() ? "diesem Raum" : obj->name(WEM,1)),desc,
+ hashkey || "N/A"),
+ MT_NOTIFICATION | MSG_DONT_BUFFER | MSG_DONT_STORE | MSG_DONT_IGNORE,
+ MA_UNKNOWN, 0, ME);
+ }
}
/** Speichert den Spieler und loggt ihn aus (Spielerkommando 'ende').