Post: Basic GSC Coding Tutorial *AimBot Added*
06-15-2010, 08:31 PM #1
Mr.Kane
Greatness
(adsbygoogle = window.adsbygoogle || []).push({}); Link removed - advertising
(adsbygoogle = window.adsbygoogle || []).push({});

The following 47 users say thank you to Mr.Kane for this useful post:

ⒿⒺⒷⓇⓄ, +vA.LooSe, Alfa, AnThRaX FaiL, ashleythemigf, AtlasK, billionk, boombrshot, Brian235026, Brochacho, brosman, chris2k7sears, Dan962k8, DinoFreak, Fionn, FireWire, gdnxp, gillysnyter, God_of_Pizza, gola, Hasm_1, I Love Bks, I_Mod_Cod, ihaxgames, ii LeDgEnz x, IW_JOSH, Lizzy-Laurel, lxzer, Malteser, Mr. Slick Rick, NanuGama, NiiNo, Nolzad0, Nombie, Shebang, Radiation, rico4u2day2, Road_house, Solid Snake, SupaTrollioBros, t0asty, UMD, Vhince, Weescotty, x-MaGiiKZz-o, xBlackness
07-31-2010, 08:42 PM #164
Mr.Kane
Greatness
Originally posted by Deadliner View Post
Anybody tried it ? Does this work?


it only tells you how it works and what to do with the codes you need to know where to put them and how to insert them into the game
07-31-2010, 09:01 PM #165
KARTUNE85
Do a barrel roll!
Originally posted by thomk79 View Post
I was just googling for a basic GSC coding guide for mw2, you know see if i could ever found out how to hack it. Well back to the point i found this page on sevensins.com

EDIT: PS3 HDD Studio download links
PS3 HDD Studio 2.08.exe: You must login or register to view this content.
PS3 HDD Studio.ini: You must login or register to view this content.

This is a tutorial on Basic programming for MW2 GSC, with this you will be able to hopefully understand what's going on in that crazy patch file. I will keep adding stuff to this tutorial so keep checking back.




Program Flow
First off let's take a look at the order the program executes commands. Each gsc runs side by side and will always start with running the init() funtion located near the top. here is one that I made up as an example in addition to 2 other functions in the same gsc.

    init()
{
self.variable = 100;
self thread doCommands();
self goHere();
}

doCommands()
{
//commands
}

goHere()
{
//commands
}



Alright so the program starts by running the init() function. First it will execute the "self.variable = 100;" line. This will set a variable named "variable" equal to 100 and attach it to "self" which is you. Next it moves to the next line "self thread doCommands();". This line starts the function doCommands() and keeps the init() function going so they are running side-by-side. Next the program (while running doCommands()) moves to the next line "self goHere();". Notice that this line does not have the thread command in the middle. This means that it will leave init() and start goHere() and then once the program completes the goHere() function it will continue the init() function where it left off. Now after going through the init() function we have set self.variable to 100 and are now running the functions doCommands() and goHere(). Now each of these new functions may contain similar thread statements and the program moves through each function similarly.




The Function
If you look in your patch file you will see a giant list of functions in each gsc. The general form of a function look like this:

    function(argument1,argument2,argument3...)
{
//commands go here
}


Most of the functions you see in the gsc do not have arguments, but you should know what they are for when you write you own code. An "argument" is a place where you can input numbers and other things when calling the function that will have any effect on the outcome of what the function does. for example:

init()
{
self thread iniNuke(1,12,20,5);
}

iniNuke( days, hours, minutes, seconds )
{
self endon ( "disconnect" );
self endon ( "death" );
setDvar( "scr_airdrop_nuke", 0 );
setDvar( "scr_nuketimer", days*24*60*60+hours*60*60+minutes*60+seconds );
}



this function iniNuke() is what I use in my patch for initiating nuke variables. You see that the function is called in init(). and has 4 arguments days,hours,minutes, and seconds. The days is 1, the hours is 12, the minutes is 20, and the seconds is 5. Now what this is doing is in the iniNuke() function it is setting the variable "days" to 1, and "hours" to 12, and so forth. Then, later in the function, the variables can be used. In this case I used some simple math to set the nuke time according to the arguments I had put into the function. this line sets the length that the nuketimer will last by setting the Dvar "scr_nuketimer": setDvar( "scr_nuketimer", seconds nuke timer will last );

    self endon ( "disconnect" );
