It's a function using mp_tournament. There's something called a 'stopwatch', a separate timer from the round timer. But I don't really know much beyond that.
The stopwatch checks what time it took for the first attacking team to reach the last point they capped, then if the next team (after sideswitch) don't succeed in capping that point faster, or cap more points they loose.
I think this is only serverside and you don't have to think about it when making maps but I'm not sure.
Do you mean you have a Steel-like capture model? You should give one point for each cap, but grant full points on capturing the last one. For instance, in Steel, if a team captures A, B and then directly E, they still score five points.
There should be a counter for team scores (there is one if you replicated the entities from cp_game_entities), increment it whenever the attackers take a cap point, and make some smart logic to take care of final caps that skipped intermediary points.
EDIT: this could be due to your game_round_timer (r whatever the exact name is) not having a canonical name. It's just a possibility, but it's worth checking a decompiled Gravel Pit to be sure.
It all come together automatically once I switched "Add score for every round win" to "Add score for every point captured".
Unfortunately, I have lots of hidden CPs I use as triggers (necessary for the A OR B mechanic), so in the end of just one round if all points are captured, the score is 5-1.
If this is your first time logging in after the migration (Feb 8, 2022), you must reset your password to log in. Follow this guide if you're having trouble