Skip to content
NarcoMarshDev edited this page Sep 23, 2022 · 9 revisions

Welcome to the Enforce-Script-Extensions wiki!

See all topics and classes on the right hand side

Setting Up ESE

A simple step by step guide to getting ESE set up in your project.

Downloading and adding to your project

After downloading ESE from the workshop here(on release), simply include it as a dependency in your own project by opening your project and going to:

Workbench -> Options -> Game Project -> Unsorted -> Dependencies

And adding a new dependency by pressing the + icon and copying ESE's project GUID into the new dependency. If you're creating a new project, you can easily include ESE as a dependency by selecting it as one when creating the project.

Making your ESE config

Once added as a dependency, all the basic functionality of the library is available as is, if however you want to enable/disable different features you can create a config to do just that.

Start by navigating to EnforceScriptExtensions/scripts/Game/ESE_Config.c and right click -> Duplicate to 'Your Project'

Name your duplicate !ESE_Config_YourModName.c to ensure it always compiles before anything else, and open it.

In this file are all the #define statements for enabling different functionality, and all are explained in the file, but here is a quick reference of the most important ones:

Define Functionality
ESE_VERBOSE Enables verbose error logging on ESE methods.
ESE_ENABLE_WIP Enables work in progress methods, these may be broken or otherwise not work as excepted, so check the source code before using.
ESE_EXPERIMENTAL Enables experimental custom data types and modded classes, these will most likely break a lot of things or crash the workbench when restarting. If this happens, open your config outside the workbench and manually comment off #define ESE_EXPERIMENTAL so this feature is disabled when you start the workbench.
ESE_OBSOLETE Enables older, now obsolete methods. These methods are all named _OLD_MethodName() and may be useful in some cases.
ESE_ALIASES_ALL Enables ESE resource aliases, see this wiki page for more info. (There are specific alias defines all explained there)

Known Issues

  • Modded core classes and custom core data types under ESE_EXPERIMENTAL are currently broken, and will crash the workbench on restart even if it compiles without any errors. (This will unfortunately probably stay this way unless we get support for it on the engine side)
  • Magazine aliases are currently missing.
  • If a file trying to add a custom alias has a filename that alphabetically appears before !ESE_Config.c it will not work due to the config #define statements not yet being run at compile time.
  • ESE_Entities.RestoreMaterial() will sometimes restore to the wrong variant of the passed entity, for example burlap sandbag walls always restoring to plastic ones.

Clone this wiki locally