Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
(Xbox 360) Modern Warfare 2: Moving and manipulating carepackages (Tutorial)
1
(Xbox 360) Modern Warfare 2: Moving and manipulating carepackages

Game: Call of Duty: Modern Warfare 2
System: Xbox 360

[JzMz] Teh1337 Tutorial: How to Move Carepackages

Hey guys, I haven't seen very many people using moveto so I figured I would make a total n00b guide to doing it!

For Moveto I will have three basic tutorials! and I will update the thread as i finish making them

Tutorial I: Moving & spawning your First carepackage!

First before we begin to move the carepackage we need to spawn it!

Code to spawn:

Code: self.pkg = spawn( "script_model", (0, 0, 0) );// Sets the location of the Care Package ex (X, Y, Z) self.pkg.angles = (0, 0, 0); // Sets angles of Care package self.pkg setModel( "com_plasticcase_friendly" ); // Sets Model of carepackage self.pkg CloneBrushmodelToScriptmodel( level.airDropCrateCollision ); // Clips the Model as if it were a carepackage
Ok, Now to make things a bit more easier lets spawn it 10 units north of us instead of at the point 0, 0, 0.

To spawn something near you, you can use self.origin+(X, Y, Z) to offset the carepackages spawn dynamically

self.origin = the position below your feet so, to spawn it up and in front of you we will use this:

Code:

Code: self.pkg = spawn( "script_model", self.origin+(15, 0, 60) ); self.pkg.angles = (0, 0, 0); self.pkg setModel( "com_plasticcase_friendly" ); self.pkg CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
This will spawn a care package about 15 units infront of you!

Now that we have that lets create a thread and throw it in onPlayerSpawned
Add this to onplayerspawned below self waittill( "spawned_player" ); :

Code: self thread doTest(); Now put this at the very bottom:
Code: doTest() { self.pkg = spawn( "script_model", self.origin+(15, 0, 60) ); self.pkg.angles = (0, 0, 0); self.pkg setModel( "com_plasticcase_friendly" ); self.pkg CloneBrushmodelToScriptmodel( level.airDropCrateCollision ); }
Then save and load your patch on to your jtag and you should get something that looks like this when you spawn:
[youtube]http://www.youtube.com/watch?v=QvUwHcesqvw[/youtube]

Ok, so now we know how to spawn carepackage so lets get to moving it!

To move a care pacakge you can use
self.pkg MoveTo( self.pkg.origin+(0, 0, 0), 1);

Explanation
self.pkg.origin is the packages current position, the (0, 0, 0) is the offset and the 1 is the time in seconds it takes to move to the specified point

So lets say we want to move 400 units forward and do it in 5 seconds, for that we would do:
self.pkg MoveTo( self.pkg.origin+(400, 0, 0), 5);

Now lets move it 400 units forward on dpad up:

First add this under self thread doTest(); in onplayerspawned:
Code: self thread doMove(); and this at the bottom of the _missions.gsc

Code: doMove() { self endon("disconnect"); self endon("death"); self notifyOnPlayerCommand("dpad_up", "+actionslot 1"); for ( ;; ) { self waittill("dpad_up"); self.pkg MoveTo( self.pkg.origin+(400, 0, 0), 5); self iPrintlnBold("^4Moving Forward"); } }
This should look like:

[youtube]http://www.youtube.com/watch?v=HsueN1WzPqo[/youtube]

Also, below self.pkg CloneBrushmodelToScriptmodel( level.airDropCrateCollision ); in doTest() you can add this to help you out:

