Skip to content

CarlosLeyvaAyala/Easy-Containers

Repository files navigation

Easy Containers

Skyrim mod for item management.
Batch move unwanted items to any container.

Usage

First you need to "mark" some items so this mod knows you want to get rid of them.

  • Put your unwanted items inside any container.
  • Make sure the game crosshair is over that container (the "Activate" message must be there).
  • Use "mark item" hotkey to remember those items.
  • If you get the message pop-up, your items will now be remembered.

Those items are marked forever.
If you want to add more to the Marked List, just put new items inside some container and mark them using the same steps above.

Whenever you have Marked items in inventory, all of them will be moved to any container under the crosshair.

  • Put the crosshair over some container.
  • Press the "transfer" hotkey.
  • All Marked items will be transferred to that container.

This mod will never transfer favorited or equipped items.

Configuration

See Configuration for more details.

Hard requirements

You'll need these mods to make it work.

Known issues

Skyrim doesn't seem to like when you transfer many items from a chest to the player at Skyrim Platform speeds.

Developing

Dependencies

All player dependencies plus:

Building

Building steps are mostly the same as the example plugin from Skyrim Platform.

Since this plugin is also meant to serve as a guide to Skyrim Platform newcomers (me included) I added the first version of this plugin made in Papyrus.

You can compile and run that version to see how hilariously slow and clumsy is Papyrus compared to Skyrim Platform.

Before building

The less hassle-free way to develop plugins is to just put Skyrim Platform files in the Skyrim Data folder.

Should be trivial if you use Vortex, but with MO that would mean folder pollution.
Do it anyway, it's really the best way.

Building steps for beginners

  1. Put Typescript dependencies in the folder where skyrimPlatform.ts is located (<Skyrim Data path>\Platform\Modules).

  2. Install node.js.

  3. Open the command line and navigate to Platform/easy-containers/.

  4. Run npm i to install the dependencies.

  5. Create a file tsc/config.js with the following contents:

    module.exports = {
        // Change `seRoot` to the correct path to the Skyrim SE folder. The path should have slashes like this: `/` (not `\\`).
        seRoot: "C:/Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition"
    };
  6. You will likely want to have this project inside its own folder.
    Copy the file named tsconfig-default.json inside its own folder and rename it as tsconfig.json, then add both "rootDirs" and "baseUrl" entries to tsconfig.json.

        ...
        "outFile": "../Plugins/easy-containers.js",
    
        // Notice how all of these are absolute paths
        "rootDirs": [
    
            // Folder where skyrimPlatform.ts is located 
            "<Skyrim Data path>\\Platform\\Modules",
            // Folder for this project
            "<Base path>\\Easy Containers-src\\Platform\\easy-containers"
        ],
        // Folder where skyrimPlatform.ts is located 
        "baseUrl": "<Skyrim Data path>\\Platform\\Modules",
    
        "lib": [
        "ES2015"
        ]
        ...
  7. Run npm run dev.
    If everything is ok, the message Found 0 errors, installing easy-containers.js will appear.

  8. Put the easy-containers.js file (generated by previous steps) inside Data/Platform/Plugins/, so Skyrim can actually recognize the plugin.

  9. Log in to Steam and start the game with skse64_loader.exe.

If everything went alright, when opening the console you should see a message saying "Easy Containers successfully initialized.".

Optional step

Since I'm creating a library while developing plugins, I want to have easy access to it, so:

  1. Create a symbolic link to DM-Lib in the same directory where tsconfig.json is.
    Use Link Shell Extension for that.

You don't care about this step for building this project, but I do.

Just putting this as a reminder for myself on how to work.