SPT ModOrganizer Integration 1.1.4

Please do not ask when mod authors will update their mods to 3.10 or if they can upload older versions of their mods.
Bothering mod authors will lead to warnings and repeat offenses will lead to eventual bans.

Simple extension for the Basic_Game plugin to make SPT compatible with ModOrganizer.

Note:

If you find a mod that does not install automatically, please send me a link to it!
Only very few mods should cause issues.

If you know what this is, you probably know why you want it. If not, i recommend giving SP-EFT Manager by Schrader a try. It has many more SPT-specific features in mind, and is probably easier to understand for first timers :)

[tabmenu]

Images

  • Version 1.1.4

    A fix for ModOrganizer 2.5.1+. Should work just fine with older versions as well.
    Thanks to Gipphe!

  • Version 1.1.3

    Update for 3.9.0 with rebrand

  • Version 1.1.2

    THIS IS THE LAST VERSION FOR 3.8.X AND BELOW.

    If you are playing on a version which has executables named AKI.Launcher.exe or AKI.Server.exe, this is the version you need.


    Small bugfix.

    • Fix case for instances where executables may be case sensitive. Thanks to 'GJ (not other J's)'
  • Version 1.1.1

    Fixed mappings (oops) :S

  • Version 1.1.0

    Update for Mod Organizer 2.5.0 (Qt6 and BasicGame changes)

  • Version 1.0.1

    Remove extra executables. Point to AKI launcher instead of tarkov to identify (Avoids accidentally pointing to Live)
    Compatible with 1.0.0a profiles, so no worries :)

  • Version 1.0.0

    initial version

  • For versions up to 3.8.3

    https://dev.sp-tarkov.com/arch…5cb9d7bd6ffeba5986919.zip

    In case you're stuck on older versions for one reason or another 🫡

  • tried to use it with MO2 2.5.2

    this error popped up when it was loading the plugin

    zxcxc.jpg


    Edit: well I just skipped "installer_omod" when restarting MO2 and it just works

    i'll have to check if all the features work tho

  • Trying to apply settings in svm, but it cant apply and give that text: Action is canceled. Something went wrong, is there incorrect type in field or it is empty?

    • also this text in server:

      [SVM] If it's Syntax error, edit it manually in loader.json or/and edit values with UIs properly

      Exception message below may help you distinguish what went wrong:


      Cannot find module '../Loader/loader.json'

      Require stack:

      - D:\spt\user\mods\[SVM] Server Value Modifier\src\SVM.js

      - C:\snapshot\project\obj\loaders\PreSptModLoader.js

      - C:\snapshot\project\obj\controllers\GameController.js

      - C:\snapshot\project\obj\callbacks\GameCallbacks.js

      - C:\snapshot\project\obj\di\Container.js

      - C:\snapshot\project\obj\Program.js

      - C:\snapshot\project\obj\ide\ReleaseEntry.js

      1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.

    • nwm, im just a idiot. I fix it myself, just launch from data :D

      Heart 1
  • 3.10 Can It Be Used?

    • To my knowledge, nothing changed for it, so yeah

  • Amazing mod

    Heart 1
  • Mod Organizer, starting with version 2.5.1, changes how plugins register features. I've been as rude bold as to create a PR in your repo to support this new way of registering features.


    Edit:

    For anyone who has issues before this is fixed:

    Replace line 26 in your Mod Organizer 2's plugins/basic_games/games/game_spt.py with the following:

    Code: plugins/basic_games/games/game_spt.py
            if hasattr(self, '_featureMap'):
                self._featureMap[mobase.ModDataChecker] = SPTModDataChecker()
            else:
                self._register_feature(SPTModDataChecker())

    The left padding (called "indentation" in programming lingo) matters, so ensure that all the padding is kept. Line 2 and 4 of the snippet above should have 4 spaces of padding relative to line 1 and 3.

    Heart 2
  • Is it possible to restart the dedicated client without restarting the server itself via some sort of monitor? I.E. if the dedicated client crashes or you need to forcefully restart it, MO2 can reboot it with the VFS open still and not have to restart the server.

    • You can make a custom launcher with a button for each exe you need if you want to relaunch it manually, or you can modify the vfsbridge bat file and set it to monitor the client process, and then if it closes automatically restart it.

      Ask chatgpt for help with making it if you don't know how. Just show it the bat and explain the problem.

    • Right, I honestly forgot you can unlock MO2 while running something and also create desktop shortcuts.

  • FYI to anyone who is using ModOrganizer with Linux/Lutris/Wine. If you notice that when you "Launch" the game within ModOrganizer that the game executable does not wait long enough before starting (thus giving you the server not loaded error), you can change the sptvfsbridge.bat file (located in your base SPT directory) and remove the line that says "timeout /t 5 /nobreak >nul" and replace it with "ping localhost -n 10 >nul" (adjust the number 10 to your desired wait time; more mods need more wait time).


    The reason: the timeout function apparently does not work in Wine/Lutris, but the ping command can be used as a replacement to simulate waiting, which gives time for the server to startup.


    To the mod author (I'm assuming this sptvfsbridge.bat file is inserted by you... but if not, disregard), I see no reason why using ping instead of timeout would not also work perfectly fine in Windows itself, and as such could improve both Windows/Linux compatibility for this project, if that's something you'd like to achieve.

    • That sounds like a great idea, will make that change when i edit the modpage for next version of spt. The delay is really arbitrary, because some pcs are slower and some faster. It's just annoying to have to press reconnect on the launcher and all, so that's why i added the small delay.

      Heart 1
  • Because I can't give up the discontinued Traveler, I still keep SPT 3.7.6

    I rename your old version and put it together with new, so that MO2 can recognize 395 and 376.

    Is it possible to merge the old and new versions? After all, the two are just different SPT and SPT-aki.

    • Wasn't Traveler recently updated for 3.9? Regardless, i will create an old version of the plugin you can get, and pin it here at the top so people can find it. I made the poor decision of linking directly to the source download, rather than making a release for each version, which comes back to bite me in the ass now that the rebrand happened.

    • No, it's Path to Tarkov, which is not exactly the same as Traveler. I don't like it, so I can only keep 376. ;(

      With the update of SPT, it is a pity that many useful MODs are discontinued ||

    • i pinned an older version 🫡

      Heart 1
    • thx very much :love:

  • Can you please help me? got errors after setting up profile
    Links to G.Drive screenshots
    error 1

    • Are you on SPT 3.8.X or 3.9.X?

    • For 3.9.5

    • i think maybe you need to install the plugin again, it says it can't find it. Try following install instructions again

    • I'm having the same issue. Did you fix this problem by any chance? I add plug-ins to MO2 all the time for game compatibility, It's not that difficult. I'm wondering if AV is causing the issue.

      Update: I figured it out. I had to take an extra step because MO2 couldn't find "SPT.Launcher.exe". Kind of strange, but all good. Thanks again for making it MO2 compatible.

      Thumbs Up 3
  • Doesn't seem to work for 3.9.0. A lot of files got renamed which is probably the issue

    Edit: Can you rename the MO2 plugin for 3.9.0? That way I can keep instances for older SPT versions. Since editing the current plugin will break existing instances.

    Anyway thanks a lot for making this. Been using it for a while!

    Heart 1
    • Oh, i see. I'll take a look in a moment. Has worked by default up till now.

    • Updated for the rebrand. Thanks for pointing it out!

      edit: yep, that's what i did. The plugin was named sptAKI all the way through so it was really just replacing every mention of AKI, including on the filename. Should work alongside 👌

      Heart 1
  • can it be used in spt3.9? or it needs an update?

    Thumbs Up 1
    • It should still work just the same.

      Edit: it didn't, but it's fixed now 👌

  • Someone write in detail how to install it.

    • Are you already familiar with how MO2 works? In general I mean. If not, there's a decent learning curve to it, but there's tutorials out there.

      That said, if you have an understanding of MO2, then Installing the plugin itself is as easy as dropping the .py file in "plugins\basic_games\games\", then making a new portable instance in MO2 and picking your spt root directory. Then use MO2 pretty much as normal. Just check the file tree for every mod you install, as any "non-standard" file paths can confuse the script. MO2 should default to the .bat file that the author wrote to launch both the server and launcher in the MO2 virtual environment; but keep an eye on the overwrites because running the server, launcher, and game generates a decent number of files and they'll remain global inside the overwrites until you move them to a mod, or recursively delete the overwrites folder; Otherwise you'll run into issues with uninstalling mods or changing MO2 profiles.

      Heart 1
  • Two things I'm trying to do. i have multiple MO2 profiles setup for different mod setups.

    • make it so different profiles can load different servers. ie. Fika vs local. when i update the IP in the launcher/config.json through VFS it changes it for all profiles.
    • I added SVM as an executable. The SVM values don't seem to save. any changes in SVM have no effect. I tested this with all mods disabled and changing head HP to 350. When I get in game head HP is 35.
    • I can't speak on the SVM issue just yet but i'll take a look at it.

      The reason it seems like you can't configure configs for separate games, is because that specific file is created at runtime, which means it goes to the *overwrite* mod (bottom mod). The Overwrite mod is global. Create a new mod, open the Overwrite and then drag the config to that new mod. And you're good.

    • If I pull the user/launcher/config.json out of the overwrite, then next time aki.server.exe runs, it recreates it in the overwrite.


      I added just the launcher as an executable and that works because it won't run the server. but when I run the server it writes config.json with the loopback address 127.0.0.1. so running just the launcher after will not work because of the overwrite.


      in short i still have to manually change the ip to switch between fika and spt.


      my guess is that SVM issue is also due to the overwrite


      Edit: I resolved the manual switching IPs, created two mods, FikaIP and SptIP each with the correct IPs. after removing launcher/config.json from the overwrite this seems to have resolved that issue


      Extra Edit: guess I needed to install SVM as a mod :/ never used this program before so learning as I go

    • Awesome! Glad you figured it out. I'm not very active on the hub but if you have any odd issues you can't wrap your head around you're free to DM me on discord. I see those reasonably fast "archon001"

      just in case you didn't figure it out. Yeah, *anything* that interacts with game files in any way, needs to be installed through ModOrganizer. This is how it is able to see the files to begin with.

      If you have installed mods or tools in the actual install folder, it is best practice to make new ModOrganizer mods, and move the files to those instead. it may work if you don't, but it can cause issues.

    • I have SVM in several profiles, and yeah, you need to add it as a mod, enable it (check it off), and run the exe through MO2. Make sure to save your preset in SVM/greed.exe.

      Note/Tip: changing MO2 profiles wont change the selected preset for SVM as it writes the current profile to "User\Mods\ServerValueModifier\Loader\loader.json" inside the mod's folder. This leaves you with 2 options: Run greed.exe from MO2 each time you switch profiles and want a different SVM preset, OR you could do what I do: Make your presets, then make a new mod (or mods) that just contains the file/file path "User\Mods\ServerValueModifier\Loader\loader.json". Literally the only thing that loader.json file contains is
      ```
      {

      "CurrentlySelectedPreset":"the_name_of_your_preset"
      }
      ```
      it tells svm which preset to load, so just replace the name of the preset with the preset you want SVM to load for that profile. Then place the new "mod" below SVM so it loads after; It will overwrite the loader.json and load the preset you specified. You can make one of these "mods" for each of your SVM presets.

    • i just follow your steps but SVM stiill load with ghostfenix profile even i have delete it

  • What would be the best way to manage mod updates? The mod organizer update tracker only works with Nexus links, so that's out of the question. SPT-EFT Manager has a planned feature for “Checking for new version' functionality”; however, they don't have it for now.


    Anyone have any solution in place for new mod version update functionality?


    p.s. I love this integration. It makes it so simple to manage my game. :love:

    • unfortunately, it would take somebody with a far bigger brain and better understanding of developing plugins for ModOrganizer to accomplish something like that. Theoretically, it would be possible, especially if the hub implemented RSS for updates. edit: Actually, they already have that, now we're just lacking the 🧠

      It's just too technical for me. I'm sorry 🥲
      Silently hoping somebody with more development skills will use this and get fed-up enough to go release a better plugin 😆

      Heart 1
    • Sorry to sort of necro this but thought I'd throw in my 2 cents on this:

      Firstly, Nexus integration in MO2 is pretty much hard coded (must be in the .dll's, because I can't find it ANYWHERE in the .py files); You can link to external sites in each individual mod's metadata, but you're not really gonna get automatic update checking through anything other than nexus in MO2. (and BSG made Nexus nuke the SPT page anyway :rolleyes: ). Like you said, even more SPT dedicated exe's like SP-EFT Manager don't have a way to do this automatically (At least not yet... Like archon said, hopefully some big brain can figure it out).

      Best bet for now, and what I've been doing with MO2, is to track things manually through your mod's metadata:

      For each mod, on its Nexus tab, check off "Use Custom URL" and put in the mod's hub link. Do that and you can right click the mod in your modlist and should now have the option to "visit on hub.sp-tarkov.com" or something like that. Additionally enter the installed mod's version in the version field at the top of that same nexus tab. Now as long as you have the version being displayed in your modlist, you can see the installed version at a glance. Pretty much all mods list their version number next to the title on the hub, so you can just compare that to the version you have listed in MO2. Again this is a highly "manual" method, and you need to maintain it, but its at least some sort of tracking.

      Image for Reference


      And there's my whole senior thesis on the subject

  • I get this message when trying to run the game, No issues with the other games I have in MO2.

    • Looks like you have Root Builder enabled, which it isn't supposed to be. A stock Mo2 doesn't come with Root Builder. I would recommend just making a new portable install of Mo2 and the problem should go away. 👍

      Heart 1
    • BRO!!!!!!!!! You freaking legend.... I had no idea what that was but all I did was went into Tools>settings>Rootbuilder and unticked Enabled. It worked after that. I even posted in the MO2 discord and didn't get a response.

      Heart 1
  • Had a critical bug/typo for me. Fails to detect aki.launcher.exe. Thankfully easy to fix.


    Go to your:

    <install location>\MO2\plugins\basic_games\games


    Edit file:

    game_sptaki.py


    Change line 15 to:

    GameBinary = "Aki.Launcher.exe"


    MO2 will work again since it's case sensitive and you won't lose your profiles or mods (unless you deleted it in frustration ).


    Hope that helps someone.

    • Interesting. Not sure when that started happening. Will take a look at it myself. Thanks!

    • Replaced all references to the exes with proper capitalization. I'm not sure why this was happening to you, seems to work fine on my end. Nevertheless, updated to make sure it doesn't happen for anybody with a similar setup 👍

  • Update with MO2 2.5.0 ?

  • My man I live in MO2 and am so happy to see this developing into a real avenue. This will clean up and alivate so many issues with load orders and conflicts I am stoked to see it. Nice job.

    Heart 1
  • for easy install of mods, is ther a format for files in the mod zips. ie do all have to have user +/or bepindex folder as root folders?


    I have enabled the mods but they dont appear in mods folder.

    My base directory is D:/Games/Apps/Mod.Organizer-2.4.4/INSTANCES/SPT AKI/


    initial EFT folder is pointed to E:\Games\Tarkov SP EFT 0.13.1.3.25206 v3.7.0\


    is this correct?


    Also I migrated from 3.6.1 and brough over my user\profiles\*.* - How can i "keep user empty" in this scenario?


    getting this using the MO SP launcher (doesnt happen when launching SP manually)


    The application had a critical error and failed to run

    Exception produced: Error: EXDEV: cross-device link not permitted, rename 'E:\xG\Tarkov SP EFT 0.13.1.3.25206 v3.7.0\user\cache\modCache.json.tmp-68890563463f7a5b' -> 'E:\xG\Tarkov SP EFT 0.13.1.3.25206 v3.7.0\user\cache\modCache.json'

    • For mods, the "best" way for zips to be packaged is like this:
      user/mods/ModFolderName
      bepinex/plugins/plugin.dll
      bepinex/plugins/pluginFolder

      In order to keep User empty, you can create a mod from your profile to install. Create a User folder inside the User directory (so now you have ./profiles and ./user inside the user folder). Put the ./profiles folder inside of the new ./user folder. righclick and zip the ./user folder. Install the zip as a regular mod.

      The last error is because of the user directory not being empty. You can delete the Cache folder in User with no problem.

  • Hi and first of all thank you for this!
    Makes modding so much better! <3


    Now I am commenting because I spent some time troubleshooting an interaction between this mod and SWAG+Donuts (same comment is on that mod already).


    Due to the "mod & plugin in one" nature of SWAG, when installing it via MO it loaded the mod but not the plugin. While I did get a notification in-game, I did not find a log entry stating something akin.

    Regardless, a workaround is to simply split the mod in two by creating a new folder, copying the meta.ini into it and moving either the BepInEx or the user folder over like so:



    I hope that makes sense, good luck everyone! :)

    Heart 1
    • Thanks for sharing this! ^^:thumbup:

      I actually have a different version of the mod ready that addresses this and a ton of other things that currently dont always install right. The only problem is it's built on a "beta" version of modorganizer which the devs do not want you to link directly to. I might consider offering it as a "dev" branch for people who are alright with finding the correct Mo2 version themselves, which involves joining a discord server and finding the right channel.

      I may be able to backport it to the current main version but I'm waiting spt to update before i attempt that.

  • will this work fine going into the future for 3.6.*? I love using this but as Im still sitting at 3.5.8 awaiting one more mod update I'm curious if I can still use this when I update

    • I see no reason it should stop working but if it does just send me a message and ill get on it.

    • It still works with 3.6.1

      I've been building my MOD packs with it since 3.5.8

    • :thumbup:

  • Someone can help to configure SPT + MO2?.

    I'm getting a lot of errors related to USER folder (such as a file not founded, ex).

  • too complicated for my monkey brain :c

  • as someone who mods skyrim religiously. thank you. from the bottom of my heart I thank you for this.

    Heart 3 Thumbs Up 1
    • :thumbup:

      Thumbs Up 1
    • Just a quick heads up for anyone looking to use this. files that dont come in the drag and drop into the spt folder will need a bit of work to setup, for example the black masks mod just gives you the mod without the user folder and mods folder, so youll need to create an empty mod and then create a user folder with a mods folder within it, then drag your mod into the mods folder. same thing for mods that just come with a .dll file, you'll want to create an empty mod then a BepinEx folder within it and a plugins folder within that, then drag the .dll folder into the plugins folder.

      this was a bit lengthy and im not good with words so if something doesnt make sense feel free to let me know

    • Thought i set it up to handle .dll files in any folder configuration :/
      Will have to investigate

  • this is awesome, thanks for making!

  • Does that include the Profile Folder as well??

    • For future reference
      If you have profiles and configs you would like to bring with you when you use ModOrganizer, back them up to a separate folder and then you can install them just like any other mod into mod organizer.

      This is a temporary solution as I'm already looking at ways to allow profiles specifically to exist in the user dir, but here's a quick guide:
      FWyOx80.gif

    • Yes thats great - one profile for Realism and another to hardcore

  • This could change the way you install mods totally, much easier than dragging things and hoping to remember what you installed

    Heart 1
  • fallout new vegas reference

    Happy 1
  • skyrim sexlab reference

    Happy 1