Ok guys, Before i make Tutorial 4 for the trainer in c++ i'll have to explain some ASM to you. Because ASM (Assembly) is quite a big subject to fit into just 1 tutorial. i'll have to write few little tutorials to cover the basics. Then we can move on with C++ Trainers and hacks. Is Any Pros see something wrong with my tutorial leave a message and i'll correct it. What is Assembly? Assmebly is what all comes down to. what ever program you make will be kinda translated into ASM language. its the most basic, simplest form of programming language. What we need to remember When dealing with ASM in C++ ALWAYS PUT 0x in front of numbers. Lets look at a simple ASM code Code (Text): MOV EAX, 0x01 MOV = MOVE. It will move the value thats on the right hand side INTO the Variable on the left hand side. That would be like saying Following code isnt asm but its to prove an example MOV Can, Pepsi what is in the can now? Its Pepsi. Next thing we are going to look at is cmp Code (Text): CMP EAX, 0x01 CMP = Compare It will compare Left side(EAX) with the right (0x01). Depending on the result of the compare we can execute different code using Jumps example of cmp and jump would be Code (Text): MOV EAX, 0x01 CMP EAX, 0x01 JE valueIsSame JNE valueIsntSame If EAX is 0x01 valueIsSame will execute else if EAX is greater or lower than 0x01 valueIsntSame will execute In our case We Moved 0x01 into EAX, so EAX's Value is 0x01. Now lets look at the Jumps There are quite few Jumps available for us. We'll just cover the basic ones. JMP = JUMP // This will always jump to a label or address that comes after JE = JUMP IF EQUAL // This will only activate if cmp values are equal JNE = JUMP IF NOT EQUAL // This will only activate if cmp values arent equal. JG = JUMP IF GREATER // This will only run if left hand's value is greater than right hand's value JNG = JUMP IF NOT GREATER // If left hand value is lower than right hand value JL = JUMP IF LESS // If left hand value is less than right. JNL = JUMP IF NOT LESS // If left value is not less than right hand value Now lets have a look at Labels. Labels help us when we need to run a different kind of code depending on what our values are Code (Text): MOV EAX, 0x01 CMP EAX, 0x01 JE valueIsEqual JNE valueIsntEqual valueIsEqual: MOV EAX, 0x02 CMP EAX, 0x01 JL valueIsLess JG valueIsGreater valueIsntEqual: JMP valueIsGreater valueIsGreater: MOV EAX, 0x03 CMP EAX, 0x01 JE valueIsEqual JNE valueIsntEquail A label is made with a name of the label followed by a colon ( : ), A name can be Anything as long as it doesnt start With A number. The script above will start off by Moving 0x01 into EAX Then we Compare EAX with 0x01. if the value is equal we'll go to valueIsEqual if EAX isnt equal to 0x01 we go to valueIsntEqual In this case. EAX is 0x01. so we ignore the rest of the code and go to valueIsEqual we continue on by reading the values there We move 0x02 into EAX compare EAX with 0x01 now we are testing if EAX is less than or greater than 0x01. EAX is Greater than 0x01 so we go to the label valueIsGreater now we continue reading the code from valueIsGreater We move 0x03 into EAX Compare EAX with 0x01 Again we test if value is Equal or Not Equal in this case, EAX is not Equal to 0x01 So we go to valueIsntEqual valueIsntEqual only has 1 bit of code now every time value isnt equal. we are going to jump to valueIsGreater. and thus create a constant loop I'll Create 1 or 2 more of these tutorials to cover all things we need to start converting hacks like 7Miss Godmode, PVACs and other.