#include <udp.h>#include <properties.h>#include <daemon.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | COMMAND "cmd" |
| #define | CHANNEL "channel" |
Funktionen | |
| int | filter_listeners (object ob, string channel) |
| int | udp_channel (mapping data) |
| string | name () |
| string | Name () |
| private void | _send (string mud, mixed data, mapping request) |
| void | ChannelMessage (mixed m) |
Variablen | |
| static private mixed | _name_ |
| #define CHANNEL "channel" |
Definiert in Zeile 17 der Datei channel.c.
Wird benutzt von udp_channel().
| private void _send | ( | string | mud, | |
| mixed | data, | |||
| mapping | request | |||
| ) |
| void ChannelMessage | ( | mixed | m | ) |
Definiert in Zeile 88 der Datei channel.c.
Benutzt DATA, INETD, MSG_EMOTE, MSG_GEMOTE, MUDNAME, old_explode(), REQUEST und SENDER.
00089 { 00090 mapping request; 00091 if(m[1] == this_object()) return; 00092 request = ([ 00093 REQUEST : "channel", 00094 SENDER : m[1]->name() || capitalize(getuid(m[1])), 00095 "CHANNEL": lower_case(m[0]), 00096 DATA : implode(old_explode(m[2], "\n"), " ")]); 00097 if(m[3] == MSG_GEMOTE || m[3] == MSG_EMOTE) 00098 { 00099 request["EMOTE"] = 1; 00100 request["CMD"] = "emote"; 00101 } 00102 walk_mapping(INETD->query("hosts") - ([lower_case(MUDNAME)]), 00103 #'_send/*'*/, request); 00104 }

| int filter_listeners | ( | object | ob, | |
| string | channel | |||
| ) |
Definiert in Zeile 21 der Datei channel.c.
Benutzt P_INTERMUD.
00021 { 00022 return ob->QueryProp(P_INTERMUD); 00023 }
| string Name | ( | ) |
| string name | ( | ) |
| int udp_channel | ( | mapping | data | ) |
Definiert in Zeile 25 der Datei channel.c.
Benutzt _name_, CHANNEL, CHMASTER, COMMAND, DATA, i, ID, INETD, list, LOCAL_NAME, msg(), MSG_EMOTE, MSG_SAY, NAME, query_real_name(), RECIPIENT, REPLY, REQUEST und SENDER.
00025 { 00026 object *list; 00027 string msg; 00028 int i, type; 00029 00030 /* Compatability with older systems. */ 00031 if (!data[CHANNEL]) 00032 data[CHANNEL] = data["CHANNEL"]; 00033 if (!data[COMMAND]) 00034 data[COMMAND] = data["CMD"]; 00035 if (!data[DATA]) 00036 data[DATA]=""; 00037 00038 data[DATA]= 00039 implode(filter(explode(data[DATA], ""), #'>=, " "), "");//')) 00040 data[NAME]= 00041 implode(filter(explode(data[NAME], ""), #'>=, " "), "");//')) 00042 switch(data[COMMAND]) { 00043 case "list": 00044 /* Request for a list of people listening to a certain channel. */ 00045 list = filter(users(), "filter_listeners", 00046 this_object(), data[CHANNEL]); 00047 if (i = sizeof(list)) { 00048 msg = "[" + capitalize(data[CHANNEL]) + "@" + 00049 LOCAL_NAME + "] Listening:\n"; 00050 while(i--) 00051 msg += 00052 " " + capitalize(list[i]->query_real_name()) + "\n"; 00053 } 00054 else 00055 msg = "[" + capitalize(data[CHANNEL]) + "@" + LOCAL_NAME 00056 + "] Nobody Listening.\n"; 00057 INETD->_send_udp(data[NAME], ([ 00058 REQUEST: REPLY, 00059 RECIPIENT: data[SENDER], 00060 ID: data[ID], 00061 DATA: msg 00062 ])); 00063 return 1; 00064 case "emote": /* A channel emote. */ 00065 type = MSG_EMOTE; 00066 break; 00067 default: /* A regular channel message. */ 00068 type = MSG_SAY; 00069 break; 00070 } 00071 _name_ = capitalize(data[SENDER])+"@"+capitalize(data[NAME]); 00072 CHMASTER->send(capitalize(data[CHANNEL]), this_object(), 00073 data[DATA], type); 00074 _name_ = 0; 00075 return 1; 00076 }

1.6.3