Subnautica · handler “Subnautica Nitrox”
Version 2
Release notes
updated modified nitrox build to 1.6.0.0
- Released
- Size
- 7.4 MB
- Downloads
- 3,751
- Check
- Verified
- SHA-256
- 21fa97edc557baf9878843730be6cade8536cd03d1bb7756d6590afa461e93be
Files 75
| Path | Size |
|---|---|
| handler.js | 11 KB |
| SubnauticaNitrox/Nitrox/AssetBundles/chatkeyhint | 55 KB |
| SubnauticaNitrox/Nitrox/AssetBundles/chatlog | 23 KB |
| SubnauticaNitrox/Nitrox/AssetBundles/discordjoinrequest | 9.3 KB |
| SubnauticaNitrox/Nitrox/AssetBundles/sharedassets | 154 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Croatian.json | 2.1 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Czech.json | 2.2 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Danish.json | 2.1 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Dutch.json | 2.1 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/English.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Finnish.json | 2.2 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/French.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/German.json | 2.5 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Hungarian.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Italian.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Polish.json | 2.2 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Portuguese.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Romanian.json | 2.3 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Russian.json | 2.7 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Slovak.json | 2.1 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Spanish.json | 2.2 KB |
| SubnauticaNitrox/Nitrox/LanguageFiles/Turkish.json | 2.1 KB |
| SubnauticaNitrox/Nitrox/lib/0Harmony.dll | 186 KB |
| SubnauticaNitrox/Nitrox/lib/AssetsTools.NET.dll | 164 KB |
| SubnauticaNitrox/Nitrox/lib/Autofac.dll | 227 KB |
| SubnauticaNitrox/Nitrox/lib/DiscordGameSDKWrapper.dll | 90 KB |
| SubnauticaNitrox/Nitrox/lib/discord_game_sdk.dll | 3.7 MB |
| SubnauticaNitrox/Nitrox/lib/dnlib.dll | 1.1 MB |
| SubnauticaNitrox/Nitrox/lib/LiteNetLib.dll | 92 KB |
| SubnauticaNitrox/Nitrox/lib/LitJSON.dll | 60 KB |
| SubnauticaNitrox/Nitrox/lib/LZ4.dll | 44 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Win32.Registry.dll | 26 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.WindowsAPICodePack.dll | 103 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.WindowsAPICodePack.Shell.dll | 530 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.dll | 350 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Mdb.dll | 42 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Pdb.dll | 88 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Rocks.dll | 27 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Nat.dll | 67 KB |
| SubnauticaNitrox/Nitrox/lib/MonoMod.RuntimeDetour.dll | 106 KB |
| SubnauticaNitrox/Nitrox/lib/MonoMod.Utils.dll | 191 KB |
| SubnauticaNitrox/Nitrox/lib/Newtonsoft.Json.dll | 684 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxClient.dll | 431 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxClient.pdb | 154 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel-Subnautica.dll | 37 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel-Subnautica.pdb | 19 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel.dll | 217 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel.pdb | 78 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxPatcher.dll | 166 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxPatcher.dll.config | 541 B |
| SubnauticaNitrox/Nitrox/lib/NitroxPatcher.pdb | 64 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxServer.dll | 173 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxServer.dll.config | 1.2 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxServer.pdb | 65 KB |
| SubnauticaNitrox/Nitrox/lib/protobuf-net.dll | 179 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.dll | 124 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Async.dll | 9.0 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.File.dll | 33 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Map.dll | 12 KB |
| SubnauticaNitrox/Nitrox/lib/System.Drawing.Common.dll | 52 KB |
| SubnauticaNitrox/Nitrox/lib/System.IO.FileSystem.AccessControl.dll | 28 KB |
| SubnauticaNitrox/Nitrox/lib/System.Numerics.Vectors.dll | 113 KB |
| SubnauticaNitrox/Nitrox/lib/System.Security.AccessControl.dll | 33 KB |
| SubnauticaNitrox/Nitrox/lib/System.Security.Principal.Windows.dll | 18 KB |
| SubnauticaNitrox/Nitrox/lib/ToastNotifications.dll | 107 KB |
| SubnauticaNitrox/Nitrox/lib/ToastNotifications.Messages.dll | 88 KB |
| SubnauticaNitrox/Nitrox/Nitrox Logs/game-20220316.log | 4.3 KB |
| SubnauticaNitrox/Nitrox/Nitrox Logs/launcher-20220316.log | 1.3 KB |
| SubnauticaNitrox/Nitrox/NitroxLauncher.exe | 3.4 MB |
| SubnauticaNitrox/Nitrox/NitroxLauncher.exe.config | 1.7 KB |
| SubnauticaNitrox/Nitrox/NitroxLauncher.pdb | 26 KB |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.exe | 50 KB |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.exe.config | 661 B |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.pdb | 23 KB |
| SubnauticaNitrox/Nitrox/servers | 29 B |
handler.js
Plain textHub.Handler.Version = 2; // Released at https://hub.splitscreen.me/ on Thu Mar 17 2022 00:57:06 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "SXxys76eLF6BC36PF";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";
Game.ExecutableContext = ["Subnautica_Data"];
Game.RequiresAdmin = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = false;
Game.ExecutableName = "Subnautica.exe";
Game.SteamID = "264710";
Game.GUID = "Subnautica";
Game.GameName = "Subnautica Nitrox";
Game.MaxPlayers = 5;
Game.MaxPlayersOneMonitor = 5;
Game.LauncherTitle = "";
Game.UseGoldberg = false;
Game.NotTopMost = true;
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Subnautica";
Game.FakeFocus = true;
Game.FakeFocusInterval = 10000;
Game.SendFakeFocusMsg = true;
Game.ResetWindows = true;
Game.SetForegroundWindowElsewhere = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.Description =
"IMPORTANT: This uses a Nucleus forked Subnautica Nitrox build to allow for multiple instances. After running via Nucleus select multiplayer in the Nitrox launcher window that will open, once the game instance has launched set the game to windowed if it is in exclusive fullscreen, join the local server using the game multiplayer menu, write a name and select a color using your main mouse\\kb, once you are in-game select the Subnautica process in Nucleus process picker window, click refresh if you do not see it, wait for the instance to reposition then open the next Subnautica instance via the Nitrox Launcher too, repeat the same steps as in the previous instance. Enable the controller in the game options for the gamepad instances. If you use keyboards and mice after all the instances have launched, resized and positioned correctly, press the END key to lock the input for all instances to have their own cursor. You need to left click each mouse to make the emulated cursors appear after locking the input. Press the END key again to unlock the input when you finish playing. You can also use CTRL+Q to close Nucleus and all its instances when the input is unlocked. Reduce in-game graphics settings to improve performance.";
Game.ThirdPartyLaunch = true;
Game.IgnoreThirdPartyPrompt = true;
Game.ForceProcessPick = true;
Game.PauseBetweenProcessGrab = 15;
Game.PauseBetweenStarts = 30;
//USS deprecated options:
Game.HookSetCursorPos = false;
Game.HookGetCursorPos = false;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = false;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;
Game.SendNormalMouseInput = false;
Game.SendNormalKeyboardInput = false;
Game.SendScrollWheel = false;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = false;
//ProtoInput:
Game.SupportsMultipleKeyboardsAndMice = true;
Game.ProtoInput.InjectStartup = false;
Game.ProtoInput.InjectRuntime_RemoteLoadMethod = false;
Game.ProtoInput.InjectRuntime_EasyHookMethod = true;
Game.ProtoInput.InjectRuntime_EasyHookStealthMethod = false;
Game.LockInputAtStart = false;
Game.LockInputSuspendsExplorer = true;
Game.ProtoInput.FreezeExternalInputWhenInputNotLocked = false;
Game.LockInputToggleKey = 0x23;
Game.ProtoInput.RenameHandlesHook = false;
Game.ProtoInput.RenameHandles = [];
Game.ProtoInput.RenameNamedPipes = [];
Game.ProtoInput.RegisterRawInputHook = true;
Game.ProtoInput.GetRawInputDataHook = false;
Game.ProtoInput.MessageFilterHook = true;
Game.ProtoInput.GetCursorPosHook = false;
Game.ProtoInput.SetCursorPosHook = false;
Game.ProtoInput.GetKeyStateHook = false;
Game.ProtoInput.GetAsyncKeyStateHook = false;
Game.ProtoInput.GetKeyboardStateHook = false;
Game.ProtoInput.CursorVisibilityHook = false;
Game.ProtoInput.ClipCursorHook = true;
Game.ProtoInput.FocusHooks = false;
Game.ProtoInput.DrawFakeCursor = false;
Game.ProtoInput.ClipCursorHookCreatesFakeClip = true;
Game.ProtoInput.EnableToggleFakeCursorVisibilityShortcut = false;
Game.ProtoInput.DontShowCursorWhenImageUpdated = true;
Game.ProtoInput.RawInputFilter = false;
Game.ProtoInput.MouseMoveFilter = false;
Game.ProtoInput.MouseActivateFilter = false;
Game.ProtoInput.WindowActivateFilter = false;
Game.ProtoInput.WindowActvateAppFilter = false;
Game.ProtoInput.MouseWheelFilter = false;
Game.ProtoInput.MouseButtonFilter = false;
Game.ProtoInput.KeyboardButtonFilter = true;
Game.ProtoInput.AutoHideTaskbar = true;
Game.ProtoInput.SendMouseWheelMessages = true;
Game.ProtoInput.SendMouseButtonMessages = true;
Game.ProtoInput.SendMouseMovementMessages = true;
Game.ProtoInput.SendKeyboardButtonMessages = true;
Game.ProtoInput.XinputHook = true;
Game.ProtoInput.UseDinputRedirection = false;
Game.ProtoInput.UseOpenXinput = false;
Game.ProtoInput.MultipleProtoControllers = true;
Game.ProtoInput.EnableFocusMessageLoop = false;
//Game.ProtoInput.FocusLoopIntervalMilliseconds = 5;
//Game.ProtoInput.FocusLoop_WM_ACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_ACTIVATEAPP = true;
//Game.ProtoInput.FocusLoop_WM_NCACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_SETFOCUS = true;
//Game.ProtoInput.FocusLoop_WM_MOUSEACTIVATE = true;
Game.ProtoInput.BlockedMessages = [0x0008, 0x02a3, 0x02a1]; // Blocks WM_KILLFOCUS, WM_MOUSEHOVER and WM_MOUSELEAVE
Game.Play = function() {
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Fullscreen mode_h3630240806", 3, Nucleus.RegType.DWord);
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Is Fullscreen mode_h3981298716", 0, Nucleus.RegType.DWord);
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Height_h2627697771", Context.Height, Nucleus.RegType.DWord);
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Width_h182942802", Context.Width, Nucleus.RegType.DWord);
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Use Native_h1405027254", 0, Nucleus.RegType.DWord);
var appid = Context.RootInstallFolder + "\\steam_appid.txt";
var lines = ["264710"];
Context.WriteTextFile(appid, lines);
var Gamefolder = System.IO.Path.Combine(Game.Folder);
Context.RunAdditionalFiles(["1|" + Gamefolder + "\\Nitrox\\NitroxServer-Subnautica.exe"], false, 1);
Context.RunAdditionalFiles(["1|" + Gamefolder + "\\Nitrox\\NitroxLauncher.exe"], false, 1);
var path = Gamefolder + "\\Nitrox\\path.txt";
var lines = ["" + Context.RootInstallFolder];
Context.WriteTextFile(path, lines);
Game.KillProcessesOnClose = ["NitroxLauncher", "NitroxServer-Subnautica"];
if (Context.IsKeyboardPlayer) {
Game.ProtoInput.KeyboardButtonFilter = true;
} else {
Game.ProtoInput.KeyboardButtonFilter = false;
}
Game.ProtoInput.OnInputLocked = function() {
for (var i = 0; i < PlayerList.Count; i++) {
var player = PlayerList[i];
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.FocusHooksHookID);
//Avoid the mouse move filter unless absolutely necessary as it can massively affect performance if the game gets primary input from mouse move messages
//ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, true);
}
};
Game.ProtoInput.OnInputUnlocked = function() {
for (var i = 0; i < PlayerList.Count; i++) {
var player = PlayerList[i];
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.FocusHooksHookID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, false);
}
};
var numPlayers = 0;
for (var i = 0; i < PlayerList.Count; i++) {
var player = PlayerList[i];
if (player.IsXInput && player.ScreenIndex !== -1) {
numPlayers++;
}
player.ProtoController1 = Context.GamepadId;
player.ProtoController2 = Context.GamepadId;
player.ProtoController3 = Context.GamepadId;
player.ProtoController4 = Context.GamepadId;
}
};