I wrote most of the script for CTF_Face_b1 (although I did get most of it from Rayban’s sample map I believe). I would be willing to give you the source code for the map if I can find it, but it’s been a long time lol I don’t think I still have it 
I can give you a few important pointers however going by the script alone (I suppose you have the script from the PK3?)
First of all, in the game_manager spawn event, both flag entities are alerted with alertentity:
alertentity allied_flag // reveal the flags to start with, setstate invisble and default
alertentity axis_flag // should work from here on.
This is absolutely necessary since the flags have to have a ‘targetname’. If an objective has a ‘targetname’ in ET, it does not show up in the game. The only way to make it show up is to alertentity it like so.
Right after that, two accums (1 for axis, 2 for allies) are set to 0. These accums correspond to the score.
Then there are a few triggers that handle the scoring, trigger allies_captd and trigger axis_captd. Both of these are very simple: they increment (inc) the scoring accum of the corresponding team and call the allies/axis_win trigger if it is equal to 4 (or 3 if you want 3 points).
Then, there is a bunch of ‘scoreboard stuff’ as the comments mention. This is not very important; it handles the re-drawing of the games compass which shows the current score. If you want this in your map aswell you should do a search for ‘compass scoreboard’ written by RayBan and you’ll find it.
For now however just ignore all the scoreboard stuff!
Then the next important thing is the timelimit_hit trigger. It calls a parse_score trigger that checks which team is ahead, and lets that team win. It is kind of a dirty check but as far as I know the only way to handle it in ET scripting. It’s hard to explain how it works, but you can probably just copy/paste it if you don’t understand it.
After that there’s a whole bunch of scoreboard stuff, ignore it.
Then finally the flag control.
Important is that the allied_flag (the objective) and allies_cap_flag (the objective goal trigger brush) are hidden when the flag is stolen, so you can only steal one flag at a time and you can only score if your flag is returned. This was also the reason the objective had to have a targetname.
Obviously, when the flag is returned (or when a point is scored!), the flag and goal are set back to normal.
Once a flag is captured you might think “well, how does it respawn?”. It doesn’t. The objective has a ‘count’ key (I believe it was count) which you can set to some number (in our case 4, in your case probably 3). Once an objective is captured, a new one respawns, until all the 4 (or 3) objectives are gone. So that is all handled internally.
Finally, there are two fake goals that might be important to you too. Looking at your map screenshots I think it is possible to fall of the map and die?
If yes, you should handle that properly. What if the flag carrier runs of the map? The flag will just lay on the bottom of the skybox for 30 seconds before it finally respawns.
We didn’t want that, we wanted it to respawn instantly. So we simply made two fake goals (objective goal brushes), one for each team, right at the bottom of the map (just above the skybox). Once the flag is ‘delivered’ to one of these goals, the usual routine of scoring is followed (setting flag state back to default etc) except that no points are awarded.
I think that’s basically it… Good luck!