174 lines
12 KiB
Plaintext
174 lines
12 KiB
Plaintext
#using scripts\codescripts\struct;
|
|
#using scripts\shared\clientfield_shared;
|
|
#using scripts\shared\util_shared;
|
|
|
|
|
|
#using scripts\mp\_load;
|
|
#using scripts\mp\_util;
|
|
|
|
#using scripts\mp\mp_metro_fx;
|
|
#using scripts\mp\mp_metro_sound;
|
|
|
|
|
|
|
|
#precache( "client_fx", "ui/fx_dom_cap_indicator_neutral_r120" );
|
|
#precache( "client_fx", "ui/fx_dom_cap_indicator_team_r120" );
|
|
#precache( "client_fx", "ui/fx_dom_marker_neutral_r120" );
|
|
#precache( "client_fx", "ui/fx_dom_marker_team_r120" );
|
|
|
|
|
|
|
|
function main()
|
|
{
|
|
mp_metro_fx::main();
|
|
mp_metro_sound::main();
|
|
|
|
clientfield::register( "scriptmover", "mp_metro_train_timer", 1, 1, "int", &trainTimerSpawned, true, !true );
|
|
|
|
load::main();
|
|
|
|
level.domFlagBaseFxOverride = &dom_flag_base_fx_override;
|
|
level.domFlagCapFxOverride = &dom_flag_cap_fx_override;
|
|
|
|
util::waitforclient( 0 ); // This needs to be called after all systems have been registered.
|
|
|
|
level.endGameXCamName = "ui_cam_endgame_mp_metro";
|
|
|
|
SetDvar( "phys_buoyancy", 1 );
|
|
SetDvar( "phys_ragdoll_buoyancy", 1 );
|
|
}
|
|
|
|
function train_countdown( localClientNum )
|
|
{
|
|
self endon( "entityshutdown" );
|
|
angles = ( self.angles[0], -self.angles[1], 0 );
|
|
|
|
|
|
minutesOrigin = self.origin + ( cos(self.angles[1] ) * 37, sin( self.angles[1] ) * 37, 0 );
|
|
numberModelMinutes = util::spawn_model( localClientNum, "p7_3d_txt_antiqua_bold_00_brushed_aluminum", minutesOrigin, angles );
|
|
|
|
colonOrigin = self.origin + ( cos(self.angles[1]) * 37 * 2, sin( self.angles[1] ) * 37 * 2, 0 );
|
|
numberModelcolon = util::spawn_model( localClientNum, "p7_3d_txt_antiqua_bold_00_brushed_aluminum", colonOrigin, angles );
|
|
|
|
tensOrigin = self.origin - ( cos(self.angles[1]) * 37, sin( self.angles[1] ) * 37, 0 );
|
|
numberModelTens = util::spawn_model( localClientNum, "p7_3d_txt_antiqua_bold_00_brushed_aluminum", tensOrigin, angles );
|
|
|
|
onesOrigin = self.origin - ( cos(self.angles[1]) * 37 * 2, sin( self.angles[1] ) * 37 * 2, 0 );
|
|
numberModelOnes = util::spawn_model( localClientNum, "p7_3d_txt_antiqua_bold_00_brushed_aluminum", onesOrigin, angles );
|
|
|
|
currentNumber = 1;
|
|
|
|
currentNumberLarge = 0;
|
|
for ( ;; )
|
|
{
|
|
currentNumber++;
|
|
if ( currentNumber > 9 )
|
|
{
|
|
currentNumber = 0;
|
|
}
|
|
|
|
displayNumber = int( ceil( ( self.angles[2]) ) );
|
|
if ( displayNumber < 0 )
|
|
{
|
|
displayNumber += 360;
|
|
}
|
|
|
|
if ( displayNumber < 0 || displayNumber > 360 )
|
|
{
|
|
displayNumber = 0;
|
|
}
|
|
|
|
numberModelOnes setModel( "p7_3d_txt_antiqua_bold_0" + ( displayNumber % 10 ) + "_brushed_aluminum");
|
|
|
|
numberModelTens setModel( "p7_3d_txt_antiqua_bold_0" + ( int( ( displayNumber % 60 ) / 10 ) ) + "_brushed_aluminum");
|
|
|
|
numberModelMinutes setModel( "p7_3d_txt_antiqua_bold_0" + ( int( displayNumber / 60 ) ) + "_brushed_aluminum");
|
|
|
|
wait( 0.05 );
|
|
}
|
|
}
|
|
|
|
function trainTimerSpawned( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
|
|
{
|
|
if ( !newVal )
|
|
return;
|
|
|
|
if ( newVal == 1 )
|
|
{
|
|
self thread train_countdown( localClientNum );
|
|
}
|
|
}
|
|
|
|
function dom_flag_base_fx_override( flag, team )
|
|
{
|
|
switch ( flag.name )
|
|
{
|
|
case "a":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_marker_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_marker_team_r120";
|
|
}
|
|
break;
|
|
case "b":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_marker_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_marker_team_r120";
|
|
}
|
|
break;
|
|
case "c":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_marker_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_marker_team_r120";
|
|
}
|
|
break;
|
|
};
|
|
}
|
|
|
|
function dom_flag_cap_fx_override( flag, team )
|
|
{
|
|
switch ( flag.name )
|
|
{
|
|
case "a":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_cap_indicator_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_cap_indicator_team_r120";
|
|
}
|
|
break;
|
|
case "b":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_cap_indicator_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_cap_indicator_team_r120";
|
|
}
|
|
break;
|
|
case "c":
|
|
if ( team == "neutral" )
|
|
{
|
|
return "ui/fx_dom_cap_indicator_neutral_r120";
|
|
}
|
|
else
|
|
{
|
|
return "ui/fx_dom_cap_indicator_team_r120";
|
|
}
|
|
break;
|
|
};
|
|
} |