jump-gsc/iw4/scripts/mp/_jump.gsc

179 lines
3.4 KiB
Plaintext
Raw Permalink Normal View History

2023-12-31 16:11:08 +01:00
// Call Of Duty: Modern Warfare 2
init()
{
2024-05-03 19:03:21 +02:00
setDvar( "bg_bounces", 1 );
2024-05-31 09:59:13 +00:00
setDvar( "player_sustainAmmo", 1 ); // Requires sv_cheats
2024-05-03 19:03:21 +02:00
2023-12-31 16:11:08 +01:00
thread onPlayerConnect();
}
onPlayerConnect()
{
while ( true )
{
level waittill( "connected", player );
2024-05-03 19:03:21 +02:00
if ( player isTestClient() )
2023-12-31 16:11:08 +01:00
{
2024-05-03 19:03:21 +02:00
continue;
2023-12-31 16:11:08 +01:00
}
player notifyOnPlayerCommand( "save_pos", "+melee" );
player notifyOnPlayerCommand( "load_saved_pos", "+activate" );
2024-05-03 19:03:21 +02:00
player thread onPlayerSpawned();
player thread onWeaponFired();
2023-12-31 16:11:08 +01:00
player thread jumper();
player thread displaySpeed();
2024-01-19 17:14:58 +01:00
}
}
2024-05-03 19:03:21 +02:00
// deserteagle_mp
// rpg_mp
onPlayerSpawned()
{
self endon( "disconnect" );
2024-05-31 09:59:13 +00:00
while ( true )
2024-05-03 19:03:21 +02:00
{
self waittill( "spawned_player" );
self freezeControls( false );
self takeAllWeapons();
self giveWeapon( "deserteagle_mp" );
self giveMaxAmmo( "deserteagle_mp" );
self giveWeapon( "rpg_mp" );
self giveMaxAmmo( "rpg_mp" );
wait 1;
self switchToWeaponImmediate( "deserteagle_mp" );
}
}
onWeaponFired()
{
level endon( "game_ended" );
self endon( "disconnected" );
2024-05-31 09:59:13 +00:00
while ( true )
2024-05-03 19:03:21 +02:00
{
self waittill( "weapon_fired", weapon );
if (weapon == "rpg_mp")
{
self.last_rpg_shot = getTime();
}
}
}
displaySpeed()
2024-01-19 17:14:58 +01:00
{
level endon( "game_ended" );
self endon( "disconnect" );
self.speed_text = maps\mp\gametypes\_hud_util::createFontString( "hudsmall" , 1 );
self.speed_text maps\mp\gametypes\_hud_util::setPoint( "TOP", "TOP", -2, -2 );
self.speed_text.hideWhenInMenu = true;
self.speed_text.label = &"";
self.last_speed_sample = 0;
2024-05-03 19:03:21 +02:00
self.last_z_coordinate = 0.0;
2024-01-19 17:14:58 +01:00
while ( true )
{
player_speed = distance( ( 0, 0, 0 ), self getvelocity() );
current_speed = int( player_speed );
2024-05-03 19:03:21 +02:00
if ( self.origin[2] > self.last_z_coordinate )
{
// We should be going up
if ( isDefined( self.last_rpg_shot ) && self.last_rpg_shot != 0 )
{
late = getTime() - self.last_rpg_shot;
2024-05-31 09:59:13 +00:00
if (late <= 500)
2024-05-03 19:03:21 +02:00
{
iPrintLn( "Late RPG (+" + (late) + ")" );
}
self.last_rpg_shot = 0;
}
}
self.last_z_coordinate = self.origin[2];
2024-01-19 17:14:58 +01:00
if ( self.last_speed_sample == current_speed )
{
// White
self.speed_text.color = ( 255, 255, 255 );
}
else if ( self.last_speed_sample > current_speed )
{
// Slowing down (Red)
self.speed_text.color = ( 255, 0, 0 );
}
else
{
// Speeding up (Green)
self.speed_text.color = ( 0, 255, 0 );
}
self.last_speed_sample = current_speed;
self.speed_text setValue( current_speed );
wait( 0.1 );
2023-12-31 16:11:08 +01:00
}
}
2024-01-03 19:48:41 +01:00
canInteract( player )
{
return maps\mp\_utility::isReallyAlive( player );
}
canSave( player )
{
if ( !player isOnGround() )
{
player iPrintLn( "Cannot save while in the air\n" );
return false;
}
return true;
}
2023-12-31 16:11:08 +01:00
jumper()
{
2024-01-19 17:14:58 +01:00
level endon( "game_ended ");
self endon( "disconnect" );
2023-12-31 16:11:08 +01:00
self.jumper_pos = (0, 0, 0);
self.jumper_angles = (0, 0, 0);
self.jumper_pos_num = 0;
while ( true )
{
msg = self common_scripts\utility::waittill_any_return( "save_pos", "load_saved_pos" );
if ( !isDefined( msg ) )
{
continue;
}
2024-01-03 19:48:41 +01:00
if ( msg == "save_pos" && canInteract( self ) && canSave( self ) )
2023-12-31 16:11:08 +01:00
{
self.jumper_pos = self.origin;
self.jumper_angles = self getPlayerAngles();
self.jumper_pos_num += 1;
2024-01-03 19:48:41 +01:00
self iPrintLn( "saved pos ", self.jumper_pos_num, "\n" );
2023-12-31 16:11:08 +01:00
}
2024-01-03 19:48:41 +01:00
else if ( msg == "load_saved_pos" && canInteract( self ) )
2023-12-31 16:11:08 +01:00
{
self setOrigin( self.jumper_pos );
self setVelocity( (0, 0, 0) );
self setPlayerAngles( self.jumper_angles );
2024-01-03 19:48:41 +01:00
self iPrintLn( "loaded pos ", self.jumper_pos_num, "\n" );
2023-12-31 16:11:08 +01:00
}
}
}