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

Killing Floor · handler “Killing Floor 1”

Version 2

Release notes

Fixes and multikeyboard alternative.

Released
Size
47 KB
Downloads
409
Check
Verified
SHA-256
058e16c11bbe04032223b03ff7e2edce6c110a60119d1c442d734bc6355846c9
Download v2 (.nc)All versions

Files 13

PathSize
handler.js9.8 KB
KillingFloor/P1/KillingFloor - Player 1.ini20 KB
KillingFloor/P1/User.ini13 KB
KillingFloor/P1/XInputPlus.ini2.7 KB
KillingFloor/P2/KillingFloor - Player 2.ini20 KB
KillingFloor/P2/User.ini13 KB
KillingFloor/P2/XInputPlus.ini2.7 KB
KillingFloor/P3/KillingFloor - Player 3.ini20 KB
KillingFloor/P3/User.ini13 KB
KillingFloor/P3/XInputPlus.ini2.7 KB
KillingFloor/P4/KillingFloor - Player 4.ini20 KB
KillingFloor/P4/User.ini13 KB
KillingFloor/P4/XInputPlus.ini2.7 KB

handler.js

Plain text
Hub.Handler.Version = 2; // Released at https://hub.splitscreen.me/ on Fri May 01 2020 05:48:10 GMT+0000 (UTC).
Hub.Handler.Id = "SMSvixRZPyqpudqdr";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

Game.DirSymlinkExclusions = ["System"];
Game.FileSymlinkExclusions = ["steam_api.dll", "steam_interfaces.txt", "steam_appid.txt", "User.ini"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.GoldbergIgnoreSteamAppId = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.ExecutableName = "KillingFloor.exe";
Game.ChangeExe = true;
Game.SteamID = "1250";
Game.GUID = "Killing Floor";
Game.GameName = "Killing Floor";
Game.MaxPlayers = 6;
Game.MaxPlayersOneMonitor = 6;
Game.BinariesFolder = "System";
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.StartArguments = "-windowed -AlwaysFocus -nosplash -nostartupmovies";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Killing Floor";
Game.HasDynamicWindowTitle = true;
Game.Hook.DInputEnabled = true;
Game.Hook.DInputForceDisable = true;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.HookFocus = true;
Game.XInputPlusDll = ["xinput1_3.dll", "Dinput.dll", "Dinput8.dll"];
Game.Description =
  "Wait until the first instance starts to open the second one, after you click to open the second instance the first will resize and position correctly. Create a LAN listen server in one instance and the others can join clicking in multiplayer-LAN tab. Use the mouse cursor to navigate all instances, gamepads are usable until you start a game. Press the back/select button on gamepad just once if your character stops after firing. If you want to play with multiple keyboards/mice set to true the option Game.SupportsMultipleKeyboardsAndMice in the script, you can open the .js file with notepad from the UI or in Nucleus scripts folder, note that doing this will only let you play with keyboards and mice, not gamepads. If you use keyboards and mice after all the instances open press the END key to lock the input for all instances to have their own cursor. Press the END key again to unlock the input. You can also use CTR+Q to close Nucleus and all its instances.";
Game.ResetWindows = true;
Game.KeepSymLinkOnExit = true;
Game.ForceSymlink = true;
Game.RefreshWindowAfterStart = true;
Game.PromptBetweenInstances = true;
Game.PauseBetweenStarts = 30;

Game.SupportsMultipleKeyboardsAndMice = false;

Game.HookSetCursorPos = true;
Game.HookGetCursorPos = true;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = true;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;

Game.SendNormalMouseInput = true;
Game.SendNormalKeyboardInput = true;
Game.SendScrollWheel = true;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = true;
Game.HookReRegisterRawInputMouse = true;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = true;
Game.LockInputAtStart = false;
Game.LockInputToggleKey = 0x23;

Game.Play = function() {
  var interfaces = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\steam_interfaces.txt";
  var lines = [
    "SteamClient012",
    "SteamGameServer011",
    "SteamGameServerStats001",
    "SteamUser017",
    "SteamFriends013",
    "SteamUtils006",
    "SteamMatchMaking009",
    "SteamMatchMakingServers002",
    "STEAMUSERSTATS_INTERFACE_VERSION011",
    "STEAMAPPS_INTERFACE_VERSION005",
    "SteamNetworking005",
    "STEAMREMOTESTORAGE_INTERFACE_VERSION011",
    "STEAMSCREENSHOTS_INTERFACE_VERSION002",
    "STEAMHTTP_INTERFACE_VERSION002",
    "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001"
  ];

  Context.WriteTextFile(interfaces, lines);

  if (Context.PlayerID == 0) {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 1.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P1\\KillingFloor - Player 1.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\User.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P1\\User.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\XInputPlus.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P1\\XInputPlus.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 1.ini");
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportX", Context.Width),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportY", Context.Height),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "UseJoystick", true),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "CaptureMouse", false),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "StartupFullscreen", false)
    ]);
  }

  if (Context.PlayerID == 1) {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 2.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P2\\KillingFloor - Player 2.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\User.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P2\\User.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\XInputPlus.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P2\\XInputPlus.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 2.ini");
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportX", Context.Width),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportY", Context.Height),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "UseJoystick", true),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "CaptureMouse", false),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "StartupFullscreen", false)
    ]);
  }
  if (Context.PlayerID == 2) {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 3.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P3\\KillingFloor - Player 3.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\User.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P3\\User.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\XInputPlus.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P3\\XInputPlus.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 3.ini");
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportX", Context.Width),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportY", Context.Height),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "UseJoystick", true),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "CaptureMouse", false),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "StartupFullscreen", false)
    ]);
  }

  if (Context.PlayerID == 3) {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 4.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "KillingFloor - Player 4.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\User.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P4\\User.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\XInputPlus.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "P4\\XInputPlus.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\System\\KillingFloor - Player 4.ini");
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportX", Context.Width),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "WindowedViewportY", Context.Height),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "UseJoystick", true),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "CaptureMouse", false),
      new Nucleus.IniSaveInfo("WinDrv.WindowsClient", "StartupFullscreen", false)
    ]);
  }
};