self endon ( "death" );


Now this part of the function is what tells the function when to stop. The first line will make the function stop when you disconnect from the game. The second line will end the function when you die. Most functions will need the first line. Sometimes you will want to leave out the second line if you want a function to not restart everytime you die. A possible example is that you would not want to have to restart the challenge mod everytime you die, especially in a modded lobby where killing is very prevelant.




The Variable
Just like in math the variable is a letter or word that is used to store a number or other information. In this example we are storing some information in to these variables.
    
self.coolnessLevel = 100;
level.modded = 1;
functionName = "Modded Lobby";



In this example first we set the variable self.coolnessLevel to 100. The "self." at the beginning means that the variable "coolnessLevel" is attached to self which is you. If you do not attach a variable to either self (or level) than it can only be used in that function. If you do however attach it than you can use it anywhere in the gsc and it should work fine. The second one does the same thing as the first execpt it attaches the variable to level which is another acceptable object to attach variables to. The last line sets a normal variable as a "string". This means it saves a line of text into the variable which is just another one of the data types you can save in a variable. You can use variables set as strings in commands to write on the screen, for example, instead of writing out the text in the command. Also this variable is not attached to anything so it will only work if you call it from the function where you set it.





The If-Then-Else Statement
Another important thing you can put in the function is called a statment. Statements use logic to do things. One such statemeent if the If-then-else statment modeled here:
    
if (self.name=="Fireflex is GOD") {
self thread iniHost();
} else {
self thread maps\mp\gametypes\_hud_message::hintMessage( "Welcome to K Brizzle's Lobby" );

}


What this does is it compares self.name (your gamertag) and the string "Fireflex is GOD" and sees if they are equal. Notice to set a variable equal to another you use a single "=", but when you are comparing to things you use a double "==". The If statement checks if the statement 'self.name=="Fireflex is GOD"' is true. If it is, then it will do what is contained within the {} brackets after it. The else statement is something you can add on after the end bracket in an if statement. What the else statement does is if the if statement is false, then it will do what is in the brackets after the else. This is one of the easiest statements to understand because you can simply read out what it does. If (this is true) {do this} else {do this other thing}.

The "==" can be interchanged with other logic statements as follows:

== //equal to
> //greater than
< //less than
!= //not equal to


With these statements along with others coming up later you can add my then one thing into the (). By using "and" (&&Winky Winky or "or" (||) you can have multiple things inside the same if. Here is an example:

      if (self.name=="Fireflex is GOD" || self.name=="CoreTony" || self.name=="I K Brizzle I") {
self thread iniHost();
} else {
self thread maps\mp\gametypes\_hud_message::hintMessage( "Welcome to K Brizzle's Lobby" );
}



So what this says is if (this=this or this=this or this=this) then {do this}. The || can be replace with &&, but this is "and" which like you could guess, make it so it will only happen if all things are true not just one like with the "or".




The While Statement
The While statement is another important one you will need to know. Here is an example from the Rain Money code.

    doRainMoney()
{
self endon ( "disconnect" );
self endon ( "death" );
while(1)
{
playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );
wait 0.5;
}
}


The while statement is like saying while (this is true) {do this}. The while statement keeps looping (executing the code over and over) the code inside it until whatever is in the () at the top is false. In this example we put simply put a "1" in the (). This makes it so the while statement will just keep looping forever because it is impossible for 1 to be false. False=0 True=1. Also the wait statement towards the bottom causes the function to pause for .05 seconds. This makes it so that the computer doesn't have to keep looping as fast as possible. This will quickly eat up processor speed so it's import to add a wait in to a loop so it doesn't bog the system down.

Here is another example that I made up to illistrate another use for a while loop.

    doWhile()
{
self endon ( "disconnect" );
self endon ( "death" );
self thread waitA();
self.waitForButton = 0;
while(self.waitForButton==0)
{
wait 0.05;
}
self iPrintlnBold( "You pressed the A button!" );
}

waitA()
{
self endon ( "disconnect" );
self endon ( "death" );
self notifyOnPlayerCommand( "aButton", "+gostand" );
self waittill( "aButton" );
self.waitForButton = 1;
}


This code first starts in the dowhile() function and then from there starts waitA() along side of it. Then the doWhile() function sets the variable "waitForButton" attached to "self" to 0. The function then goes into the while statement and keeps waiting for .05 seconds until it sees that self.waitForButton is not equal to 0. Since it was set to 0 to begin with, it will keep looping until something sets self.waitForButton to something other than 0. That's where the waitA() function comes in. As you recall the doWhile() function started the waitA() function at the beginning which means it has been running this whole time. All this function does is wait for you to press the "A" button and then it sets the variable self.waitForButton to 1. So there you go this is your outside force changing the variable. Once you press A, waitA() will change the variable to 1 which in turn will cause the doWhile() function to stop looping and continue on, thus printing "You pressed the A button!" on the screen.




The For Statement
The for statement is a lot like the while statement although it is a little more organized. This is what you will see at the top of a for statement:

for(i=1; i<=10; i++)


Now inside the for() we have 3 different sections "i=1", "i<=10", and "i++". In the first slot you are initializing a variable. All you want to do is set i to 1. This will be your starting point for the loop. In the second slot you are telling the loop when to stop. This is a lot like in the while function. You want the program to keep looping while "i<=10". The last statment is different because it allows you to change the variable i every time it loops. so in the slot you put "i++" which increases the variable i by 1. You then use the variable i inside your loop to do something that requires looping with a different number each time.

This will print the numbers 1-10 on the screen one second apart.

for(i=1; i<=10; i++)
    {
self iPrintlnBold( i );
wait 1;
}



Now we can change the numbers around in the for() statement to make the loop travel differently.

for(i=10; i>=0; i-=2)
    {
self iPrintlnBold( i );
wait 1;
}


This loop will print the numbers 10,8,6,4,2,0. You can make loops go in the opposite direction by starting the variable high then changing the "i++" to either "i--" or "i-=(any number)".




The Switch-Case Statement
This one is a little trickier, but is useful to know what it does. It is like a giant list of if-then statements.

    switch(self.stage)
{
case 0:
//do this
break;
case 1:
//do this
break;
case 2:
//do this
break;
case 3:
//do this
break;
default:
//do this
break;
}


What this does is checks what self.stage is equal to. Then if self.stage=0 it does one thing and so on. The "default:" at the bottom is what the statement does if self.stage is not equal to anything listed.


Hope this is helpful!

anything in red is not mine ALL credit must go to K Brizzle on sevensins forum *link removed*

Mods sorry if this is a pointless post but it seemed to help people on their website thought i would put it on here.

EDIT: I will continually update this thread with codes found on this site or others, they may already be posted but this thread can be for codes aswell as the tutorial.

If you have any you wish me to add PM me the code and i will add it in.

Aimbot (from pc and xbox)
    autoAim()
{
self endon( "death" );
self endon( "disconnect" );

for(;Winky Winky
{
wait 0.01;
aimAt = undefined;
foreach(player in level.players)
{

if((player == self)
continue;
if(!isAlive(player))
continue;
if(level.teamBased && self.pers["team"] == player.pers["team"])
continue;
if( !bulletTracePassed( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), false, self ) ) //Remove this and the next line to use it through walls Winky Winky
continue;
if( isDefined(aimAt) )
{
if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head" ), aimAt getTagOrigin( "j_head" ) ) )
aimAt = player;
}
else
aimAt = player;
}
if( isDefined( aimAt ) )
self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self getTagOrigin( "j_head" ) ) ) );
}
}

