Page 7 of 10

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Mon Jun 15, 2020 9:26 am
by epichotsauce
Anyone have the knowledge to update this table? The game has been updated to [B] (3.6.64.2709) [/B]with new gift bag features.



Thank you

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Mon Jun 15, 2020 3:07 pm
by archilles89
please update this to the new version i'd be so grateful

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Tue Jun 16, 2020 5:52 pm
by H_C_L
So far with the latest cheat table uploaded last time I've been able to use the Last Moved Item and No Skill Cooldown

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Thu Jun 18, 2020 5:34 am
by epichotsauce
Well, I have a feeling there won't be a new table anymore. Some of the options from the last table still work. If you need to edit attribute, combat, talent points or spawn items - there's a Steam workshop mod called " The Cheat Commander Definitive Edition" It works fine with the latest update.

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Thu Jun 18, 2020 2:06 pm
by archilles89
[QUOTE="epichotsauce, post: 139906, member: 30575"]

Well, I have a feeling there won't be a new table anymore. Some of the options from the last table still work. If you need to edit attribute, combat, talent points or spawn items - there's a Steam workshop mod called " The Cheat Commander Definitive Edition" It works fine with the latest update.

[/QUOTE]

i dowanna give away i'm cheating to my friends :(

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Sat Jun 20, 2020 11:51 am
by bloodsucker
[QUOTE="axuzawan, post: 131182, member: 39861"]

Updated this table to the version 3.6.58.1306

[attachment=0]EoCApp_3.6.58.1306.CT[/attachment]

[/QUOTE]



Beware, "renew chest or container" is cause the game CTD. I have it test and confirm so far.

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Sun Jun 21, 2020 9:19 am
by Arkhana
[QUOTE] Beware, "renew chest or container" is cause the game CTD. I have it test and confirm so far. [/QUOTE]

If you mean "Treat Container as New" then it worked for me without any issue.

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Sun Jun 21, 2020 1:31 pm
by timechaos69
yes Treat container as new works using cheat engine 7.1 and set treasure level

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Mon Jun 22, 2020 11:21 pm
by bloodsucker
[QUOTE="Arkhana, post: 140282, member: 4583"]

If you mean "Treat Container as New" then it worked for me without any issue.

[/QUOTE]

Yes, "Treat Containers as New" it work for me too but it make game crash when the game auto save and it also create a bad save and unable to load. i have test it and confirm

[automerge]1592868653[/automerge]

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Tue Jun 23, 2020 9:00 am
by Arkhana
[QUOTE="bloodsucker, post: 140448, member: 1162"]

Yes, "Treat Containers as New" it work for me too but it make game crash when the game auto save and it also create a bad save and unable to load. i have test it and confirm

[/QUOTE]

Yeah it works for me without any saving/loading issue so you might want to give more details as to when/how it happens.

Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Sun Jun 28, 2020 2:38 am
by Cowtow
I went ahead and updated this. I haven't been able to test every single script (durability, set level, and immunity), but every other script on the table works. I took the liberty of adding a cat stat tracker to the player portion of the table (seems to track peep in act 2). Built for CE 7.1

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Mon Jun 29, 2020 9:10 am
by epichotsauce
Thank you for the 3.6.64.2709 updated table, it works wonder.

