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

119 lines
2.4 KiB
Plaintext

// Call Of Duty: Modern Warfare 3
#if defined(IW5) && !defined(CI)
#define TOOL
#endif
#if defined(TOOL)
#inline scripts\mp\_utility;
#else
#include "_utility.gsh"
#endif
GENERIC_INIT;
_ON_PLAYER_CNCT_BEGIN
BOT_CHK( player );
PLAYER_NOTIFY_CMD( player, "save_pos", "+reload" );
PLAYER_NOTIFY_CMD( player, "load_saved_pos", "+activate" );
player thread jumper();
player thread displaySpeed();
_ON_PLAYER_SPAWNED_COROUTINE( player );
_ON_PLAYER_CNCT_END
displaySpeed()
{
GENERIC_COROUTINE_END;
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;
while ( true )
{
player_speed = distance( ZERO_VEC3, self getvelocity() );
current_speed = int( player_speed );
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 );
}
}
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;
}
jumper()
{
GENERIC_COROUTINE_END;
self.jumper_pos = ZERO_VEC3;
self.jumper_angles = ZERO_VEC3;
self.jumper_pos_num = 0;
while ( true )
{
msg = self common_scripts\utility::waittill_any_return( "save_pos", "load_saved_pos" );
DEFINE_CHK( msg );
if ( msg == "save_pos" && canInteract( self ) && canSave( self ) )
{
self.jumper_pos = self.origin;
self.jumper_angles = self getPlayerAngles();
self.jumper_pos_num += 1;
self iPrintLn( "saved pos ", self.jumper_pos_num, "\n" );
}
else if ( msg == "load_saved_pos" && canInteract( self ) )
{
self setOrigin( self.jumper_pos );
self setVelocity( ZERO_VEC3 );
self setPlayerAngles( self.jumper_angles );
self iPrintLn( "loaded pos ", self.jumper_pos_num, "\n" );
}
}
}
_ON_PLAYER_SPAWNED_BEGIN
self setPerk( "specialty_marathon", true, false );
_ON_PLAYER_SPAWNED_END