Post: [GSC Script] Final Killcam (work in progress)
01-26-2012, 07:25 PM #1
Karoolus
I'm the W@W Menu Guy !
(adsbygoogle = window.adsbygoogle || []).push({}); As title says, this is like MW2, BO & MW2 final killcam

basic code to see killcam:

    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();
}

credit to nexxion87 from modbase.be (found this script there, worked from there, i won't claim i wrote this from scratch)



now i'm trying to get it to actually monitor the game for scorelimit..
i was trying to do this through the _globallogic.gsc with this function (i edited the original one obviously)


    
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"] );
}


but it doesn't work the way i want it to, you just float there, you don't spectate anyone.. if i try the GameCam script in-game (without involving the scorelimit) i get to see what i want..

stopping here for the night, i'm gonna watch a movie or w/e but i wanted to get this out, so maybe other ppl can continue working on this Winky Winky



if we get this to work, that would be kinda epic ^^
(adsbygoogle = window.adsbygoogle || []).push({});

The following 13 users say thank you to Karoolus for this useful post:

Alexis Rhodes, Correy, FourzerotwoFAILS, GetDeleted -_-, IELIITEMODZX, Jacob-And-Britt, Kush Friendly, Cmd-X, Taylor, Vampytwistッ, xMrCheatVisionx, xMrSuperMoDzZ--
01-26-2012, 07:30 PM #2
Originally posted by Karoolus View Post
As title says, this is like MW2, BO & MW2 final killcam

basic code to see killcam:

    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();
}

credit to nexxion87 from modbase.be (found this script there, worked from there, i won't claim i wrote this from scratch)



now i'm trying to get it to actually monitor the game for scorelimit..
i was trying to do this through the _globallogic.gsc with this function (i edited the original one obviously)


    
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"] );
}


but it doesn't work the way i want it to, you just float there, you don't spectate anyone.. if i try the GameCam script in-game (without involving the scorelimit) i get to see what i want..

stopping here for the night, i'm gonna watch a movie or w/e but i wanted to get this out, so maybe other ppl can continue working on this Winky Winky



if we get this to work, that would be kinda epic ^^
ill give this ago later Happy

The following user thanked IELIITEMODZX for this useful post:

Karoolus
01-26-2012, 07:31 PM #3
Karoolus
I'm the W@W Menu Guy !
Originally posted by IELIITEMODZX View Post
ill give this ago later Happy


that would be nice..

the more people working on it, the bigger the chance we get it to work ^^
01-26-2012, 07:32 PM #4
247Yamato
< ^ > < ^ >
Some guy on pc made a final killcam thing sometime ago, I cant remember who or what mod it was, google it, maybe you can find some results.
01-26-2012, 07:33 PM #5
Karoolus
I'm the W@W Menu Guy !
Originally posted by 247Yamato View Post
Some guy on pc made a final killcam thing sometime ago, I cant remember who or what mod it was, google it, maybe you can find some results.


the code i used WAS the final killcam Happy or at least part of it..
01-26-2012, 07:34 PM #6
Originally posted by 247Yamato View Post
Some guy on pc made a final killcam thing sometime ago, I cant remember who or what mod it was, google it, maybe you can find some results.
i think its in a zombies mod. not the AI one :/
01-26-2012, 08:53 PM #7
sonny356
Nespresso...whatelse.
nice man! i hope you make it better than mw2 and mw3 Winky Winky
01-26-2012, 09:12 PM #8
D3cH
Zombie Cakes Maker
_killcam.gsc from MW2, maybe this can help you? ^^

    #include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

init()
{
precacheString(&"PLATFORM_PRESS_TO_SKIP");
precacheString(&"PLATFORM_PRESS_TO_RESPAWN");
precacheString(&"PLATFORM_PRESS_TO_COPYCAT");
precacheShader("specialty_copycat");

level.killcam = maps\mp\gametypes\_tweakables::getTweakableValue( "game", "allowkillcam" );
}

