WAV387 wrote: ↑Mon Dec 31, 2018 10:30 am
Hey,
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
copy/paste this code into CE window, I added artifacts, maybe will release this with next update
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>