boiii-scripts/mp/mp_metro.csc
2023-04-13 17:30:38 +02:00

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