I'm trying to implement a new feature in the client which will display a playerlist without the observers, as well as another toggle to display a playerlist with only observers. Reason being, the large number of observers on there now on servers can mess up the playerlist. Sounded simple, but I cannot find a reliable way to determine on the client if a player is an observer or not. The reason is that sndPStatus() on the server wipes out this value. I guess because some older clients didn't know how to handle p_status > 4. But is that still the case? If this is no longer an issue, I'd like to request applying the following patch, which basically rips out the observer specific morphing from that function. If not, can someone suggest an alternative? I can't check if p_no > 16 because that is a bad assumption. I could check to see if it had that little doohickey appended at the end, but that's not reliable either as I see regular players using that character in their names. Patch to fix POBSERV status: *** genspkt.bak Tue Nov 7 09:22:49 2000 --- genspkt.c Tue May 8 21:08:54 2001 *************** *** 350,378 **** /* We update the location of people whose status has changed. * (like if they just re-entered...) */ - #ifdef OBSERVERS - int pobserv = 0; - #endif pstatus->type=SP_PSTATUS; pstatus->pnum=pl->p_no; pstatus->status=pl->p_status; - #ifdef OBSERVERS - /* Some clients do not know about POBSERV, so we mask it into a - known status ... for observers we tell them they are alive, - but for everybody else we say they are outfitting. Quozl */ - if (pl->p_status == POBSERV) { - if (pl == me) - pstatus->status = PALIVE; - else - pstatus->status = POUTFIT; - pobserv = 1; - } - #endif /* S_P2 */ if ( send_short < 2 - #ifdef OBSERVERS - || pobserv - #endif || pl->p_no > 31 || pl->p_flags & PFROBOT || pstatus->status != PALIVE --- 350,360 ---- *************** *** 383,392 **** sendClientPacket(pstatus); if (dead_warp) dead_warp = 1; - #ifdef OBSERVERS - if (pobserv) - pstatus->status = POBSERV; - #endif return(TRUE); } return (FALSE); --- 365,370 ----