z Baldur's Gate 3

Upload your cheat tables here (No requests)
knightjedi
Cheater
Cheater
Posts: 36
Joined: Thu Aug 10, 2023 10:43 pm
Reputation: 7

Re: z Baldur's Gate 3

Post by knightjedi »

Sl4yerBDK wrote:
Fri Nov 03, 2023 11:42 am
Does anyone have a fix for the "Learn Any Wizard Scroll (activate before loading your save)" command? It's the only one I'm missing and I think I'm good to go to continue my playthrough. Also thanks in advance for the people who are currently working on fixing the table
how to set abilitystate points?
its Broken now

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

User avatar
sanitka
Expert Cheater
Expert Cheater
Posts: 459
Joined: Sat Aug 22, 2020 5:40 am
Reputation: 204

Re: z Baldur's Gate 3

Post by sanitka »

knightjedi wrote:
Fri Nov 03, 2023 12:09 pm
how to set abilitystate points?
its Broken now
You are only milion first asking about broken table, if you tried to read couple of posts ;), you would get working console where you can set almost anything.

Spidey
Noobzor
Noobzor
Posts: 7
Joined: Fri Feb 15, 2019 11:09 pm
Reputation: 1

Re: z Baldur's Gate 3

Post by Spidey »

sanitka wrote:
Fri Nov 03, 2023 1:36 pm
knightjedi wrote:
Fri Nov 03, 2023 12:09 pm
how to set abilitystate points?
its Broken now
You are only milion first asking about broken table, if you tried to read couple of posts ;), you would get working console where you can set almost anything.
Could you please share the page link or number?

knightjedi
Cheater
Cheater
Posts: 36
Joined: Thu Aug 10, 2023 10:43 pm
Reputation: 7

Re: z Baldur's Gate 3

Post by knightjedi »

empty

Malazar
Noobzor
Noobzor
Posts: 8
Joined: Sun May 26, 2019 7:24 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by Malazar »

Spidey wrote:
Fri Nov 03, 2023 1:46 pm
sanitka wrote:
Fri Nov 03, 2023 1:36 pm
knightjedi wrote:
Fri Nov 03, 2023 12:09 pm
how to set abilitystate points?
its Broken now
You are only milion first asking about broken table, if you tried to read couple of posts ;), you would get working console where you can set almost anything.
Could you please share the page link or number?
Unforuntately the only answer anyone gives is "learn how to program cheat engine scripts and then do it yourself" despite saying that this is a thing that can be done, no one gives any information that will help anyone who doesn't already program scripts.

It's real unfortunate for me because my character cannot select my fourth level feat without lowering my strength of con to 19, so I'm stuck until someone does fix the table.

Meeshta
What is cheating?
What is cheating?
Posts: 1
Joined: Fri Nov 03, 2023 2:32 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by Meeshta »

HenryEx wrote:
Thu Nov 02, 2023 11:16 pm
unREAL wrote:
Thu Nov 02, 2023 8:16 pm
Reaper1222 wrote:
Thu Nov 02, 2023 7:40 pm
need to wait for someone to update the table(s) because patch broke them
I looked into the table and I think we are f*cked ... Larian f*cked us...
USUALLY I would find the command/console instance If I do a "IntegerSum" string search -> scan for the result - 0x8 -0x20 - 0x10 ... but since newest update ... nothing.

This means they have changed REALLY MUCH on the structure of the game .. or they finally removed all the console commands.

Larian does NOT want that you or me can use the console ...Read this:
viewtopic.php?p=307312#p307312

So anyone should expect the worst ... console commands could be dead forever ... I swear I hate game devs every day more ...
Calm down, satan.


I'm not gonna look into all the codes because i don't know how they were made and how to find the code structures that changed, i'm hoping someone else will. Especially for the DLC ones, and the Last Item Moved / Dropped codes, because these were very useful.
But i took a very short look (10 minutes) at the most important one, which is console commands, and had to only very slightly (a single byte different) alter the search mask, and then change like three lines of code in the script to make it work again.

Open the Console Commands script, Ctrl+A to select everything, delete it, then replace it with this:

Code: Select all

[ENABLE]
aobscanmodule(console,$process,81 E2 FF FF FF 01 4C)
alloc(newmem,$1000,console)
alloc(cmdCode,$1000)
alloc(cmdStr0,$1000)
alloc(cmdStr1,$1000)
alloc(cmdStr2,$1000)
alloc(cmdStr3,$1000)
alloc(cmdStr4,$1000)

label(cmdCall)
label(cmdArgs)
label(cmdSelf)
label(cmdAddr)
label(cmdList)
label(code)
label(return)

newmem:
  mov rdi,cmdList
  mov rax,[r13+08]
  mov [rdi],rax
code:
  and edx,01FFFFFF
  jmp return

cmdList:
  dq 0

console:
  jmp newmem
  nop
return:

cmdCode:
align 10
cmdCall:
sub rsp,38
mov rdx,cmdArgs
mov rax,cmdAddr
mov rcx,cmdSelf
mov rcx,[rcx]
call [rax]
add rsp,38
movzx rax,al
ret

align 10
cmdAddr:
  dq 0
align 10
cmdSelf:
  dq 0
align 10
cmdArgs:
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0

registersymbol(console)
registersymbol(cmdList)
registersymbol(cmdCall)
registersymbol(cmdAddr)
registersymbol(cmdSelf)
registersymbol(cmdArgs)
registersymbol(cmdStr0)
registersymbol(cmdStr1)
registersymbol(cmdStr2)
registersymbol(cmdStr3)
registersymbol(cmdStr4)

[DISABLE]
console:
  db 81 E2 FF FF FF 01
unregistersymbol(console)
dealloc(newmem)

unregistersymbol(cmdList)
unregistersymbol(cmdCode)
unregistersymbol(cmdStr0)
unregistersymbol(cmdStr1)
unregistersymbol(cmdStr2)
unregistersymbol(cmdStr3)
unregistersymbol(cmdStr4)
dealloc(cmdCode)
dealloc(cmdStr0)
dealloc(cmdStr1)
dealloc(cmdStr2)
dealloc(cmdStr3)
dealloc(cmdStr4)
Did a very cursory test, but command count is populated properly, i can register commands in-game, and the one i tested real quick worked just like before the patch.
This was awesome, thank you! Although it worked once, and since then it's not worked again. Weird.

Lbrbx
Noobzor
Noobzor
Posts: 5
Joined: Sat May 13, 2023 9:56 am
Reputation: 0

Re: z Baldur's Gate 3

Post by Lbrbx »

Meeshta wrote:
Fri Nov 03, 2023 2:33 pm
HenryEx wrote:
Thu Nov 02, 2023 11:16 pm
unREAL wrote:
Thu Nov 02, 2023 8:16 pm


I looked into the table and I think we are f*cked ... Larian f*cked us...
USUALLY I would find the command/console instance If I do a "IntegerSum" string search -> scan for the result - 0x8 -0x20 - 0x10 ... but since newest update ... nothing.

This means they have changed REALLY MUCH on the structure of the game .. or they finally removed all the console commands.

Larian does NOT want that you or me can use the console ...Read this:
viewtopic.php?p=307312#p307312

So anyone should expect the worst ... console commands could be dead forever ... I swear I hate game devs every day more ...
Calm down, satan.


I'm not gonna look into all the codes because i don't know how they were made and how to find the code structures that changed, i'm hoping someone else will. Especially for the DLC ones, and the Last Item Moved / Dropped codes, because these were very useful.
But i took a very short look (10 minutes) at the most important one, which is console commands, and had to only very slightly (a single byte different) alter the search mask, and then change like three lines of code in the script to make it work again.

Open the Console Commands script, Ctrl+A to select everything, delete it, then replace it with this:

Code: Select all

[ENABLE]
aobscanmodule(console,$process,81 E2 FF FF FF 01 4C)
alloc(newmem,$1000,console)
alloc(cmdCode,$1000)
alloc(cmdStr0,$1000)
alloc(cmdStr1,$1000)
alloc(cmdStr2,$1000)
alloc(cmdStr3,$1000)
alloc(cmdStr4,$1000)

label(cmdCall)
label(cmdArgs)
label(cmdSelf)
label(cmdAddr)
label(cmdList)
label(code)
label(return)

newmem:
  mov rdi,cmdList
  mov rax,[r13+08]
  mov [rdi],rax
code:
  and edx,01FFFFFF
  jmp return

cmdList:
  dq 0

console:
  jmp newmem
  nop
return:

cmdCode:
align 10
cmdCall:
sub rsp,38
mov rdx,cmdArgs
mov rax,cmdAddr
mov rcx,cmdSelf
mov rcx,[rcx]
call [rax]
add rsp,38
movzx rax,al
ret

align 10
cmdAddr:
  dq 0
align 10
cmdSelf:
  dq 0
align 10
cmdArgs:
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0

registersymbol(console)
registersymbol(cmdList)
registersymbol(cmdCall)
registersymbol(cmdAddr)
registersymbol(cmdSelf)
registersymbol(cmdArgs)
registersymbol(cmdStr0)
registersymbol(cmdStr1)
registersymbol(cmdStr2)
registersymbol(cmdStr3)
registersymbol(cmdStr4)

[DISABLE]
console:
  db 81 E2 FF FF FF 01
unregistersymbol(console)
dealloc(newmem)

unregistersymbol(cmdList)
unregistersymbol(cmdCode)
unregistersymbol(cmdStr0)
unregistersymbol(cmdStr1)
unregistersymbol(cmdStr2)
unregistersymbol(cmdStr3)
unregistersymbol(cmdStr4)
dealloc(cmdCode)
dealloc(cmdStr0)
dealloc(cmdStr1)
dealloc(cmdStr2)
dealloc(cmdStr3)
dealloc(cmdStr4)
Did a very cursory test, but command count is populated properly, i can register commands in-game, and the one i tested real quick worked just like before the patch.
This was awesome, thank you! Although it worked once, and since then it's not worked again. Weird.
Same thing with me, it work again if you close and open the game again. Don't close until you totally finish with the console

User avatar
sanitka
Expert Cheater
Expert Cheater
Posts: 459
Joined: Sat Aug 22, 2020 5:40 am
Reputation: 204

Re: z Baldur's Gate 3

Post by sanitka »

Spidey wrote:
Fri Nov 03, 2023 1:46 pm
sanitka wrote:
Fri Nov 03, 2023 1:36 pm
knightjedi wrote:
Fri Nov 03, 2023 12:09 pm
how to set abilitystate points?
its Broken now
You are only milion first asking about broken table, if you tried to read couple of posts ;), you would get working console where you can set almost anything.
Could you please share the page link or number?
For example on previous page - post with most likes ;) or two-times on this page.

yeewesley
Novice Cheater
Novice Cheater
Posts: 23
Joined: Mon Feb 28, 2022 10:10 am
Reputation: 3

Re: z Baldur's Gate 3

Post by yeewesley »

HenryEx wrote:
Thu Nov 02, 2023 11:16 pm
unREAL wrote:
Thu Nov 02, 2023 8:16 pm
Reaper1222 wrote:
Thu Nov 02, 2023 7:40 pm
need to wait for someone to update the table(s) because patch broke them
I looked into the table and I think we are f*cked ... Larian f*cked us...
USUALLY I would find the command/console instance If I do a "IntegerSum" string search -> scan for the result - 0x8 -0x20 - 0x10 ... but since newest update ... nothing.

This means they have changed REALLY MUCH on the structure of the game .. or they finally removed all the console commands.

Larian does NOT want that you or me can use the console ...Read this:
viewtopic.php?p=307312#p307312

So anyone should expect the worst ... console commands could be dead forever ... I swear I hate game devs every day more ...
Calm down, satan.


I'm not gonna look into all the codes because i don't know how they were made and how to find the code structures that changed, i'm hoping someone else will. Especially for the DLC ones, and the Last Item Moved / Dropped codes, because these were very useful.
But i took a very short look (10 minutes) at the most important one, which is console commands, and had to only very slightly (a single byte different) alter the search mask, and then change like three lines of code in the script to make it work again.

Open the Console Commands script, Ctrl+A to select everything, delete it, then replace it with this:

Code: Select all

[ENABLE]
aobscanmodule(console,$process,81 E2 FF FF FF 01 4C)
alloc(newmem,$1000,console)
alloc(cmdCode,$1000)
alloc(cmdStr0,$1000)
alloc(cmdStr1,$1000)
alloc(cmdStr2,$1000)
alloc(cmdStr3,$1000)
alloc(cmdStr4,$1000)

label(cmdCall)
label(cmdArgs)
label(cmdSelf)
label(cmdAddr)
label(cmdList)
label(code)
label(return)

newmem:
  mov rdi,cmdList
  mov rax,[r13+08]
  mov [rdi],rax
code:
  and edx,01FFFFFF
  jmp return

cmdList:
  dq 0

console:
  jmp newmem
  nop
return:

cmdCode:
align 10
cmdCall:
sub rsp,38
mov rdx,cmdArgs
mov rax,cmdAddr
mov rcx,cmdSelf
mov rcx,[rcx]
call [rax]
add rsp,38
movzx rax,al
ret

align 10
cmdAddr:
  dq 0
align 10
cmdSelf:
  dq 0
align 10
cmdArgs:
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0
  dq 0

registersymbol(console)
registersymbol(cmdList)
registersymbol(cmdCall)
registersymbol(cmdAddr)
registersymbol(cmdSelf)
registersymbol(cmdArgs)
registersymbol(cmdStr0)
registersymbol(cmdStr1)
registersymbol(cmdStr2)
registersymbol(cmdStr3)
registersymbol(cmdStr4)

[DISABLE]
console:
  db 81 E2 FF FF FF 01
unregistersymbol(console)
dealloc(newmem)

unregistersymbol(cmdList)
unregistersymbol(cmdCode)
unregistersymbol(cmdStr0)
unregistersymbol(cmdStr1)
unregistersymbol(cmdStr2)
unregistersymbol(cmdStr3)
unregistersymbol(cmdStr4)
dealloc(cmdCode)
dealloc(cmdStr0)
dealloc(cmdStr1)
dealloc(cmdStr2)
dealloc(cmdStr3)
dealloc(cmdStr4)
Did a very cursory test, but command count is populated properly, i can register commands in-game, and the one i tested real quick worked just like before the patch.
Need help.

Thank you so much for your Console Commands script. I copied exactly and pasted it to "Console Command" script , but when i run "Register Commands/Functions" in-game, it return an error << Lua error in the script at line 2:[string "local syntax check, memrec=......"]:17:table index is nil>>


below is "Register Commands/Functions", what could have gone wrong with this? thanks for any kind souls to enlighten me on this. thanks in advance

Code: Select all

[ENABLE]
{$lua}
if syntaxcheck then return end
local commands = readPointer("cmdList")
commands = readPointer(commands + 0x10)
local size = readInteger(commands + 0x2C)
if size > 3000 then
  size = 3000 -- just in case
end
commands = readPointer(commands + 0x20)
COMMAND_SELF = {}
for i = 1, size do
  local addr = readPointer(commands)
  local name = readPointer(addr + 0x08)
  name = readString(name, 256, false)
  local self = readPointer(addr + 0x40)
  addr = readPointer(addr + 0x48)
  COMMAND_SELF[name] = self
  if addr > 0x1000 then
    unregisterSymbol(name)
    registerSymbol(name, addr, true)
  end
  commands = commands + 0x08
end

function PrepareCall(name)
  local cmdAddr = getAddress("cmdAddr")
  local cmdSelf = getAddress("cmdSelf")
  local cmd = getAddress(name)
  writePointer(cmdAddr, cmd)
  writePointer(cmdSelf, COMMAND_SELF[name])
end

function ExecuteCall(FuncName)
  local cmdAddr = getAddress("cmdAddr")
  local cmdSelf = getAddress("cmdSelf")
  local cmdCall = getAddress("cmdCall")
  local cmd = getAddress(FuncName)
  writePointer(cmdAddr, cmd)
  writePointer(cmdSelf, COMMAND_SELF[FuncName])
  return executeCodeEx(0, nil, cmdCall)
end

function GetArgAt(i)
  return getAddress("cmdArgs") + 0x10 * i + 0x08
end

function GetStringAt(i)
  return getAddress("cmdStr"..i)
end

function ClearArg(i)
  SetArgToLong(i, 0)
end

function GetArgAsInteger(i)
  local arg = GetArgAt(i)
  return readInteger(arg)
end

function SetArgToInteger(i, value)
  local arg = GetArgAt(i)
  if value == nil then value = 0 end
  writeQword(arg, value)
end

function GetArgAsLong(i)
  local arg = GetArgAt(i)
  return readQword(arg)
end

function SetArgToLong(i, value)
  local arg = GetArgAt(i)
  if value == nil then value = 0 end
  writeQword(arg, value)
end

function GetArgAsFloat(i)
  local arg = GetArgAt(i)
  return readFloat(arg)
end

function SetArgToFloat(i, value)
  local arg = GetArgAt(i)
  if value == nil then value = 0 end
  writeFloat(arg, value)
end

function SetArgToPointer(i, value)
  local arg = GetArgAt(i)
  if value == nil then value = 0 end
  writePointer(arg, value)
end

function GetArgAsString(i)
  local arg = GetArgAt(i)
  local value = readPointer(arg)
  if value and value > 0 then
    return readString(value, 256, false)
  end
  return nil
end

function SetArgToString(i, value)
  local str = GetStringAt(i)
  writeString(str, value)
  writeBytes(str + #value, 0)
  SetArgToPointer(i, str)
end

function GetHostCharacter()
  ClearArg(0)
  ExecuteCall("GetHostCharacter")
  return GetArgAsString(0)
end

function AddPassive(Entity, PassiveID)
  SetArgToString(0, Entity)
  if type(PassiveID) == "table" then
    for i = 1, #PassiveID do
      SetArgToString(1, PassiveID[i])
      ExecuteCall("AddPassive")
    end
  else
    SetArgToString(1, PassiveID)
    ExecuteCall("AddPassive")
  end
end

function AddPassiveToPlayer(PassiveID)
  local player = GetHostCharacter()
  AddPassive(player, PassiveID)
end

function RemovePassive(Entity, PassiveID)
  SetArgToString(0, Entity)
  if type(PassiveID) == "table" then
    for i = 1, #PassiveID do
      local value = PassiveID[i]
      SetArgToString(1, value)
      ExecuteCall("RemovePassive")
    end
  else
    SetArgToString(1, PassiveID)
    ExecuteCall("RemovePassive")
  end
end

function RemovePassiveFromPlayer(PassiveID)
  local player = GetHostCharacter()
  RemovePassive(player, PassiveID)
end

function AddBoosts(Object, Boosts, SourceID, Cause)
  SetArgToString(0, Object)
  SetArgToLong(2, SourceID)
  SetArgToLong(3, Cause)
  if type(Boosts) == "table" then
    for i = 1, #Boosts do
      SetArgToString(1, Boosts[i])
      ExecuteCall("AddBoosts")
    end
  else
    SetArgToString(1, Boosts)
    ExecuteCall("AddBoosts")
  end
end

function AddBoostsToPlayer(Boosts)
  local player = GetHostCharacter()
  AddBoosts(player, Boosts, 0, 0)
end

function RemoveBoosts(Object, Boosts, RemoveOnlyFirstDescMatch, SourceID, Cause)
  SetArgToString(0, Object)
  SetArgToLong(2, RemoveOnlyFirstDescMatch)
  SetArgToLong(3, SourceID)
  SetArgToLong(4, Cause)
  if type(Boosts) == "table" then
    for i = 1, #Boosts do
      SetArgToString(1, Boosts[i])
      ExecuteCall("RemoveBoosts")
    end
  else
    SetArgToString(1, Boosts)
    ExecuteCall("RemoveBoosts")
  end
end

function RemoveBoostsFromPlayer(Boosts)
  local player = GetHostCharacter()
  RemoveBoosts(player, Boosts, 0, 0, 0)
end

function ApplyStatus(Object, Status, Duration, Force, Source)
  if Duration == nil then
    Duration = -1
  end
  SetArgToString(0, Object)
  SetArgToFloat(2, Duration)
  SetArgToLong(3, Force)
  SetArgToLong(4, Source)
  if type(Status) == "table" then
    for i = 1, #Status do
      SetArgToString(1, Status[i])
      ExecuteCall("ApplyStatus")
    end
  else
    SetArgToString(1, Status)
    ExecuteCall("ApplyStatus")
  end
end

function ApplyStatusToPlayer(Status, Duration)
  local player = GetHostCharacter()
  ApplyStatus(player, Status, Duration, 1, 0)
end

function ApplyStatusToWeapon(Status)
  local item = GetEquippedWeapon()
  ApplyStatus(item, Status, Duration, 1, 0)
end

function RemoveStatus(Target, Status, Cause)
  SetArgToString(0, Target)
  SetArgToLong(2, Cause)
  if type(Status) == "table" then
    for i = 1, #Status do
      SetArgToString(1, Status[i])
      ExecuteCall("RemoveStatus")
    end
  else
    SetArgToString(1, Status)
    ExecuteCall("RemoveStatus")
  end
end

function RemoveStatusFromPlayer(Status)
  local player = GetHostCharacter()
  RemoveStatus(player, Status, 0)
end

function RemoveStatusFromWeapon(Status)
  local item = GetEquippedWeapon()
  RemoveStatus(item, Status, 0)
end

function AddSpell(Character, Spell, ShowNotification, AddContainerSpells)
  SetArgToString(0, Character)
  SetArgToLong(2, ShowNotification)
  SetArgToLong(3, AddContainerSpells)
  if type(Spell) == "table" then
    for i = 1, #Spell do
      SetArgToString(1, Spell[i])
      ExecuteCall("AddSpell")
    end
  else
    SetArgToString(1, Status)
    ExecuteCall("AddSpell")
  end
end

function AddSpellToPlayer(Spell)
  local player = GetHostCharacter()
  AddSpell(player, Spell, 0, 1)
end

function RemoveSpell(Character, Spell, RemoveContainerSpells)
  SetArgToString(0, Character)
  SetArgToLong(2, RemoveContainerSpells)
  if type(Spell) == "table" then
    for i = 1, #Spell do
      SetArgToString(1, Spell[i])
      ExecuteCall("RemoveSpell")
    end
  else
    SetArgToString(1, Status)
    ExecuteCall("RemoveSpell")
  end
end

function RemoveSpellFromPlayer(Spell)
  local player = GetHostCharacter()
  RemoveSpell(player, Spell, 0)
end

function SetTag(Target, Tag)
  SetArgToString(0, Target)
  if type(Tag) == "table" then
    for i = 1, #Tag do
      SetArgToString(1, Tag[i])
      ExecuteCall("SetTag")
    end
  else
    SetArgToString(1, Tag)
    return ExecuteCall("SetTag")
  end
end

function SetTagOnPlayer(Tag)
  local player = GetHostCharacter()
  return SetTag(player, Tag)
end

function ClearTag(Target, Tag)
  SetArgToString(0, Target)
  if type(Tag) == "table" then
    for i = 1, #Tag do
      SetArgToString(1, Tag[i])
      ExecuteCall("ClearTag")
    end
  else
    SetArgToString(1, Tag)
    return ExecuteCall("ClearTag")
  end
end

function ClearTagOnPlayer(Tag)
  local player = GetHostCharacter()
  return ClearTag(player, Tag)
end

function IsTagged(Target, Tag)
  SetArgToString(0, Target)
  SetArgToString(1, Tag)
  SetArgToLong(2, 0)
  local result = ExecuteCall("IsTagged")
  if result == 1 then
    return GetArgAsInteger(2)
  else
    return nil
  end
end

function IsTaggedOnPlayer(Tag)
  local player = GetHostCharacter()
  return IsTagged(player, Tag)
end

function SetFlag(Flag, Object, DialogInstance, SendFlagSetEventIfChanged)
  SetArgToString(1, Object)
  SetArgToLong(2, DialogInstance)
  SetArgToLong(3, SendFlagSetEventIfChanged)
  if type(Flag) == "table" then
    for i = 1, #Flag do
      SetArgToString(0, Flag[i])
      ExecuteCall("SetFlag")
    end
  else
    SetArgToString(0, Flag)
    return ExecuteCall("SetFlag")
  end
end

function SetFlagOnPlayer(Flag)
  local player = GetHostCharacter()
  return SetFlag(Flag, player, 0, 1)
end

function GetFlag(Flag, Object)--: FlagState
  SetArgToString(0, Flag)
  SetArgToString(1, Object)
  SetArgToLong(2, 0)
  local result = ExecuteCall("GetFlag")
  if result == 1 then
    return GetArgAsInteger(2)
  else
    return nil
  end
end

function GetFlagOnPlayer(Flag)
  local player = GetHostCharacter()
  return GetFlag(Flag, player)
end

function ClearFlag(Flag, Object, DialogInstance, SendFlagClearEventIfChanged)
  SetArgToString(1, Object)
  SetArgToLong(2, DialogInstance)
  SetArgToLong(3, SendFlagClearEventIfChanged)
  if type(Flag) == "table" then
    for i = 1, #Flag do
      SetArgToString(0, Flag[i])
      ExecuteCall("ClearFlag")
    end
  else
    SetArgToString(0, Flag)
    return ExecuteCall("ClearFlag")
  end
end

function ClearFlagOnPlayer(Flag)
  local player = GetHostCharacter()
  return ClearFlag(Flag, player, 0, 1)
end

function TemplateAddTo(ItemTemplate, InventoryHolder, Count, ShowNotification)
  if Count == nil then Count = 1 end
  if ShowNotification == nil then ShowNotification = 0 end
  SetArgToString(1, InventoryHolder)
  SetArgToLong(2, Count)
  SetArgToLong(3, ShowNotification)
  ExecuteCall("TemplateAddTo")
  if type(ItemTemplate) == "table" then
    for i = 1, #ItemTemplate do
      SetArgToString(0, ItemTemplate[i])
      ExecuteCall("TemplateAddTo")
    end
  else
    SetArgToString(0, ItemTemplate)
    ExecuteCall("TemplateAddTo")
  end
end

function TemplateAddToPlayer(ItemTemplate, Count)
  local player = GetHostCharacter()
  TemplateAddTo(ItemTemplate, player, Count, 1)
end

function GetPosition(Target)--: X: Y: Z
  SetArgToString(0, Target)
  ClearArg(1)
  ClearArg(2)
  ClearArg(3)
  ExecuteCall("GetPosition")
  local x = GetArgAsFloat(1)
  local z = GetArgAsFloat(2)
  local y = GetArgAsFloat(3)
  return x, y, z
end

function GetPositionOfPlayer()
  local player = GetHostCharacter()
  return GetPosition(player)
end

function CreateAt(TemplateId, X, Y, Z, Temporary, PlaySpawn, SpawnFinishEvent)--: CreatedObject
  SetArgToString(0, TemplateId)
  SetArgToFloat(1, X)
  SetArgToFloat(2, Z)
  SetArgToFloat(3, Y)
  SetArgToLong(4, Temporary)
  SetArgToLong(5, PlaySpawn)
  SetArgToLong(6, SpawnFinishEvent)
  ClearArg(7)
  ExecuteCall("CreateAt")
  return GetArgAsString(7)
end

function CreateAtPosition(TemplateId, X, Y, Z)
  if X == nil or Y == nil or Z == nil then
    X, Y, Z = GetPositionOfPlayer()
  end
  return CreateAt(TemplateId, X, Y, Z, 0, 0, 0)
end

function CreateAtObject(TemplateId, Anchor, Temporary, PlaySpawn, SpawnFinishEvent, MatchOrientation)--: CreatedObject
  SetArgToString(0, TemplateId)
  SetArgToString(1, Anchor)
  SetArgToLong(2, Temporary)
  SetArgToLong(3, PlaySpawn)
  SetArgToLong(4, SpawnFinishEvent)
  SetArgToLong(5, MatchOrientation)
  ClearArg(6)
  ExecuteCall("CreateAtObject")
  return GetArgAsString(6)
end

function CreateAtPlayer(TemplateId)
  local player = GetHostCharacter()
  return CreateAtObject(TemplateId, player, 0, 0, 0, 0)
end

function GenerateTreasure(InventoryHolder, TreasureID, Level, Finder)
  SetArgToString(0, InventoryHolder)
  SetArgToString(1, TreasureID)
  SetArgToLong(2, Level)
  SetArgToString(3, Finder)
  ClearArg(4)
  ExecuteCall("GenerateTreasure")
end

function GenerateTreasureBag(TreasureID)
  local player = GetHostCharacter()
  local bag = "3e6aac21-333b-4812-a554-376c2d157ba9"
  bag = CreateAtObject(bag, player, 0, 0, 0, 0)
  GenerateTreasure(bag, TreasureID, 12, player)
  return bag
end

function GetEquippedWeapon(Character)
  if Character == nil then
    Character = GetHostCharacter()
  end
  SetArgToString(0, Character)
  ClearArg(1)
  ExecuteCall("GetEquippedWeapon")
  return GetArgAsString(1)
end

Slotnames = {
  "Helmet",
  "Breast",
  "Cloak",
  "Melee Main Weapon",
  "Melee Offhand Weapon",
  "Ranged Main Weapon",
  "Ranged Offhand Weapon",
  "Underwear",
  "Boots",
  "Gloves",
  "Amulet",
  "Ring",
  "Ring2",
  "Wings",
  "Horns",
  "Overhead",
  "MusicalInstrument",
  "VanityBody",
  "VanityBoots"
}
for i = 1, #Slotnames do
  Slotnames[ Slotnames[i] ] = true
end
function GetEquippedItem(Character, Slotname)--: Item
  if Slotname == nil then
    Slotname = Character
    Character = GetHostCharacter()
  end
  if Slotname == nil then
    return nil
  end
  if Slotnames[Slotname] ~= true then
    print("Slotname must be one of the following: " .. table.concat(Slotnames, ", "))
    return nil
  end
  SetArgToString(0, Character)
  SetArgToString(1, Slotname)
  ClearArg(2)
  ExecuteCall("GetEquippedItem")
  return GetArgAsString(2)
end

{$asm}
[DISABLE]

asomiakanawa
What is cheating?
What is cheating?
Posts: 4
Joined: Sat Apr 11, 2020 8:05 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by asomiakanawa »

sanitka wrote:
Fri Nov 03, 2023 2:47 pm
Spidey wrote:
Fri Nov 03, 2023 1:46 pm
sanitka wrote:
Fri Nov 03, 2023 1:36 pm


You are only milion first asking about broken table, if you tried to read couple of posts ;), you would get working console where you can set almost anything.
Could you please share the page link or number?
For example on previous page - post with most likes ;) or two-times on this page.
;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;)
;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;)
;) ;)

shade_89
What is cheating?
What is cheating?
Posts: 2
Joined: Fri Nov 03, 2023 3:52 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by shade_89 »

Hello, I just installed Cheat Engine 7.5 and table from this topic - --- Game v4.1.1.3732833 --- Table v10 ---
Console Command does not work, is this caused by new patch or am I doing something wrong?

Secondly, I checked other options and used no weight script, it wiped out weight in all my saves, is there an option to undo this? Guess disabling script does not help.

HenryEx
Cheater
Cheater
Posts: 46
Joined: Thu Aug 02, 2018 10:31 am
Reputation: 64

Re: z Baldur's Gate 3

Post by HenryEx »

yeewesley wrote:
Fri Nov 03, 2023 2:58 pm
Need help.

Thank you so much for your Console Commands script. I copied exactly and pasted it to "Console Command" script , but when i run "Register Commands/Functions" in-game, it return an error << Lua error in the script at line 2:[string "local syntax check, memrec=......"]:17:table index is nil>>


below is "Register Commands/Functions", what could have gone wrong with this? thanks for any kind souls to enlighten me on this. thanks in advance

Code: Select all

(script)
That seems to be a very old / outdated version of the "Register Commands" script. You should use the one from the Table v10 in the original post, it has some additional error checking and might work.
Keep in mind you can only activate the "Register Commands" script when you loaded a save and see a number (currently 1268) in the Command Count.

HenryEx
Cheater
Cheater
Posts: 46
Joined: Thu Aug 02, 2018 10:31 am
Reputation: 64

Re: z Baldur's Gate 3

Post by HenryEx »

shade_89 wrote:
Fri Nov 03, 2023 3:58 pm
Hello, I just installed Cheat Engine 7.5 and table from this topic - --- Game v4.1.1.3732833 --- Table v10 ---
Console Command does not work, is this caused by new patch or am I doing something wrong?

Secondly, I checked other options and used no weight script, it wiped out weight in all my saves, is there an option to undo this? Guess disabling script does not help.
Check a few posts up from yours for a solution to the Console Commands. Yes, the last patch broke a lot of scripts.
As for the No Weight script, your current load is recalculated every time you change your inventory, like dropping or picking up an item. Just deactivate the script, change your inventory and all weight gets properly recalculated.

zch
Novice Cheater
Novice Cheater
Posts: 16
Joined: Wed Jul 27, 2022 6:57 pm
Reputation: 1

Re: z Baldur's Gate 3

Post by zch »

Are Script, spreadsheets, JSON(s) and other goodies still available somewhere?
Been browsing and googling the post for a while can't seem to find the links.
Noway3 wrote:
Sat Aug 26, 2023 2:52 pm
Hi All,
  • Update: 2023-10-14:
    1. I updated the script and generated data up to game version Patch3_Hotfix3
    2. I optimized the output file generation to eliminate empty columns an minimize empty cells in all formats.
    3. I fixed some minor cosmetics issues in the excel sheets
  • Update: 2023-10-05:
    1. I re-organized the files and data a bit differently, See the update description further down this post
    2. more python scripts updates...
  • Update: 2023-10-01:
    1. Updated data to games version Patch3
    2. in "Templates" files, I have recursively filled in all information from parent templates for each object.
    3. added merged-items and merged-characters to have smaller files with those more interesting stuff extracted from merged-all
    4. reworked/updated the python script...
  • Older updates:
    Older updates:
    [*] Update: 2023-09-22:
    1. New feature: "Merged" objects (array, dict and SQLite database)

      The "Merged" database is consolidated from all _merged.lsf data files extracted from the game. These where off the radar until now.
      It is supposed, to my knowledge, to be a comprehensive list of all 'character', 'trigger', 'item', 'scenery', 'LevelTemplate' and other FX effects.
      for example: if you are looking for a specific character or a specific item, search for that name in the "DisplayNameEnglish" column. You should then find the MapKey of it (e.g. to summon it) and the UUID of the template (to spawn an instance of it).

      WARNING: these files are relatively BIG, around 300 MB, they contains a total of 475,746 game objects!

      ALSO: It is still work in progress: I am working on:
      (1) filling in the empty cells recursively from their template values to make it easier to sort out and browse thru .
      And (2) I will also split it to make it easier to download and browse, starting with 'character' (4126 rows) and 'item' list (54408 rows) which seems the most interesting for us (the other stuff could be of interest for modders)
    [*] Update: 2023-09-16:
    1. Added logic to better completely eliminate duplicates (from game patches)
    2. Added logic to put "important/useful" columns in front, excel and json files.
    [*] Update: 2023-09-15:
    1. Fixed missing English translations (mainly in templates files)
    2. Added Flags and Tags files
    3. Added TimelineTemplates in addition to RootTemplates
    4. Updated the code and data up to game version "Patch2 / Hotfix2"
    5. Re-organized files on a google drive share (see new links in this post)
    6. Published the python script source code
    7. Added SQLite3 output format (for future use)
    [*] Update: 2023-09-01:

    I have refreshed all the JSON and the EXCEL sheets to include Patch2 updates for all items, spells, etc ... and translations.
      [*] Update: 2023-08-28:

      I have updated all the JSON and the EXCEL sheets with a "fresh script run" today. With these changes:
      1. Added all RootTemplates records (.xlsx and _dict.json))
        • In these files I have gathered the records from "RootTemplates" files found in the 'UnpackedData' directory tree.
        • All are there (367792 rows) and, as a result, it is quite a cumbersome list. I suggest to filter it with "Type = item" to get the essentials:
        • You will find there, among other, "skinned" weapons and armors (like the Nightsong outfit), books, alchemy, food, weapons, quests and other more mundane stuff.
      2. Sorted the columns in the excel sheets
        • I have moved the most "interesting one" to left so you have then on screen at first sight (English names, UUID, ..)
      3. Corrected few bugs in my script that missed certain type of translations.
    Pitch and details
    I have created a script to gather all the stats of things such as Armors, Characters, Object, Passives, Spells, Statuses, Tags, Flags, Templates, Weapons and outputs them into JSON, Excel files and SQLite database .

    With these files, you should be able to query for any item, spell, boost, flag, tag, status that you may be looking for and find the corresponding UUID to use in the cheat tables.

    Here is the link to the google drive directory, with all the files: [Link]

    It is organized with "Json", "Excel" and "SQLite" and "Script" directories:
    :!: Note: the JSON, Excel or SQLite version contains exactly the same data in different formats; choose the format that fits your needs or your preference.
    • Json Files (Array or Dict format):
      • Flags, Tags
      • Stats_*: Stats_Passives, Stats_Armors, Stats_Characters, Stats_Spells, Stats_Statuses, Stats_Weapons, Stats_CriticalHitTypes, Stats_Interrupts, Stats_Objects --- with all data from the "Stats" game directories files
      • Templates --- with all data from "RootTemplates" and "TimelineTemplates" game directories files
      • Merged --- with all data from the "_merged.lsf.lsx" game files (> 500MB!)
    • Excel files:
      • Flags.xlsx, Tags.xlsx
      • Stats.xlsx - sheets: "Armors", "Weapons", "Objects", "Passives", "Spells", "Statuses", "Characters", "CriticalHitTypes", "Interrupts"
      • Templates.xlsx - sheets: "item", "character", "scenery", "LevelTemplate" --- and other environmental stuff
      • Merged.xlsx - sheets: "Items", "Characters" --- (see json or sqlite formats for full dumps of "Meged" files)
    • SQLite files:
      • bg3data-raw.sqlite3
        - Contains all tables found in "Stats", "Flags" and "Tags"
      • bg3data-merged.sqlite3
        - Contains one table with all the "_merged.lsf.lsx" game files (470 MB !)
      --> The Python script, that generates all these files, is also shared on the google drive, in the "Script" directory
    My thanks again (and again) and credits to Zanzer, EvenLess and all the others in this forum that heavily inspired my own production here.
    ----------------------------------------------------------------------

    You can view JSON files in any text viewer but I suggest to use a specialized viewer, like "Datroit JSON Viewer" (available on datroit_dot_com).
    MS Visual Studio Code is also fine for viewing and searching inside JSON files.

    While testing my script, I have found that they are sometimes multiple instances of the same object in different files.

    Does anybody knows where I can find the proper "load order" of "unpacked _data" to ensure that I am taking the latest update of an object only?
    This is the "load order" that I use in my script for now -- can someone check if that's right, please?:
    ROOT_FOLDERS_L1: List[str] = [ # List of first level root folders directory (add new game Patch/Version here)
    "Shared", "Gustav",
    "Patch0_Hotfix1", "Patch0_Hotfix2", "Patch0_Hotfix3", "Patch0_Hotfix4",
    "Patch1",
    "Patch2", "Patch2_Hotfix1", "Patch2_Hotfix2",
    "Patch3"
    ]

    ROOT_FOLDERS_L2: List[str] = [ # List of second level root folders directory
    "Public/Shared",
    "Public/SharedDev",
    "Public/Gustav",
    "Public/GustavDev"
    ]
    Here are some example of what's in those files:
    Example of spell details found in Spell_dict.json
    "Shout_MAG_Critical_ArcanicCritical": {
    "EntryName": "Shout_MAG_Critical_ArcanicCritical",
    "EntryType": "SpellData",
    "SpellType": "Shout",
    "EntryUsing": "Shout_FalseLife",
    "SpellSchool": "Divination",
    "SpellProperties": "ApplyStatus(MAG_CRITICAL_ARCANIC_CRITICAL,100, 1)",
    "Icon": "Action_Monster_Orin_DeathbringerAssault",
    "DisplayName": "hcb4c06ebgeb5dg4b0dgb4d3gce925d8b8833;2",
    "DisplayName_English": "Arcane Critical",
    "Description": "h32772a4agf2f6g43fagaa4fgecb011feb623;3",
    "Description_English": "Magically augment your ability to annihilate your foes with powerful attacks. The number you need to <LSTag Tooltip=\"AttackRoll\">roll</LSTag> a <LSTag Tooltip=\"CriticalHit\">Critical Hit</LSTag> while attacking is reduced by 2. This effect can stack.",
    "DescriptionParams": "1",
    "TooltipStatusApply": "ApplyStatus(MAG_CRITICAL_ARCANIC_CRITICAL,100, 1)",
    "UseCosts": "BonusActionPoint:1;SpellSlotsGroup:1:1:1",
    "VerbalIntent": "Buff",
    "root_folder": "Patch1/Public/GustavDev"
    },
    Example of lookup for "Legendary" in file "Armor_dict.json" with Datroit JSON viewer:
    Image

    Another example of browsing JSON file with MS Visual Studio Code:
    Image

    Please let me know if something looks to be missing or wrong!

    And don't forget to enjoy the game!

    User avatar
    sanitka
    Expert Cheater
    Expert Cheater
    Posts: 459
    Joined: Sat Aug 22, 2020 5:40 am
    Reputation: 204

    Re: z Baldur's Gate 3

    Post by sanitka »

    zch wrote:
    Fri Nov 03, 2023 4:54 pm
    Are Script, spreadsheets, JSON(s) and other goodies still available somewhere?
    Been browsing and googling the post for a while can't seem to find the links.
    Noway3 wrote:
    Sat Aug 26, 2023 2:52 pm
    Here is the link to the google drive directory, with all the files: [Link]
    Huge letters, link contains keyword link, what more to ask for ? ;)
    (yes, it works, I have tested it a minute ago)

    Post Reply

    Who is online

    Users browsing this forum: 5545ggdgdf, Baidu [Spider], biosolidsnake, DotBot, EtherealSpire, Google [Bot], Google Adsense [Bot], loci22, OMGChrist, RockoTrex, Sharkalistic, tomleiberman, wilsondgonzales