How to make KOTH with 3 control points?

jixegix957

L1: Registered
Aug 28, 2023
12
0
I have been fiddling around with KOTH and 3cp examples, but I can't seem to get any of them to work.

The map starts with 3 points:
BLU point
Neutral point
RED point

None of the points are ever locked.

Just like KOTH, the map should have a timer that starts paused until a capture is made: If one team controls more points than the other, their timer is switched on. Controlling more points doesn't make the timer go faster.


This post has a link but its outdated.
 
Solution
Alright, update: I got it to work. This logic is very clunky and big, but it works.

You can special copy the cap points and their relays for different amount of CPs
T

The Asylum

I'd assume an array of math_counters and logic_compares would do the trick. Just have the points add or subtract by 1 from the counters when a cap is made, and have the logic_compare determine which team owns more points. You should be able to use the less than/greater than outputs to start/stop the koth timers

If you'd like I could send you a vmf of my map Spaceball to show you how logic_compare works, once I get home
 

jixegix957

L1: Registered
Aug 28, 2023
12
0
If you'd like I could send you a vmf of my map Spaceball to show you how logic_compare works, once I get home
My current issue is overtime: You can only win if you control all the points, otherwise its an endless overtime. I have no idea how to even approach fixing that.

But yeah, if you have a working template, please send it, that could help other people as well.
 

Attachments

  • koth_example.vmf
    89.6 KB · Views: 35
T

The Asylum

Usually sending a game_round_win entity a RoundWin input will end the round immediately, regardless of what's still in play. Though, depending on what's firing it can be delayed if the game logic starts calling for overtime.

I had the same problem with Pipeball Ultra, where the game would call for overtime despite my timers running down. I got around that problem by calculating the appropriate distance/speed for a func_tracktrain to move between path_tracks, calling for a round end when it reached the end, paused and started by sending it Toggle inputs. All the timers you'd see in Pipeball Ultra's HUD are, in fact, just for show- it's the tracktrains under the map that were the real timekeepers.

I'll send you a vmf of that too if you'd like.
 
Last edited by a moderator:
T

The Asylum


That has links to my Spaceball and Pipeball Ultra vmfs. As for your vmf now, I finally got it working on a train timer, much like my trickery with Pipeball Ultra.

One small issue though, it completely ignores overtime. So if, say, RED owns 2 points with 0:01 on their clock and BLU starts capping one, the game will ignore overtime and declare RED the winner. I'm sure there's a way to get around that too but everything I've tried hasn't worked. Someone with more time on their hands than I will need to pick up the torch.
 

Attachments

  • koth_example_fix.vmf
    73 KB · Views: 38

jixegix957

L1: Registered
Aug 28, 2023
12
0
Alright, update: I got it to work. This logic is very clunky and big, but it works.

You can special copy the cap points and their relays for different amount of CPs
 

Attachments

  • 3koth_example.vmf
    114.2 KB · Views: 15
Solution