GrooveypenguinX added a new file:
QuoteDisplay More
WTT - Client Common Lib is a shared utility library - it's designed to make life easier for Tarkov modders. It provides a clean way to add custom rig layouts, slot images, and voices to the client without having to duplicate the same boilerplate code across multiple mods.
Other mods have one of two choices to use this library:
Drop their assets into the right folders of this mod itself
or
Call the API directly from their own mod
Either way, this library will handle loading, converting, and registering everything with the client’s internal resource systems.
YOU CANNOT INCLUDE THIS .DLL IN YOUR MOD. YOU MUST LIST IT AS A DEPENDENCY AND EITHER INCLUDE YOUR FILES IN THE PROPER FOLDER STRUCTURE, OR USE THIS MOD'S API TO REGISTER YOUR OWN DIRECTORIES.
DISCLAIMER: THIS IS A CLIENT UTILITY MOD. YOU WILL STILL NEED SERVERSIDE COMPONENTS IN ORDER FOR ANY OF THESE UTILITIES TO FUNCTION PROPERLY.
This system lets you add new backpack or rig layouts into the game's internal resources to use on your custom items.
You have two options to add your custom layout prefabs to the client:
Using this mod’s folders
Place your layout
.bundle
files into:
BepInEx/plugins/WTT-ClientCommonLib/RigLayouts
The library loads the bundles, looks for prefabs with
ContainedGridsView
, and registers them to the game’s resources.Once registered, those custom layouts are ready to use in the server code and the game's UI.
Using this mod’s API
Add this mod as a BepIn dependency for your client mod.
Use the
RigLoader.RegisterDirectory
method and pass it the path to your bundle directory.Example:
CodeDisplay More[BepInDependency("com.aaaWTT.ClientCommonLib")] public class ExampleRigLayoutAccess : BaseUnityPlugin { private static readonly string PluginsDirectory = Path.Combine(Environment.CurrentDirectory, "BepInEx", "plugins"); private void Start() { string layoutsDir = Path.Combine(PluginsDirectory, "myMod", "RigLayouts"); WTTClientCommonLib.UI.RigLoader.LoadFromDirectory(layoutsDir); } }
This system lets you add custom slot icons for mod slots into the client's internal resource.
You have two options to add your custom slot images to the client:
Using this mod’s folders
Place your image files into:
BepInEx/plugins/WTT-ClientCommonLib/SlotImages
The library automatically loads these images, creates Unity sprites, and registers them to the game’s resources under:
Slots/<SlotID>
The
<SlotID>
is taken from the image file’s name (without the extension). This is the ID you will use for the locales for your new mod slot.Using this mod’s API
Add this mod as a dependency in your project.
Choose the approach that best suits your needs:
REGISTER AN IMAGES DIRECTORY:
- Call
SlotManager.RegisterDirectory(string imageDir)
with the path to your raw images. It will use the name of the image file as the internal mod slot ID.
- The library automatically loads these images, creates Unity sprites, and registers them to the game’s resources under:
Slots/<SlotID>
The
<SlotID>
is taken from the image file’s name (without the extension). This is the ID you will use for the locales for your new mod slot.
REGISTER A SINGLE IMAGE FILE FROM DISK:
Call
SlotManager.RegisterSlotImage(string imagePath, string slotID = null)
with the path to your image, and optionally the desired slot ID instead of using the name of the image file (if you don't specify a slotID it will revert to the image name).REGISTER AN EMBEDDED IMAGE:
Call SlotManager.RegisterSlotImageFromResource(Assembly assembly, string resourcePath, string slotName = null) with your assembly, your embedded image path, and optionally the desired slot ID instead of using the name of the embedded image (if you don't specify a slotID it will revert to the image name).
Example:
CodeDisplay More[BepInDependency("com.aaaWTT.ClientCommonLib")] public class ExampleSlotImageAccess : BaseUnityPlugin { private static readonly string PluginsDirectory = Path.Combine(Environment.CurrentDirectory, "BepInEx", "plugins"); private void Start() { // Example: register a directory of images string myImagesDir = Path.Combine(Paths.PluginPath, "MyMod", "SlotImages"); WTTClientCommonLib.UI.SlotManager.RegisterDirectory(myImagesDir); // Example: register an image directly from disk and specify the ID of the slot string myImagePath = Path.Combine(Paths.PluginPath, "MyMod", "Images", "my_custom_slot_image.png"); WTTClientCommonLib.UI.SlotManager.RegisterSlotImage(myImagePath, "MOD_CHARMSLOT); // Example: register an image from embedded resource and specify the ID of the slot var assembly = Assembly.GetExecutingAssembly(); WTTClientCommonLib.UI.SlotManager.RegisterSlotImageFromResource(assembly, "MyModNamespace.Resources.slot_icon.png", "MOD_CHARMSLOT"); } }
YOU WILL NEED TO SET A LOCALE IN THE SERVER FOR THE MOD SLOT ID.
Example en.json:
NOTE: TARKOV SLOT IMAGES HAVE A VERY SPECIFIC STYLE - RIP AN EXISTING MOD SLOT ICON FROM THE GAME AND REPLICATE THAT EXACT SETUP
This system lets you add new voice bundles into the game's resources for custom voice packs.
Voice files are mapped through
.json
files that tell the game which key (likescav_dude_number_69
) points to which sound .bundle file path.
You have two options to add your custom voice bundles to the client:Using this mod’s folders
Place
.json
files into:
BepInEx/plugins/WTT-ClientCommonLib/Voices
Each JSON should be a dictionary of key-value pairs:
Code{ "scav_dude_number_69": "Assets/Voices/new_scav_voice.bundle", "example number 2": "Assets/Voices/yourbundlenamegoeshere.bundle", }
The library loads all entries and injects them into Tarkov’s internal resources system.
Using this mod’s API
Add this mod as a dependency in your project.
Call
VoiceManager.RegisterDirectory(string path)
with the folder containing your JSONs.Once registered, the key-value pairs will be injected into Tarkov’s resource system.
Example:
CodeDisplay More[BepInDependency("com.aaaWTT.ClientCommonLib")] public class ExampleVoiceAccess : BaseUnityPlugin { private static readonly string PluginsDirectory = Path.Combine(Environment.CurrentDirectory, "BepInEx", "plugins"); private void Start() { string voicesDir = Path.Combine(Paths.PluginPath, "MyMod", "Voices"); // Load and register voice files WTTClientCommonLib.CustomVoices.VoiceManager.RegisterDirectory(voicesDir); } }
What is Welcome To Tarkov?
Welcome To Tarkov (WTT) is a mod for SPT AKI that has been in development for over a year. What started as a small passion project has grown in size to incorporate 15+ core members as well as contributions from other well-known mod authors and friends of WTT alike.
How does Welcome To Tarkov change the game?
As a mod, WTT overhauls SPT AKI, touching on almost every vanilla game system, as well as adding completely new systems to the game and its core mechanics. Inspired by open-world hardcore survival projects like STALKER: Anomaly and STALKER: GAMMA, WTT takes SPT’s artificial multiplayer MMO difficulty adders and replaces them with a challenging world economy, loot scarcity rebalancing, a lore friendly quest overhaul, and a map-traveling system built from rewritten portions of the Traveler mod allowing seamless travel between maps. Aside from its changes to the game’s core properties, WTT also adds to the world’s variety of traders, NPC’s, characters, items, and quests:
- Over 1,000 custom bundles adding new weapons, attachments, wearables, containers, food, medical, and barter items.
- New bosses with their own custom gear that will be properly incorporated into WTT’s quest lines.
- New, meaningful traders with their own lore-friendly quests and narrative elements to help the player progress through the story-line of WTT.
- New playable characters and outfits that will add to the player’s customization abilities.
- New quest types incorporating brand new map extraction points, putting the player’s knowledge and familiarization of SPT’s maps to the test.
Welcome To Tarkov stands as one of the largest mods created for SPT AKI thus far.
When does Welcome To Tarkov release?
Thursday.
Which Thursday?
TBD
Want to follow our progress?
You can follow the project through it's development in our discord here:
https://discord.gg/WelcomeToTarkov