there is a map contest for a limited time for paladins game. i hope this maybe a good opportunity for map designers.
look into in if you are interested.
https://www.reddit.com/r/Paladins/comments/8w32cz/summer_celebration_map_design_contest/
i don't think they want 3d model files or anything. seems its some pictures and/or elevations i guess. i don't know fore sure.
they want siege maps, which means maps should be symmetrical. (which means from the capture point).
this is an easy to understand siege map
https://www.youtube.com/watch?v=EIsYO0loox4&feature=youtu.be&t=1m54s
usually a map can contain special routs only can be used by vertical mobility characters, from flank class. (meave, evie, androxus etc)
ok that's all i guess.

i think you mean to stop this script when a zombie game starts. and start the script when non-zombie game (like ctf) start.
right? ok.
well, the 'clean' way maybe adding a '$mode' variable to the lua script.
anyway, since i don't see any answer from anyone regarding to lua, ill suggest a sapp event method.
this will turn off the script when you playing infection game.
event_start $mode:MyInfectionGameType 'lua_unload team_balance'
this will turn on the script when you play other games (like ctf etc..)
event_start $mode!:MyInfectionGameType 'lua_load team_balance'
i dont know whether the lua script needs to be open before a game start in order to work (when u playing in a non-infaction game like ctf).
if not, above events may work.
this maybe a 'better than nothing' answer. thats all i got.

this is the cheapest way that i know of, from events...
method 01:
event_alive $map:geomar_final $x<-57.75 $y<45.22 $y>5.00 $z<-22 'kill $n;say * "$name fell from red base ledge" '
event_alive $map:geomar_final $x>120.00 $y<43.00 $y>2.11 $z<-14.35 'kill $n;say * "$name fell from blue base ledge" '
note: this doesn't block the player from going down, this only kills the player when he starting to go down the ledge. (but kills him before map kills him)
so, the body will still go down but the player already dead long before he goes deep down.
-----
if the dead body going deep or hitting the ground is what cause the exception problem, this will probably not fix the issue.
so you can use this same script to teleport the player to a given upper area instead of killing. (method 02)
method 02:
event_alive $map:geomar_final $x<-57.75 $y<45.22 $y>5.00 $z<-22 't $n -49.82 29.09 -19.96;say $n "$name you have been teleported back to the top from red base ledge" '
event_alive $map:geomar_final $x>120.00 $y<43.00 $y>2.11 $z<-14.35 't $n 111.00 27.00 -12.32;say $n "$name you have been teleported back to the top from blue base ledge" '
by that way the body will not hit the deep ground.
-----
or, just give up my script and hope for a better script done by lua .

so..., since sapp updated the event_score to response to race as well, i have tried something......
this is an example gameplay with some random players.
i think this is the limit i can go with sapp as i expected. (and with weapon variable lua script of 002)
1. i just kill the players for going to a race nav point without the flag, and send a message, and remove a score point.
but its a mess, since not everyone has chat and not everyone read chat, there is a huge change to rage quit players. the expected solution is a slimier solution just like we cant score in ctf games if the flag is not at home, blocking the scoring , with a sound, like an error sound.
2. flag can be lost as a result of flag glitching somewhere or simply just hard to find. expected solution is flag to have an indicator just like in ctf games.
so, players can find the flag.
this should be more fun with teams. just added this post to get an idea. nothing more.

a note for users of this script;
i found out that entering capital letters for maps wont work for this.
example:
there is a map called HavenH4 , (yes the map file name is also the same). but you have to add the map in simple letters in this lua script. (havenh4)
just wanned to tell that. sorry if its a thing in all lua scripts.

i know lua is powerful etc..
but i only learned how to use sapp, and learned it for my server when i staring it.
and i don't wanna learn another one (lua) just for the halo.
because i don't have any interest in programming path so i don't have other uses of lua so don't wanna waste my time to learn it.
i just tired the things mentioned in the starting post with sapp, and it was successful for the sapp log.
so rather than just left there silently, i just posted it.
thinking at least someone who use sapp can have more experience with this etc..
this was a not an attempt to fulfill the original request since this not create a new file.
just posted it for the sake of making it.

i can give a method of using sapp and from that method the details you want will save in the same sapp log file... not a new file...
so your questions still remains, so don't mark this as solved.
events.txt
event_end 'log_note "~~~~~~~~GAME_SCORE_LOG~~~~~~~~~ gametype:$gt , gamemode:$mode | Red score:$redscore | Blue score:$bluescore" '
event_end 'wait 100;cevent playerslog 1;cevent playerslog 2;cevent playerslog 3;cevent playerslog 4;cevent playerslog 5;cevent playerslog 6;cevent playerslog 7;cevent playerslog 8;cevent playerslog 9;cevent playerslog 10;cevent playerslog 11;cevent playerslog 12;cevent playerslog 13;cevent playerslog 14;cevent playerslog 15;cevent playerslog 16'
event_custom $ename:playerslog 'log_note " player $n details: Name = $name , Team = $team , Score = $score, Kills = $kills , Deaths = $deaths , Assists = $assists , Ping = $ping | hash = $hash , ip = $ip"
exmaple preview {only one player was available when testing this}
cons:
* since sapp "do to all players" (AKA * ) don't work on everything, i had to manually trigger the custom event to all 16 players. and as a result for that you will see unnecessary "player 0" line/lines in the score log when there is no 16 players available.
note:
*sapp don't have anything regard to king , oddball and race. so those game scores will awkward/no use/false scores.
*ping = ping the player had when saving the score.
---
suggestions:
* this can be further improve this by adding a variable to count/add a number to the game. so u can search the game you want easily. like 55th game your server played.
cons: when you reload sapp/restart server, the game number will be 0 and start to count from 0 again.
i post this just because i tried it and worked (but no new file). i hope someone makes the script you want.

im not quite sure what your saying or how to do it.
but what i was expecting from the restart is, just a replace to this;
event_start 'lua_load projectile'
event_end 'lua_unload projectile'
since loading that lua script at the event_start wont swap projectiles, i have to restart.
but, if the quick restart has no affect to the server, then, its ok......

yes but its about lua scripts that want the game to restart if its not always on.
like your this example script,:
http://halo.isimaginary.com/forum/thread-197-post-841.html#pid841
so, i have to restart....