You can write commands directly in the console but for more complex scripts, you may use files.
The console will look for files where
Cyberpunk2077.exe is located, ideally you will put your files in a folder dedicated to that, for example official
Cyber Engine Tweaks files are located in
plugins/cyber_engine_tweaks/scripts, here we will assume you put your custom
.lua file in this
You can execute your file by typing in console:
dofile("plugins/cyber_engine_tweaks/scripts/myfile.lua") -- DEPRECATED
There are 2 function types and 2 handle types.
They do not need a handle and are all located in the
Game object. Sample:
Game.PrintHealth()-- orGame.AddToInventory("Items.money", 500)
They require a handle (more on that later). Assuming you have a
Handles are a way to pass an object to the function. For example
IsNaked makes no sense without telling the engine for which object we want to know this information.
These handles are static, there is only one in the game, for example the
gameTimeSystem is a singleton so there is no need to tell the script engine which one you want. That being said you need a singleton handle so it knows you want to call a function on that system.
gameTime = GetSingleton("gameTimeSystem")print(gameTime:GetGameTime())gameTime:SetGameTimeByHMS(12,0,0) -- 12h0m0s
These handles are not unique, for example, the game contains multiple NPCs so there are as many handles as NPCs. Currently as far as I know we can only get the handle of the
player by calling the global function
player = Game.GetPlayer()if player:IsNaked() thenplayer:OnDied() -- kill the player if it's nakedend
player = Game.GetPlayer()ts = Game.GetTransactionSystem()tid = TweakDBID.new("Items.money")itemid = ItemID.new(tid)result = ts:GiveItem(player, itemid, 100000)if result thenprint("We added " .. tostring(itemid) .. " to the inventory!")elseprint("Failed to add " .. tostring(itemid))end