Re: Assassin’s Creed® Odyssey - InventoryEditor
Posted: Mon Dec 31, 2018 6:04 am
Well aren't I special. Will do, thanks kindly!
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
WAV387 wrote: ↑Mon Dec 31, 2018 10:30 amHey,
Does anyone know of a way to edit the quantity of how many Ancient Fragments you have?
i have tried multiple searches after collecting a load from cultists but then once i have narrowed it down to a couple of addresses and updated the value the quantity does not change
Thanks for this, it seems to have worked flawlessly.budabum wrote: ↑Mon Dec 31, 2018 3:05 amyou can use Inventory enumerator to bulk delete duplicates. a few pages up I wrote step by step instruction how to do this.Code: Select all
[ENABLE] {$lua} if not syntaxcheck then ------------------------------------ erase = "no" -- "yes" or "no" hash_to_wipe = 0x00000151B972C5CF <<<< 1. you put hashid of item being erased
This is a temporary change, as I understand it?budabum wrote: ↑Sat Dec 29, 2018 7:45 pmDear all. Publishing the latest table update with a few new features.
---===DamageBuffs ===---
Allows you to buff specific engravings.
Activate Inventory Editor under section "[Enable] Inventory", go to ACOD inventory and equip a gear.
On each gear change, CE table will dynamically create/delete children under each pPerk item. Work with pPerk/DamageXXX items to buff engravings.
IMPORTANT: for buff changes to take affect you need to save/load the game.
---===InventoryList Enumerator {lua}===---
Self descriptive, this cheat enumerates all inventory slots, a few of the slots are added into the table, rest are posted into lua window,
Enable cheat, go to ACOD Inventory to populate pInventoryStart/End pointers, then toggle child script to enum elements.
---===InventorySettings===---
For hamsters, you are free to remove Ship and Inventory storage limit. Default value is 350.
As note: when you hit 350 Inventory Limit, you character slows down and can't run any more until you dismantle a few items. When you hit 350 Ship Storage limit, the game blocks you to store more items on the ship.
An example of funny buff "100% Health Restored on Death (0 minutes cooldown)"DamageBuff example
copy/paste this code into CE window, I added artifacts, maybe will release this with next updateWAV387 wrote: ↑Mon Dec 31, 2018 10:30 amHey,
Does anyone know of a way to edit the quantity of how many Ancient Fragments you have?
i have tried multiple searches after collecting a load from cultists but then once i have narrowed it down to a couple of addresses and updated the value the quantity does not change
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>24110</ID>
<Description>"[Enable] InventoryList Enumerator {lua}"</Description>
<Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
<LastState/>
<Color>0000FF</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
aobscanmodule(INJECT_getinv,ACOdyssey.exe,41 C1 EF 11 41 C1 E7 05 4C 03 FB 49 3B DF 0F)
alloc(newmem_getinv,0x1000)
label(code_getinv)
label(return_getinv)
registersymbol(INJECT_getinv)
registersymbol(InvStart)
registersymbol(InvEnd)
newmem_getinv:
code_getinv:
shr r15d,11
shl r15d,05
add r15,rbx
cmp rbx,r15
//inject
je @f
mov [InvStart], rbx
mov [InvEnd], r15
//10 20 8 10
//000001506FB5C137 Ancient Tablets
//00000150408F900F Iron Metal
//00000150408F9013 Obsidian Glass
//00000150408F7320 Olive Wood
//000001994CED835F ??? (multiple objects)
//000001506FB5C133 Precious Gems
//000001506FB5C135 Soft Leather
//0000001BFDB9F655 Drachmae
@@:
jmp return_getinv
align 10 CC
InvStart:
dq baadf00d
align 10 CC
InvEnd:
dq baadf00d
align 10 CC
INJECT_getinv:
jmp far newmem_getinv //#14 bytes
return_getinv:
{$lua}
if not syntaxcheck then
memrec.color = 0x008000;
--global
tablets = nil; metal = nil;
glass = nil; wood = nil;
gems = nil; leather = nil;
money = nil; bearfur = nil;
spartanseal= nil; athenianseal=nil;
end;
{$asm}
[DISABLE]
INJECT_getinv:
db 41 C1 EF 11 41 C1 E7 05 4C 03 FB 49 3B DF
unregistersymbol(INJECT_getinv)
unregistersymbol(InvStart)
unregistersymbol(InvEnd)
dealloc(newmem_getinv)
{$lua}
memrec.color = 0x0000ff
{$asm}
{
// ORIGINAL CODE - INJECTION POINT: "ACOdyssey.exe"+24AC319
"ACOdyssey.exe"+24AC2FF: CC - int 3
"ACOdyssey.exe"+24AC300: 40 53 - push rbx
"ACOdyssey.exe"+24AC302: 41 54 - push r12
"ACOdyssey.exe"+24AC304: 41 55 - push r13
"ACOdyssey.exe"+24AC306: 41 57 - push r15
"ACOdyssey.exe"+24AC308: 48 83 EC 28 - sub rsp,28
"ACOdyssey.exe"+24AC30C: 44 8B 79 08 - mov r15d,[rcx+08]
"ACOdyssey.exe"+24AC310: 4D 8B E0 - mov r12,r8
"ACOdyssey.exe"+24AC313: 48 8B 19 - mov rbx,[rcx]
"ACOdyssey.exe"+24AC316: 4C 8B EA - mov r13,rdx
// ---------- INJECTING HERE ----------
"ACOdyssey.exe"+24AC319: 41 C1 EF 11 - shr r15d,11
"ACOdyssey.exe"+24AC31D: 41 C1 E7 05 - shl r15d,05
"ACOdyssey.exe"+24AC321: 4C 03 FB - add r15,rbx
"ACOdyssey.exe"+24AC324: 49 3B DF - cmp rbx,r15
// ---------- DONE INJECTING ----------
"ACOdyssey.exe"+24AC327: 0F 84 0C 01 00 00 - je ACOdyssey.exe+24AC439
"ACOdyssey.exe"+24AC32D: 65 48 8B 04 25 58 00 00 00 - mov rax,gs:[00000058]
"ACOdyssey.exe"+24AC336: 8B 0D 0C 7E A8 03 - mov ecx,[ACOdyssey.exe+5F34148]
"ACOdyssey.exe"+24AC33C: 48 89 74 24 58 - mov [rsp+58],rsi
"ACOdyssey.exe"+24AC341: 48 89 7C 24 60 - mov [rsp+60],rdi
"ACOdyssey.exe"+24AC346: 4C 89 74 24 20 - mov [rsp+20],r14
"ACOdyssey.exe"+24AC34B: 4C 8B 34 C8 - mov r14,[rax+rcx*8]
"ACOdyssey.exe"+24AC34F: B8 E0 2C 00 00 - mov eax,00002CE0
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>24128</ID>
<Description>"==Re-open ACOD Inventory to refresh values"</Description>
<LastState Value="" RealAddress="00000000"/>
<Color>FF0000</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>24111</ID>
<Description>"pInventoryStart"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>C0C0C0</Color>
<VariableType>8 Bytes</VariableType>
<Address>InvStart</Address>
</CheatEntry>
<CheatEntry>
<ID>24112</ID>
<Description>"pInventoryEnd"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>C0C0C0</Color>
<VariableType>8 Bytes</VariableType>
<Address>InvEnd</Address>
</CheatEntry>
<CheatEntry>
<ID>24118</ID>
<Description>"[Enable] toggle to refresh the list"</Description>
<Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
<LastState/>
<Color>0000FF</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
{$lua}
if not syntaxcheck then
------------------------------------
erase = "no" -- "yes" or "no"
hash_to_wipe = 0x00000151B972C5CF
------------------------------------
--global
tablets = nil; metal = nil;
glass = nil; wood = nil;
gems = nil; leather = nil;
money = nil; bearfur = nil;
spartanseal= nil; athenianseal=nil;
artfragment= nil
local s, s1, s2, s3, s4, s5, s6
local cReplaced, cFound;
local startaddr = readQword( GetAddress("InvStart") )
local endaddr = readQword( GetAddress("InvEnd") )
cReplaced = 0; cFound = 0;
print("pInventoryListSlot\tpSlotSettings\tpItem\thash\tcount\tCategory\tSubCategory")
for p = startaddr, endaddr-0x20, 0x20 do
s1 = readQword(p+0x10) or 0;
s2 = readQword(s1+0x38) or 0; --TODO: fix
s3 = readQword(s2+0x10) or 0; --hash
s4 = readInteger(p) or -1; --count
t1 = readQword(s2) or 0 ; t2 = readQword(t1+0x28) or 0;
t3 = readQword(t2) or 0; t4 = readQword(t3+0x10) or 0;
s5 = readString(t4) or "0"; --CategoryStr --0 28 0 10 0
s5 = s5:gsub("\n", ""); s5 = s5:gsub("\r", ""); s5 = s5:gsub("\t", "")
t1 = readQword(s2) or 0 ; t2 = readQword(t1+0x30) or 0;
t3 = readQword(t2) or 0; t4 = readQword(t3+0x00) or 0;
t5 = readQword(t4+0x10) or 0;
s6 = readString(t5) or "0"; -- SubCategoryStr 0 30 0 0 10 0
s6 = s6:gsub("\n", ""); s6 = s6:gsub("\r", ""); s6 = s6:gsub("\t", "");
if s3 == hash_to_wipe then
cFound = cFound + 1;
if erase == "yes" then
writeInteger(p, 0);
cReplaced = cReplaced + 1;
end;
end;
if s3 == 0x000001506FB5C137 then --Ancient Tablets
tablets = p;
elseif s3==0x00000150408F900F then --Iron Metal
metal = p;
elseif s3==0x00000150408F9013 then --Obsidian Glass
glass = p;
elseif s3==0x00000150408F7320 then --Olive Wood
wood = p;
elseif s3==0x000001506FB5C133 then --Precious Gems
gems = p;
elseif s3==0x000001506FB5C135 then --Soft Leather
leather = p;
elseif s3==0x0000001BFDB9F655 then --Drachmae
money = p;
elseif s3==0x00000169714164EF then --Chios Bear Skin
bearfur = p;
elseif s3==0x00000181110363A6 then -- Athenian Polemarch Military Seal
athenianseal = p;
elseif s3==0x00000180E5F4A238 then --Fort Polemarch Spartan Seal
spartanseal = p;
elseif s3==0x0000015BD3E6413B then -- Artifact Fragment
artfragment = p;
end;
s = string.format("%016X\t%016X\t%016X\t%016X\t%4d\t%s\t%s",p,s1,s2,s3,s4,s5,s6)
print(s);
outputDebugString("::"..s);
end;
print("deleted:",cReplaced, "found:",cFound)
for i=1, memrec.Count,1 do
memrec.Child[i-1].reinterpret();
end
memrec.color = 0x008000;
end
{$asm}
[DISABLE]
{$lua}
if not syntaxcheck then
memrec.color = 0x0000ff;
tablets = nil; metal = nil;
glass = nil; wood = nil;
gems = nil; leather = nil;
money = nil; bearfur = nil;
spartanseal= nil; athenianseal=nil;
end;
{$asm}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>24124</ID>
<Description>"Drachmae"</Description>
<VariableType>4 Bytes</VariableType>
<Address>money</Address>
</CheatEntry>
<CheatEntry>
<ID>24123</ID>
<Description>"Soft Leather"</Description>
<VariableType>4 Bytes</VariableType>
<Address>leather</Address>
</CheatEntry>
<CheatEntry>
<ID>24122</ID>
<Description>"Iron Metal"</Description>
<VariableType>4 Bytes</VariableType>
<Address>metal</Address>
</CheatEntry>
<CheatEntry>
<ID>24120</ID>
<Description>"Olive Wood"</Description>
<VariableType>4 Bytes</VariableType>
<Address>wood</Address>
</CheatEntry>
<CheatEntry>
<ID>24115</ID>
<Description>"Ancient Tablets"</Description>
<VariableType>4 Bytes</VariableType>
<Address>tablets</Address>
</CheatEntry>
<CheatEntry>
<ID>24121</ID>
<Description>"Obsidian Glass"</Description>
<VariableType>4 Bytes</VariableType>
<Address>glass</Address>
</CheatEntry>
<CheatEntry>
<ID>24119</ID>
<Description>"Precious Gems"</Description>
<VariableType>4 Bytes</VariableType>
<Address>gems</Address>
</CheatEntry>
<CheatEntry>
<ID>24125</ID>
<Description>"Quest: Chios Bear Skin"</Description>
<VariableType>4 Bytes</VariableType>
<Address>bearfur</Address>
</CheatEntry>
<CheatEntry>
<ID>24127</ID>
<Description>"Quest: Athenian Polemarch Military Seal"</Description>
<VariableType>4 Bytes</VariableType>
<Address>athenianseal</Address>
</CheatEntry>
<CheatEntry>
<ID>24126</ID>
<Description>"Quest: Fort Polemarch Spartan Seal"</Description>
<VariableType>4 Bytes</VariableType>
<Address>spartanseal</Address>
</CheatEntry>
<CheatEntry>
<ID>24276</ID>
<Description>"Quest: Artefact Fragment"</Description>
<VariableType>4 Bytes</VariableType>
<Address>artfragment</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
how about this? "Mythical Creature Set". Perks are empty. Visually armor is identical to Mercenary Epic set.
Code: Select all
00000186B3609D8F Arms of Abomination Arms Legendary
00000186B3609DA2 Helm of Abomination Head Legendary
00000186B3609D56 Boots of Abomination Legs Legendary
00000186B3609D7C Armor of Abomination Torso Legendary
00000186B3609D69 Belt of Abomination Waist Legendary
Disconnect the internet then search for the values as "Exact Value" "4 bytes". Continue to do so until you have 3 or 1 results. edit them (change value) make it as much as you like then spend them. You shall have your ancient tablets.