killcam(
attackerNum, // entity number of the attacker
killcamentityindex, // entity number of the entity to view (grenade, airstrike, etc)
killcamentitystarttime, // time at which the killcamentity came into being
sWeapon, // killing weapon
predelay, // time between player death and beginning of killcam
offsetTime, // something to do with how far back in time the killer was seeing the world when he made the kill; latency related, sorta
timeUntilRespawn, // will the player be allowed to respawn after the killcam?
maxtime, // time remaining until map ends; the killcam will never last longer than this. undefined = no limit
attacker, // entity object of attacker
victim // entity object of the victim
)
{
// monitors killcam and hides HUD elements during killcam session
//if ( !level.splitscreen )
// self thread killcam_HUD_off();

self endon("disconnect");
self endon("spawned");
level endon("game_ended");

if ( attackerNum < 0 )
return;

// length from killcam start to killcam end
if (getdvar("scr_killcam_time") == "") {
if ( sWeapon == "artillery_mp" || sWeapon == "stealth_bomb_mp" )
camtime = (gettime() - killcamentitystarttime) / 1000 - predelay - .1;
else if ( level.showingFinalKillcam )
camtime = 4.0;
else if ( sWeapon == "javelin_mp" )
camtime = 8;
else if ( issubstr( sWeapon, "remotemissile_" ) )
camtime = 5;
else if ( !timeUntilRespawn || timeUntilRespawn > 5.0 ) // if we're not going to respawn, we can take more time to watch what happened
camtime = 5.0;
else if ( sWeapon == "frag_grenade_mp" || sWeapon == "frag_grenade_short_mp" || sWeapon == "semtex_mp" )
camtime = 4.25; // show long enough to see grenade thrown
else
camtime = 2.5;
}
else
camtime = getdvarfloat("scr_killcam_time");

if (isdefined(maxtime)) {
if (camtime > maxtime)
camtime = maxtime;
if (camtime < .05)
camtime = .05;
}

// time after player death that killcam continues for
if (getdvar("scr_killcam_posttime") == "")
postdelay = 2;
else {
postdelay = getdvarfloat("scr_killcam_posttime");
if (postdelay < 0.05)
postdelay = 0.05;
}

/* timeline:

| camtime | postdelay |
| | predelay |

^ killcam start ^ player death ^ killcam end
^ player starts watching killcam

*/

killcamlength = camtime + postdelay;

// don't let the killcam last past the end of the round.
if (isdefined(maxtime) && killcamlength > maxtime)
{
// first trim postdelay down to a minimum of 1 second.
// if that doesn't make it short enough, trim camtime down to a minimum of 1 second.
// if that's still not short enough, cancel the killcam.
if ( maxtime < 2 )
return;

if (maxtime - camtime >= 1) {
// reduce postdelay so killcam ends at end of match
postdelay = maxtime - camtime;
}
else {
// distribute remaining time over postdelay and camtime
postdelay = 1;
camtime = maxtime - 1;
}

// recalc killcamlength
killcamlength = camtime + postdelay;
}

killcamoffset = camtime + predelay;

startTime = getTime();
self notify ( "begin_killcam", startTime );

self.sessionstate = "spectator";
self.forcespectatorclient = attackerNum;
self.killcamentity = -1;
if ( killcamentityindex >= 0 )
self thread setKillCamEntity( killcamentityindex, killcamoffset, killcamentitystarttime );
self.archivetime = killcamoffset;
self.killcamlength = killcamlength;
self.psoffsettime = offsetTime;

// ignore spectate permissions
self allowSpectateTeam("allies", true);
self allowSpectateTeam("axis", true);
self allowSpectateTeam("freelook", true);
self allowSpectateTeam("none", true);

if ( isDefined( attacker ) && level.showingFinalKillcam ) // attacker may have disconnected
{
self openMenu( "killedby_card_display" );
self SetCardDisplaySlot( attacker, 7 );
}

self thread endedKillcamCleanup();

// wait till the next server frame to allow code a chance to update archivetime if it needs trimming
wait 0.05;

assertex( self.archivetime <= killcamoffset + 0.0001, "archivetime: " + self.archivetime + ", killcamoffset: " + killcamoffset );
if ( self.archivetime < killcamoffset )
println( "WARNING: Code trimmed killcam time by " + (killcamoffset - self.archivetime) + " seconds because it doesn't have enough game time recorded!" );

camtime = self.archivetime - .05 - predelay;
killcamlength = camtime + postdelay;
self.killcamlength = killcamlength;

if ( camtime <= 0 ) // if we're not looking back in time far enough to even see the death, cancel
{
println( "Cancelling killcam because we don't even have enough recorded to show the death." );

self.sessionstate = "dead";
self.forcespectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;

self notify ( "killcam_ended" );

return;
}

if ( level.showingFinalKillcam )
thread doFinalKillCamFX( camtime );

self.killcam = true;

self initKCElements();

if ( !level.splitscreen )
{
self.kc_timer.alpha = 1;
self.kc_timer setTenthsTimer(camtime);
}

if ( timeUntilRespawn && !level.gameEnded )
{
if ( timeUntilRespawn > 0 )
setLowerMessage( "kc_info", game["strings"]["waiting_to_spawn"], timeUntilRespawn );
else
setLowerMessage( "kc_info", &"PLATFORM_PRESS_TO_SKIP" );
}
else if ( !level.gameEnded )
{
setLowerMessage( "kc_info", &"PLATFORM_PRESS_TO_RESPAWN" );
}

if ( !level.showingFinalKillcam )
self.kc_skiptext.alpha = 1;
else
self.kc_skiptext.alpha = 0;

self.kc_othertext.alpha = 0;
self.kc_icon.alpha = 0;

self thread spawnedKillcamCleanup();

if ( self == victim && victim _hasPerk( "specialty_copycat" ) && isDefined( victim.pers["copyCatLoadout"] ) )
self thread waitKCCopyCatButton( attacker );

if ( !level.showingFinalKillcam )
self thread waitSkipKillcamButton( timeUntilRespawn );
else
self notify ( "showing_final_killcam" );

self thread endKillcamIfNothingToShow();

self waittillKillcamOver();

if ( level.showingFinalKillcam )
{
self thread maps\mp\gametypes\_playerlogic::spawnEndOfGame();
return;
}

self thread calculateKillCamTime( startTime );

self thread killcamCleanup( true );
}


