VS Code


  • Code completion for built-in Cyber Engine Tweaks, Dear ImGui and Cyberpunk 2077 types and functions (except sqlite)

  • Type resolving for Game.GetScriptableSystemsContainer():Get("Type"), NewObject("Type"), and GetSingleton("Type")

  • Contextual suggestions for default values and predefined sets


CET typedef

  1. Download and extract the Cyber Engine Tweaks Lua Lib.

  2. Install the Lua by sumneko extension.

  3. Locate settings.json in VS code

    • Ctrl + Shift + P

    • C: > Users > (yourname) > AppData > Roaming > Code > User > {} settings.json

  1. Add next settings to the .vscode\settings.json or in the Settings GUI:

    • NOTE: ensure commas occur after every line

     "Lua.runtime.version": "LuaJIT",
     "Lua.workspace.preloadFileSize": 15360,
     "Lua.workspace.library": [
  1. On first use it takes a couple of minutes to parse and cache all definitions. Unfortunately there is no visual indication of this process. When it's done the code assistance will be more responsive.

Dear ImGui typedef

To install the typedefs for Dear ImGui, you can manually download the files from GitHub repository Nats-ji/CET_ImGui_lua_type_defines and then follow the same installation process in CET typedef to install them in VSCode.


Callback parameters

You can specify the type of the parameters with @param annotation. It's very handy for Observe and Override:

---@param request PerformFastTravelRequest
Observe("FastTravelSystem", "OnPerformFastTravelRequest", function(request)
    -- Now request object has type and suitable for code completion

Unresolved type

If type of some variable cannot be resolved or ambiguous you can force the type with @type annotation:

---@type ScriptedPuppet
local puppet

Generic functions

The type of the result of some functions depends on the parameters passed to the function. If a valid type name is passed as a parameter, then the resulting type must be resolved without custom annotations.

Last updated