TM-History: langlebigen Modus dokumentiert
Langlebigen Modus dokumentiert und vollstaendig aktiviert,
manuelles Loeschen der TM-Hist eingebaut.
Change-Id: I3c63bd22d1443eec8ab17c4f09f7e7904fac8fdf
diff --git a/std/player/comm.c b/std/player/comm.c
index 7025a86..312f7e5 100644
--- a/std/player/comm.c
+++ b/std/player/comm.c
@@ -650,10 +650,10 @@
ReceiveMsg(sprintf(
"\nadd_to_tell_history(): got bad uid argument %O."
"sent: %d, recv: %d, flags: %d, msg: %s",
- uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);
+ uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);
}
- // letzten Gespraechspartner fuer erwidere.
+ // Gespraechspartner fuer erwidere auch ohne tmhist speichern.
if (flags & (MSGFLAG_TELL|MSGFLAG_RTELL))
last_comm_partner = uid;
@@ -677,6 +677,7 @@
}
}
+ // mit eingeschalteter History weitere Details speichern.
if (!tell_history_enabled)
return;
@@ -718,6 +719,7 @@
chat->recvcount += recv;
}
+ // ggf. auch INhalte von Gespraechen speichern
if (tell_history_enabled < TELLHIST_ENABLED)
return;
@@ -743,21 +745,18 @@
msg->timestamp = time();
}
-protected void clear_tell_history()
+protected void clear_tell_history(int force)
{
/* Nach einem "schlafe ein" werden die gespeicherten Mitteilungen geloescht,
sofern der Spieler nichts abweichendes eingestellt hat. */
-#ifdef TELLHIST_LONGLIFE
- if (tell_history_enabled == TELLHIST_LONGLIFE)
- return;
-#endif
-
- foreach (string uid, struct chat_s chat: tell_history)
- if (pointerp(chat->msgbuf)) {
- chat->msgbuf = 0;
- chat->ptr = 0;
- }
+ // bei manuellem Loeschen (force==1) immer loeschen, ansonsten nur, wenn die
+ // History nicht "long-life" ist.
+ if (tell_history_enabled < TELLHIST_LONGLIFE || force)
+ {
+ tell_history = ([]);
+ commreceivers = ({});
+ }
}
protected void reset(void)
@@ -767,7 +766,7 @@
wie bei einem "schlafe ein" die Mitteilungen geloescht. */
if (!interactive())
- clear_tell_history();
+ clear_tell_history(0);
}
@@ -1657,12 +1656,21 @@
tell_history_enabled = TELLHIST_DISABLED;
write("Ok, es wird nichts mehr gespeichert.\n");
if (sizeof(tell_history)) {
- tell_history = ([]);
- commreceivers = ({});
+ clear_tell_history(1);
write("Deine Mitteilungsgeschichte wurde geloescht.\n");
}
return 1;
}
+ if (str == "loeschen")
+ {
+ if (sizeof(tell_history)) {
+ clear_tell_history(1);
+ write("Deine Mitteilungsgeschichte wurde geloescht.\n");
+ }
+ else
+ write("Deine Mitteilungsgeschichte war schon leer.\n");
+ return 1;
+ }
if (str == "namen") {
int flag;
@@ -1685,14 +1693,12 @@
return 1;
}
-#ifdef TELLHIST_LONGLIFE
if (str == "langlebig") {
tell_history_enabled = TELLHIST_LONGLIFE;
write("Ok, zukuenftige Mitteilungen werden jeweils bis zum naechsten "
"Ende/Crash/\nReboot gespeichert.\n");
return 1;
}
-#endif
if (str == "status") {
switch (tell_history_enabled) {
@@ -1705,12 +1711,10 @@
case TELLHIST_ENABLED:
write("Deine Mitteilungen werden gespeichert.\n");
break;
-#ifdef TELLHIST_LONGLIFE
case TELLHIST_LONGLIFE:
write("Deine Mitteilungen werden jeweils bis zum naechsten Ende/"
"Crash/Reboot\ngespeichert.\n");
break;
-#endif
}
return 1;
}