Noplex said:Zecho? I could not tell you how long ago I wrote that, and it was the first snippet I ever wrote. Its probably nearly 5 years old (if not that already), but yeah, I can always rewrite it. That's something that should only take a few minutes (but I'm sure you already have done that

. The only real reason I haven't done this already is because I haven't had access to a Linux box to mess around with. If I got off my lazy ass and had done it awhile ago, I would probably already have had this done. But that's how the cookie crumbles. Hopefully this weekend I can piece it together.
Thanks a lot for informing me though, that'll be the first one I take a look at

. I'm actually going to be releasing the code under a
Creative Commons license instead of my modified BSD. It seems to work properly with SMAUG, and the GPL (not that I care).
Sort of, what I ended up doing was basically pulling your snippet altogether and making my own version by copying and modifying the mpechozone function. So it works just fine now for me, though I'd still be very curious to see if you come up with a better way.
My solution ended up looking like this:
void do_zecho(CHAR_DATA *ch, char *argument)
{
char arg1[MAX_INPUT_LENGTH];
CHAR_DATA *vch;
CHAR_DATA *vch_next;
short color;
if(!IS_IMMORTAL(ch) || IS_NPC(ch))
{
send_to_char("Huh?\n\r", ch);
return;
}
if(argument[0] == '\0')
{
send_to_char("Zecho what?\n\r", ch);
return;
}
if( ( color = get_color(argument) ) )
argument = one_argument(argument, arg1);
DONT_UPPER = TRUE;
for( vch = first_char; vch; vch = vch_next )
{
vch_next = vch->next;
if( vch->in_room->area == ch->in_room->area && !IS_NPC(vch) && IS_AWAKE(vch) )
{
if ( argument[0] == '\0' )
act( AT_ACTION, " ", vch, NULL, NULL, TO_CHAR );
else if ( color )
act( color, argument, vch, NULL, NULL, TO_CHAR );
else
act( AT_ACTION, argument, vch, NULL, NULL, TO_CHAR );
}
}
DONT_UPPER = FALSE;
}