Yes, the only team game that actually abides by teams is CTF. If you want to force them on the correct side anyways, make some box outside the map where they spawn, and use OS to move them to a random location for their team (OS is required to see their team information)
(global short number 0)
(global boolean loc 0)
(script static unit player
(unit (list_get (players) number))
)
(script continuous spawnZones
(if (volume_test_object trig_vol (player)) (begin
(set loc (random_range 0 3))
(if (= (player_data_get_integer number team_index) 0) (begin ;;red
(if (= loc 0) (object_teleport (player) Spawn0R_flag))
(if (= loc 1) (object_teleport (player) Spawn1R_flag))
(if (= loc 2) (object_teleport (player) Spawn2R_flag))
(if (= loc 3) (object_teleport (player) Spawn3R_flag))
) (begin ;;Any other team (Blue)
(if (= loc 0) (object_teleport (player) Spawn0B_flag))
(if (= loc 1) (object_teleport (player) Spawn1B_flag))
(if (= loc 2) (object_teleport (player) Spawn2B_flag))
(if (= loc 3) (object_teleport (player) Spawn3B_flag))
))
))
(if (>= number 15) (set number 0) (set number (+ number 1)))
)
For that one line in red alone, you require OS. You cannot correctly check teams without OS (unless its CTF where you see where they spawn, but that defeats the point of this script (Under the non-correctly area, you could theoretically use AI to check it.. place a blue AI, then check (ai_status <ai>) to see whether they are attacking or not.. *shrug*))