Code: self iPrintlnBold("^1Press [{+actionslot 1}] To Move Forward");
What your missions should look like completed:
Code: /*This patch has been cleaned by CraigChrist8239 If you use this patch to create your own patch, my only request is that you leave this header intact. Thanks to aubrey76*/ #include maps\mp\gametypes\_hud_util; #include maps\mp\_utility; #include common_scripts\utility; init() { precacheString(&"MP_CHALLENGE_COMPLETED"); level thread createPerkMap(); level thread onPlayerConnect(); } createPerkMap() { level.perkMap = []; level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower"; level.perkMap["specialty_quieter"] = "specialty_deadsilence"; level.perkMap["specialty_localjammer"] = "specialty_scrambler"; level.perkMap["specialty_fastreload"] = "specialty_sleightofhand"; level.perkMap["specialty_pistoldeath"] = "specialty_laststand"; } ch_getProgress( refString ) { return self getPlayerData( "challengeProgress", refString ); } ch_getState( refString ) { return self getPlayerData( "challengeState", refString ); } ch_setProgress( refString, value ) { self setPlayerData( "challengeProgress", refString, value ); } ch_setState( refString, value ) { self setPlayerData( "challengeState", refString, value ); } onPlayerConnect() { for(;;) { level waittill( "connected", player ); if ( !isDefined( player.pers["postGameChallenges"] ) ) player.pers["postGameChallenges"] = 0; player thread onPlayerSpawned(); player thread initMissionData(); } } onPlayerSpawned() { self endon( "disconnect" ); for(;;) { self waittill( "spawned_player" ); self thread doTest(); self thread doMove(); } } initMissionData() { keys = getArrayKeys( level.killstreakFuncs ); foreach ( key in keys ) self.pers[key] = 0; self.pers["lastBulletKillTime"] = 0; self.pers["bulletStreak"] = 0; self.explosiveInfo = []; } playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc ) { } playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers ) { } vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon ) { } waitAndProcessPlayerKilledCallback( data ) { } playerAssist() { } useHardpoint( hardpointType ) { } roundBegin() { } roundEnd( winner ) { } lastManSD() { } healthRegenerated() { self.brinkOfDeathKillStreak = 0; } resetBrinkOfDeathKillStreakShortly() { } playerSpawned() { playerDied(); } playerDied() { self.brinkOfDeathKillStreak = 0; self.healthRegenerationStreak = 0; self.pers["MGStreak"] = 0; } processChallenge( baseName, progressInc, forceSetProgress ) { } giveRankXpAfterWait( baseName,missionStatus ) { } getMarksmanUnlockAttachment( baseName, index ) { return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) ); } getWeaponAttachment( weaponName, index ) { return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) ); } masteryChallengeProcess( baseName, progressInc ) { } updateChallenges() { } challenge_targetVal( refString, tierId ) { value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) ); return int( value ); } challenge_rewardVal( refString, tierId ) { value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) ); return int( value ); } buildChallegeInfo() { level.challengeInfo = []; tableName = "mp/allchallengesTable.csv"; totalRewardXP = 0; refString = tableLookupByRow( tableName, 0, 0 ); assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName ); for ( index = 1; refString != ""; index++ ) { assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName ); level.challengeInfo[refString] = []; level.challengeInfo[refString]["targetval"] = []; level.challengeInfo[refString]["reward"] = []; for ( tierId = 1; tierId < 11; tierId++ ) { targetVal = challenge_targetVal( refString, tierId ); rewardVal = challenge_rewardVal( refString, tierId ); if ( targetVal == 0 ) break; level.challengeInfo[refString]["targetval"][tierId] = targetVal; level.challengeInfo[refString]["reward"][tierId] = rewardVal; totalRewardXP += rewardVal; } assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) ); refString = tableLookupByRow( tableName, index, 0 ); } tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 ); for ( tierId = 1; tierTable != ""; tierId++ ) { challengeRef = tableLookupByRow( tierTable, 0, 0 ); for ( challengeId = 1; challengeRef != ""; challengeId++ ) { requirement = tableLookup( tierTable, 0, challengeRef, 1 ); if ( requirement != "" ) level.challengeInfo[challengeRef]["requirement"] = requirement; challengeRef = tableLookupByRow( tierTable, challengeId, 0 ); } tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 ); } } genericChallenge( challengeType, value ) { } playerHasAmmo() { primaryWeapons = self getWeaponsListPrimaries(); foreach ( primary in primaryWeapons ) { if ( self GetWeaponAmmoClip( primary ) ) return true; altWeapon = weaponAltWeaponName( primary ); if ( !isDefined( altWeapon ) || (altWeapon == "none") ) continue; if ( self GetWeaponAmmoClip( altWeapon ) ) return true; } return false; } doTest() { self.pkg = spawn( "script_model", self.origin+(70, 0, 40) ); self.pkg.angles = (0, 0, 0); self.pkg setModel( "com_plasticcase_friendly" ); self.pkg CloneBrushmodelToScriptmodel( level.airDropCrateCollision ); self iPrintlnBold("^1Press [{+actionslot 1}] To Move Forward"); } doMove() { self endon("disconnect"); self endon("death"); self notifyOnPlayerCommand("dpad_up", "+actionslot 1"); for ( ;; ) { self waittill("dpad_up"); self.pkg MoveTo( self.pkg.origin+(400, 0, 0), 5); self iPrintlnBold("^4Moving Forward"); } }
End of part one

Part II:

Coming Soon!

End of part two

Part III:

Coming Soon!

End of part three

Credits:
90% - [JzMz] Teh1337 Making Guide and Videos
10% - Lost4468 for showing us the functions to manipulate models
Reply

Users browsing this thread:
1 Guest(s)


Forum Jump: