• Found the bInvisible BOOL inside BhvAssassin structure. Kept the one in CharacterAI just for historical purposes
Adjusted:
Update #1
Options so far:
How to work with it:
• Run the game, enter game world.
• Activate [Enable] script, activate [Cheat Handler] script.
• Get in-game, press Numpad 0.
• The list should now populate and look like in the screenshot above.
Set God Mode, Invisibility and Unlimited Oxygen to 1, as you wish. Will be adding more soon
Notes:
1) When you enable Invisibility your health bar will drop to 0; don't worry about it.
2) These options don't "stick"; so when you leave game world (to main menu) or game loads new missions/maps, these structures get reallocated. You will need to hit Numpad 0 again and set values to 1 (you can use another hotkey to set all or some fast).
Big thanks to BooBoo for some of the locations leading to this nice mapping, as well as the several interesting brainstorming sessions which returned nice results.
--
Unlimited Arrows
Right. I've started looking for this right after your first mission, killing the soldiers coming for your buddy (what's his name). Simple scan of 15, shoot, 14, shoot, etc. then checking which is the correct address. Quick debug and this is what I got:
Note this location is used for more than just inventory processing (so it's likely to be a wrapper function). Back-tracing led to this location:
Setting a breakpoint and going inside the CALL for a quick trace-up, I see that my RCX's value is 0x1F1052E00 (yes, yours will be different). Now, if you remember the logic of these games (AC4, Syndicate, etc.), the structure pointer we're going to look at is held in RCX. First QWORD in this structure is a pointer to member-functions. Among these member-functions, pretty much close-by to the table start, we'll find the function giving us the name of the object with which we're dealing here
So:
Checking that pointer out, I found this function's location at offset 0x38. You may call it GetName():
Now, checking the pointer it references in code (in this case heading to 0x14410ECC8), then going in (so 0x0), then checking the pointer at offset 0x18, we learn that:
We're dealing with Inventory
Another thing I learned in the process is Ubisoft's hashing object string names for quick look-ups later on in various of their functions. As such, what I found interesting further on is a hash stored at 0x8 offset in the 0x0 pointer of 0x14410ECC8:
The reason I'm mentioning this is this hash can easily be used by ourselves as a filter when doing certain hooks
More to come.
BR,
Sun
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1