Another solution might be to ID the chased player and then not render him in the chasing client.
struct gclient_s{ player_state_t ps; // communicated by server to clients int ping; // the game dll can add anything it wants after // this point in the structure int clientNum;};
#define GMF_CLIENTNUM 1#define GMF_PROPERINUSE 2#define GMF_MVDSPEC 4#define GMF_WANT_ALL_DISCONNECTS 8
static void UpdateChaseCam( gclient_t *client ) { edict_t *ent = client->edict; edict_t *targ = client->chase_target; client->clientNum = ( targ - g_edicts ) - 1; client->ps = targ->client->ps; client->ps.fov = client->pers.fov; client->ps.pmove.pm_flags |= PMF_NO_PREDICTION; client->ps.pmove.pm_type = PM_FREEZE; VectorCopy( client->ps.viewangles, ent->s.angles ); VectorCopy( client->ps.viewangles, ent->client->v_angle ); VectorScale( client->ps.pmove.origin, 0.125f, ent->s.origin ); ent->viewheight = targ->viewheight;}