Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25288 Location: The netherlands
|
Posted: Sat Feb 21, 2004 5:39 am Post subject: |
|
|
If you're making a standalone trainer there are only 2 ways to solve this problem. (if you are just trying to make a cheat table you can use the "recalculate addresses option" after finding only 1 address)
1: Find the code that decrease those addresses and remove it.
Select the address where you want to find the code for and choose find out what writes to this address. Go play the game and make that item decrease. Then go back to Cheat Engine and the list should be filled with at least 1 address. The select that address, and click replace. (and stop else it just continues slowing down your computer) If everything went ok that address wont decrease anymore. (One problem with this is that it's possible that the code that decreased that value is also used for the computer player)
If you create a trainer now you can select the code from the list and the trainer you make can then remove and reset the code while playing the game.
2: Pointers: Try to find the pointer that points to the address you need and thats it, it wont change anymore. It does require some basic assembler knowledge to find so if you're a real beginner I doubt this option is usable.
But if you want to try:
Select the address you want to find the pointer for and choose "Find out what accesses this address"
If the list doesnt get some items immediately then play the game a bit and go back.
The list then should have some items. (else you selected a wrong address)
doubleclick a item in the list and it'll show you some information about how certain registers where when the code got executed, and a small disassembled view of the code.
The assembler instruction should have a part between [ and ] , if it doesn't select another address
Cheat engine should also tell you what it think is the value of the pointer that is needed to find that address. (this can be wrong if one of the registers between [ and ] get calculated before executing the code)
Close the code finder window. (stop->close) The Extra Info window will stay open. Then do a search for a 4 byte in hexadecimal for the value cheat engine thinks the value of the pointer is. (If it finds no address you'll have to debug the program yourself to find out the value)
If it finds a lot of addresses I normally choose the lowest addresses.
The click on add address manually and check the pointer checkbox, then use as pointer address one of the addresses you found. And as offset look at the assembler instruction again. It propably has something like +xxxx] use xxxx as offset. (that is for all the pointers you found)
Click ok.
There should now be a address in the form of P->xxxxxxxx where xxxxxxxx SHOULD be the address of the item you want to cheat on. (If it's not it's a wrong address)
This should fix the changing addresses, but if it doesnt it may happen that it is a pointer to a pointer (or even a longer list)
In those cases you need to find the pointer that points to the pointer address you found and make pointer->pointer->address item.
-------------------------------------
If you where just talking about making a easy to use .CT file you can give to friends just find one address, select it in the found address list "(top left list) go to the old address in the list (bottom list) and choose Recalculate Address. That should also change all the other addresses in the list so that they point to the right address.
|
|