Re: Easy Color

From: Phillip A Ames (kirk47@juno.com)
Date: 01/29/00


On Sat, 29 Jan 2000 13:37:09 +0100 Victor Wennberg
<victor.wennberg@swipnet.se> writes:
> I've just added easycolour patch to my mud.. and it works good..
> except for... when i use it in my title or something like that it is
> that color until CCNRM(ch, C_SPR)
> or any other code for colour: normal... can i add something to any
> file to always use that after a colour item or something like that
> without need to use,

Please stop sending HTML mail to the list...  You'll find the setting to
change it in the following location on your mailer(what appears to be
outlook express).  Tools->Options->"Send" tab->select 'plain text' under
'mail sending format'.

Now, as to your problem.  What the easy color (or colour, if you prefer)
patch does is it searches every string for the '&' and code for a color
afterwards.  It does not automatically append a CCNRM to the end of the
string, so if you don't want color to bleed through until a CCNRM, you
will either have to add an "&n" to the end of all of your lines you use
color in, or modify this section in comm.c:

    /* Send queued output out to the operating system (ultimately to
user) */
    for (d = descriptor_list; d; d = next_d) {
      next_d = d->next;
      if (*(d->output) && FD_ISSET(d->descriptor, &output_set)) {
        /* Output for this player is ready */
        if (process_output(d) < 0)
          close_socket(d);
        else
          d->has_prompt = 1;
      }
    }
What you would do here, is insert something similar to 'strcat(d->output,
"\x1B[0;0m");' in this code (which would append the 'normal' color code
to the end of the string, making color return to normal no matter what.
Then, the aforementioned code would look something like this:

    /* Send queued output out to the operating system (ultimately to
user) */
    for (d = descriptor_list; d; d = next_d) {
      strcat(d->output, "\x1B[0;0m");
      next_d = d->next;
      if (*(d->output) && FD_ISSET(d->descriptor, &output_set)) {
        /* Output for this player is ready */
        if (process_output(d) < 0)
          close_socket(d);
        else
          d->has_prompt = 1;
      }
    }

Now, I have no idea if this code will work as I haven't tested it, but I
can't think of any reason off the top of my head that it shouldn't.  If
you have any problems, feel free to e-mail me.

-Phillip

Phillip Ames       | AOL IM: Grathol  | ICQ: 8778335 |
------------------------------------------------------
"I will break you into pieces, hold you up for all the
world to see, what makes you think you are better than
me?" -Everclear, Like A California King, 1997

________________________________________________________________
YOU'RE PAYING TOO MUCH FOR THE INTERNET!
Juno now offers FREE Internet Access!
Try it today - there's no risk!  For your FREE software, visit:
http://dl.www.juno.com/get/tagj.


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/10/01 PDT