Game Name: Chernobylite
Game Vendor: Steam
Game Version: Revision: 25359 [ you can see this in main menu, bottom-left ]
Game Process: ChernobylGame-Win64-Shipping.exe
Game File Version: 4.21.2.0
Hello folks.
Attached below is a DLL that will do the following:
- Run threaded UE4 code to create the UConsole UObject, member of GameViewportClient; you may then use Tilde (~) key to open up the console. As far as what you can or can't do with the console, well.. I'm not the game developer You'll have to google around for commands, test stuff out and return with feedback. As opposed to just asking "what are the commands?" and doing shit about it, waiting to be spoon-fed.
- Will dump the UE4 FNameArray and UObjectArray, along with their addresses. What this means is you can then know what the fuck you're looking at in memory, when debugging/tracing or mapping structures, and come up with your own conclusions. Just like I did with my table below.
Instructions:
- Download the archive; extract content to a folder of your choice.
- Run the game, get to main menu.
- Run IGCSInjector.exe. You can close it when asked.
- Takes 1-2 seconds for the DLL to find the stuff, StaticCreate the Console UObject and dump Names/Objects to disk in the Win64 folder.
- You may then use Tilde (~) key to open up the console in-game.
Notes:
- The dump location is your game folder (e.g.: C:\SteamLibrary\steamapps\common\Chernobylite\ChernobylGame\Binaries\Win64). You will find 2 files there: NamesDump.txt and ObjectsDump.txt. You'll be very interested in the 2nd one
- The .txt files are generated at "run-time". What this means is if you transition in-game from one map to another or from main menu to game world and backwards, you need to re-dump them. Why? UE4 destroys and recreates UObjects; re-initialization. To re-dump the .txt files press Numpad / (no, key can't be changed).
Commands:
- god
Makes you invulnerable. You'll need to re-enable it if you exit to main menu, then back in-game, load a save/quicksave or transition in any other way that makes the loading screen show up. Why; re-initialization. The god flag is a BOOL within your Character structure. When you reload the game, all structure are re-initialized by the Engine and their default statuses set in place. Which means your god bool will be reset. NOTE that if you enable god and save your game with it enabled, the next time you reload, it will be enabled State seems to be saved in the save file.
- slomo <float>
Slows down, accelerates or sets game speed back to normal, depending on the value you give it. (e.g.: slomo 0.5; slomo 1; slomo 1.5)
- teleport
Will teleport your character to the location appointed by your mouse pointer. Simply aim some spot, then ~ and teleport [Enter]. You'll instantly get to your targeted location.
- playersonly
Currently is designed to freeze any AI in place, including yourself. In older versions of the Engine, this was freezing everything but you. Guess Epic changed their mind. Could probably be tweaked through code hooks to exclude the player Character from the list of frozen entities.
- toggledebugcamera
This will detach current camera from the player (in reality, it changes controller to the newly created camera UObject) letting you fly around and explore the area. You can use it together with 'teleport', for example, to move your player to the location where the camera is pointing. Just type it in the console once you've decided for the spot. Also.. using 'slomo 0' I was able to take these screenshots, basically stopping the cut-scenes while they were playing:
- summon <blueprint_name>
Probably the most powerful command one can use. It's designed to spawn/generate in front of your view an UObject defined by the Blueprint's name you've typed in. What you can do with this is simply use it in conjunction with either extracting the game's .pak archive (\Chernobylite\ChernobylGame\Content\Paks\*.pak) or with the ObjectsDump.txt file (\Chernobylite\ChernobylGame\Binaries\Win64\ObjectsDump.txt). I'll describe the 2nd one, as it's faster:
- get in-game, inject the DLL
- hit Numpad / just to make sure you have the latest .txt dumps
- open ObjectsDump.txt in Notepad++ and search for "Package BP_"
- everything that you see now can be summoned in-game, condition being you suffix them with a "_C"
Apart from the above, here's also a cheat table for the game, which I've put several hours into, as not all things are simple as they seem (fly, ghost, walk). The table contains the following features:
- Hook UCheatManager execs (execFly, execGhost, execWalk)
The script hooks the CheatManager wrappers calling the UCheatManager::Fly, UCheatManager::Ghost and UCheatManager::Walk function, replacing them with the ones I've rebuilt. Why rebuilt? Because Shipping releases by design come with the core code not compiled. Thus it needs restoration.
- Hijack MoveForward/MoveRight
Now, even with the above script active and functions restored, you still can't fly properly. That's because the Z-axis is not processed in the mouse orientation + movement. As such, I had to find the movement functions (ACGBaseCharacterMovement::Global_Movement_UpDown, ACGBaseCharacterMovement::Global_Movement_RightLeft) and hook them, conditioning that when UCharacterMovementComponent::IsFlying is happening, that's when the ripped-and-restored code would execute, thus allowing you free movement on all axis. In short, you get fly and ghost working (aka noclip). To turn them off, type 'walk' in the console.
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