Your Chronicle

Ask about cheats/tables for single player games here
Post Reply
Cerobug
What is cheating?
What is cheating?
Posts: 3
Joined: Mon Jul 26, 2021 2:34 am
Reputation: 1

Re: Your Chronicle

Post by Cerobug »

Does anyone have a working LUA for this? I am not good at coding so I have no idea how to fix anything that was said in the few posts from above.

Zoe Laroux
Novice Cheater
Novice Cheater
Posts: 18
Joined: Sun Dec 24, 2017 6:13 am
Reputation: 11

Re: Your Chronicle

Post by Zoe Laroux »

I would love an updated version of this. Even for more mundane resources would be ducky. its soooo slow as vanilla

DevilliveD89
Novice Cheater
Novice Cheater
Posts: 18
Joined: Tue Nov 28, 2017 1:17 pm
Reputation: 4

Re: Your Chronicle

Post by DevilliveD89 »

Would also like an update for this table.
Until now i have just got around with double and 4byte scans but a working table really is something else.
I really appreciate the work you guys are doing so thx in advance^^

Zoe Laroux
Novice Cheater
Novice Cheater
Posts: 18
Joined: Sun Dec 24, 2017 6:13 am
Reputation: 11

Re: Your Chronicle

Post by Zoe Laroux »

eduroner wrote:
Fri Aug 27, 2021 1:45 pm
Thanks Geo. Fixed and works for steam version:

Code: Select all

<?xml version="1.0" encoding="utf-8"?><CheatTable CheatEngineTableVersion="34"><CheatEntries><CheatEntry><ID>1</ID><Description>"Geo Stuff"</Description><Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript Async="1">{$lua}
if syntaxcheck then return end
[ENABLE]
if not process or not enumModules()[1] then error("Process was not selected or is nil.") end
local starttime=os.time()
local count = 0
while not miMonoTopMenuItem or not miMonoTopMenuItem.miMonoActivate or miMonoTopMenuItem.miMonoActivate.Visible == false do
    count = count + 1
    sleep(1)
    if count &gt;= 5000 then return end
end
miDotNetInfoClick(miMonoTopMenuItem)
if monopipe and monopipe.IL2CPP then
    if not monoSymbolList then
        error("Mono cannot enum symbols.")
        return
    end
    local MonoSymbolEnumTimeout=0
    while (not monoSymbolList or monoSymbolList.FullyLoaded == nil or monoSymbolList.FullyLoaded == false) do
        MonoSymbolEnumTimeout=MonoSymbolEnumTimeout+1
        if MonoSymbolEnumTimeout&gt;20000 then break end
        sleep(1)
    end
    if (not monoSymbolList or monoSymbolList.FullyLoaded == nil or monoSymbolList.FullyLoaded == false) then
        error("Mono features are not working.")
        return
    end
else
    local MonoSymbolEnumTimeout=0
    while monoBase == nil or monobase == 0 or monopipe.Connected == false do
        MonoSymbolEnumTimeout=MonoSymbolEnumTimeout+1
        if MonoSymbolEnumTimeout&gt;20000 then break end
        sleep(1)
    end
    if monoBase==nil or monobase==0 or monopipe.Connected == false then
        error("Mono features are not working.")
        return
    end
end
if monopipe and monoBase then showMessage("Mono features are available.") end
getLuaEngine().close()
[DISABLE]
{$asm}
</AssemblerScript><CheatEntries><CheatEntry><ID>2</ID><Description>"Setup"</Description><Options moHideChildren="1" moManualExpandCollapse="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/><GroupHeader>1</GroupHeader><CheatEntries><CheatEntry><ID>3</ID><Description>"Create Global Classes/Fields/Methods"</Description><Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then return end
local assemblyId = mono_getAssemblyFromName("Assembly-CSharp")
if assemblyId then
    local imageId = mono_getImageFromAssembly(assemblyId)
    ModifyAllGlobalClassesFieldsMethods(imageId, false, false, true, true, true, {}, {}, {})
end
assemblyId = mono_getAssemblyFromName("AnotherChronicle")
if assemblyId then
    local imageId = mono_getImageFromAssembly(assemblyId)
    ModifyAllGlobalClassesFieldsMethods(imageId, false, false, false, true, true, {"Tree", "Utility", "QuestSpace", "NAdditionalEffect", "AHA_Domain", "AnnounceSectionNameSpace", "Envy"}, {"IEatAbilityCtrl", "Eat_Ability", "LevelEffect", "ISloth", "IShortcut", "IAutomatedShortcut", "Achievement", "ActionContainer", "CheckActions", "Formation", "IBulkDealing", "NextAlly_Target", "IBattleEffect", "IListLocation_BattleEffect", "IBattleUnitTarget", "IDeepCopy", "IBestiary", "ICompleteCondition", "IConsumeItem", "Dealing", "IDrop", "Ally", "BattleUnit", "Base_", "IDungeon", "IEnemy", "ISkill", "IBaseStats", "IMagStats", "IToReset", "IEffect", "ILevelFactor", "ISkillUICtrl", "IPartyTemplate", "Default_", "EnumCtrl", "FilterToggle", "OfflineBonusWriter", "FolderInfo", "IHighlight", "IAnnounce", "COMP_PACKER", "ISetSource", "IRestriction", "IComponent", "IDetail", "IInteractable", "IClick", "IHoverAction", "IToggleClick", "IOnlyAction", "ISetActive", "IReleaseComplete", "IPaid", "ICalculateMethod", "IFilter", "IJudgeToFilter", "Filter_Tag", "JudgeTagFilter", "FilteredSetActive", "ILevel", "IUICtrl", "ISliderAction", "IIncreaseAmount", "ICooldown", "IMonoSeparated", "INeed", "IStats", "ISentenceTranslator", "ILuckBonusInfo", "IMonthlyRewardInfo", "INew", "LevelOfflineUnit", "IOfflineBonus", "IInitCostFactor", "ICompleteEffefctFactor", "IIntervalFactor", "IWholeAmount", "IAgent", "IAgentAccepter", "IGetTime", "IRankUpFunction", "IResource", "IRight", "IRubyIteminfo", "Sorted_SetActive", "IChronicleInfo", "IHistory", "IUIState", "IUnlock", "Narou1", "IAnimation", "ILog", "Conditional", "IIdleAction", "SingletonPopUp", "ISeedsHolder", "saveClass", "SavableArray", "SaveManager", "SaveSelectManager", "ISaveLocation", "SaveElement", "ISaveExecutor", "SingletonMonoBehaviour", "UsefulMethod", "UsefulStatic", "Button_Tree", "TemplateList", "ForeignWords", "ICondition", "DLC", "IIntDateRepository", "IClearDateEvent", "GameEvent_Dungeon", "INamedValue", "IContainer"}, {"AscendedAction", "CreateSkillCombination"})
end
assemblyId = mono_getAssemblyFromName("ACTk.Runtime")
if assemblyId then
    local imageId = mono_getImageFromAssembly(assemblyId)
    ModifyAllGlobalClassesFieldsMethods(imageId, false, true, true, true, true, {"Genuine"}, {"ACTkDetectorBase", "KeepAliveBehaviour"}, {"crypt"})
end
local assemblies = mono_enumAssemblies()
for _, assembly in ipairs(assemblies) do
    local imageId = mono_getImageFromAssembly(assembly)
    local assemblyName = mono_image_get_name(imageId)
    ModifyAllGlobalClassesFieldsMethods(imageId, false, true, true, true, false, {"UniRx"}, {"ConfiguredValueTaskAwaiter", "Awaiter", "Entry", "ConditionalElement", "OnNextNotification", "Aggregate", "CombineLatest", "ContinueWith", "DistinctUntilChanged", "FromEventPattern", "FromEvent", "Last", "Pairwise", "Sample", "Scan", "Single", "Throttle", "TreeSubSet", "Node", "Slot", "Mutables", "GroupKeyData", "Boxed"}, {})
end
local assemblyId = mono_getAssemblyFromName("mscorlib")
if assemblyId then
    local imageId = mono_getImageFromAssembly(assemblyId)
    local classId = mono_image_findClass(imageId, "System", "IntPtr")
    if classId then
        local methodId = mono_class_findMethod(classId, "get_Size")
        if methodId then
            local addr = mono_compile_method(methodId)
            if not _System then _System = {} end
            if not _System.IntPtr then _System.IntPtr = {} end
            _System.IntPtr.get_Size = addr
        end
    end
end
unregisterSymbol("_System.IntPtr.size")
autoAssemble([[
aobscanregion(_System.IntPtr.size,_System.IntPtr.get_Size,_System.IntPtr.get_Size+10,B8)
registersymbol(_System.IntPtr.size)
]])
_System.IntPtr.size = readInteger(GetAddress("_System.IntPtr.size")+1)
unregisterSymbol("_System.IntPtr.size")
collectgarbage()
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
local assemblyId = mono_getAssemblyFromName("Assembly-CSharp.dll")
if assemblyId then
    local imageId = mono_getImageFromAssembly(assemblyId)
    ModifyAllGlobalClassesFieldsMethods(imageId, true, false, true, true, true, {}, {}, {})
end
local assemblies = mono_enumAssemblies()
for _, assembly in ipairs(assemblies) do
    local imageId = mono_getImageFromAssembly(assembly)
    local assemblyName = mono_image_get_name(imageId)
    ModifyAllGlobalClassesFieldsMethods(imageId, true, true, true)
end
if _System and _System.IntPtr then _System.IntPtr.size = nil end
collectgarbage()
{$asm}
</AssemblerScript></CheatEntry></CheatEntries></CheatEntry><CheatEntry><ID>4</ID><Description>"Addresses"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><GroupHeader>1</GroupHeader><CheatEntries><CheatEntry><ID>5</ID><Description>"BASE"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><ShowAsSigned>0</ShowAsSigned><GroupHeader>1</GroupHeader><Address>BASE.staticAddress</Address><CheatEntries><CheatEntry><ID>6</ID><Description>"Main"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><ShowAsSigned>0</ShowAsSigned><GroupHeader>1</GroupHeader><Address>+0</Address><Offsets><Offset>0</Offset></Offsets><CheatEntries><CheatEntry><ID>7</ID><Description>"Rsc"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><ShowAsSigned>0</ShowAsSigned><GroupHeader>1</GroupHeader><Address>+Main.rsc</Address><Offsets><Offset>0</Offset></Offsets><CheatEntries><CheatEntry><ID>8</ID><Description>"Get Resource By Kind"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
CreateStringInputForm("BASEMainRscResourcesResourceIndexByKind", "Choose Resource", "Input the Resource Type:", false, nil, nil, function(var, varName)
local resourceKindArray = {"nothing", "exp", "action", "stamina", "mp", "fire", "water", "wind", "earth", "thunder", "ice", "light", "dark", "inspiration", "movement", "habit", "will", "gold", "destiny", "rune", "runeStone", "blessing", "woodenStatue", "goddessStatue", "stoneStatue", "statueOfMuscle", "seaBreezeAmulet", "shrine", "weed", "herb", "mandragora", "flower", "wreath", "medicine", "potion", "elixir", "spiritWater", "holyWater", "fairyDrop", "goddessBlessing", "wood", "firewood", "stone", "scrapMetal", "rareMetal", "steel", "mithril", "pelt", "leather", "durableLeather", "muddy_mucus", "dung", "manure", "stench", "smellySachet", "magicFiber", "dragonClaw", "dragonLiver", "physicalpoint", "magicalpoint", "specialpoint", "wheat", "bread", "mushroom", "apple", "slimeJelly", "wine", "fish", "salt", "olive", "honey", "milk", "butter", "egg", "beef", "pork", "chicken", "mysteriousMeat", "bakedApple", "beefSteak", "porkSteak", "chickenSteak", "meatFestival", "grilledFish", "anchovySandwich", "honeyToast", "honeyApple", "butterToast", "mushroomSaute", "creamStew", "meunier", "baconEgg", "iceCream", "dessertCarnival", "ruby", "sapphire", "emerald", "topaz", "rustySword", "holySword", "engagementRing", "artificialArm", "sin_gluttony", "sin", "guildPoint", "cactus", "palm", "elasticLeather", "desertSaute", "cactusSteak", "driedFruit", "warriorPoint", "sorcererPoint", "tamerPoint", "ePoint1", "ePoint2", "potato", "corn", "griffonFeather", "paper", "book", "bakedPotato", "cornSoup"}
local address = readPointer(BASE.staticAddress)
address = readPointer(address + Main.rsc)
address = readPointer(address + ResourceCtrl.resources)
local baseArrayAddr = address
local count = readInteger(address + _System.IntPtr.size*3)
local found = false
local kind = var
for i=0,count do
    address = readPointer(baseArrayAddr + i*_System.IntPtr.size + _System.IntPtr.size*4)
    if address and address &gt; 0 then
        local kindIndex = readInteger(address + Resource.kind) + 1
        if resourceKindArray[kindIndex] == kind then
            found = true
            formVariables[varName] = i
            break
        end
    end
end
if not found then
    formVariables[varName] = 0
    showMessage("Resource Kind not found.")
end
end)
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
formVariables.BASEMainRscResourcesResourceIndexByKind = nil
{$asm}
</AssemblerScript><CheatEntries><CheatEntry><ID>9</ID><Description>"Resource"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><ShowAsSigned>0</ShowAsSigned><GroupHeader>1</GroupHeader><Address>+ResourceCtrl.resources</Address><Offsets><Offset>0</Offset><Offset>+formVariables.BASEMainRscResourcesResourceIndexByKind*_System.IntPtr.size+_System.IntPtr.size*4</Offset></Offsets><CheatEntries><CheatEntry><ID>10</ID><Description>"Kind"</Description><DropDownList DescriptionOnly="1" DisplayValueAsItem="1">0:nothing
1:exp
2:action
3:stamina
4:mp
5:fire
6:water
7:wind
8:earth
9:thunder
10:ice
11:light
12:dark
13:inspiration
14:movement
15:habit
16:will
17:gold
18:destiny
19:rune
20:runeStone
21:blessing
22:woodenStatue
23:goddessStatue
24:stoneStatue
25:statueOfMuscle
26:seaBreezeAmulet
27:shrine
28:weed
29:herb
30:mandragora
31:flower
32:wreath
33:medicine
34:potion
35:elixir
36:spiritWater
37:holyWater
38:fairyDrop
39:goddessBlessing
40:wood
41:firewood
42:stone
43:scrapMetal
44:rareMetal
45:steel
46:mithril
47:pelt
48:leather
49:durableLeather
50:muddy_mucus
51:dung
52:manure
53:stench
54:smellySachet
55:magicFiber
56:dragonClaw
57:dragonLiver
58:physicalpoint
59:magicalpoint
60:specialpoint
61:wheat
62:bread
63:mushroom
64:apple
65:slimeJelly
66:wine
67:fish
68:salt
69:olive
70:honey
71:milk
72:butter
73:egg
74:beef
75:pork
76:chicken
77:mysteriousMeat
78:bakedApple
79:beefSteak
80:porkSteak
81:chickenSteak
82:meatFestival
83:grilledFish
84:anchovySandwich
85:honeyToast
86:honeyApple
87:butterToast
88:mushroomSaute
89:creamStew
90:meunier
91:baconEgg
92:iceCream
93:dessertCarnival
94:ruby
95:sapphire
96:emerald
97:topaz
98:rustySword
99:holySword
100:engagementRing
101:artificialArm
102:sin_gluttony
103:sin
104:guildPoint
105:cactus
106:palm
107:elasticLeather
108:desertSaute
109:cactusSteak
110:driedFruit
111:warriorPoint
112:sorcererPoint
113:tamerPoint
114:ePoint1
115:ePoint2
116:potato
117:corn
118:griffonFeather
119:paper
120:book
121:bakedPotato
122:cornSoup
</DropDownList><ShowAsSigned>0</ShowAsSigned><VariableType>4 Bytes</VariableType><Address>+Resource.kind</Address></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry><CheatEntry><ID>11</ID><Description>"S"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><ShowAsSigned>0</ShowAsSigned><GroupHeader>1</GroupHeader><Address>+Main.S</Address><Offsets><Offset>0</Offset></Offsets><CheatEntries><CheatEntry><ID>12</ID><Description>"Get Current Resource By Kind"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
CreateStringInputForm("BASEMainSCurrentResourceIndexByKind", "Choose Resource", "Input the Resource Type:", false, nil, nil, function(var, varName)
local resourceKindArray = ResourceKind.enumTable
local address = readPointer(BASE.staticAddress)
address = readPointer(address + Main.S)
address = readPointer(address + Save.current_resource)
local baseArrayAddr = address
local count = readInteger(address + _System.IntPtr.size*3)
local found = false
local kind = var
for i=0,count do
    if resourceKindArray[i+1] == kind then
        found = true
        formVariables[varName] = i
        break
    end
end
if not found then
    formVariables[varName] = 0
    showMessage("Resource Kind not found.")
end
end)
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
formVariables.BASEMainSCurrentResourceIndexByKind = nil
{$asm}
</AssemblerScript><CheatEntries><CheatEntry><ID>13</ID><Description>"Value"</Description><ShowAsSigned>0</ShowAsSigned><VariableType>Double</VariableType><Address>+Save.current_resource</Address><Offsets><Offset>formVariables.BASEMainSCurrentResourceIndexByKind*8+_System.IntPtr.size*4</Offset></Offsets></CheatEntry></CheatEntries></CheatEntry><CheatEntry><ID>14</ID><Description>"Get Permanent Resource By Kind (Obscured)"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
CreateStringInputForm("BASEMainSPermanentResourceActIndexByKind", "Choose Resource", "Input the Resource Type:", false, nil, nil, function(var, varName)
local resourceKindArray = PermanentResourceKind.enumTable
local address = readPointer(BASE.staticAddress)
address = readPointer(address + Main.S)
address = readPointer(address + Save.value_PermanentResource_act)
local baseArrayAddr = address
local count = readInteger(address + _System.IntPtr.size*3)
local found = false
local kind = var
for i=0,count do
    if resourceKindArray[i+1] == kind then
        found = true
        formVariables[varName] = i
        break
    end
end
if not found then
    formVariables[varName] = 0
    showMessage("Resource Kind not found.")
end
end)
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
formVariables.BASEMainSPermanentResourceActIndexByKind = nil
{$asm}
</AssemblerScript><CheatEntries><CheatEntry><ID>15</ID><Description>"Value"</Description><ShowAsSigned>0</ShowAsSigned><VariableType>Double</VariableType><Address>+Save.value_PermanentResource_act</Address><Offsets><Offset>formVariables.BASEMainSPermanentResourceActIndexByKind*8*6+_System.IntPtr.size*4-CodeStage.AntiCheat.ObscuredTypes.ObscuredDouble.currentCryptoKey+CodeStage.AntiCheat.ObscuredTypes.ObscuredDouble.fakeValue</Offset></Offsets></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry><CheatEntry><ID>16</ID><Description>"Scripts"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><GroupHeader>1</GroupHeader><CheatEntries><CheatEntry><ID>17</ID><Description>"Permanent Resource Force Purchasable"</Description><Options moHideChildren="1" moDeactivateChildrenAsWell="1"/><VariableType>Auto Assembler Script</VariableType><AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
RegisterGlobalMethod("PermanentRsc_Dealing.CanPurchase")
{$asm}
aobscanregion(Permanent_Resource_Force_Purchasable,PermanentRsc_Dealing.CanPurchase,PermanentRsc_Dealing.CanPurchase+5000,66 * * * 0F 86 * * * * 33 C0 EB)
Permanent_Resource_Force_Purchasable+04:
  db 90 E9
registersymbol(Permanent_Resource_Force_Purchasable)
unregistersymbol(PermanentRsc_Dealing.CanPurchase)
[DISABLE]
Permanent_Resource_Force_Purchasable+04:
  db 0F 86
unregistersymbol(Permanent_Resource_Force_Purchasable)
</AssemblerScript></CheatEntry></CheatEntries></CheatEntry></CheatEntries></CheatEntry></CheatEntries><UserdefinedSymbols/><LuaScript>function cycleFullCompact(sender, force)
    local state = not(compactMenuItem.Caption == 'Compact View')
    if force~=nil
        then state = not force
    end
    compactMenuItem.Caption = state and 'Compact View' or 'Full View'
    getMainForm().Splitter1.Visible = state
    getMainForm().Panel4.Visible = state
    getMainForm().Panel5.Visible = state
end
function addCompactMenu()
    if compactMenuItem and compactMenuItem.Exists then return end
    local menuItems = getMainForm().Menu.Items
    compactMenuItem = createMenuItem(menuItems)
    menuItems.add(compactMenuItem)
    compactMenuItem.Caption = 'Compact View'
    compactMenuItem.OnClick = cycleFullCompact
    compactMenuItem.Exists = true
end
addCompactMenu()
function readIntegerSigned(addr)
  local val=readInteger(addr)
  local sign=bAnd(val,0x80000000)
  return sign==0 and val or val-0x100000000
end
function readByteSigned(addr)
  local val=readBytes(addr, 1, false)
  local sign=bAnd(val,0x80)
  return sign==0 and val or val-0x100
end
function mono_getAssemblyFromName(assemblyName)
    local assemblyIds = mono_enumAssemblies()
    if not assemblyIds then return nil end
    for _, assemblyId in ipairs(assemblyIds) do
        local imageId = mono_getImageFromAssembly(assemblyId)
        local name = mono_image_get_name(imageId)
        if name == assemblyName then
            return assemblyId
        end
    end
    return nil
end
function CreateGlobalDelimitedVariable(varString, delimiter, removeStrings)
    local var = _G
    if not delimiter then delimiter = '.' end
    local nameParts = {}
    for part in string.gmatch(varString, "([^" .. delimiter .. "]+)") do
        local partName = part
        if removeStrings then
            for i, rs in pairs(removeStrings) do
                partName = partName:gsub(rs, "")
            end
        end
        table.insert(nameParts, partName)
    end
    for i, part in ipairs(nameParts) do
        if not var[part] then var[part] = {} end
        var = var[part]
    end
    return var
end
function RegisterMonoMethodAddress(classNamespace, className, methodName, delimiter, createGlobal)
    if not delimiter then delimiter = '.' end
    local mId = mono_findMethod(classNamespace, className, methodName)
    if mId == 0 then
        mId = mono_findMethod("", className, methodName)
        local errorMsg = "Cannot find the " .. className .. delimiter .. methodName .. " method to register"
        if mId == 0 then error(errorMsg) end
        if classNamespace ~= string.match(mono_class_getFullName(mono_method_getClass(mId)), "(.*)[" .. delimiter .. "]") then error(errorMsg) end
    end
    local mAddr = mono_compile_method(mId)
    if mAddr then
        local symbolName = classNamespace .. delimiter .. className .. delimiter .. methodName
        if not classNamespace or classNamespace == '' then symbolName = className .. delimiter .. methodName end
        if createGlobal then
            if not classNamespace or classNamespace == '' then _G[className][methodName] = mAddr
            else
                local varName = classNamespace .. delimiter .. className
                local gVar = CreateGlobalDelimitedVariable(varName, delimiter)
                gVar[methodName] = mAddr
            end
        end
        unregisterSymbol(symbolName)
        registerSymbol(symbolName, mAddr, true)
        return mAddr
    end
    return nil
end
function RegisterGlobalMethod(varString, delimiter, removeStrings)
    if not delimiter then delimiter = '.' end
    if not varString:find(delimiter) then return end
    local methodName = string.match(varString, ".*[" .. delimiter .. "](.*)")
    local classFullName = string.match(varString, "(.*)[" .. delimiter .. "]")
    local className = classFullName
    local classNamespace = ""
    local baseVar = nil
    if classFullName:find("["..delimiter.."]") then
        className = string.match(classFullName, ".*[" .. delimiter .. "](.*)")
        classNamespace = string.match(classFullName, "(.*)[" .. delimiter .. "]")
        baseVar = CreateGlobalDelimitedVariable(classFullName, delimiter, removeStrings)
    else
        if not _G[classFullName] then
            _G[classFullName] = {}
        end
        baseVar = _G[classFullName]
    end
    unregisterSymbol(varString)
    if not baseVar[methodName] then
        RegisterMonoMethodAddress(classNamespace, className, methodName, delimiter, true)
    else
        registerSymbol(varString, baseVar[methodName], true)
    end
end
function ModifyAllGlobalClassesFieldsMethods(imageId, remove, safe, suppress, createFields, createMethods, excludedNamespaces, excludedClassNames, excludedMethodNames)
    if not imageId then return end
    local excludedClassIds = {}
    local classIds = mono_image_enumClasses(imageId)
    for i, class in ipairs(classIds) do
        if class.class and class.class &gt; 0 then
            if not tableContainsValue(excludedClassIds, classId) then
                ModifyGlobalClassesFieldsMethods(class.class, imageId, remove, safe, suppress, createFields, createMethods, excludedNamespaces, excludedClassNames, excludedMethodNames)
            end
            table.insert(excludedClassIds, class.class)
        end
    end
end
function ModifyGlobalClassesFieldsMethods(classId, imageId, remove, safe, suppress, createFields, createMethods, excludedNamespaces, excludedClassNames, excludedMethodNames)
    if not classId or classId == 0 then return end
    if createFields == nil then createFields = true end
    if assemblyName == '' then assemblyName = nil end
    if not excludedClassIds then excludedClassIds = {} end
    local className = mono_class_getName(classId)
    local classFullName = mono_class_getFullName(classId)
    local classNamespace = mono_class_getNamespace(classId)
    local excluded = false
    local var = _G
    if (not classNamespace or classNamespace == '') and classFullName ~= className then
        classNamespace = string.match(classFullName, "(.*)[.]")
    end
    if classNamespace and classNamespace ~= '' then
        excluded = stringFoundInTable(classNamespace, excludedNamespaces)
        if excluded then return end
        classNamespace = classNamespace:gsub("^(System)", "_System")
        var = CreateGlobalDelimitedVariable(classNamespace, '.', {"`1", "`"})
    else
        local nestedClassParentIdList = {}
        if mono_class_getNestingType then
            local nestedClassParentId = mono_class_getNestingType(classId)
            while nestedClassParentId and nestedClassParentId &gt; 0 do
                table.insert(nestedClassParentIdList, 1, nestedClassParentId)
                nestedClassParentId = mono_class_getNestingType(classId)
            end
        end
        if nestedClassParentIdList[1] then classNamespace = mono_class_getNamespace(nestedClassParentIdList[1]) end
        for i, parentClassId in pairs(nestedClassParentIdList) do
            local parentClassName = mono_class_getName(parentClassId)
            parentClassName = parentClassName:gsub("`1", ""):gsub("`", "")
            if not var[parentClassName] then var[parentClassName] = {} end
            var = var[parentClassName]
        end
    end
    if not className then return end
    local classVarName = className:gsub("`1", ""):gsub("`", ""):gsub("&lt;", ""):gsub("&gt;", "")
    excluded = stringFoundInTable(className, excludedClassNames)
    if not excluded then if className:find("c__Iterator") or className:find("Enumerator") then excluded = true end end
    if remove or excluded then
        var[classVarName] = nil
        return
    end
    table.insert(excludedClassIds, classId)
    if var == _G and classVarName == "type" and type(var[classVarName]) == "function" then classVarName = "_" .. classVarName end
    if var[classVarName] and type(var[classVarName]) ~= "table" then var[classVarName] = nil end
    local domain = mono_enumDomains()[1]
    local staticFieldAddr = 0
    if safe and className:find("[`&lt;&gt;]") then
        staticFieldAddr = 0
    else
        staticFieldAddr = mono_class_getStaticFieldAddress(domain, classId)
    end
    if not staticFieldAddr and not suppress then
        print(className .. " failed to read static address.")
    end
    if not var[classVarName] then var[classVarName] = {} end
    var[classVarName].staticAddress = staticFieldAddr
    if createFields then
        CreateGlobalFields(classId, var, classVarName)
    end
    if createMethods then
        CreateGlobalMethods(classId, var, classVarName, className, classNamespace, excludedMethodNames, suppress)
    end
end
function CreateGlobalFields(classId, rootVar, className)
    for i, field in ipairs(mono_class_enumFields(classId, true)) do
        local fieldName = field.name
        if field.name:find("&lt;") and field.name:find("&gt;") then
            fieldName = string.match(field.name, "&lt;(%w+)&gt;")
        elseif field.name:find("[&lt;&gt;]") then
            fieldName = field.name:gsub("&lt;", ""):gsub("&gt;", "")
        end
        if not fieldName then fieldName = field.name end
        if fieldName ~= "" then rootVar[className][fieldName] = field.offset end
        local parentClass = mono_class_getParent(classId)
        if (field.monotype == MONO_TYPE_ENUM) or (parentClass and parentClass &gt; 0 and mono_class_getFullName(parentClass) == "System.Enum") then
            if fieldName ~= "enumSeperatorCharArray" and fieldName ~= "enumSeperator" and fieldName ~= "value__" then
                if not rootVar[className].enumTable then rootVar[className].enumTable = {} end
                if not tableContainsValue(rootVar[className].enumTable, fieldName) then
                    table.insert(rootVar[className].enumTable, fieldName)
                end
            end
        end
    end
end
function CreateGlobalMethods(classId, rootVar, className, oClassName, classNamespace, excludedMethodNames, suppress)
    for i, method in ipairs(mono_class_enumMethods(classId)) do
        excluded = stringFoundInTable(method.name, excludedMethodNames)
        if not excluded then
            local methodAddr = mono_compile_method(method.method)
            if (not methodAddr or methodAddr == 0) and not suppress then
                if classNamespace and classNamespace ~= '' then
                    print(classNamespace .. '.' .. oClassName .. '.' .. method.name .. " failed to compile.")
                else
                    print(oClassName .. '.' .. method.name .. " failed to compile.")
                end
                return
            end
            local methodName = method.name
            local count = 2
            while rootVar[className][methodName] and rootVar[className][methodName] ~= methodAddr do
                methodName = method.name .. count
                count = count + 1
            end
            rootVar[className][methodName] = methodAddr
        end
    end
end
function stringFoundInTable(str, strTable)
    if strTable and strTable ~= {} then
        for i, s in ipairs(strTable) do
            if str:lower():find(s:lower()) then
                return true
            end
        end
    end
    return false
end
function tableContainsValue(tbl, val)
    if tbl and tbl ~= {} then
        for _,v in pairs(tbl) do
            if v == val then
                return true
            end
        end
    end
    return false
end
function CreateStringInputForm(varName, formName, labelText, numbersOnly, width, height, func)
    width = width or 180
    height = height or 80
    if not formVariables then formVariables = {} end
    formVariables[varName] = nil
    local form = CreateBaseForm(formName, labelText, width, height)
    local text_box = createEdit(form)
    text_box.setTop(form.Height - 60)
    text_box.Width = form.Width - 20
    text_box.anchorSideLeft.control=form
    text_box.anchorSideLeft.side=asrCenter
    local OK_Button = createButton(form)
    OK_Button.setTop(form.Height - 30)
    OK_Button.Width = form.Width - 20
    OK_Button.Caption = 'OK'
    OK_Button.anchorSideLeft.control=form
    OK_Button.anchorSideLeft.side=asrCenter
    OK_Button.onClick = function()
        if numbersOnly == true then
            local num = tonumber(text_box.Text)
            if num then
                formVariables[varName] = num
            else
                formVariables[varName] = 0
            end
        else formVariables[varName] = text_box.Text end
        if func then func(formVariables[varName], varName) end
        form.hide()
    end
end
function CreateDropdownForm(varName, itemArray, formName, labelText, width, height, func)
    if not formVariables then formVariables = {} end
    formVariables[varName] = nil
    local form = CreateBaseForm(formName, labelText, width, height)
    local slot_box = createComboBox(form)
    slot_box.setTop(form.Height - 30)
    slot_box.Width = form.Width - 20
    slot_box.anchorSideLeft.control=form
    slot_box.anchorSideLeft.side=asrCenter
    for _, item in ipairs(itemArray) do
        slot_box.items.add(item)
    end
    slot_box.onChange = function()
        formVariables[varName] = slot_box.ItemIndex
        if func then func(formVariables[varName], varName, itemArray[hexItemIndex]) end
        form.hide()
    end
end
function CreateBaseForm(formName, labelText, width, height)
    width = width or 180
    height = height or 50
    local form = createForm()
    m=getmetatable(form)
    m.__autodestroy=true
    local label = createLabel(form)
    form.centerScreen()
    form.Width = width
    form.Height = height
    label.anchorSideLeft.control=form
    label.anchorSideLeft.side=asrCenter
    label.Width = form.Width - 20
    control_setCaption(form, formName)
    control_setCaption(label, labelText)
    return form
end
</LuaScript></CheatTable>
I attempted to use this and i am stilling getting a crash with "IReincarnationAction.ReincarnationAction failed to compile. "

i realize that this is the issue that everyones trying to solve over the last two pages.

But is there a way to seperate out the issues with reincarnation so that the rest of the table functions? I am but a complete novice, so im going to look it over to see what i can do. But obviously, you are all echelons above me. I wouldnt bet on me solving the issue. :D

User avatar
ApeDemon66
Expert Cheater
Expert Cheater
Posts: 226
Joined: Sat Mar 03, 2018 7:31 am
Reputation: 180

Re: Your Chronicle

Post by ApeDemon66 »

Zoe Laroux wrote:
Mon Oct 11, 2021 11:37 pm
... is there a way to seperate out the issues with reincarnation so that the rest of the table functions?
Yea. My table is setup specifically to find and compile everything in the game and make it a lua variable to access in Cheat Engine. It's really overkill for what little is present in the table, but I do this because it makes everything else easier especially when adding new stuff to it. It could be designed to selectively use what's necessary in the table to avoid all the interface classes and what not that crashes it, but I didn't design it that way.

arkenstonish
Noobzor
Noobzor
Posts: 5
Joined: Sat Mar 21, 2020 5:36 am
Reputation: 6

Re: Your Chronicle

Post by arkenstonish »

Working version of Geo's table with:
-> Steam version 1.8.2.2 of Your Chronicle
-> Cheat Engine 7.2

Tutorial with couple of screenshots (A to I) thrown around for people having no idea where to start:

A-1) Download the table from this post (Your Chronicle 1.8.2.2 Geo Table.CT)
A-2) Start Your Chronicle, get the game going.
A-3) Start Cheat Engine 7.2
A-4) In CE, go to File/Open Process and select YourChronicle.exe from the list.

B-1) Go to File/Load and select the table you've downloaded previously.
C-1) Depending on your CE settings, a window might pop-up asking if it's okay to execute the lua script. Say YES.

D-1) You should now see "Geo Stuff" at the bottom of the CE window. Click on the square next to it.
E-1) A ".NET Info" window should appear with a bunch of stuff on the left side column, along with a pop-up saying Mono features are available. Click OK. (If the left side column is empty, close both the game and CE and start again. This happens from time to time.)

F-1) After clicking OK on the previous pop-up, Geo' script launches and there is a clock symbol running next to "Create Global Classes/Fields/Methods". A Lua Engine pop-up also appears with some stuff that didn't compile. Those should be the same as in the picture if you are using the 1.8.2.2 Table on the 1.8.2.2 game. They won't affect anything, but don't close the pop-up yet.

G-1) Let the clock symbol runs out until it changes into a X. Then close the Lua Engine pop-up.

H-1) If your game has not crashed yet, you are in business. Click the squares next to "Addresses", "BASE", "Main", "S".
H-2) Click the square next to "Get Current Resource by Kind" and a pop-up appears asking for resource type. Refer to Geo's post in page 1 of this thread for a list of all the resource names. I typed "gold" as an example.

I-1) On the Value line at the bottom, you can see that I had 195.28 gold at the time. You can double click on that number to change it to what you want, and then check the square next to Value to keep it at that amount.

Image
Attachments
Your Chronicle 1.8.2.2 Geo Table.CT
(36.03 KiB) Downloaded 420 times

DevilliveD89
Novice Cheater
Novice Cheater
Posts: 18
Joined: Tue Nov 28, 2017 1:17 pm
Reputation: 4

Re: Your Chronicle

Post by DevilliveD89 »

Thx for the table.
Is there a way to edit multiple resources instead of just deactivate and activate again to change another resource?

tarjmov
Noobzor
Noobzor
Posts: 8
Joined: Sun May 09, 2021 10:07 pm
Reputation: 1

Re: Your Chronicle

Post by tarjmov »

When I tried arkenstonish's method, my game crashed. Any suggested fixes?

Jirodyne
Cheater
Cheater
Posts: 29
Joined: Fri Jan 10, 2020 11:51 am
Reputation: 0

Re: Your Chronicle

Post by Jirodyne »

Same as tarjmov. Game updated now, and released a dlc, so this CT just crashes the game fully 100% of the time. Any chance of getting an update?

arkenstonish
Noobzor
Noobzor
Posts: 5
Joined: Sat Mar 21, 2020 5:36 am
Reputation: 6

Re: Your Chronicle

Post by arkenstonish »

Updated version of Geo's table with:
-> Steam version 1.8.3.1 of Your Chronicle
-> Cheat Engine 7.2


On a side note, there is a temporary "mimic event" currently in the game (up until Nov 15th). It's a new dungeon that consists of only 3 mimics (each one dropping a bronze/silver chest), with the caveat that you can only run it once a day. Since no one posted a way to modify the chest counter so far, maybe it would be easier for someone knowledgeable (definitely not me) to circumvent that daily timer and allow us to run that dungeon at will?!

Must be looked at quickly though, as event ends in 10 days. Thanks ;)
Attachments
Your Chronicle 1.8.3.1 Geo Table.CT
(36.07 KiB) Downloaded 247 times

GMenator
What is cheating?
What is cheating?
Posts: 1
Joined: Mon Dec 13, 2021 12:26 pm
Reputation: 0

Re: Your Chronicle

Post by GMenator »

I'm not sure if it is due to being a mac user or whether I'm doing something wrong but attempting to activate the geo script crashes my cheat engine (using CE73 and 1.8.3.1 of YourChronicle via steam) although the crash also happened on CE72 prior to updating.

The game is unaffected and I've been able to modify values using trial and error (although I did manage to wipe my ruby total :dry: with this method).

Failing being able to get the geo option working, is there a way of being able to locate the address for chests/rubies using simple scan/repeat options? Prior to wiping mine I'd tried byte (which I got an address for but could only modify 10s/units for my total) and byte4 and byte8 which is when I screwed myself... ignorance is bliss unless you are a bumbling idiot tampering with game code lol!

Thanks for any help :D

maxime28
What is cheating?
What is cheating?
Posts: 1
Joined: Fri Dec 31, 2021 4:39 pm
Reputation: 0

Re: Your Chronicle

Post by maxime28 »

I dont't know what I do wrong but I do exactly what say arkenstonish step by step and at step F after I close the window by clicking ok, Lua Engine don't pop up and I continue the clock turn after 1hour and more and never stop and if i continue the step at the end I get a error : Failed to create win32 control, error: 1400 : handle de fenetre non valide.

it is just because my windows is in french? help me plz

cheatlurker
What is cheating?
What is cheating?
Posts: 1
Joined: Sat Jan 01, 2022 3:21 pm
Reputation: 0

Re: Your Chronicle

Post by cheatlurker »

I don't think you did anything wrong. I believe that it needs to be updated again as newest table worked up until the mimic event back in November

User avatar
Sheelin
Novice Cheater
Novice Cheater
Posts: 17
Joined: Thu Jul 23, 2020 5:51 pm
Reputation: 1

Re: Your Chronicle

Post by Sheelin »

Any update for the Steam version? This table doesn't work, keeps "working" the scripts without doing anything, or even crashing CH

dazric
Novice Cheater
Novice Cheater
Posts: 24
Joined: Mon May 08, 2017 7:39 pm
Reputation: 1

Re: Your Chronicle

Post by dazric »

Sheelin wrote:
Wed Jan 05, 2022 4:23 pm
Any update for the Steam version? This table doesn't work, keeps "working" the scripts without doing anything, or even crashing CH
Most of the values you want are stored as doubles. You can search them easily, it's just a bit of a pain. Other than that, we'll just have to wait for a table update, because I have no idea how to do lua coding.

Post Reply

Who is online

Users browsing this forum: ArthurGRX, beckrchard, Bing [Bot], TSChampion, twitch23, xEliezer10x