/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** chan.c ** ** General channel command. ** ** 06-Nov-94. Created. Deathblade. */ //:PLAYERCOMMAND //$$ see: channels, gossip, newbie //The chan command is the central command for all channel //communication. Below are the various forms the command takes: // //chan - list channels being listened to //chan gossip - find out whether the 'gossip' channel is // begin listened to //chan gossip /on - turn listening on for the 'gossip' channel //chan gossip /off - stop listening to 'gossip' //chan gossip /list - find out who is listening to 'gossip' //chan gossip /who - same as /list //chan gossip /last - show the last 20 messages on the channel //chan gossip <msg> - send <msg> to all listeners //chan gossip ;<feeling> - perform <feeling> over the channel // (e.g. chan gossip ;grin) //chan gossip :<emote> - send <emote> to all listeners // (e.g. chan gossip :wants a big sword!) //chan mine /new - create the "mine" channel // //Of course, the 'gossip' may be replaced with any channel name you //might want to use. // //chan will create a channel, if necessary, when you first start //to listen to it. There are (currently) no restrictions on the //number or channels you may listen to or create. Once you listen //to a channel, you can simply use its name for operating the channel. // //Two player channels are standard: gossip and newbie // //Some examples: // //> chan //You are listening to: gossip, newbie, mychannel //> chan gossip /off //You are no longer listening to 'gossip'. //> mychannel /list //Users listening to 'mychannel': Johndoe, Smurfhead, Tarzan //> mychannel hello! //[mychannel] Smurfhead: hello! //> mychannel :turns a bright shade of blue //[mychannel] Smurfhead turns a bright shade of blue. //> mychannel ;laugh tarzan //[mychannel] You laugh at Tarzan. //> //> [mychannel] Tarzan bops you on the nose. inherit CMD; void create() { ::create(); no_redirection(); } private void main(string arg) { string channel_name; int chan_type; if ( !arg || arg == "" || (wizardp(this_user()) && arg == "-d") ) { string * channel_list; channel_list = this_user()->query_channel_list(); if ( sizeof(channel_list) == 0 ) out("You are not listening to any channels.\n"); else { if ( arg != "-d" ) channel_list = map(channel_list, (: CHANNEL_D->user_channel_name($1) :)); out("You are listening to: " + implode(channel_list, ", ") + ".\n"); } return; } if ( sscanf(arg, "%s %s", channel_name, arg) != 2 ) { channel_name = arg; arg = ""; } /* COMPATIBILITY: if there is no '_' in the name, prepend plyr_ */ // if ( member_array('_', channel_name) == -1 ) // channel_name = "plyr_" + channel_name; chan_type = channel_name[0..4] == "imud_"; CHANNEL_D->cmd_channel(channel_name, arg, chan_type); }