doFinalKillCamFX( camTime )
{
if ( isDefined( level.doingFinalKillcamFx ) )
return;
level.doingFinalKillcamFx = true;

intoSlowMoTime = camTime;
if ( intoSlowMoTime > 1.0 )
{
intoSlowMoTime = 1.0;
wait( camTime - 1.0 );
}

setSlowMotion( 1.0, 0.25, intoSlowMoTime ); // start timescale, end timescale, lerp duration
wait( intoSlowMoTime + .5 );
setSlowMotion( 0.25, 1, 1.0 );

level.doingFinalKillcamFx = undefined;
}


calculateKillCamTime( startTime )
{
watchedTime = int(getTime() - startTime);
self incPlayerStat( "killcamtimewatched", watchedTime );
}

waittillKillcamOver()
{
self endon("abort_killcam");

wait(self.killcamlength - 0.05);
}

setKillCamEntity( killcamentityindex, killcamoffset, starttime )
{
self endon("disconnect");
self endon("killcam_ended");

killcamtime = (gettime() - killcamoffset * 1000);

if ( starttime > killcamtime )
{
wait .05;
// code may have trimmed archivetime after the first frame if we couldn't go back in time as far as requested.
killcamoffset = self.archivetime;
killcamtime = (gettime() - killcamoffset * 1000);

if ( starttime > killcamtime )
wait (starttime - killcamtime) / 1000;
}
self.killcamentity = killcamentityindex;
}

waitSkipKillcamButton( timeUntilRespawn )
{
self endon("disconnect");
self endon("killcam_ended");

while(self useButtonPressed())
wait .05;

while(!(self useButtonPressed()))
wait .05;

if ( !matchMakingGame() )
self incPlayerStat( "killcamskipped", 1 );

if ( timeUntilRespawn <= 0 )
clearLowerMessage( "kc_info" );

self notify("abort_killcam");
}

waitKCCopyCatButton( attacker )
{
self endon("disconnect");
self endon("killcam_ended");

self waitCopyCatButton( attacker );

self notify("abort_killcam");
}

