I think he probably wants to use the AIs as parked cars for cruise servers, or just dummy cars. (?)
                
            
 
 Your timing is perfect, I'm writing that multiple races feature and am annoyed with the way I currently deal with custom checkpoints (see attachment: slab wall objects to simulate checkpoint, colour byte to detect what kind of checkpoint it is). 
struct IS_UCO // User Control Object
{
    byte    Size;        // 28
    byte    Type;        // ISP_UCO
    byte    ReqI;        // 0
    byte    PLID;        // player's unique id
    byte    UCOFlags;
    byte    Sp1;
    byte    Sp2;
    byte    Sp3;
    unsigned    Time;    // hundredths of a second since start (as in SMALL_RTP)
    
    CarContOBJ    C;
/*
    byte    Direction;    // car's motion if Speed > 0 : 0 = world y direction, 128 = 180 deg
    byte    Heading;    // direction of forward axis : 0 = world y direction, 128 = 180 deg
    byte    Speed;        // m/s
    byte    Sp3;
    short    X;            // position (1 metre = 16)
    short    Y;            // position (1 metre = 16)
*/
    ObjectInfo    Info; // Index 252 : InSim checkpoint / Index 253 : InSim circle
/*
    short    X;
    short    Y;
    byte    Zbyte;
    byte    Flags;
    byte    Index;
    byte    Heading;
*/
}
// UCOFlags byte
#define UCO_WRONG_WAY    1        // set when going through a checkpoint in the wrong direction
#define UCO_DEPART        2        // not set when entering a circle - set when leaving a circle