if (svs.clients[i-1].state && svs.clients[i-1].protocol == SCP_BAD) { //then this is a bot oldhost = host_client; oldplayer = sv_player; host_client = &svs.clients[i-1]; sv_player = host_client->edict; oldmovement[0] = sv_player->xv->movement[0]; oldmovement[1] = sv_player->xv->movement[1]; oldmovement[2] = sv_player->xv->movement[2]; Con_Printf("movement: %f, %f\n", oldmovement[0], oldmovement[1]); ucmd.msec = host_frametime*1000; ucmd.angles[0] = (unsigned short)(sv_player->v->angles[0] * (65535/360.0f)); ucmd.angles[1] = (unsigned short)(sv_player->v->angles[1] * (65535/360.0f)); ucmd.angles[2] = (unsigned short)(sv_player->v->angles[2] * (65535/360.0f)); ucmd.forwardmove = sv_player->xv->movement[0]; ucmd.sidemove = sv_player->xv->movement[1]; ucmd.upmove = sv_player->xv->movement[2]; ucmd.buttons = (sv_player->v->button0?1:0) | (sv_player->v->button2?2:0); svs.clients[i-1].lastcmd = ucmd; //allow the other clients to predict this bot. SV_PreRunCmd(); SV_RunCmd(&ucmd, false); //if (sv_player->xv->movement[0] != oldmovement[0]) // Con_Printf("movement changed from %f to %f\n", oldmovement[0], sv_player->xv->movement[0]); SV_PostRunCmd(); //sv_player->xv->movement[0] = oldmovement[0]; //sv_player->xv->movement[1] = oldmovement[1]; //sv_player->xv->movement[2] = oldmovement[2]; host_client = oldhost; sv_player = oldplayer;