void imc_char_login( CHAR_DATA * ch )
{
char buf[SMST];
int gender, sex;
bool sent = FALSE;
if( !this_imcmud )
return;
imc_adjust_perms( ch );
if( imc_is_connected() == FALSE )
{
if( IMCPERM( ch ) >= IMCPERM_IMM )
imc_to_char( "~RAll IMC2 connections are down.\r\n", ch );
return;
}
if( IMCPERM( ch ) < IMCPERM_MORT )
return;
snprintf( buf, SMST, "%s@%s", CH_IMCNAME( ch ), this_imcmud->localname );
gender = imc_get_ucache_gender( buf );
sex = dikutoimcgender( CH_IMCSEX( ch ) );
if( !IMCIS_SET( IMCFLAG( ch ), IMC_INVIS ) && IMCPERM( ch ) >= IMCPERM_IMM )
{
imc_send_ucache_update( CH_IMCNAME( ch ), sex );
sent = TRUE;
}
if( gender == sex )
return;
if (!(sent))
imc_send_ucache_update( CH_IMCNAME( ch ), sex );
imc_ucache_update( buf, sex );
}
char *last_ucache_sent;
PFUN( imc_recv_ucache )
{
char gen[SMST];
int sex, gender;
DESCRIPTOR_DATA *d;
CHAR_DATA *ch;
imc_getData( gen, "gender", packet );
gender = atoi( gen );
sex = imc_get_ucache_gender( q->from );
if (!(last_ucache_sent) || strcasecmp(last_ucache_sent, q->from) )
{
for( d = first_descriptor; d; d = d->next )
{
ch = d->original ? d->original : d->character;
if( !ch || d->connected != CON_PLAYING )
continue;
#if !defined(IMCSTANDALONE)
/*
* Freaking stupid PC_DATA crap!
*/
if( IS_NPC( ch ) )
continue;
#endif
if( IMCIS_SET( IMCFLAG( ch ), IMC_NOTIFY ) )
imc_printf( ch, "~C%s has logged into %s.\r\n", imc_nameof( q->from ), imc_mudof( q->from ) );
}
}
last_ucache_sent = IMCSTRALLOC( q->from );
if( sex == gender )
return;
imc_ucache_update( q->from, gender );
}
Thank you.