/* NOTICE: This color hack was done using Lope's Color V 1.2 and certain parts of the Color Greeting Snippet. However, I have hacked it up as I was fed up with players being asked if they wanted color. So this will allow everything to be in color including the greetings. */ /* In comm.c, I am using copyover and some other functions so I will past all of the code. You only need to compare with yours and add the new code that is defined with a Plus.. EG + */ // FIND THIS BLOCK IN COMM.C #if defined(macintosh) || defined(MSDOS) void game_loop_mac_msdos( void ) { struct timeval last_time; struct timeval now_time; static DESCRIPTOR_DATA dcon; gettimeofday( &last_time, NULL ); current_time = (time_t) last_time.tv_sec; /* * New_descriptor analogue. */ dcon.descriptor = 0; + dcon.ansi = TRUE; dcon.connected = CON_GET_NAME; dcon.host = str_dup( "localhost" ); dcon.outsize = 2000; dcon.outbuf = alloc_mem( dcon.outsize ); dcon.next = descriptor_list; dcon.showstr_head = NULL; dcon.showstr_point = NULL; dcon.pEdit = NULL; /* OLC */ dcon.pString = NULL; /* OLC */ dcon.editor = 0; /* OLC */ descriptor_list = &dcon; + d->ansi = TRUE; + if (ch->desc->ansi) + SET_BIT(ch->act, PLR_COLOUR); // FURTHER DOWN IN COMM.C /* * Cons a new descriptor. */ dnew = new_descriptor(); /* new_descriptor now also allocates things */ dnew->descriptor = desc; + dnew->ansi = TRUE; dnew->pEdit = NULL; /* OLC */ dnew->pString = NULL; /* OLC */ dnew->editor = 0; /* OLC */ dnew->outbuf = alloc_mem( dnew->outsize ); // JUST BELOW THE CODE ABOVE /* * Init descriptor data. */ dnew->next = descriptor_list; descriptor_list = dnew; /* * Send the greeting. */ { extern char * help_greeting; if ( help_greeting[0] == '.' ) + send_to_desc( help_greeting+1, dnew ); else + send_to_desc( help_greeting , dnew ); } return; } #endif // IN THE VOID NANNY FUNCTION /* * Deal with sockets that haven't logged in yet. */ void nanny( DESCRIPTOR_DATA *d, char *argument ) { DESCRIPTOR_DATA *d_old, *d_next; char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; CHAR_DATA *ch; char *pwdnew; char *p; int iClass,race,i; bool fOld; /* Delete leading spaces UNLESS character is writing a note */ if (d->connected != CON_NOTE_TEXT) { while ( isspace(*argument) ) argument++; } ch = d->character; + d->ansi = TRUE; // RIGHT BELOW THAT CODE ABOVE IN THE CHECK FOR BAN NEWBIES, QUICK HACK.. if (check_ban(d->host,BAN_NEWBIES)) { write_to_buffer(d, "New players are not allowed from your site.\n\r",0); close_socket(d); return; } + SET_BIT(ch->act, PLR_COLOUR); sprintf( buf, "Did I get that right, %s (Y/N)? ", argument ); write_to_buffer( d, buf, 0 ); d->connected = CON_CONFIRM_NEW_NAME; return; // MERC.H /* In merc.h descriptor data, add */ /* * Descriptor (channel) structure. */ struct descriptor_data ....... int outsize; int outtop; char * showstr_head; char * showstr_point; + bool ansi; /* In merc.h right below send_to_char, add void send_to_desc */ /* comm.c */ void send_to_char args( ( const char *txt, CHAR_DATA *ch ) ); + void send_to_desc args( ( const char *txt, DESCRIPTOR_DATA *d ) ); // COMM.C /* comm.c... Paste the following code below send_to_char */ void send_to_desc( const char *txt, DESCRIPTOR_DATA *d ) { const char *point; char *point2; char buf[ MAX_STRING_LENGTH*4 ]; int skip = 0; buf[0] = '\0'; point2 = buf; if( txt && d ) { if( d->ansi == TRUE ) { for( point = txt ; *point ; point++ ) { if( *point == '{' ) { point++; skip = colour( *point, NULL, point2 ); while( skip-- > 0 ) ++point2; continue; } *point2 = *point; *++point2 = '\0'; } *point2 = '\0'; write_to_buffer( d, buf, point2 - buf ); } else { for( point = txt ; *point ; point++ ) { if( *point == '{' ) { point++; continue; } *point2 = *point; *++point2 = '\0'; } *point2 = '\0'; write_to_buffer( d, buf, point2 - buf ); } } return; } /* Now, to show color for things such as "Select a race... in comm.c You'll need to change the write_to_buffer to send_to_desc. */ // EG: write_to_buffer(d,"What is your race?",0); // Change to send_to_desc( "What is your race?",d); // In some cases where a question is asked using a sprintf with a write to // buffer below, you will probably need to change those to show color. // EG: send_to_desc( buf, d ); sprintf( buf, "Did I get that right, %s (Y/N)? ", argument ); write_to_buffer( d, buf, 0 ); // Change to: sprintf( buf, "Did I get that right, %s (Y/N)? ", argument ); send_to_desc( buf, d ); // You should get the idea.. Email cbunting99@gmail.com with your // comments or ideas.