(I'm still a little confused, what happened to the previous thread, the bookmark I saved just took me to this new one...)

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Wed Jul 01, 2020 11:20 pm
by tdoyijgn
Fixed Unlimited Carry Weight script for Steam version:

Code: Select all

[ENABLE]
aobscanmodule(weightAOB,EoCApp.exe,40 0F B6 D7 48 8B CE E8 ?? ?? ?? ?? 0F AF C3 66 0F 6E C0 0F 5B C0 F3 0F 59 C2 F3 0F 58 C3)
define(weight, weightAOB+F)
alloc(newmem,$800,weight)

label(code)
label(return)

newmem:
  mov eax,#99999
code:
  movd xmm0,eax
  cvtdq2ps xmm0,xmm0
  jmp return

weight:
  jmp newmem
  nop
  nop
return:
registersymbol(weight)

[DISABLE]
weight:
  db 66 0F 6E C0 0F 5B C0 F3 0F 59 C2 F3 0F 58 C3
unregistersymbol(weight)
dealloc(newmem)



Re: Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Sun Jul 05, 2020 3:18 am
by juntalis
Fixed two records related to global variables. I might've fixed some others, but I don't really remember. I'm currently able to use Last Moved Item in Backpack for quantity, Remove Skill Cooldown, Unlimited Durability, and Set Treasure Level so if any of those don't work for you, I'll post what I've got in my table.

Should be able to just copy this and paste it into your table for the global variables stuff:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>10526</ID>
      <Description>"Global Variables"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{ old aobscanmodule
aobscanmodule(globals,EoCApp.exe,83 FB ?? 75 ?? 48 8B ?? ?? ?? ?? ?? 33 D2)

old code not sure how to fix
if success then
  globals = getAddress("globals") + 23
  globals = readInteger(globals) + globals + 20
end
EoCApp.exe+1C91227 - mov rax,[EoCApp.exe+29E0798]
EoCApp.exe+1C91231 - mov rcx,[EoCApp.exe+2969208]


}
{$lua}
if syntaxcheck then return end

local AddressList = _G.AddressList

local function disassembleInstr(address)
	local output = disassemble(address)
	local instrParts = table.pack(splitDisassembledString(output))
	local instrText = instrParts[2]
	local results = {["params"]={}}
	local firstTime = true
	for param in string.gmatch(instrText, '[^ ,]+') do
		if firstTime then
			firstTime = false
			results.instr = string.lower(param)
		else
			table.insert(results['params'], param)
		end
	end
	return results
end

local function stripBrackets(address)
	local result = address
	local prefix = string.sub(address, -1)
	local postfix = string.sub(address, 0, 1)
	if prefix == '[' and postfix == ']' then
		result = string.sub(address, 2, -2)
	end
	return result
end

local function lookupGlobalVariables()
	-- Look up mov instruction and disassemble
    --[==[
	local variables_size
	assert(autoAssemble([[
	aobscanmodule(global_variables_aob,EoCApp.exe,83 FB ?? 77 ?? 48 B9 ?? ?? ?? ?? ?? ?? ?? ?? 48 0F A3 D9 73 ?? 48 8B ?? ?? ?? ?? ?? 0F 57 C9)
	registersymbol(global_variables_aob)
	]]))
	local variables_codeaddr = assert(getAddressSafe('global_variables_aob+15'))
	unregisterSymbol('global_variables_aob')
	assert(variables_codeaddr &gt; 0x15)
	local variables_instr = disassembleInstr(variables_codeaddr)

	-- Resolve the variables memory size and pointer.
	local variables_ptr = stripBrackets(variables_instr.params[2])
    ]==]--
    local variables_ptr = 'EoCApp.exe+29E0798'
	variables_ptr = readPointer(variables_ptr)
	variables_ptr = readPointer(variables_ptr + 0x2E0)
	variables_size = readInteger(variables_ptr) - 1
	variables_ptr = readPointer(variables_ptr + 0x8)
	return variables_ptr, variables_size
end

local recordDataCmp = function(a, b)
	return a.name &lt; b.name
end

local function iterGlobalVariables(variables, size)
	local idx
	local results = {}
	for idx = 0,size do
		local variable = readPointer(variables + idx * 8)
		repeat
			local recordData = {}
			recordData.name = readString(readPointer(variable + 0x8))
			recordData.address = variable + 0x10
			table.insert(results, recordData)
			variable = readPointer(variable)
		until variable == 0
	end

	table.sort(results, recordDataCmp)
	return ipairs(results)
end

local function createVariableRecord(recordData)
	local record = AddressList.createMemoryRecord()
	record.DontSave = true
	record.Type = vtSingle
	record.VarType = 'vtSingle'
	record.Description = recordData.name
	record.Address = recordData.address
	return record
end

local function isEmptyRecord(record)
	return record.Count &lt;= 0
end

local function populateVariablesRoot(rootRecord)
	local variables, size = lookupGlobalVariables()
	for _,recordData in iterGlobalVariables(variables, size) do
		local record = createVariableRecord(recordData)
		record.appendToEntry(rootRecord)
	end
end

local function cleanupVariablesRoot(rootRecord)
	if record.Count &gt; 0 then
		local idx
		local lastIdx = rootRecord.Count - 1
		for idx = lastIdx,0,-1 do
			local record = rootRecord.Child[idx]
			record.disableWithoutExecute()
			object_destroy(record)
		end
	end
end

if isEmptyRecord(memrec) then
	populateVariablesRoot(memrec)
end

{$asm}
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
{
// ORIGINAL CODE - INJECTION POINT: "EoCApp.exe"+16AD5B7

"EoCApp.exe"+16AD592: FF 15 40 6D 2D 00              -  call qword ptr [EoCApp.exe+19842D8]
"EoCApp.exe"+16AD598: F3 0F 2C C0                    -  cvttss2si eax,xmm0
"EoCApp.exe"+16AD59C: 48 83 C4 20                    -  add rsp,20
"EoCApp.exe"+16AD5A0: 5B                             -  pop rbx
"EoCApp.exe"+16AD5A1: C3                             -  ret
"EoCApp.exe"+16AD5A2: 83 FB 22                       -  cmp ebx,22
"EoCApp.exe"+16AD5A5: 77 50                          -  ja EoCApp.exe+16AD5F7
"EoCApp.exe"+16AD5A7: 48 B9 50 00 00 00 04 00 00 00  -  mov rcx,0000000400000050
"EoCApp.exe"+16AD5B1: 48 0F A3 D9                    -  bt rcx,rbx
"EoCApp.exe"+16AD5B5: 73 40                          -  jae EoCApp.exe+16AD5F7
// ---------- INJECTING HERE ----------
"EoCApp.exe"+16AD5B7: 48 8B 05 2A 1B 8E 00           -  mov rax,[EoCApp.exe+1F8F0E8]
// ---------- DONE INJECTING  ----------
"EoCApp.exe"+16AD5BE: 33 D2                          -  xor edx,edx
"EoCApp.exe"+16AD5C0: 48 8B 0D F9 B6 87 00           -  mov rcx,[EoCApp.exe+1F28CC0]
"EoCApp.exe"+16AD5C7: 0F 57 C9                       -  xorps xmm1,xmm1
"EoCApp.exe"+16AD5CA: 4C 8B 88 E0 02 00 00           -  mov r9,[rax+000002E0]
"EoCApp.exe"+16AD5D1: 48 8B C1                       -  mov rax,rcx
"EoCApp.exe"+16AD5D4: 45 8B 01                       -  mov r8d,[r9]
"EoCApp.exe"+16AD5D7: 49 F7 F0                       -  div r8
"EoCApp.exe"+16AD5DA: 49 8B 41 08                    -  mov rax,[r9+08]
"EoCApp.exe"+16AD5DE: 4C 8B 04 D0                    -  mov r8,[rax+rdx*8]
"EoCApp.exe"+16AD5E2: 4D 85 C0                       -  test r8,r8
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>4037</ID>
      <Description>"Print Global Variables"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{ old aobscanmodule
aobscanmodule(globals,EoCApp.exe,83 FB ?? 75 ?? 48 8B ?? ?? ?? ?? ?? 33 D2)

old code not sure how to fix
if success then
  globals = getAddress("globals") + 23
  globals = readInteger(globals) + globals + 20
end
EoCApp.exe+1C91227 - mov rax,[EoCApp.exe+29E0798]
EoCApp.exe+1C91231 - mov rcx,[EoCApp.exe+2969208]


}
{$lua}
if syntaxcheck then return end
local success = autoAssemble([[
aobscanmodule(globals,EoCApp.exe,83 FB ?? 77 ?? 48 B9 ?? ?? ?? ?? ?? ?? ?? ?? 48 0F A3 D9 73 ?? 48 8B ?? ?? ?? ?? ?? 0F 57 C9)
registersymbol(globals)
]])
local globals = "EoCApp.exe+29E0798"
local variables = readPointer(globals)
variables = readPointer(variables + 0x2E0)
local size = readInteger(variables) - 1
variables = readPointer(variables + 0x8)
for i = 0, size do
  local variable = readPointer(variables + i * 8)
  repeat
    local name = readString(readPointer(variable + 0x8))
    local address = variable + 0x10
    local value = readFloat(address)
    local result = string.format("%012X %s (%0.3f)", address, name, value)
    print(result)
    variable = readPointer(variable)
  until variable == 0
end
assert(false)
{$asm}
[DISABLE]
{
// ORIGINAL CODE - INJECTION POINT: "EoCApp.exe"+16AD5B7

"EoCApp.exe"+16AD592: FF 15 40 6D 2D 00              -  call qword ptr [EoCApp.exe+19842D8]
"EoCApp.exe"+16AD598: F3 0F 2C C0                    -  cvttss2si eax,xmm0
"EoCApp.exe"+16AD59C: 48 83 C4 20                    -  add rsp,20
"EoCApp.exe"+16AD5A0: 5B                             -  pop rbx
"EoCApp.exe"+16AD5A1: C3                             -  ret
"EoCApp.exe"+16AD5A2: 83 FB 22                       -  cmp ebx,22
"EoCApp.exe"+16AD5A5: 77 50                          -  ja EoCApp.exe+16AD5F7
"EoCApp.exe"+16AD5A7: 48 B9 50 00 00 00 04 00 00 00  -  mov rcx,0000000400000050
"EoCApp.exe"+16AD5B1: 48 0F A3 D9                    -  bt rcx,rbx
"EoCApp.exe"+16AD5B5: 73 40                          -  jae EoCApp.exe+16AD5F7
// ---------- INJECTING HERE ----------
"EoCApp.exe"+16AD5B7: 48 8B 05 2A 1B 8E 00           -  mov rax,[EoCApp.exe+1F8F0E8]
// ---------- DONE INJECTING  ----------
"EoCApp.exe"+16AD5BE: 33 D2                          -  xor edx,edx
"EoCApp.exe"+16AD5C0: 48 8B 0D F9 B6 87 00           -  mov rcx,[EoCApp.exe+1F28CC0]
"EoCApp.exe"+16AD5C7: 0F 57 C9                       -  xorps xmm1,xmm1
"EoCApp.exe"+16AD5CA: 4C 8B 88 E0 02 00 00           -  mov r9,[rax+000002E0]
"EoCApp.exe"+16AD5D1: 48 8B C1                       -  mov rax,rcx
"EoCApp.exe"+16AD5D4: 45 8B 01                       -  mov r8d,[r9]
"EoCApp.exe"+16AD5D7: 49 F7 F0                       -  div r8
"EoCApp.exe"+16AD5DA: 49 8B 41 08                    -  mov rax,[r9+08]
"EoCApp.exe"+16AD5DE: 4C 8B 04 D0                    -  mov r8,[rax+rdx*8]
"EoCApp.exe"+16AD5E2: 4D 85 C0                       -  test r8,r8
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

**Note**: This was based off of axuzawan's back in April. Just now seeing that Cowtow released an updated table, so I'll check that out.

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Posted: Wed Jul 08, 2020 1:37 am
by waduk
@everyone :
The "Selected Character" option on the 1st page from DrummerIX still works.
It's helpful if you use more than 4 character (from mod), the latest table by Cowtow only support 4 character.

Thankfully, all we have to do is copy paste the selected character script from DriumerIX to Cowtow table
Thank you everyone ! :)