waitDeathCopyCatButton( attacker )
{
self endon ( "disconnect" );

self initKCElements();

usedCopycat = self waitCopyCatButton( attacker );

if ( !isDefined( usedCopycat ) )
{
self.kc_icon.alpha = 0;
self.kc_othertext.alpha = 0;
}
}

waitCopyCatButton( attacker )
{
self endon ( "spawned_player" );
self endon ( "death_delay_finished" );
self.kc_icon setShader( "specialty_copycat", 48, 48 );
self.kc_othertext setText( &"PLATFORM_PRESS_TO_COPYCAT" );
self.kc_othertext.alpha = 1;
self.kc_icon.alpha = 1;

self notifyOnPlayerCommand( "use_copycat", "weapnext" );

self waittill( "use_copycat" );

self.pers["copyCatLoadout"]["inUse"] = true;
self.pers["copyCatLoadout"]["owner"] = attacker;

self.kc_othertext fadeOverTime( 0.5 );
self.kc_othertext.alpha = 0;

self.kc_icon fadeOverTime( 0.25 );
self.kc_icon scaleOverTime( 0.25, 512, 512 );
self.kc_icon.alpha = 0;

if ( isDefined( attacker ) )
attacker thread maps\mp\gametypes\_hud_message::playerCardSplashNotify( "copied", self );

self playLocalSound( "copycat_steal_class" );

return true;
}

waitSkipKillcamSafeSpawnButton()
{
self endon("disconnect");
self endon("killcam_ended");

if ( !self maps\mp\gametypes\_playerlogic::maySpawn() )
return;

while(self fragButtonPressed())
wait .05;

while(!(self fragButtonPressed()))
wait .05;

self.wantSafeSpawn = true;

self notify("abort_killcam");
}

endKillcamIfNothingToShow()
{
self endon("disconnect");
self endon("killcam_ended");

while(1)
{
// code may trim our archivetime to zero if there is nothing "recorded" to show.
// this can happen when the person we're watching in our killcam goes into killcam himself.
// in this case, end the killcam.
if ( self.archivetime <= 0 )
break;
wait .05;
}

self notify("abort_killcam");
}

spawnedKillcamCleanup()
{
self endon("disconnect");
self endon("killcam_ended");

self waittill("spawned");
self thread killcamCleanup( false );
}

endedKillcamCleanup()
{
self endon("disconnect");
self endon("killcam_ended");

level waittill("game_ended");

self thread killcamCleanup( true );
}

killcamCleanup( clearState )
{
if(isDefined(self.kc_skiptext))
self.kc_skiptext.alpha = 0;

if(isDefined(self.kc_timer))
self.kc_timer.alpha = 0;

if(isDefined(self.kc_icon))
self.kc_icon.alpha = 0;

if(isDefined(self.kc_othertext))
self.kc_othertext.alpha = 0;

self.killcam = undefined;

if ( !level.gameEnded )
self clearLowerMessage( "kc_info" );

self thread maps\mp\gametypes\_spectating::setSpectatePermissions();

self notify("killcam_ended"); // do this last, in case this function was called from a thread ending on it

if ( !clearState )
return;

self.sessionstate = "dead";
self ClearKillcamState();
}



cancelKillCamOnUse()
{
self.cancelKillcam = false;
self thread cancelKillCamOnUse_specificButton( ::cancelKillCamUseButton, ::cancelKillCamCallback );
//self thread cancelKillCamOnUse_specificButton( ::cancelKillCamSafeSpawnButton, ::cancelKillCamSafeSpawnCallback );
}

cancelKillCamUseButton()
{
return self useButtonPressed();
}
cancelKillCamSafeSpawnButton()
{
return self fragButtonPressed();
}
cancelKillCamCallback()
{
self.cancelKillcam = true;
}
cancelKillCamSafeSpawnCallback()
{
self.cancelKillcam = true;
self.wantSafeSpawn = true;
}

