cyberwolf575 How do I cheat?
Reputation: 0
Joined: 14 Apr 2014 Posts: 3
|
Posted: Mon Apr 14, 2014 7:33 pm Post subject: Help with editing Pokemon Omircon value. |
|
|
Hi, so I was looking around and I managed to find the value for money, and using the same type of scan I was able to find the value for exp that you earn at the end of each battle, however changing that value doesn't seem to make any effect, even after I change it, the exp gain is still what the game shows on screen.
There are 2 values that change when the exp gain is happening, if the game shows you have gained 65 exp, the values will change to 65, then once u press enter it actually adds the exp to the pokemon.
Changing the 65 to anything else, seems to make 0 effect as the pokemon still gains only 65 exp.
Any help would be awesome, I am not a complete noob to CE, but I am def not as good as some people on here, who Im sure could figure this silly problem out.
To search for the values I used the following type, which is taken from a forum post I saw a long time ago, and If I could remember the name of the person who wrote it, I would credit him. Thanks to him.
| Code: | alloc(TypeName,256)
alloc(ByteSize,4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)
TypeName:
db 'Type * 2',0
ByteSize:
dd 4
//The convert routine should hold a routine that converts the data to an nteger (in eax)
//function declared as: stdcall int ConvertRoutine(unsigned char *input);
//Note: Keep in mind that this routine can be called by multiple threads at the same time.
ConvertRoutine:
[32-bit]
push ebp
mov ebp,esp
push ecx
mov ecx,[ebp+8]
[/32-bit]
//at this point ecx contains the address where the bytes are stored
//put the bytes into the eax register
mov eax,[ecx] //second fun fact, addressing with 32-bit registers doesn't work in 64-bit, it becomes a 64-bit automatically (most of the time)
shr eax,1 //shift right by 1 bit (divide by 2)
//and now exit the routine
[64-bit]
ret
[/64-bit]
[32-bit]
pop ecx
pop ebp
ret 4
[/32-bit]
//The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)
//function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
[32-bit]
push ebp
mov ebp,esp
push edx //save the registers
push ecx
mov edx,[ebp+0c]
mov ecx,[ebp+08]
[/32-bit]
//at this point edx contains the address to write the value to
//and ecx contains the value
push eax
push edx
mov edx,[edx] //edx now contains the original value
and edx,7 //only save the first 3 bits
mov eax,ecx //eax gets the user input value
shl eax,1 //shift left by 1 bit (multiply by 2)
or eax,edx //add the bits of the original value
pop edx
mov [edx],eax //write the new value into the old value
pop eax
[64-bit]
//everything is back to what it was, so exit
ret
[/64-bit]
[32-bit]
//cleanup first
pop ecx
pop edx
pop ebp
ret 8
[/32-bit] |
|
|