TM-History: langlebigen Modus dokumentiert
Langlebigen Modus dokumentiert und vollstaendig aktiviert,
manuelles Loeschen der TM-Hist eingebaut.
Change-Id: I3c63bd22d1443eec8ab17c4f09f7e7904fac8fdf
diff --git a/doc/pcmd/tmhist b/doc/pcmd/tmhist
index d5f6cf6..9faa890 100644
--- a/doc/pcmd/tmhist
+++ b/doc/pcmd/tmhist
@@ -7,6 +7,8 @@
tmhist aus
tmhist namen
tmhist ein
+ tmhist langlebig
+ tmhist loeschen
tmhist <spielername>
tmhist <nr>
@@ -14,17 +16,23 @@
Ohne Argument wird die aktuelle Teile-mit-History ausgegeben.
'tmhist aus' schaltet die Speicherung komplett aus,
'tmhist namen' speichert nur die Namen der Gespraechspartner und einige
- statistische Daten.
+ statistische Daten.
'tmhist ein' speichert Namen der Gespraechspartner sowie die Inhalte der
- Gespraeche.
+ Gespraeche.
+ 'tmhist langlebig' speichert auch ueber 'schlafe ein' hinaus.
+ 'tmhist loeschen' loescht den aktuellen Inhalt der History, speichert
+ aber weiterhin ankommende TMs.
'tmhist <name>' gibt das Gespraech mit dem angegebenen Spieler wieder,
- sofern so ein Gespraech existiert und der Inhalt gespeichert wurde.
+ sofern so ein Gespraech existiert und der Inhalt gespeichert wurde.
'tmhist <nr>' gibt das Gespraech mit der Nummer <nr> in der History
- wieder.
+ wieder.
- Die Gespraechsinhalte werden beim Ausloggen mittels 'schlafe ein'
- innerhalb von ca. 4s geloescht, bei 'ende' sofort. Bricht die Verbindung
- zum MorgenGrauen ab, werden die Gespraechsinhalte nach 15min geloescht.
+ Wenn die Teile-mit-History auf "langlebig" geschaltet wird, bleibt sie
+ auch nach einem 'schlafe ein' oder einem Verbindungsabbruch (aber nicht
+ nach 'ende') erhalten. Ansonsten werden die Gespraechsinhalte beim
+ Ausloggen mittels 'schlafe ein' innerhalb von ca. 4s geloescht, bei
+ 'ende' sofort und bei Abbruch der Verbindung zum MorgenGrauen nach ca.
+ 15min geloescht.
Es werden max. 20 Gespraeche mit jeweils max. 50 Nachrichten gespeichert.
Alle mit dem Befehl 'rfluester' mitgeteilten Mitteilungen werden nicht
@@ -35,4 +43,4 @@
ignoriere, kobold, muds, senderwiederholung, klingelton, teile, rfluestere
LETZTE AeNDERUNG:
- Sa, 09.08.2008, Zesstra
+ 14.02.2022, Zesstra
diff --git a/std/player/base.c b/std/player/base.c
index e39f33a..7b3b42a 100644
--- a/std/player/base.c
+++ b/std/player/base.c
@@ -3466,7 +3466,7 @@
say(capitalize(name(WER))+" hat gerade die Verbindung zu "MUDNAME" gekappt.\n");
remove_interactive(ME);
- call_out(#'clear_tell_history,4);
+ call_out(#'clear_tell_history, 4, 0);
return 1;
}
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;
}