Dealing with individual vehicle damage elements can be a little bit tricky because they're compressed in to bits to save space.
JernejL (RedShirt) has provided an example of dealing with individual damage elements and also provided some reusable functions:
pawn Code:
const object_undamaged = 0;
const door_swinging = 1;
const door_damaged = 2;
const door_damaged_swinging = 3;
const door_fell_off = 4;
    
const windshield_crackedA = 1;
const windshield_crackedB = 2;
const windshielddestroyed = 3;
encode_lights(light1, light2, light3, light4) {
    
    return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
    
}
encode_tires(tire1, tire2, tire3, tire4) {
    
    return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
    
}
encode_tires_bike(rear, front) {
    
    return rear | (front << 1);
    
}
#pragma unused encode_tires_bike
encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door) {
    #pragma unused behind_driver_door
    #pragma unused behind_passenger_door
        
    // will be modified once again, when rear doors are synced.
    return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
    
}
encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper) {
    
    return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
    
}
breakcar(PlayerID) {
    
    if (IsPlayerInAnyVehicle(PlayerID)) {
        
        new panels, doors, lights, tires;
        
        GetVehicleDamageStatus(GetPlayerVehicleID(PlayerID), panels, doors, lights, tires);
        panels = encode_panels(1, 1, 1, 1, 3, 3, 3); // damage windshield & make bumpers swing
        doors = encode_doors(4, 4, 4, 4, 0, 0); // make them all fall off
        lights = encode_lights(1, 1, 1, 1); // damage all lights
        tires = encode_tires(1, 1, 1, 1); // damage all tires
        
        UpdateVehicleDamageStatus(GetPlayerVehicleID(PlayerID), panels, doors, lights, tires);
        
    }
    
    return true;
}
OnVehicleDamageStatusUpdate(vehicleid, playerid) {
    #pragma unused playerid
    
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    
    new driver_door, passenger_door/ *, behind_driver_door, behind_passenger_door* / = 0;
    
    / *
    door & boot & bonnet status:
    0: undamaged
    1: swinging
    2: damaged
    3: damaged & swinging
    4: fell off
    * /
    
    driver_door = doors >> 16 & 0x7;
    passenger_door = doors >> 24 & 0x7;
    
    // other 2 doors are not yet synced.
    
    new bonnet, boot = 0;
    
    bonnet = doors & 0x7;
    boot = doors >> 8 & 0x7; // boot will not swing unless on specific car (like a bobcat)
    
    new flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper;
    
    / *
    panels are unused on cars, they are used on planes tho.
    * /
    
    flp = panels >> 0 & 0xF;
    frp = panels >> 4 & 0xF;
    rlp = panels >> 8 & 0xF;
    rrp = panels >> 12 & 0xF;
    
    / *
    windshield: 
    0 undagamed
    1,2 cracked
    3: destroyed
    * /
    
    windshield = panels >> 16 & 0xF;
    
    / *
    bonnet & boot:
    0 undamaged 
    1 open swinging (hood only)
    2 damaged
    3 damaged swinging
    4 fallen off
    * /
    
    front_bumper = panels >> 20 & 0xF;
    rear_bumper = panels >> 24 & 0xF;
    
    // for tires & lights: 1 damaged, 0 = ordinary
    new tyre1, tyre2, tyre3, tyre4;
    
    tyre1 = tires >> 0 & 0x1; // rear right (bike rear)
    tyre2 = tires >> 1 & 0x1; // front right (bike front)
    tyre3 = tires >> 2 & 0x1; // rear left
    tyre4 = tires >> 3 & 0x1; // front left
    
    new light1, light2, light3, light4;
    
    light1 = lights >> 0 & 0x1; // front left
    light2 = lights >> 1 & 0x1; // cant get to break rear light
    light3 = lights >> 2 & 0x1; // front right
    light4 = lights >> 3 & 0x1; // cant get to break rear light
    
    // bike lights never break!
    
    new string[128];
    format(string,sizeof(string),"Doors: Driver: %d, Passenger: %d", driver_door, passenger_door);
    SendClientMessageToAll(COLOR_RED, string);
    
    format(string,sizeof(string),"Swinging: bonnet: %d, boot: %d", bonnet, boot);
    SendClientMessageToAll(COLOR_RED, string);
    
    format(string,sizeof(string),"panels: flp: %d, frp: %d, rlp: %d, rrp: %d, windshield: %d, front bumper: %d, rear bumper: %d", flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper);
    SendClientMessageToAll(COLOR_RED, string);
    
    format(string,sizeof(string),"tires: %d %d %d %d", tyre1, tyre2, tyre3, tyre4);
    SendClientMessageToAll(COLOR_RED, string);
    
    format(string,sizeof(string),"lights: %d %d %d %d", light1, light2, light3, light4);
    SendClientMessageToAll(COLOR_RED, string);
    
    return 1;
}