#include <config.h>#include <udp.h>#include <properties.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| secure inetd void | udp_tell (mapping data) |
| 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 }

1.6.3