Skip to content
Beta: this is a preview of the new SplitScreen.Me. Data may be reset before launch.

Nazi Zombies: Portable · handler “Nazi Zombies Portable”

Version 3 (current)

Release notes

8 player update

Released
Size
3.2 MB
Downloads
355
Check
Verified
SHA-256
6eb1598392f5ceb54307e801bd5c5ca9a974e2f090075b1288ec3806ddc4e1ac
Download v3 (.nc)All versions

Files 2

PathSize
handler.js5.5 KB
Nazi Zombies portable/nzportable64.exe7.4 MB

handler.js

Plain text
Hub.Handler.Version = 3; // Released at https://hub.splitscreen.me/ on Mon Jul 07 2025 19:46:42 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "xsi9gpgXeQoD2Lbvd";
Hub.Maintainer.Name = "birden";
Hub.Maintainer.Id = "rRycxSn253ZCjQy5C";

var answers1 = ["60", "30", "45", "75", "90", "120"];
Game.AddOption("Select the FPS cap.", "", "fps", answers1);

Game.FileSymlinkExclusions = ["Controller.cfg", "nzportable64.exe"];

Game.FileSymlinkCopyInstead = ["default.cfg", "fte.cfg"];

Game.GameName = "Nazi Zombies portable";
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = false;
Game.ExecutableName = "nzportable-sdl64.exe";
Game.ExecutableToLaunch = "nzportable64.exe";
Game.SteamID = "";
Game.GUID = "Nazi Zombies portable";
Game.MaxPlayers = 8;
Game.MaxPlayersOneMonitor = 8;
Game.BinariesFolder = "";
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Nazi Zombies: Portable";
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = false;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = [];
Game.Hook.CustomDllEnabled = false;
Game.Description =
  "Tested with the win64 version of the game downloaded from here: https://github.com/nzp-team/nzportable/releases/tag/nightly\n\nIn the first instance make a cooperative game. After that click the prompt to launch the rest of the instances.\n\nAlt+tab to the keyboard/mouse screen if you have one, it will work properly when all screens do a soft restart.\n\nIn case one of the instances are in limbo after it joins a match, just restart the match.";
Game.PauseBetweenProcessGrab = 5;
Game.PauseBetweenStarts = 5;

Game.SupportsKeyboard = true;
Game.KeyboardPlayerSkipFakeFocus = true;
Game.HideTaskbar = true;
Game.PromptAfterFirstInstance = true;
Game.RefreshWindowAfterStart = true;
Game.FakeFocus = 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 = true;

Game.ProtoInput.XinputHook = true;
Game.ProtoInput.UseOpenXinput = true;

Game.Play = function() {
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\nzportable64.exe");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "nzportable64.exe");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  Game.ExecutableName = "nzportable64.exe";

  var FPS = Context.Options["fps"];
  var start = "";

  var cfgpath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\nzp\\nzportable.cfg";
  var dict = [
    Context.FindLineNumberInTextFile(cfgpath, "cl_idlefps", Nucleus.SearchType.StartsWith) + '|cl_idlefps "' + FPS + '"',
    Context.FindLineNumberInTextFile(cfgpath, 'cl_maxfps "', Nucleus.SearchType.StartsWith) + '|cl_maxfps "' + FPS + '"',
    Context.FindLineNumberInTextFile(cfgpath, "show_fps", Nucleus.SearchType.StartsWith) + '|show_fps "1"',
    Context.FindLineNumberInTextFile(cfgpath, "vid_height", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
    Context.FindLineNumberInTextFile(cfgpath, "vid_width", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"',
    Context.FindLineNumberInTextFile(cfgpath, "vid_fullscreen", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
    Context.FindLineNumberInTextFile(cfgpath, 'in_windowed_mouse "1"', Nucleus.SearchType.StartsWith) + '|in_windowed_mouse "1"',
    Context.FindLineNumberInTextFile(cfgpath, "name", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
    Context.FindLineNumberInTextFile(cfgpath, "seta vid_ultrawide_limiter", Nucleus.SearchType.StartsWith) + '|seta vid_ultrawide_limiter "0"'
  ];
  Context.ReplaceLinesInTextFile(cfgpath, dict);

  if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\nzp\\user_settings.cfg")) {
    var cfgpath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\nzp\\user_settings.cfg";
    var dict = [
      Context.FindLineNumberInTextFile(cfgpath, "cl_idlefps", Nucleus.SearchType.StartsWith) + '|cl_idlefps "' + FPS + '"',
      Context.FindLineNumberInTextFile(cfgpath, 'cl_maxfps "', Nucleus.SearchType.StartsWith) + '|cl_maxfps "' + FPS + '"',
      Context.FindLineNumberInTextFile(cfgpath, "show_fps", Nucleus.SearchType.StartsWith) + '|show_fps "1"',
      Context.FindLineNumberInTextFile(cfgpath, "vid_height", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
      Context.FindLineNumberInTextFile(cfgpath, "vid_width", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"',
      Context.FindLineNumberInTextFile(cfgpath, "vid_fullscreen", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
      Context.FindLineNumberInTextFile(cfgpath, 'in_windowed_mouse "1"', Nucleus.SearchType.StartsWith) + '|in_windowed_mouse "1"',
      Context.FindLineNumberInTextFile(cfgpath, "name", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
      Context.FindLineNumberInTextFile(cfgpath, "seta vid_ultrawide_limiter", Nucleus.SearchType.StartsWith) + '|seta vid_ultrawide_limiter "0"'
    ];
    Context.ReplaceLinesInTextFile(cfgpath, dict);
  }

  if (Context.PlayerID != 0) {
    start += " +connect 127.0.0.1";
  }

  Context.StartArguments = start;
};