gameCam( playerNum, time )
{
self endon("disconnect");
self endon("spawned");
if(playerNum < 0)
return;
if(!isDefined(self.gc_topbar))
{
self.gc_topbar = newClientHudElem(self);
self.gc_topbar.archived = false;
self.gc_topbar.x = 0;
self.gc_topbar.y = 0;
self.gc_topbar.alpha = 0.5;
self.gc_topbar setShader("black", 640, 112);
}
if(!isDefined(self.gc_bottombar))
{
self.gc_bottombar = newClientHudElem(self);
self.gc_bottombar.archived = false;
self.gc_bottombar.x = 0;
self.gc_bottombar.y = 368;
self.gc_bottombar.alpha = 0.5;
self.gc_bottombar setShader("black", 640, 112);
}
if(!isDefined(self.gc_title))
{
self.gc_title = newClientHudElem(self);
self.gc_title.archived = false;
self.gc_title.x = 320;
self.gc_title.y = 60;
self.gc_title.alignX = "center";
self.gc_title.alignY = "middle";
self.gc_title.sort = 1;
self.gc_title.fontScale = 4;
self.gc_title setText( &"Killcam" );
}
self setClientDvar( "cg_thirdperson", 0 );
self.sessionstate = "spectator";
self.spectatorclient = playerNum;
self.archivetime = time;
self allowSpectateTeam( "allies", true );
self allowSpectateTeam( "axis", true );
self allowSpectateTeam( "freelook", false );
self allowSpectateTeam( "none", false );
wait ( self.archivetime - 3.1 );
self.gc_topbar destroy();
self.gc_bottombar destroy();
self.gc_title destroy();
self.spectatorclient = -1;
self.archivetime = 0;
self.sessionstate = "spectator";
self freezeControls( 0 );
self notify("stop camera");
//endmap();
}
default_onScoreLimit()
{
if ( !level.endGameOnScoreLimit )
return;
winner = undefined;
if ( level.teamBased )
{
if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
winner = "tie";
else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
winner = "axis";
else
winner = "allies";
logString( "scorelimit, win: " + winner + ", allies: " + game["teamScores"]["allies"] + ", opfor: " + game["teamScores"]["axis"] );
//add something here to find the LAST kill
}
else
{
winner = getHighestScoringPlayer();
if ( isDefined( winner ) )
logString( "scorelimit, win: " + winner.name );
else
logString( "scorelimit, tie" );
for(i = 0; i < level.players.size; i++)
{
level.players[i] thread mods\karoolus\_main_mods::gameCam( winner GetEntityNumber(), 12 );
}
}
makeDvarServerInfo( "ui_text_endreason", game["strings"]["score_limit_reached"] );
setDvar( "ui_text_endreason", game["strings"]["score_limit_reached"] );
level.forcedEnd = true; // no more rounds if scorelimit is hit
self waittill("stop camera");
thread endGame( winner, game["strings"]["score_limit_reached"] );
}

gameCam( playerNum, time )
{
self endon("disconnect");
self endon("spawned");
if(playerNum < 0)
return;
if(!isDefined(self.gc_topbar))
{
self.gc_topbar = newClientHudElem(self);
self.gc_topbar.archived = false;
self.gc_topbar.x = 0;
self.gc_topbar.y = 0;
self.gc_topbar.alpha = 0.5;
self.gc_topbar setShader("black", 640, 112);
}
if(!isDefined(self.gc_bottombar))
{
self.gc_bottombar = newClientHudElem(self);
self.gc_bottombar.archived = false;
self.gc_bottombar.x = 0;
self.gc_bottombar.y = 368;
self.gc_bottombar.alpha = 0.5;
self.gc_bottombar setShader("black", 640, 112);
}
if(!isDefined(self.gc_title))
{
self.gc_title = newClientHudElem(self);
self.gc_title.archived = false;
self.gc_title.x = 320;
self.gc_title.y = 60;
self.gc_title.alignX = "center";
self.gc_title.alignY = "middle";
self.gc_title.sort = 1;
self.gc_title.fontScale = 4;
self.gc_title setText( &"Killcam" );
}
self setClientDvar( "cg_thirdperson", 0 );
self.sessionstate = "spectator";
self.spectatorclient = playerNum;
self.archivetime = time;
self allowSpectateTeam( "allies", true );
self allowSpectateTeam( "axis", true );
self allowSpectateTeam( "freelook", false );
self allowSpectateTeam( "none", false );
wait ( self.archivetime - 3.1 );
self.gc_topbar destroy();
self.gc_bottombar destroy();
self.gc_title destroy();
self.spectatorclient = -1;
self.archivetime = 0;
self.sessionstate = "spectator";
self freezeControls( 0 );
self notify("stop camera");
//endmap();
}
default_onScoreLimit()
{
if ( !level.endGameOnScoreLimit )
return;
winner = undefined;
if ( level.teamBased )
{
if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
winner = "tie";
else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
winner = "axis";
else
winner = "allies";
logString( "scorelimit, win: " + winner + ", allies: " + game["teamScores"]["allies"] + ", opfor: " + game["teamScores"]["axis"] );
//add something here to find the LAST kill
}
else
{
winner = getHighestScoringPlayer();
if ( isDefined( winner ) )
logString( "scorelimit, win: " + winner.name );
else
logString( "scorelimit, tie" );
for(i = 0; i < level.players.size; i++)
{
level.players[i] thread mods\karoolus\_main_mods::gameCam( winner GetEntityNumber(), 12 );
}
}
makeDvarServerInfo( "ui_text_endreason", game["strings"]["score_limit_reached"] );
setDvar( "ui_text_endreason", game["strings"]["score_limit_reached"] );
level.forcedEnd = true; // no more rounds if scorelimit is hit
self waittill("stop camera");
thread endGame( winner, game["strings"]["score_limit_reached"] );
}

Copyright © 2026, NextGenUpdate.
All Rights Reserved.