166 lines
3.2 KiB
Plaintext
166 lines
3.2 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 onWeaponFired();
|
|
player thread jumper();
|
|
player thread displaySpeed();
|
|
|
|
_ON_PLAYER_SPAWNED_COROUTINE( player );
|
|
|
|
_ON_PLAYER_CNCT_END
|
|
|
|
onWeaponFired()
|
|
{
|
|
GENERIC_COROUTINE_END;
|
|
|
|
while ( true )
|
|
{
|
|
self waittill( "weapon_fired", weapon );
|
|
|
|
if (weapon == "rpg_mp")
|
|
{
|
|
self.last_rpg_shot = getTime();
|
|
}
|
|
}
|
|
}
|
|
|
|
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;
|
|
self.last_z_coordinate = 0.0;
|
|
|
|
while ( true )
|
|
{
|
|
player_speed = distance( ZERO_VEC3, self getvelocity() );
|
|
current_speed = int( player_speed );
|
|
|
|
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;
|
|
if (late <= 500)
|
|
{
|
|
iPrintLn( "Late RPG (+" + (late) + ")" );
|
|
}
|
|
|
|
self.last_rpg_shot = 0;
|
|
}
|
|
}
|
|
|
|
self.last_z_coordinate = self.origin[2];
|
|
|
|
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 );
|
|
|
|
self freezeControls( false );
|
|
|
|
self takeAllWeapons();
|
|
|
|
self giveWeapon( "iw5_usp45_mp" );
|
|
self giveMaxAmmo( "iw5_usp45_mp" );
|
|
|
|
self giveWeapon( "rpg_mp" );
|
|
self giveMaxAmmo( "rpg_mp" );
|
|
|
|
wait 1;
|
|
self switchToWeaponImmediate( "iw5_usp45_mp" );
|
|
|
|
_ON_PLAYER_SPAWNED_END
|