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

Killing Floor 2 · handler “Killing Floor 2”

Version 2

Release notes

updated for the connection to work with epic emu.

Released
Size
1.3 MB
Downloads
7
Check
Unverified
SHA-256
bbfd78c1688ff7397fb84793ad782de629027b571e5a1980971acee85349fee7
Download v2 (.nc)All versions

Files 7

PathSize
handler.js5.1 KB
KillingFloor2/achievements.json69 KB
KillingFloor2/default_items.json92 KB
KillingFloor2/EOSSDK-Win64-Shipping.dll2.5 MB
KillingFloor2/items.json6.0 MB
KillingFloor2/NemirtingasEpicEmu.json258 B
KillingFloor2/steam_interfaces.txt656 B

handler.js

Plain text
Hub.Handler.Version = 2; // Released at https://hub.splitscreen.me/ on Wed Nov 18 2020 05:00:08 GMT+0000 (UTC).
Hub.Handler.Id = "rcCrC6oeeSWdXQWmm";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

Game.DirSymlinkExclusions = ["binaries\\Win64"];
Game.FileSymlinkExclusions = ["steam_api64.dll", "steam_interfaces.txt", "steam_appid.txt", "EOSSDK-Win64-Shipping.dll"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.GoldbergNeedSteamInterface = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.SupportsKeyboard = false;
Game.ExecutableName = "kfgame.exe";
Game.SteamID = "232090";
Game.GUID = "Killing Floor 2";
Game.GameName = "Killing Floor 2";
Game.MaxPlayers = 2;
Game.MaxPlayersOneMonitor = 4;
Game.BinariesFolder = "binaries\\Win64";
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.StartArguments = "";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Killing Floor 2 (64-bit, DX11)";
Game.HasDynamicWindowTitle = true;
Game.Hook.DInputEnabled = false;
Game.Hook.DInputForceDisable = true;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.Hook.CustomDllEnabled = false;
Game.HookFocus = true;
Game.PreventWindowDeactivation = true;
Game.PromptBetweenInstances = true;
Game.KeepSymLinkOnExit = false;
Game.ResetWindows = true;
Game.SetWindowHook = true;
Game.Description =
  "This game takes a long time to open so only click the open next instance prompt after the first instance opens, positions and resizes correctly, same with all others. Start a local server first then run this, the instances should join automatically.";
Game.PauseBetweenStarts = 40;

Game.Play = function() {
  Context.StartArguments = "127.0.0.1 -windowed -AlwaysFocus -nosplash -nostartupmovies";

  var path = "%USERPROFILE%\\Documents\\My Games\\KillingFloor2\\KFGame\\Config\\GFXSettings.KFGame.xml";
  Context.ChangeXmlAttributeValue(path, "//RESOLUTION", "Width", Context.Width);
  Context.ChangeXmlAttributeValue(path, "//RESOLUTION", "Height", Context.Height);

  var savePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Games\\KillingFloor2\\KFGame\\Config\\KFSystemSettings.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("SystemSettings", "Fullscreen", "False"),
    new Nucleus.IniSaveInfo("SystemSettings", "ResX", Context.Width),
    new Nucleus.IniSaveInfo("SystemSettings", "ResY", Context.Height)
  ]);

  var savePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Games\\KillingFloor2\\KFGame\\Config\\KFEngine.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [new Nucleus.IniSaveInfo("Engine.Engine", "bPauseOnLossOfFocus", "FALSE")]);

  var savePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Games\\KillingFloor2\\KFGame\\Config\\KFInput.ini";
  Context.ReplaceLinesInTextFile(savePath, [
    693 + '|Bindings=(Name="XboxTypeS_Back",Command="open 127.0.0.1",Control=False,Shift=False,Alt=False,bIgnoreCtrl=False,bIgnoreShift=False,bIgnoreAlt=False)'
  ]);

  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\steam_settings");
  System.IO.Directory.CreateDirectory(filePath);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\steam_settings\\achievements.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "achievements.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\steam_settings\\default_items.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "default_items.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\steam_settings\\items.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "items.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\EOSSDK-Win64-Shipping.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "EOSSDK-Win64-Shipping.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\NemirtingasEpicEmu.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "NemirtingasEpicEmu.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var cfgFilePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binaries\\Win64\\NemirtingasEpicEmu.json";

  var username = Context.FindLineNumberInTextFile(cfgFilePath, "username", Nucleus.SearchType.Contains);

  Context.ReplaceLinesInTextFile(cfgFilePath, [username + '|  "username": "' + Context.Nickname + '", ']);
};