![]() |
|
(Xbox 360) Modern Warfare 2: Moving and manipulating carepackages (Tutorial) - Printable Version +- Sick Gaming (https://sickgaming.net) +-- Forum: Console, Mobile, and PC Gaming (https://sickgaming.net/forum-119.html) +--- Forum: Xbox Discussion (https://sickgaming.net/forum-11.html) +--- Thread: (Xbox 360) Modern Warfare 2: Moving and manipulating carepackages (Tutorial) (/thread-114646.html) |
(Xbox 360) Modern Warfare 2: Moving and manipulating carepackages (Tutorial) - xSicKxBot - 11-12-2010 (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 |