Subnautica · handler “Subnautica Nitrox”
Version 8 (current)
Release notes
updated for nitrox 1.8
- Released
- Size
- 23.2 MB
- Downloads
- 14,217
- Check
- Verified
- SHA-256
- db23835838156aa9e32ea1edfa54b7385ae6a1acd82cb0bc9660a0c7cee4ec86
Files 176
| Path | Size |
|---|---|
| handler.js | 12 KB |
| SubnauticaNitrox/Nitrox/lib/AssetsTools.NET.dll | 214 KB |
| SubnauticaNitrox/Nitrox/lib/Autofac.dll | 226 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Base.dll | 2.0 MB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Controls.dll | 1.0 MB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.DesignerSupport.dll | 204 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Desktop.dll | 15 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Dialogs.dll | 237 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.dll | 4.0 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.FreeDesktop.dll | 193 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Markup.dll | 64 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Markup.Xaml.dll | 83 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Metal.dll | 14 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.MicroCom.dll | 15 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Native.dll | 289 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.OpenGL.dll | 112 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Remote.Protocol.dll | 68 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Skia.dll | 125 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Svg.Skia.dll | 33 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Themes.Fluent.dll | 563 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Vulkan.dll | 186 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Win32.Automation.dll | 111 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Win32.dll | 887 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.X11.dll | 330 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Xaml.Interactions.dll | 74 KB |
| SubnauticaNitrox/Nitrox/lib/Avalonia.Xaml.Interactivity.dll | 54 KB |
| SubnauticaNitrox/Nitrox/lib/av_libglesv2.dll | 5.2 MB |
| SubnauticaNitrox/Nitrox/lib/BinaryPack.dll | 63 KB |
| SubnauticaNitrox/Nitrox/lib/CommunityToolkit.Mvvm.dll | 118 KB |
| SubnauticaNitrox/Nitrox/lib/dnlib.dll | 1.1 MB |
| SubnauticaNitrox/Nitrox/lib/ExCSS.dll | 339 KB |
| SubnauticaNitrox/Nitrox/lib/HarfBuzzSharp.dll | 120 KB |
| SubnauticaNitrox/Nitrox/lib/JetBrains.Annotations.dll | 111 KB |
| SubnauticaNitrox/Nitrox/lib/libHarfBuzzSharp.dll | 1.7 MB |
| SubnauticaNitrox/Nitrox/lib/libSkiaSharp.dll | 9.2 MB |
| SubnauticaNitrox/Nitrox/lib/LiteNetLib.dll | 109 KB |
| SubnauticaNitrox/Nitrox/lib/LitJSON.dll | 68 KB |
| SubnauticaNitrox/Nitrox/lib/MicroCom.Runtime.dll | 14 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.Abstractions.dll | 29 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.Binder.dll | 44 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.dll | 44 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.DependencyInjection.Abstractions.dll | 64 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.DependencyInjection.dll | 91 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Diagnostics.Abstractions.dll | 31 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Diagnostics.dll | 36 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Http.dll | 91 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Logging.Abstractions.dll | 66 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Logging.dll | 51 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Options.ConfigurationExtensions.dll | 22 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Options.dll | 65 KB |
| SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Primitives.dll | 44 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.dll | 348 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Mdb.dll | 39 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Pdb.dll | 87 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Rocks.dll | 24 KB |
| SubnauticaNitrox/Nitrox/lib/Mono.Nat.dll | 69 KB |
| SubnauticaNitrox/Nitrox/lib/net472/0Harmony.dll | 258 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Autofac.dll | 227 KB |
| SubnauticaNitrox/Nitrox/lib/net472/BinaryPack.dll | 62 KB |
| SubnauticaNitrox/Nitrox/lib/net472/DiscordGameSDKWrapper.dll | 104 KB |
| SubnauticaNitrox/Nitrox/lib/net472/discord_game_sdk.dll | 3.3 MB |
| SubnauticaNitrox/Nitrox/lib/net472/FMODUnity.dll | 208 KB |
| SubnauticaNitrox/Nitrox/lib/net472/JetBrains.Annotations.dll | 111 KB |
| SubnauticaNitrox/Nitrox/lib/net472/LiteNetLib.dll | 106 KB |
| SubnauticaNitrox/Nitrox/lib/net472/LitJSON.dll | 63 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Microsoft.Bcl.AsyncInterfaces.dll | 26 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Microsoft.Win32.Registry.dll | 26 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Mono.Cecil.dll | 350 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Mono.Cecil.Mdb.dll | 42 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Mono.Cecil.Pdb.dll | 88 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Mono.Cecil.Rocks.dll | 27 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Mono.Nat.dll | 67 KB |
| SubnauticaNitrox/Nitrox/lib/net472/MonoMod.RuntimeDetour.dll | 109 KB |
| SubnauticaNitrox/Nitrox/lib/net472/MonoMod.Utils.dll | 193 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Newtonsoft.Json.dll | 684 KB |
| SubnauticaNitrox/Nitrox/lib/net472/NitroxClient.dll | 893 KB |
| SubnauticaNitrox/Nitrox/lib/net472/NitroxModel-Subnautica.dll | 68 KB |
| SubnauticaNitrox/Nitrox/lib/net472/NitroxModel.dll | 457 KB |
| SubnauticaNitrox/Nitrox/lib/net472/NitroxPatcher.dll | 565 KB |
| SubnauticaNitrox/Nitrox/lib/net472/NitroxPatcher.dll.config | 541 B |
| SubnauticaNitrox/Nitrox/lib/net472/protobuf-net.dll | 179 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Sentry.dll | 21 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Serilog.dll | 160 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Serilog.Sinks.Async.dll | 17 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Serilog.Sinks.File.dll | 32 KB |
| SubnauticaNitrox/Nitrox/lib/net472/Serilog.Sinks.Map.dll | 14 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Buffers.dll | 23 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Diagnostics.DiagnosticSource.dll | 185 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.IO.FileSystem.AccessControl.dll | 28 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.IO.Pipelines.dll | 83 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Memory.dll | 139 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Numerics.Vectors.dll | 108 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Runtime.CompilerServices.Unsafe.dll | 19 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Security.AccessControl.dll | 33 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Security.Principal.Windows.dll | 18 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Text.Encodings.Web.dll | 78 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Text.Json.dll | 710 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Threading.Channels.dll | 72 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.Threading.Tasks.Extensions.dll | 25 KB |
| SubnauticaNitrox/Nitrox/lib/net472/System.ValueTuple.dll | 25 KB |
| SubnauticaNitrox/Nitrox/lib/Newtonsoft.Json.dll | 677 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel-Subnautica.dll | 41 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxModel.dll | 452 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxServer.dll | 268 KB |
| SubnauticaNitrox/Nitrox/lib/NitroxServer.dll.config | 1.2 KB |
| SubnauticaNitrox/Nitrox/lib/protobuf-net.dll | 179 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.dll | 158 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Async.dll | 15 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.File.dll | 30 KB |
| SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Map.dll | 12 KB |
| SubnauticaNitrox/Nitrox/lib/ShimSkiaSharp.dll | 154 KB |
| SubnauticaNitrox/Nitrox/lib/SixLabors.ImageSharp.dll | 1.7 MB |
| SubnauticaNitrox/Nitrox/lib/SkiaSharp.dll | 471 KB |
| SubnauticaNitrox/Nitrox/lib/SkiaSharp.HarfBuzz.dll | 24 KB |
| SubnauticaNitrox/Nitrox/lib/Svg.Custom.dll | 717 KB |
| SubnauticaNitrox/Nitrox/lib/Svg.Model.dll | 143 KB |
| SubnauticaNitrox/Nitrox/lib/Svg.Skia.dll | 55 KB |
| SubnauticaNitrox/Nitrox/lib/Tmds.DBus.Protocol.dll | 196 KB |
| SubnauticaNitrox/Nitrox/LICENSE.txt | 32 KB |
| SubnauticaNitrox/Nitrox/Nitrox.Launcher.deps.json | 52 KB |
| SubnauticaNitrox/Nitrox/Nitrox.Launcher.dll | 6.8 MB |
| SubnauticaNitrox/Nitrox/Nitrox.Launcher.exe | 186 KB |
| SubnauticaNitrox/Nitrox/Nitrox.Launcher.runtimeconfig.json | 485 B |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.deps.json | 18 KB |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.dll | 113 KB |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.dll.config | 723 B |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.exe | 153 KB |
| SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.runtimeconfig.json | 340 B |
| SubnauticaNitrox/Nitrox/PATCH NOTES.txt | 32 KB |
| SubnauticaNitrox/Nitrox/README.txt | 957 B |
| SubnauticaNitrox/Nitrox/Resources/AssetBundles/chatkeyhint | 55 KB |
| SubnauticaNitrox/Nitrox/Resources/AssetBundles/chatlog | 23 KB |
| SubnauticaNitrox/Nitrox/Resources/AssetBundles/discordjoinrequest | 9.2 KB |
| SubnauticaNitrox/Nitrox/Resources/AssetBundles/playerlisttab | 24 KB |
| SubnauticaNitrox/Nitrox/Resources/AssetBundles/sharedassets | 154 KB |
| SubnauticaNitrox/Nitrox/Resources/classdata.tpk | 154 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/af.json | 2.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/bg.json | 8.7 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ca.json | 3.8 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/cs.json | 7.2 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/da.json | 6.8 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/de.json | 7.6 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/el.json | 11 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/en.json | 6.6 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/es-419.json | 4.1 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/es.json | 7.1 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/et.json | 2.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/fi.json | 7.0 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/fr.json | 7.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ga.json | 7.6 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/hr.json | 4.5 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/hu.json | 7.7 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/it.json | 7.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ja.json | 6.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ko.json | 6.8 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/lt.json | 6.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/lv.json | 3.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/nl.json | 6.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/no.json | 6.9 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/pl.json | 7.1 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/pt-BR.json | 7.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/pt.json | 6.1 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ro.json | 6.8 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/ru.json | 9.8 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/sk.json | 6.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/sl.json | 5.5 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/sr-Cyrl.json | 852 B |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/sr.json | 6.9 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/sv.json | 5.9 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/th.json | 9.0 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/tr.json | 7.3 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/uk.json | 8.7 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/vi.json | 7.9 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/zh-Hans.json | 6.4 KB |
| SubnauticaNitrox/Nitrox/Resources/LanguageFiles/zh-Hant.json | 6.5 KB |
| SubnauticaNitrox/Nitrox/Resources/SoundWhitelist_Subnautica.csv | 53 KB |
handler.js
Plain textHub.Handler.Version = 8; // Released at https://hub.splitscreen.me/ on Sat Oct 25 2025 09:53:11 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.UseGoldberg = false;
Game.SetTopMostAtEnd = true;
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Subnautica";
Game.ResetWindows = true;
Game.RefreshWindowAfterStart = 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 the Subnautica [Nitrox]{https://github.com/SubnauticaNitrox/Nitrox} Alpha v1.8.0.1 build, credit to the great devs that made Nitrox, you need the latest game version. After running this via Nucleus go to options and enable allow multiple game instances in the Nitrox launcher window that will open, then select play game-play multiplayer, once the first 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 on 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 or go to options and move the controller left stick. If you use keyboards and mice after all the instances have launched, resized and positioned correctly, press the END key once 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 in your main game 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 = false;
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 = false;
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 = true;
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\\Nitrox.Launcher.exe"], false, 1);
var path = Gamefolder + "\\Nitrox\\path.txt";
var lines = ["" + Context.RootInstallFolder];
Context.WriteTextFile(path, lines);
Game.KillProcessesOnClose = ["Nitrox.Launcher", "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.RegisterRawInputHookID);
//ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.MessageFilterHookID);
//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.RegisterRawInputHookID);
//ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.MessageFilterHookID);
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.StartFocusMessageLoop(player.ProtoInputInstanceHandle, 8000, true, true, false, false, false);
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;
player.ProtoController5 = Context.GamepadId;
player.ProtoController6 = Context.GamepadId;
player.ProtoController7 = Context.GamepadId;
player.ProtoController8 = Context.GamepadId;
player.ProtoController9 = Context.GamepadId;
player.ProtoController10 = Context.GamepadId;
player.ProtoController11 = Context.GamepadId;
player.ProtoController12 = Context.GamepadId;
}
};