04-18-2012, 06:11 PM
I've been successful in copying AI's from one character to another on many occasions. I use Lord Silva's AI copying technique and I have never had problems before.
Yesterday using the same techniques I copied the AI of ID: 4 to ID's 60-66 when I ran into a problem. The new ID's now properly use their new AI with no problems, but now characters with ID's 1 and 2 (there might be more as well) crash the game when they are put as computer controlled.
I really don't know exactly why this happened, but I do have a theory.
I noticed this while modifying the exe in ollydebug.
I replaced the line that determines the start of the AI for ID: 4
with this
just like Lord Silva's guide describes.
For some reason, once I do that, two extra lines of code come out of nowhere and appear right after the changed line, making it all look like this:
What does NOP mean? could that be causing an error leading to ID's 1 and 2 not being 'read'?
If anyone needs further clarification, I can try to add more info.
Any help would be greatly appreciated.
Yesterday using the same techniques I copied the AI of ID: 4 to ID's 60-66 when I ran into a problem. The new ID's now properly use their new AI with no problems, but now characters with ID's 1 and 2 (there might be more as well) crash the game when they are put as computer controlled.
I really don't know exactly why this happened, but I do have a theory.
I noticed this while modifying the exe in ollydebug.
I replaced the line that determines the start of the AI for ID: 4
Code:
004041F1 . 83B8 F4060000 >CMP DWORD PTR DS:[EAX+6F4],4with this
Code:
004041F1 . E9 94230400 JMP lf2.0044658Ajust like Lord Silva's guide describes.
For some reason, once I do that, two extra lines of code come out of nowhere and appear right after the changed line, making it all look like this:
Code:
004041F1 . E9 94230400 JMP lf2_erro.0044658A
004041F6 90 NOP
004041F7 90 NOP
004041F8 . 0F85 63010000 JNZ lf2_erro.00404361
004041FE > 81B9 08030000 >CMP DWORD PTR DS:[ECX+308],168What does NOP mean? could that be causing an error leading to ID's 1 and 2 not being 'read'?
If anyone needs further clarification, I can try to add more info.
Any help would be greatly appreciated.


Chat






(so use eax instead of edx for those ones). Basically look at what the CMP thingy uses, and use that. Sorry if that wasn't clear in the guide, it was written for 1.9c when all the AI's used the same register. In the newer option the compiler did different optimisations and stuff.
.gif)