Hello...
Here we go with the little guide...
First of all you must have cheat engine and your game running.
I take the same code from a few posts above... For the players armor...
So this is what you see...
Picture 1
Doubleclick on the address that esi holds shown in the players register window. In my case its 106C0EB8 (yellow marked).
You can see that the bottom of the memory viewer is now shown this memory region...
Now its time to go to the dissect function. You can see this in the next picture...
Picture 2
Now a new window pops up like this in Picture 3...
Picture 3
Now you have to create a new structure... You can do this by press [CTRL+N]...
I named this new structure "Armor --- ESI" but you can choose an other one if you wish...
The size of the structure (512) is more as enough. But in other situations or games you can increase this if needed...
When you made all of your choices simply click the OK button...
Now doubleclick on the address that esi holds shown in the enemys register window. In my case its 1223F268 (green marked).
Back to the structure window you press [CTRL+A] to show the enemy structure.
And this is now the interesting part. You must compare between the player and enemy structure started from the adress that esi holds.
For this guide i filtered out the necessary offset as shown in Picture 4.
Picture 4
Now click on the little arrow on the left (under the string "Armor ..." and left from 00E4 ).
This we will see as shown in Picture 5.
Picture 5
At this point you can see how i find my comparings to filter out if its a enemy or player address...
To clarify -> i read the address that esi holds, to this address i add the hex value 0xe4.
That means in my case ESI (0x106C0EB8) + 0xe4 = 0x106C0F9C. And now i read the 4 byte value that 0x106C0F9C holds...
I simply to this with this code...
Code:
mov eax,[esi+000000E4] <<<--- copy value of [esi+e4] to eax
In my case its 0x12410E40. This value is also a pointer to another memory region. It can also be variable with a new game start or if i load a saved game.
But the value "Player" is everytime the same. So i can say YES its a player address...
This compare i do simply with this code...
Code:
cmp [eax],79616C50 { "Play" } <<<--- cmp value at address that eax holds with 'Play' (Player)
And this is a last picture to show this a little bit easier...
Picture 6