cancelKillCamOnUse_specificButton( pressingButtonFunc, finishedFunc )
{
self endon ( "death_delay_finished" );
self endon ( "disconnect" );
level endon ( "game_ended" );

for ( ;; )
{
if ( !self [[pressingButtonFunc]]() )
{
wait ( 0.05 );
continue;
}

buttonTime = 0;
while( self [[pressingButtonFunc]]() )
{
buttonTime += 0.05;
wait ( 0.05 );
}

if ( buttonTime >= 0.5 )
continue;

buttonTime = 0;

while ( !self [[pressingButtonFunc]]() && buttonTime < 0.5 )
{
buttonTime += 0.05;
wait ( 0.05 );
}

if ( buttonTime >= 0.5 )
continue;

self [[finishedFunc]]();
return;
}
}

initKCElements()
{
if ( !isDefined( self.kc_skiptext ) )
{
self.kc_skiptext = newClientHudElem(self);
self.kc_skiptext.archived = false;
self.kc_skiptext.x = 0;
self.kc_skiptext.alignX = "center";
self.kc_skiptext.alignY = "top";
self.kc_skiptext.horzAlign = "center_adjustable";
self.kc_skiptext.vertAlign = "top_adjustable";
self.kc_skiptext.sort = 1; // force to draw after the bars
self.kc_skiptext.font = "default";
self.kc_skiptext.foreground = true;
self.kc_skiptext.hideWhenInMenu = true;

if ( level.splitscreen )
{
self.kc_skiptext.y = 20;
self.kc_skiptext.fontscale = 1.2; // 1.8/1.5
}
else
{
self.kc_skiptext.y = 32;
self.kc_skiptext.fontscale = 1.8;
}
}

if ( !isDefined( self.kc_othertext ) )
{
self.kc_othertext = newClientHudElem(self);
self.kc_othertext.archived = false;
self.kc_othertext.y = 48;
self.kc_othertext.alignX = "left";
self.kc_othertext.alignY = "top";
self.kc_othertext.horzAlign = "center";
self.kc_othertext.vertAlign = "middle";
self.kc_othertext.sort = 10; // force to draw after the bars
self.kc_othertext.font = "small";
self.kc_othertext.foreground = true;
self.kc_othertext.hideWhenInMenu = true;

if ( level.splitscreen )
{
self.kc_othertext.x = 16;
self.kc_othertext.fontscale = 1.2;
}
else
{
self.kc_othertext.x = 32;
self.kc_othertext.fontscale = 1.6;
}
}

if ( !isDefined( self.kc_icon ) )
{
self.kc_icon = newClientHudElem(self);
self.kc_icon.archived = false;
self.kc_icon.x = 16;
self.kc_icon.y = 16;
self.kc_icon.alignX = "left";
self.kc_icon.alignY = "top";
self.kc_icon.horzAlign = "center";
self.kc_icon.vertAlign = "middle";
self.kc_icon.sort = 1; // force to draw after the bars
self.kc_icon.foreground = true;
self.kc_icon.hideWhenInMenu = true;
}

if ( !level.splitscreen )
{
if ( !isdefined( self.kc_timer ) )
{
self.kc_timer = createFontString( "hudbig", 1.0 );
self.kc_timer.archived = false;
self.kc_timer.x = 0;
self.kc_timer.alignX = "center";
self.kc_timer.alignY = "middle";
self.kc_timer.horzAlign = "center_safearea";
self.kc_timer.vertAlign = "top_adjustable";
self.kc_timer.y = 42;
self.kc_timer.sort = 1; // force to draw after the bars
self.kc_timer.font = "hudbig";
self.kc_timer.foreground = true;
self.kc_timer.color = (0.85,0.85,0.85);
self.kc_timer.hideWhenInMenu = true;
}
}
}
01-26-2012, 09:23 PM #9
Karoolus
I'm the W@W Menu Guy !
Originally posted by D3cH View Post
_killcam.gsc from MW2, maybe this can help you? ^^


already had this, but thx anyway.. the killcam in MW2 works different than COD4 (at least the code i read is different Smile )
01-26-2012, 10:23 PM #10
Not sure who created this, but replace your _globallogic.gsc with You must login or register to view this content. and your _killcam.gsc with You must login or register to view this content..

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo