MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // MorgenGrauen MUDlib |
| 2 | // |
| 3 | // tell.c |
| 4 | // |
| 5 | // $Id: tell.c 8755 2014-04-26 13:13:40Z Zesstra $ |
| 6 | |
| 7 | #include <config.h> |
| 8 | #include <udp.h> |
| 9 | #include <properties.h> |
| 10 | |
| 11 | #ifdef ZEBEDEE |
| 12 | #include <system.h> |
| 13 | inherit "/sys/format"; |
| 14 | #elif !defined(INETD) |
| 15 | #define INETD "/secure/inetd" |
| 16 | #endif |
| 17 | |
| 18 | |
| 19 | void udp_tell(mapping data) { |
| 20 | object ob; |
| 21 | string message_string, message_prefix, away; |
| 22 | int i,re; |
| 23 | string *message_array; |
| 24 | |
| 25 | if (data[RECIPIENT] && |
| 26 | (ob = find_player(lower_case(data[RECIPIENT]))) && |
| 27 | interactive(ob)) { |
| 28 | |
| 29 | if (!stringp(data[SENDER]) || !sizeof(data[SENDER])) |
| 30 | data[SENDER]="<Unknown>"; |
| 31 | if (!stringp(data[DATA]) || !sizeof(data[DATA])) |
| 32 | data[DATA]="<Nichts>"; |
| 33 | |
| 34 | data[SENDER]= |
| 35 | implode(filter(explode(data[SENDER], ""), |
| 36 | #'>=,/*'*/ " "), ""); |
| 37 | data[DATA]= |
| 38 | implode(filter(explode(data[DATA], ""), |
| 39 | #'>=,/*'*/ " "), ""); |
| 40 | message_prefix=capitalize(data[SENDER])+"@"+data[NAME]+ |
| 41 | " teilt Dir mit: "; |
| 42 | message_string=break_string(data[DATA],78,message_prefix,0); |
| 43 | |
| 44 | /* Die Anzahl der Leerzeilen am Ende eines tm's scheint nicht genormt */ |
| 45 | while(message_string[<1]=='\n')message_string=message_string[0..<2]; |
| 46 | message_string += "\n"; |
| 47 | |
| 48 | re = ob->Message("\n"+message_string, MSGFLAG_RTELL); |
| 49 | |
| 50 | if (!ob->QueryProp(P_INVIS)){ |
| 51 | /* Erst testen, ob die Meldung ueberhaupt angekommen ist! */ |
| 52 | if(re==MESSAGE_DEAF) |
| 53 | message_string=sprintf("%s@"MUDNAME" ist momentan leider taub.\n", |
| 54 | capitalize(getuid(ob))); |
| 55 | else if(re==MESSAGE_IGNORE_YOU) |
| 56 | message_string=sprintf("%s@"MUDNAME" ignoriert Dich.\n", |
| 57 | capitalize(getuid(ob))); |
| 58 | else if(re==MESSAGE_IGNORE_MUD) |
| 59 | message_string=sprintf("%s@"MUDNAME" ignoriert das Mud '%s'.\n", |
| 60 | capitalize(getuid(ob)), |
| 61 | data[NAME]); |
| 62 | else { |
| 63 | /* Erst dann die Erfolgs-Rueckmeldung abschicken */ |
| 64 | message_prefix="Du teilst "+capitalize(data[RECIPIENT]) + "@" |
| 65 | LOCAL_NAME + " mit: "; |
| 66 | message_string=break_string(data[DATA],78,message_prefix,0); |
| 67 | if(ob->QueryProp(P_AWAY)) |
| 68 | message_string=sprintf("%s%s@"MUDNAME" ist gerade nicht " |
| 69 | "da: %s\n", |
| 70 | message_string, |
| 71 | ob->name(WER), |
| 72 | ob->QueryProp(P_AWAY)); |
| 73 | else if ((i=query_idle(ob))>=600){ // 10 Mins |
| 74 | if (i<3600) away=time2string("%m %M",i); |
| 75 | else away=time2string("%h %H und %m %M",i); |
| 76 | message_string= |
| 77 | sprintf("%s%s@"MUDNAME" ist seit %s voellig untaetig.\n", |
| 78 | message_string, |
| 79 | ob->Name(WER), |
| 80 | away); |
| 81 | } |
| 82 | switch(re) { |
| 83 | case MESSAGE_CACHE: |
| 84 | message_string += |
| 85 | sprintf("%s@"MUDNAME" moechte gerade nicht gestoert werden.\n"+ |
| 86 | "Die Mittelung wurde von einem kleinen Kobold in Empfang"+ |
| 87 | "genommen.\nEr wird sie spaeter weiterleiten.\n", |
| 88 | capitalize(getuid(ob))); |
| 89 | break; |
| 90 | case MESSAGE_CACHE_FULL: |
| 91 | message_string += |
| 92 | sprintf("%s@"MUDNAME" moechte gerade nicht gestoert werden.\n"+ |
| 93 | "Die Mitteilung ging verloren, denn der Kobold kann sich "+ |
| 94 | "nichts mehr merken.\n", |
| 95 | capitalize(getuid(ob))); |
| 96 | break; |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | else message_string="\nRoot@"MUDNAME": Spieler "+ |
| 101 | capitalize(data[RECIPIENT])+ |
| 102 | " finde ich in "MUDNAME" nicht!\n"; |
| 103 | INETD->_send_udp(data[NAME], |
| 104 | ([ REQUEST: REPLY, |
| 105 | RECIPIENT: data[SENDER], |
| 106 | ID: data[ID], |
| 107 | DATA: "\n"+message_string ]) ); |
| 108 | } |
| 109 | else |
| 110 | INETD->_send_udp(data[NAME], |
| 111 | ([ REQUEST: REPLY, |
| 112 | RECIPIENT: data[SENDER], |
| 113 | ID: data[ID], |
| 114 | DATA: sprintf("Root@"MUDNAME": Spieler %s finde "+ |
| 115 | "ich in "MUDNAME" nicht!\n", |
| 116 | capitalize(data[RECIPIENT])) |
| 117 | ]) ); |
| 118 | } |