tell.c-Dateireferenz

#include <config.h>
#include <udp.h>
#include <properties.h>
Include-Abhängigkeitsdiagramm für tell.c:

gehe zum Quellcode dieser Datei

Funktionen

secure inetd void udp_tell (mapping data)

Dokumentation der Funktionen

secure inetd void udp_tell ( mapping  data  ) 

Definiert in Zeile 19 der Datei tell.c.

Benutzt break_string(), DATA, find_player(), i, ID, INETD, LOCAL_NAME, MESSAGE_CACHE, MESSAGE_CACHE_FULL, MESSAGE_DEAF, MESSAGE_IGNORE_MUD, MESSAGE_IGNORE_YOU, MSGFLAG_RTELL, MUDNAME, NAME, ob(), P_AWAY, RECIPIENT, REPLY, REQUEST, SENDER, time2string() und WER.

00019                             {
00020   object ob;
00021   string message_string, message_prefix, away;
00022   int i,re;
00023   string *message_array;
00024 
00025   if (data[RECIPIENT] &&
00026        (ob = find_player(lower_case(data[RECIPIENT]))) &&
00027        interactive(ob)) {
00028     
00029     if (!stringp(data[SENDER]) || !strlen(data[SENDER]))
00030                 data[SENDER]="<Unknown>";
00031     if (!stringp(data[DATA]) || !strlen(data[DATA]))
00032                 data[DATA]="<Nichts>";
00033    
00034     data[SENDER]=
00035       implode(filter(explode(data[SENDER], ""),
00036                            #'>=,/*'*/ " "), "");
00037     data[DATA]=
00038       implode(filter(explode(data[DATA], ""),
00039                            #'>=,/*'*/ " "), "");
00040     message_prefix=capitalize(data[SENDER])+"@"+data[NAME]+
00041                    " teilt Dir mit: ";
00042     message_string=break_string(data[DATA],78,message_prefix,0);
00043 
00044     /* Die Anzahl der Leerzeilen am Ende eines tm's scheint nicht genormt */
00045     while(message_string[<1]=='\n')message_string=message_string[0..<2];
00046     message_string += "\n";
00047 
00048     re = ob->Message("\n"+message_string, MSGFLAG_RTELL);
00049 
00050     if (!ob->QueryProp(P_INVIS)){
00051       /* Erst testen, ob die Meldung ueberhaupt angekommen ist! */
00052       if(re==MESSAGE_DEAF)
00053         message_string=sprintf("%s@"MUDNAME" ist momentan leider taub.\n",
00054                                capitalize(getuid(ob)));
00055       else if(re==MESSAGE_IGNORE_YOU)
00056         message_string=sprintf("%s@"MUDNAME" ignoriert Dich.\n",
00057                                capitalize(getuid(ob)));
00058       else if(re==MESSAGE_IGNORE_MUD)
00059         message_string=sprintf("%s@"MUDNAME" ignoriert das Mud '%s'.\n",
00060                                capitalize(getuid(ob)),
00061                                data[NAME]);
00062       else {
00063         /* Erst dann die Erfolgs-Rueckmeldung abschicken */
00064         message_prefix="Du teilst "+capitalize(data[RECIPIENT]) + "@" 
00065                        LOCAL_NAME + " mit: ";
00066         message_string=break_string(data[DATA],78,message_prefix,0);
00067         if(ob->QueryProp(P_AWAY))
00068           message_string=sprintf("%s%s@"MUDNAME" ist gerade nicht "
00069                                  "da: %s\n",
00070                                  message_string,
00071                                  ob->name(WER),
00072                                  ob->QueryProp(P_AWAY));
00073         else if ((i=query_idle(ob))>=600){ // 10 Mins
00074           if (i<3600) away=time2string("%m %M",i);
00075           else away=time2string("%h %H und %m %M",i);
00076           message_string=
00077              sprintf("%s%s@"MUDNAME" ist seit %s voellig untaetig.\n",
00078                      message_string,
00079                      ob->Name(WER),
00080                      away);
00081         }
00082         switch(re) {
00083         case MESSAGE_CACHE:
00084           message_string +=
00085             sprintf("%s@"MUDNAME" moechte gerade nicht gestoert werden.\n"+
00086                     "Die Mittelung wurde von einem kleinen Kobold in Empfang"+
00087                     "genommen.\nEr wird sie spaeter weiterleiten.\n",
00088                     capitalize(getuid(ob)));
00089           break;
00090         case MESSAGE_CACHE_FULL:
00091           message_string +=
00092             sprintf("%s@"MUDNAME" moechte gerade nicht gestoert werden.\n"+
00093                     "Die Mitteilung ging verloren, denn der Kobold kann sich "+
00094                     "nichts mehr merken.\n",
00095                     capitalize(getuid(ob)));
00096           break;
00097         }
00098       }
00099     }
00100     else message_string="\nRoot@"MUDNAME": Spieler "+
00101                         capitalize(data[RECIPIENT])+
00102                         " finde ich in "MUDNAME" nicht!\n";
00103     INETD->_send_udp(data[NAME],
00104                     ([ REQUEST: REPLY,
00105                        RECIPIENT: data[SENDER],
00106                        ID: data[ID],
00107                        DATA: "\n"+message_string ]) );
00108   }
00109   else
00110     INETD->_send_udp(data[NAME],
00111                     ([ REQUEST: REPLY,
00112                        RECIPIENT: data[SENDER],
00113                        ID: data[ID],
00114                        DATA: sprintf("Root@"MUDNAME": Spieler %s finde "+
00115                                      "ich in "MUDNAME" nicht!\n",
00116                                      capitalize(data[RECIPIENT]))
00117                     ]) );
00118 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Erzeugt am Thu Jun 3 14:42:00 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3