// Call Of Duty: Modern Warfare 2 init() { setDvar( "bg_bounces", 1 ); thread onPlayerConnect(); } onPlayerConnect() { while ( true ) { level waittill( "connected", player ); if ( player isTestClient() ) { continue; } player notifyOnPlayerCommand( "save_pos", "+melee" ); player notifyOnPlayerCommand( "load_saved_pos", "+activate" ); player thread onPlayerSpawned(); player thread onWeaponFired(); player thread jumper(); player thread displaySpeed(); } } // deserteagle_mp // rpg_mp onPlayerSpawned() { self endon( "disconnect" ); for ( ;; ) { 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" ); for ( ;; ) { self waittill( "weapon_fired", weapon ); if (weapon == "rpg_mp") { self.last_rpg_shot = getTime(); } } } displaySpeed() { 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; self.last_z_coordinate = 0.0; while ( true ) { player_speed = distance( ( 0, 0, 0 ), 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() { level endon( "game_ended "); self endon( "disconnect" ); 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; } 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( (0, 0, 0) ); self setPlayerAngles( self.jumper_angles ); self iPrintLn( "loaded pos ", self.jumper_pos_num, "\n" ); } } }