Re: [Newbie] Display question

From: Josh Harris (jharris2@ACSU.BUFFALO.EDU)
Date: 01/19/02

On Sat, 19 Jan 2002 03:43:43 -0600, Patrick Dughi <> wrote:

>> Ok, I'm using circle mud bp17 with Oasis OLC.  I also have implemented
>> easy color code where you just use the &R, &4 &f, etc. code to put color
>> there.
>> This is currently what my prompt looks like
>> &R****/****H&n &W****/****M&n &C****/****V&n >
>> where the **** are however many points you have for
>> hitpoints/maxhit/mana/maxmana, etc.
>> It works fine, except when I hit enter, with no commands it gives me the
>> source code so to speak of the prompt like this:
>> &R5000/5000H&n &W5000/5000M&n &C5000/5000V&n >
>> I was wondering if there was a way to fix this
>> When I hit enter with no commands, I would like it to just be a normal
>> prompt.  Could this be a cause of my color code? or a wrong piece of
>> code somewhere?
>        Hm. If it's only when you don't type a command, that's curious -
>check and insure that your 'make_prompt()' function is always running the
>color embedding function of your choice.  Calls to make_prompt() only
>happen in comm.c, and they only happen twice (in the version I'm looking
>at).  Your specific error should be quick and easy to track down.
>        Just remember, by default (even with color codes installed) the
>prompt is usually never passed through the color parser.  You're lucky
>because apparently it only doesn't do that when you hit return by
>itself... that means you find the 'good' case, and just copy the code :)
>                                                PjD
>   +---------------------------------------------------------------+
>   | FAQ: |
>   | Archives: |
>   | Newbie List:   |
>   +---------------------------------------------------------------+

Ok, I think I've found the problem but I'm still not quite sure on how to
fix it.  I think this is the code I'm having the trouble with I will
highlight the part that makes it not work.

int process_output(struct descriptor_data *t)
  char i[MAX_SOCK_BUF];
  int result;

  /* we may need this \r\n for later -- see below */
  strcpy(i, "\r\n");

  /* now, append the 'real' output */
  strcpy(i + 2, t->output);

  /* if we're in the overflow state, notify the user */
  if (t->bufptr < 0)
    strcat(i, "**OVERFLOW**\r\n");

  /* add the extra CRLF if the person isn't in compact mode */
  if (STATE(t) == CON_PLAYING && t->character && !IS_NPC(t->character) && !
    strcat(i + 2, "\r\n");

  /* add a prompt */
  strncat(i + 2, make_prompt(t), MAX_PROMPT_LENGTH);

 if(t->character)                                 ***  Trouble is with these
   proc_color(i + 2, (clr(t->character, C_NRM))); ***  two lines

   * now, send the output.  If this is an 'interruption', use the prepended
   * CRLF, otherwise send the straight output sans CRLF.
  if (t->has_prompt)  /* && !t->connected) */
    result = write_to_descriptor(t->descriptor, i);
    result = write_to_descriptor(t->descriptor, i + 2);

  /* handle snooping: prepend "% " and send to snooper */
  if (t->snoop_by) {
    SEND_TO_Q("% ", t->snoop_by);
    SEND_TO_Q(t->output, t->snoop_by);
    SEND_TO_Q("%%", t->snoop_by);


   proc_color(i, (clr(t->character, C_NRM)));

These two lines are the ones giving me trouble I think anyways.

If I move those lines, then the color doesn't work at all, it will just
give me the source code.  If I comment any part of it out it crashes my
mud, and if I comment the whole thing out it doesn't work either.

Any suggestions?

   | FAQ: |
   | Archives: |
   | Newbie List:   |

This archive was generated by hypermail 2b30 : 06/25/03 PDT