This is a slightly improved version of the Easy Color program posted here by Pi (can't remember address). Make these modifications to stock circle: in comm.c add in includes: #include "screen.h" in comm.c in externs: proc_color(char *inbuf, int color); in comm.c right before the text: /* * now, send the output. If this is an 'interruption', use the prepended * CRLF, otherwise send the straight output sans CRLF. */ add: if (t->character) { proc_color(i, clr(t->character, C_NRM)); strcat(i, "\x1b[0m"); /* so if someone doesnt return their colors */ } /* back to normal manually */ in your Makefile add color.o to the other object files and in the dependencies section add: color.o: color.c $(CC) -c $(CFLAGS) color.c and create a file called color.c that include the following: ------------------cut here-------------------- #define CNRM "\x1B[0;0m" #define CBLA "\x1B[30m" #define CRED "\x1B[31m" #define CGRN "\x1B[32m" /* base colors */ #define CYEL "\x1B[33m" #define CBLU "\x1B[34m" #define CMAG "\x1B[35m" #define CCYN "\x1B[36m" #define CWHT "\x1B[37m" #define CNUL "" #define BBLA "\x1B[1;30m" #define BRED "\x1B[1;31m" #define BGRN "\x1B[1;32m" #define BYEL "\x1B[1;33m" /* bright colors */ #define BBLU "\x1B[1;34m" #define BMAG "\x1B[1;35m" #define BCYN "\x1B[1;36m" #define BWHT "\x1B[1;37m" #define BKBLA "\x1B[40m" #define BKRED "\x1B[41m" #define BKGRN "\x1B[42m" #define BKYEL "\x1B[43m" /* background colors */ #define BKBLU "\x1B[44m" #define BKMAG "\x1B[45m" #define BKCYN "\x1B[46m" #define BKWHT "\x1B[47m" #define FLA "\x1B[5m" /* flashing */ #define UND "\x1B[4m" /* underlined */ const char *COLORLIST[] = {CNUL, CNRM, CBLA, CRED, CGRN, CYEL, CBLU, CMAG, CCYN, CWHT, BBLA, BRED, BGRN, BYEL, BBLU, BMAG, BCYN, BWHT, BKBLA, BKRED, BKGRN, BKYEL, BKBLU, BKMAG, BKCYN, BKWHT, FLA, UND}; int parse_code(char code) { switch (code) { case 'n': return 1; break; case 'l': return 2; break; case 'r': return 3; break; case 'g': return 4; break; case 'y': return 5; break; case 'b': return 6; break; case 'm': return 7; break; case 'c': return 8; break; case 'w': return 9; break; case 'L': return 10; break; case 'R': return 11; break; case 'G': return 12; break; case 'Y': return 13; break; case 'B': return 14; break; case 'M': return 15; break; case 'C': return 16; break; case 'W': return 17; break; case '1': return 18; break; case '2': return 19; break; case '3': return 20; break; case '4': return 21; break; case '5': return 22; break; case '6': return 23; break; case '7': return 24; break; case '8': return 25; break; case 'f': return 26; break; case 'u': return 27; break; default: return 0; break; } } void proc_color(char *inbuf, int color) { register int j = 0, p = 0; int k, max, code; char out_buf[32768]; if (*inbuf == '\0') return; while (inbuf[j] != '\0') { if (inbuf[j] == '&' && (code = parse_code(inbuf[j+1]))) { j += 2; if (color) { max = strlen(COLORLIST[code]); for (k = 0; k < max; k++) { out_buf[p] = COLORLIST[code][k]; p++; } } } else { out_buf[p] = inbuf[j]; j++; p++; } } out_buf[p] = '\0'; strcpy(inbuf, out_buf); } ------------------cut here-------------------- Chris +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/07/00 PST