[Resource] MW2 Harriers in MW3... yes, HARRIERS in MW3
-
It was strange for me that in the IW5 scripts was the .gsc file of the harrier airstrike (maps/mp/killstreaks/_harrier.gsc), remembering that IW5 is a direct evolution of IW4 (MW2), and maybe the devs forget about deleting the file, idk.
How this was made was making Function HIjack, making this technique is for not editing the original file, but making one that has to do to the game compiler call the Harrier when somebody call the Airstrike.
*This script replaces the Airstrike killstreak, as a note.
After coding in reference of the functions of _harrier.gsc, _airstrike.gsc and understanding the utility.gsc (Because into MW2 and MW3, the IW devs deleted the "" of a lot of functions in comparation of the MW2 _utility.gsc, cleaning the .gsc file for MW3) and the interface of the map checkpoint selection in _killstreaks.gsc, i've finally made the .gsc file to replace the Airstrike to the Harrier.
isjuggernautweapon( weapon ) { return false; } init() { level.killstreakfuncs["airstrike"] = ::tryUseHarrierStrike; level.killstreakfuncs["precision_airstrike"] = ::tryUseHarrierStrike; } tryUseHarrierStrike( lifeId ) { self endon( "disconnect" ); self endon( "death" ); self thread harrierCleanupOnEnd(); if ( !maps\mp\_utility::validateusestreak() ) return 0; if ( isDefined( level.civilianjetflyby ) ) { self iPrintLnBold( &"MP_CIVILIAN_AIR_TRAFFIC" ); return 0; } if ( maps\mp\_utility::isusingremote() ) return 0; var_2 = level.mapsize / 6.46875; if ( level.splitscreen ) var_2 *= 1.5; maps\mp\_utility::_beginlocationselection( "airstrike", "map_artillery_selector", 0, var_2 ); self endon( "stop_location_selection" ); self waittill( "confirm_location", location, directionYaw ); directionYaw = randomint( 360 ); self setblurforplayer( 0, 0.3 ); thread maps\mp\killstreaks\_airstrike::finishairstrikeusage( lifeId, location, directionYaw, "harrier_airstrike" ); self notify( "harrier_strike_complete" ); return 1; } harrierCleanupOnEnd() { self.harrierCleanupPending = true; self thread harrierWatchEvent( "death" ); self thread harrierWatchEvent( "disconnect" ); self thread harrierWatchEvent( "harrier_strike_complete" ); } harrierWatchEvent( eventName ) { self waittill( eventName ); if ( !isDefined( self.harrierCleanupPending ) || !self.harrierCleanupPending ) return; self.harrierCleanupPending = false; if ( maps\mp\_utility::isusingremote() ) self maps\mp\_utility::clearusingremote(); } -
https://youtu.be/BdcjCkkMaD4?si=-EdRRHB3TJ_akBku. Link of the video demostration.
-
Amazing work! This looks super cool.