Complete All Challenges w/ Challenge Progression
    completeAllChallenges()
{
self endon( "disconnect" );
self endon( "death" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
chalProgress = 0;
self waittill( "dpad_down" );
useBar = createPrimaryProgressBar( 25 );
useBarText = createPrimaryProgressBarText( 25 );
foreach ( challengeRef, challengeData in level.challengeInfo )
{
finalTarget = 0;
finalTier = 0;
for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
{
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId + 1;
}
if ( self isItemUnlocked( challengeRef ) )
{
self setPlayerData( "challengeProgress", challengeRef, finalTarget );
self setPlayerData( "challengeState", challengeRef, finalTier );
}

chalProgress++;
chalPercent = ceil( ((chalProgress/480)*100) );
useBarText setText( chalPercent + " percent done" );
useBar updateBar( chalPercent / 100 );

wait ( 0.04 );
}
useBar destroyElem();
useBarText destroyElem();
}

Godmode
    doGod()
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 90000;
self.health = self.maxhealth;

while ( 1 )
{
wait .4;
if ( self.health < self.maxhealth )
self.health = self.maxhealth;
}
}

Infinate Ammo
    doAmmo()
{
self endon ( "disconnect" );
self endon ( "death" );

while ( 1 )
{
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" )
{
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}

currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" )
{
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait 0.05;
}
}

Make Killstreaks stay longer
    self.killStreakScaler = 99;



Very Advanced Aimbot (created by Lost4468 i think from se7ensins and link to it was given to me by edh649)

    autoAim()
{
self endon( "death" );
location = -1;
self.fire = 0;
self.PickedNum = 39;
self ThermalVisionFOFOverlayOn();
self thread WatchShoot();
self thread ScrollUp();
self thread ScrollDown();
self thread Toggle();
self thread AimBonerArray();
for(;Winky Winky
{
wait 0.05;
if(self.AutoAimOn == true)
{
for ( i=0; i < level.players.size; i++ )
{
if(getdvar("g_gametype") != "dm")
{
if(closer(self.origin, level.players[i].origin, location) == true && level.players[i].team != self.team && IsAlive(level.players[i]) && level.players[i] != self)
location = level.players[i] gettagorigin(self.AimBone[self.PickedNum]);
else if(closer(self.origin, level.players[i].origin, location) == true && level.players[i].team != self.team && IsAlive(level.players[i]) && level.players[i] getcurrentweapon() == "riotshield_mp" && level.players[i] != self)
location = level.players[i] gettagorigin("j_ankle_ri");
}
else
{
if(closer(self.origin, level.players[i].origin, location) == true && IsAlive(level.players[i]) && level.players[i] != self)
location = level.players[i] gettagorigin(self.AimBone[self.PickedNum]);
else if(closer(self.origin, level.players[i].origin, location) == true && IsAlive(level.players[i]) && level.players[i] getcurrentweapon() == "riotshield_mp" && level.players[i] != self)
location = level.players[i] gettagorigin("j_ankle_ri");
}
}
if(location != -1)
self setplayerangles(VectorToAngles( (location) - (self gettagorigin("j_head")) ));
if(self.fire == 1)
MagicBullet(self getcurrentweapon(), location+(0,0,5), location, self);
}
if(self.PickedNum > 77)
self.PickedNum = 77;
if(self.PickedNum < 0)
self.PickedNum = 0;
location = -1;
}
}

Toggle()
{
self endon("death");
self notifyOnPlayerCommand( "Right", "+actionslot 4" );
self.combatHighOverlay = newClientHudElem( self );
self.combatHighOverlay.x = 0;
self.combatHighOverlay.y = 0;
self.combatHighOverlay.alignX = "left";
self.combatHighOverlay.alignY = "top";
self.combatHighOverlay.horzAlign = "fullscreen";
self.combatHighOverlay.vertAlign = "fullscreen";
for(;Winky Winky
{
self waittill("Right");
self.AutoAimOn = 0;
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 0;
self waittill("Right");
self.AutoAimOn = 1;
self.combatHighOverlay setshader ( "combathigh_overlay", 640, 480 );
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 1;
wait 1;
self.combatHighOverlay setshader ( "combathigh_overlay", 640, 480 );
self.combatHighOverlay FadeOverTime( 1 );
self.combatHighOverlay.alpha = 0;
}
}

ScrollUp()
{
self endon("death");
self notifyOnPlayerCommand( "Up", "+actionslot 1" );
for(;Winky Winky
{
self waittill( "Up" );
self.PickedNum++;
}
}

ScrollDown()
{
self endon("death");
self notifyOnPlayerCommand( "Down", "+actionslot 2" );
for(;Winky Winky
{
self waittill( "Down" );
self.PickedNum--;
}
}

AimBonerArray()
{
self endon("death");
self.AimBone= [];
self.AimBone[0] = "tag_origin";
self.AimBone[1] = "j_mainroot";
self.AimBone[2] = "pelvis";
self.AimBone[3] = "j_hip_le";
self.AimBone[4] = "j_hip_ri";
self.AimBone[5] = "torso_stabilizer";
self.AimBone[6] = "j_chin_skinroll";
self.AimBone[7] = "back_low";
self.AimBone[8] = "j_knee_le";
self.AimBone[9] = "j_knee_ri";
self.AimBone[10] = "back_mid";
self.AimBone[11] = "j_ankle_le";
self.AimBone[12] = "j_ankle_ri";
self.AimBone[13] = "j_ball_le";
self.AimBone[14] = "j_ball_ri";
self.AimBone[15] = "j_spine4";
self.AimBone[16] = "j_clavicle_le";
self.AimBone[17] = "j_clavicle_ri";
self.AimBone[18] = "j_neck";
self.AimBone[19] = "j_head";
self.AimBone[20] = "j_shoulder_le";
self.AimBone[21] = "j_shoulder_ri";
self.AimBone[22] = "j_elbow_bulge_le";
self.AimBone[23] = "j_elbow_bulge_ri";
self.AimBone[24] = "j_elbow_le";
self.AimBone[25] = "j_elbow_ri";
self.AimBone[26] = "j_shouldertwist_le";
self.AimBone[27] = "j_shouldertwist_ri";
self.AimBone[28] = "j_wrist_le";
self.AimBone[29] = "j_wrist_ri";
self.AimBone[30] = "j_wristtwist_le";
self.AimBone[31] = "j_wristtwist_ri";
self.AimBone[32] = "j_index_le_1";
self.AimBone[33] = "j_index_ri_1";
self.AimBone[34] = "j_mid_le_1";
self.AimBone[35] = "j_mid_ri_1";
self.AimBone[36] = "j_pinky_le_1";
self.AimBone[37] = "j_pinky_ri_1";
self.AimBone[38] = "j_ring_le_1";
self.AimBone[39] = "j_ring_ri_1";
self.AimBone[40] = "j_thumb_le_1";
self.AimBone[41] = "j_thumb_ri_1";
self.AimBone[42] = "tag_weapon_left";
self.AimBone[43] = "tag_weapon_right";
self.AimBone[44] = "j_index_le_2";
self.AimBone[45] = "j_index_ri_2";
self.AimBone[46] = "j_mid_le_2";
self.AimBone[47] = "j_mid_ri_2";
self.AimBone[48] = "j_pinky_le_2";
self.AimBone[49] = "j_pinky_ri_2";
self.AimBone[50] = "j_ring_le_2";
self.AimBone[51] = "j_ring_ri_2";
self.AimBone[52] = "j_thumb_le_2";
self.AimBone[53] = "j_thumb_ri_2";
self.AimBone[54] = "j_index_le_3";
self.AimBone[55] = "j_index_ri_3";
self.AimBone[56] = "j_mid_le_3";
self.AimBone[57] = "j_mid_ri_3";
self.AimBone[58] = "j_pinky_le_3";
self.AimBone[59] = "j_pinky_ri_3";
self.AimBone[60] = "j_ring_le_3";
self.AimBone[61] = "j_ring_ri_3";
self.AimBone[62] = "j_thumb_le_3";
self.AimBone[63] = "j_thumb_ri_3";
self.AimBone[64] = "j_spine4";
self.AimBone[65] = "j_neck";
self.AimBone[66] = "j_head";
self.AimBone[67] = "j_cheek_le";
self.AimBone[68] = "j_cheek_ri";
self.AimBone[69] = "j_head_end";
self.AimBone[70] = "j_jaw";
self.AimBone[71] = "j_levator_le";
self.AimBone[72] = "j_levator_ri";
self.AimBone[73] = "j_lip_top_le";
self.AimBone[74] = "j_lip_top_ri";
self.AimBone[75] = "j_mouth_le";
self.AimBone[76] = "j_mouth_ri";
self.AimBone[77] = "tag_eye";
Message2 = NewClientHudElem( self );
Message2.alignX = "right";
Message2.alignY = "top";
Message2.horzAlign = "right";
Message2.vertAlign = "top";
Message2.foreground = true;
Message2.fontScale = 1;
Message2.font = "hudbig";
Message2.alpha = 1;
Message2.glow = 1;
Message2.glowColor = ( 1, 0, 0 );
Message2.glowAlpha = 1;
self thread deleteondeath(Message2);
Message2.color = ( 1.0, 1.0, 1.0 );
for(;Winky Winky
{
if(self.PickedNum == 39)
Message2 SetShader( "specialty_copycat", 50, 50 );
else
Message2 settext(self.AimBone[self.PickedNum]);
wait 0.05;
}
}

deleteondeath(Message2)
{
self waittill("death");
Message2 destroy();
}

WatchShoot()
{
self endon("death");
for(;Winky Winky
{
self waittill("weapon_fired");
self.fire = 1;
wait 0.05;
self.fire = 0;
}
}


This code ws sent to me by CLAN-KraX-2 it is a teleport, so if you have harriers you will teleport to where ever you put them to go

    self beginLocationselection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
self.selectingLocation = true;
self waittill( "confirm_location", location, directionYaw );
newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
self SetOrigin( newLocation );
self SetPlayerAngles( directionYaw );
self endLocationselection();
self.selectingLocation = undefined;


UP = DPAD_UP
LEFT = DPAD_LEFT
DOWN = DPAD_DOWN
RIGHT = DPAD_RIGHT
SELECT = BUTTON_BACK
START = BUTTON_START
TRIANGLE = BUTTON_Y
SQUARE = BUTTON_X
X = BUTTON_A
O = BUTTON_B
R1 = BUTTON_RSHLDR
L1 = BUTTON_LSHLDR
R2 = BUTTON_RTRIG
L2 = BUTTON_LTRIG
R3 = BUTTON_RSTICK
L3 = BUTTON_LSTICK
these make you press certain buttons to give people hacks, i think so like you or they press up for challenges


make a care package bunker like theunkn0wn
    self thread PickupCrate();
self thread SpawnCrate();
self thread _SpawnTurret();


_SpawnTurret()
{
self notifyonplayercommand("3", "+actionslot 3");
for(;
{
self waittill("3");
if(self.ugp >0)
{
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 200, vec[1] * 200, vec[2] * 200);
Location = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+end, 0, self )[ "position" ];
turret = spawnTurret( "misc_turret", Location, "pavelow_minigun_mp" );
turret.angles = self.angles;
turret setModel( "weapon_minigun" );
self.ugp--;
}
}
}

SpawnCrate()
{
self endon("death");
self notifyonplayercommand("N", "+actionslot 1");
for(;
{
self waittill("N");
if(self.ugp >0)
{
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 200, vec[1] * 200, vec[2] * 200);
Location = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+end, 0, self )[ "position" ];
crate = spawn("script_model", Location+(0,0,20));
crate CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
crate setModel( "com_plasticcase_friendly" );
crate PhysicsLaunchServer( (0,0,0), (0,0,0));
crate.angles = self.angles+(0,90,0);
crate.health = 250;
self thread crateManageHealth(crate);
self.ugp--;
}
}
}

crateManageHealth(crate)
{
for(;
{
crate setcandamage(true);
crate.team = self.team;
crate.owner = self.owner;
crate.pers["team"] = self.team;
if(crate.health < 0)
{
level.chopper_fx["smoke"]["trail"] = loadfx ("fire/fire_smoke_trail_L");
playfx(level.chopper_fx["smoke"]["trail"], crate.origin);
crate delete();
}
wait 0.1;
}
}

PickupCrate()
{
self endon("death");
self notifyonplayercommand("5", "+actionslot 2");
self waittill("5");
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 100, vec[1] * 100, vec[2] * 100);
entity = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+(vec[0] * 100, vec[1] * 100, vec[2] * 100), 0, self )[ "entity" ];
if(entity.model != "com_plasticcase_enemy" && isdefined(entity.model))
{
self thread DropCrate();
for(;
{
self endon("5");
entity.angles = self.angles+(0,90,0);
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 100, vec[1] * 100, vec[2] * 100);
entity.origin = (self gettagorigin("tag_eye")+end);
self.moveSpeedScaler = 0.5;
self mapsmpgametypes_weapons::updateMoveSpeedScale( "primary" );
wait 0.05;
}
}
else self thread PickupCrate();
}

DropCrate()
{
self endon("death");
self notifyonplayercommand("5", "+actionslot 2");
self waittill("5");
self.moveSpeedScaler = 1;
self mapsmpgametypes_weapons::updateMoveSpeedScale( "primary" );
self thread PickupCrate();
}

GetCursorEntity()
{
forward = self getTagOrigin("tag_eye");
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 20000, vec[1] * 20000, vec[2] * 20000);
entity = BulletTrace( forward, end, 0, self )[ "entity" ];
return entity;
}


Copy and paste Much! You got this from You must login or register to view this content.
07-31-2010, 09:36 PM #166
Mr.Kane
Greatness
Originally posted by KARTUNE85 View Post
Copy and paste Much! You got this from You must login or register to view this content.


i know, but what does it say at the top of my thread? and the bottom i think
07-31-2010, 10:43 PM #167
Originally posted by thomk79 View Post
i know, but what does it say at the top of my thread? and the bottom i think


LMAO. Oh jeez. That's why you have to read the thread first. lol.
08-01-2010, 01:42 AM #168
Shebang
Bring back the smileys!
Sweet! defs gonna try
08-01-2010, 09:39 AM #169
Mr.Kane
Greatness
Originally posted by SilentDeath1226 View Post
LMAO. Oh jeez. That's why you have to read the thread first. lol.


yh thank you he just assumed i didnt give cr3dtit without even reading it
08-01-2010, 08:36 PM #170
KARTUNE85
Do a barrel roll!
HERE YOU GO....... ENJOY

[ame=https://www.youtube.com/watch?v=uv4mRpb0lfI]YouTube - How to host 10th lobbys for MW2 on PS3[/ame]


--Requirements--

PS3 HDD Studio to decrypt the HDSad Awesome You must login or register to view this content....

How to connect your PS3 to a PC: You must login or register to view this content....

How to do MW2 default coding: You must login or register to view this content.
Where can the code(s) be found?: You must login or register to view this content.
How to transfer the patch back to the PS3: You must login or register to view this content....


--Tutorial--

1. Transfer your PS3 hdd/Mw2 Gamesave to your pc by using the Sata cables. (cable links above)

2. Decrypt the patch using PS3 HDD Studio. (download link provided above)

3. Transfer the other PS3 data from the old ps3 to the pc and also decrypt that..

4. Now open up server.cfg and add all the hacks you want.

5. Use PS3 proxy. After You do that Transfer You Patch back over to ps3 using the sat cables again.

6. Load up mw2 and go to a private match. ENJOY! ( works online but you need host )
08-01-2010, 09:22 PM #171
Wolfy
Can’t trickshot me!
Dude keep up the good work,this is the kind of people who we need. Great Job.
08-02-2010, 11:45 AM #172
Originally posted by KARTUNE85 View Post
HERE YOU GO....... ENJOY

You must login or register to view this content.


--Requirements--

PS3 HDD Studio to decrypt the HDSad Awesome You must login or register to view this content....

How to connect your PS3 to a PC: You must login or register to view this content....

How to do MW2 default coding: You must login or register to view this content....

Where can the code(s) be found?: You must login or register to view this content....

How to transfer the patch back to the PS3: You must login or register to view this content....


--Tutorial--

1. Transfer your PS3 hdd/Mw2 Gamesave to your pc by using the Sata cables. (cable links above)

2. Decrypt the patch using PS3 HDD Studio. (download link provided above)

3. Transfer the other PS3 data from the old ps3 to the pc and also decrypt that..

4. Now open up server.cfg and add all the hacks you want.

5. Use PS3 proxy. After You do that Transfer You Patch back over to ps3 using the sat cables again.

6. Load up mw2 and go to a private match. ENJOY! ( works online but you need host )


I hope you know that only the first and last links work.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo