Kindly DO NOT POST this table on other forums/communities (e.g.: Nexus, OCD). Same as you prefer those places, I prefer FRF, having created these tools specifically for this community. If you want to spread the news and let others enjoy all of this, then please link them to join FRF. I'd also appreciate if you didn't merge my table with other people's without asking for permission up front. Crediting the author does not account for approval. Thank you for respecting my choice!
Last public table update (I have finished the game, so for any future updates I will be available on Patreon):
- Added Change ConsoleKey script for those people who weren't successful in editing a simple .ini file or making it read-only.
Run the script, type in F1 or whichever key you want in the input field, then click OK. You can find a list of keys that are ALLOWED inside the script: right-click it > Change script > look under [DISABLE] section.
1) Yes, you will need to do it with every game launch. It's not saved anywhere, it's only changed in memory.
2) Yes, now you need the DLL to be able to open the console -AND- the table to change the ConsoleKey to your liking. I will not go any other extra mile to put everything into 1 DLL or 1 table, just cuz you're too lazy to use both T_T. So deal with it.
3) If you want to change the key again, disable the script, re-enable it, type in another key, click OK. Done.
That being said, if you don't care for the above, continue to use v1.3 of the table and you're good to go.
BR,
Sun
***
[ 14 Feb 23 - Hit #5 ]
New DLL update:
- I have moved everything that is related to Unreal Engine, Console, etc. from the table into dxgi.dll. That being said, if you want access to the console to type in commands (NOT SQL!), please download the DLL below and follow the instructions; you do not need the table anymore.
- I have restored fly, walk and ghost console commands. You can now use them with the console and they will do what they were designed to do:
- fly
Lets you fly. Your character will maintain Z height and not fall, thus walking on air. Movement is done solely in the ground plane, you can't go up and down (for now). Collisions are on, you can't move through walls. See ghost. While this is on, you can't perform normal actions (e.g.: attack, Q, E, etc.). It's how the Engine behaves, not my doing. And nah, I won't bother figuring it out.
- walk
Returns you to the ground and enables collisions.
- ghost
Same as fly, but you can walk through solid objects (e.g.: through locked doors you can't get through yet). Collisions are off. While this is on, you can't perform normal actions (e.g.: attack, Q, E, etc.). It's how the Engine behaves, not my doing. And nah, I won't bother figuring it out.
- fly
- There are several other commands you can run now (e.g.: SetInvulnerable 3600000) that I've updated in 2nd post (see Game Cheat Commands section) -> viewtopic.php?p=284991#p284991
- I have restored fly, walk and ghost console commands. You can now use them with the console and they will do what they were designed to do:
Download DLL:
Put the DLL in your game folder, in \HogwartsLegacy\Phoenix\Binaries\Win64 folder:
- example for Steam: E:\SteamLibrary\steamapps\common\Hogwarts Legacy\Phoenix\Binaries\Win64
- example for EGS: F:\Epic Games\HogwartsLegacy\Phoenix\Binaries\Win64
***
New table update:
- I have removed everything that is related to Unreal Engine, Console, etc. from the table. That being said, if you want access to just the SQL UDF for running SQL statements -or- SQL-related scripts, then download the cheat table below; you do not need the DLL anymore.
- I have added Gc3's Item Generator script (viewtopic.php?p=286106#p286106). It generates (and runs automatically) SQL statements that add gear to the 'GearItemsDynamic' and 'InventoryDynamic' tables. You can customize the settings, then activate 'Give Item' script. NOTE that there won't be any notification that something has happened. Then open your inventory and check stuff out.
Since this is not my work, please direct any questions you may have or issues you experience to Gc3.
- Everything else stays the same. In case you don't know how to operate some script or what it does, please read about them in the sections below. Just cuz the table has updated and things got much simpler doesn't exonerate you from reading and getting to know what is it that you're using.
- One more time: you do not need to adjust/fix/update UpdateTime in your SQL statements, as this is done automatically when you execute the statement through Shift+Enter in << SQLite Exec >> UDF.
- I have added Gc3's Item Generator script (viewtopic.php?p=286106#p286106). It generates (and runs automatically) SQL statements that add gear to the 'GearItemsDynamic' and 'InventoryDynamic' tables. You can customize the settings, then activate 'Give Item' script. NOTE that there won't be any notification that something has happened. Then open your inventory and check stuff out.
Download table:
BR,
Sun
***
[ 11 Feb 23 - Hit #4 ]
Updated the table, so now the UpdateTime is automatically replaced in your SQL statements on execution. Namely lines 17 through 22 in the Lua of 'Toggle SQLite Exec UDF' script:
Code: Select all
-- auto UpdateTime replaced in the SQL statement, where found
local g_Scheduler = getAddressSafe( "g_Scheduler" )
local UpdateTime_offset = readInteger( getAddressSafe( "Get_UpdateTimeOffset" ) + 0x3 )
local UpdateTime = string.format( "%d", readQword( readQword( g_Scheduler ) + UpdateTime_offset ) )
text = text:gsub( "UpdateTime = [0-9]*", "UpdateTime = " .. UpdateTime .. "" )
--
Put the DLL in your game folder, in \HogwartsLegacy\Phoenix\Binaries\Win64 folder:
- example for Steam: E:\SteamLibrary\steamapps\common\Hogwarts Legacy\Phoenix\Binaries\Win64
- example for EGS: F:\Epic Games\HogwartsLegacy\Phoenix\Binaries\Win64
It seems I have to re-iterate the below every time I make an update, as a lot of you skip this part...
Please note that you will still need the DLL (dxgi.zip > dxgi.dll) to access the in-game CONSOLE (for 'fly', 'ghost', 'walk' commands)! Although it has nothing to do with the UDF to run SQL statements, it will temporarily fix the aobscan error you've been having. Just saying.. cuz people go "can't use the console, I downloaded the table" -or- "I thought I only need the table"..
BR,
Sun
***
[ 11 Feb 23 - Hit #3 ]
Updated the table to latest version (1.0.1119132). It didn't need anything to be fixed, but there are additions. In theory, should work with both Steam and EGS (tested with EGS, that I know it works there).
Added 1 more feature (could've been two, but heh, didn't work):
- [ Game ] sub-section
- Dump Save-Game SQLite Database From Memory To Disk
Story:
As you know, the game uses an SQLite database to store quite a bit of information in the game. Anything you collect, achieve, etc. is INSERT-ed and UPDATE-ed into this database (short: db). The game breaks out the various tables from this database into in-memory tables, which get updated separately. When there is an auto-save event or you save, the information from each table is collected and updated into the in-memory database. This is then saved to disk, into your save-game. That's the flow.
Script:
The script will find the db that's been loaded from your save-game into memory (the original from disk, not your current progression) and dump it to disk to your DESKTOP as game.db. You can then browse it with the DB Browser for SQLite tool.
Video showing this:
NOTE: I got 1 report that this works fine for just the first character in first slot. If you have a second character, it won't work. Haven't been able to confirm it, but putting it here for others to read.
- Replace Memory Save-Game SQLite Database with Edited Database
THE SCRIPT HAS NO EFFECT! The theory behind this is simple: I wanted to use the script above, dump in-game database to disk, open it with an SQL editor, change whatever I wanted in there and save it. The script then takes 'game.db' from Desktop, checks its size and allocates new memory to load it there. Once loaded, it replaces the pointer to the original db to the address of my loaded one (size is updated and all). Unfortunately, the game has the various tables spliced in memory, so on an auto-save or save, it will overwrite it in memory (update it) with in-game values. So all my edits are gone. That's why, although the theory put into practice works -replacing the db- because the game overwrites it, the effect is not what we'd want. It's grayed out so DO NOT USE it (you can, but doesn't do anything that you'd notice).
I left it in as proof of concept.
(obsolete, moved to [ Debug ] section in latest table)
- Dump Save-Game SQLite Database From Memory To Disk
Everything I wrote in the older sections down below is still applicable! So please do your due diligence and read before asking or complaining.
BR,
Sun
***
[ 9 Feb 23 - Hit #2 ]
Added a cheat table with several features:
(Note: this is not a cheat table in the traditional sense; not a "god, infinite x, infinite y" etc. table with quick scripts to make your life easier; you can find other such tables for your needs on the forum)
Content:
- [ Engine ] sub-section
- Hook UCheatManager execs (execFly, execGhost, execWalk)
The script restores the core of fly, ghost, walk console commands. After activating this script, open the in-game console (see [ 07 Feb 20 - Hit #1 ] section below) and type in:
- fly then hit [Enter] key
You will now be flying, in the sense that you won't fall off surfaces when you move (see it as no gravity). To gain height, you will have to shimmy along curved upwards surfaces. I couldn't find the movement functions (forward, right) for the game to hook them and allow movement in the direction where the mouse is pointing towards (will see if I can fix it later).
- ghost then hit [Enter] key
Same as fly, but this time around there's no collisions. Meaning you can walk through surfaces (e.g.: locked doors). Useful to get access to areas you're not supposed to at the start of the game.
- walk then hit [Enter] key
This disables fly/ghost, returning your character to solid ground (normal movement behavior).
- fly then hit [Enter] key
- you can ignore the rest of the scripts, as they're either covered by dxgi.dll (Patch AllowCheats; Patch "SET" Command; Set UFunctions Executable (on console use)) or not useful at this point in time (Unrestrict CVars; Clear Console (works only with Console active))
- Hook UCheatManager execs (execFly, execGhost, execWalk)
- [ Game ] sub-section
- Toggle SQLite Exec UDF
This will open up an UDF (user-defined form) window in which you can type SQL commands the game will commit to the [Link]:
Notes:
- the window is resizeable (drag its borders left, right, up, down to adjust it to your needs)
- white input memo box at the bottom is used to type in text:
- you can use Enter key to move to next line and type some more
- Shift+Enter key combination will execute what you've typed
- you can scroll it horizontally and vertically
- I recommend writing the SQL statements in Notepad++, then copy-pasting it into the input box, then Shift+Enter
- purple memo box is used to display what you've executed
- it doesn't work like a "return result" log-type of window; just prints a copy of your input
- Clear button
- clears the purple memo box
- Close [x] button
- will close the UDF window and deactivate "Toggle SQLite Exec UDF" script
- UpdateTime
This is the internal Scheduler timer for the game WORLD. See it as a timestamp. Some of the statements require this to be provided as a value so it's updated on the respective column in the in-memory database. YOU WILL NEED TO COPY-PASTE THIS MANUALLY INTO YOUR STATEMENTS (it's done automatically now in v1.2 of the table; see [ 11 Feb 20 - Hit #4 ] section). The value will stay the same during an active mission, but will change every second while in open world. You don't need to worry about not copy-pasting some correct value, as it doesn't matter if you run a query with timestamp of 20 seconds ago or 1 minute ago. See: viewtopic.php?p=285827#p285827.
Now.. what is it that you can execute with this UDF can be found in 2nd post under the "SQL Examples" section. This is a WORK IN PROGRESS, so if you want to help, read below the red text.
Please note that you will still need the DLL (dxgi.zip > dxgi.dll) to access the in-game CONSOLE (for 'fly', 'ghost', 'walk' commands)! And that DLL is in the section below, so don't overlook the rest of the post, please. Yes, it has nothing to do with SQL or the UDF above. Just saying.. cuz people go "can't use the console, I downloaded the table" -or- "I thought I only need the table"..
IF YOU WANT TO HELP AND CONTRIBUTE, THEN PLEASE READ BELOW:
In the [ Debug ] section there are several scripts that will WRITE text to the Lua Engine console when you activate them and perform the indicated action. I am very early in the progression, so those of you who've advanced quite a lot or finished the game can assist by providing the SQL statements containing the ITEM IDS and VARIATIONS. I will explain below what you can do.
All of the scripts require VEH debugger to be enabled in your CE Settings. As such:
Once you've done that, activate [ Enable ] script so it collects the required locations for debug. Then activate either script (you can activate at once A MAXIMUM OF 4 SCRIPTS! that's how many hardware breakpoints can be set at once!) in the [ Debug ] section that starts with Commit_ and perform the indicated action you see in the name of the script, after the _ character.
For example, activate the Commit_OnEquip script. Then go back in-game, open your inventory with I key and equip an item. That is the action the script's name implies; hope it's straight forward. This is what should happen:
Unfortunately, I don't currently have a means to append the in-game real name of the item to the SQL statement being run. So I will count on your to provide as much information as possible (e.g.: Item Name, Item Rarity, -read from the screen- then the SQL statement from the Lua Engine window you recorded).
Base on video example above, this is how you should format your findings:
Doing this will help consolidate the information in a nice Excel along the way.Item Name: BLACK LEATHER GLOVES
Item Rarity: STANDARD
Sell Value: 30
INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_007_Basic', 'DF27DEF14990490A255E99B419ED02D4')
--
Item Name: TEAL FINGERLESS GLOVES
Item Rarity: WELL-APPOINTED (green)
Item Level: 2
Offence: 3
Others: Cannot Upgrade
Sell Value: 60
INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_019_Common', 'E3B2129E4ABA1F9AC4A072B588231C04')
--
Item Name: HUNTER FINGERLESS GLOVES
Item Rarity: WELL-APPOINTED (green)
Item Level: 4
Offence: 6
Others: Cannot Upgrade
Sell Value: 60
INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_017_Common', 'C1A4AD97407DE525471058BE36297692') - Toggle SQLite Exec UDF
***
[ 7 Feb 23 - Hit #1 ]
Game Name: Hogwarts Legacy
Game Vendor: Epic Games Store [ should be compatible with Steam ]
Game Version: 1.0.1117238
Game Process: HogwartsLegacy.exe
Hello folks.
Attached below is a DLL that will do the following:
- Hooks UGameViewportClient::SetupInitialLocalPlayer to construct the Console UObject, member of GameViewportClient. You may then use Tilde (~) key to open up the console.
To change the key:
- click Start at the bottom left of your taskbar, then type in 'Run' -or- press WinKey+R keys
- copy-paste this to the input field: %LocalAppData%\HogwartsLegacy\Saved\Config\WindowsNoEditor
- hit Enter key
- open Input.ini file
- copy and paste the text below under the [CurrentIniVersion] section:
Like this:Code: Select all
[/Script/Engine.InputSettings] ConsoleKey=Tilde
- change key to whatever you want (e.g.: F10)
- save file
- restart the game if you had it open (this won't work till you reboot the game, so it can read the file)
- Enables the use of set command in the console (e.g.: set Engine.Actor bCanBeDamaged False) through a patch.
- Makes any command you run in the console -IF THE COMMAND EXISTS- not return "Command not recognized". It basically hooks CallFunctionByNameWithArguments and sets the UFUNC_Exec flag for anything running through this internal function.
- The developers of this game have replaced the function that constructs the CheatManager -- APlayerController::AddCheats(bool bForce) -- in PlayerController vftable with one that simply just does something like GetWorld. Basically, nothing useful. I patched APlayerController::PostInitializeComponents to execute it with bForce parameter set to 1, so the CheatManager is always constructed, regardless of the type of game (local or remote/online).
Just in case you wondered why EnableCheats 1 doesn't do anything (aimed at users of Frans' UUU tool).
How to use -> drop it in your \HogwartsLegacy\Phoenix\Binaries\Win64 folder (e.g.: F:\Epic Games\HogwartsLegacy\Phoenix\Binaries\Win64).
BR,
Sun
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1