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

GTFO · handler “GTFO CO-OP”

Version 9

Release notes

added a new offline LAN fix as the online fix stopped working, does not play well with Protoinput so mkb had to be removed for now.

Released
Size
2.2 KB
Downloads
749
Check
Verified
SHA-256
343a1a82abfc02d147c41bc3a38614951a913bb0fcbd4fd0603c960d3de12802
Download v9 (.nc)All versions

Files 1

PathSize
handler.js6.7 KB

handler.js

Plain text
Hub.Handler.Version = 9; // Released at https://hub.splitscreen.me/ on Mon Jun 24 2024 08:51:54 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "oaJFWFvNvPG6kfgqc";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

Game.ExecutableContext = ["GTFO_Data"];
Game.DirSymlinkExclusions = ["BepInEx\\config", "BepInEx\\core", "BepInEx\\interop", "BepInEx\\plugins", "BepInEx\\unity-libs", "dotnet", "GTFO_Data\\Plugins\\x86_64"];
Game.DirExclusions = ["BepInEx", "dotnet"];
Game.FileSymlinkExclusions = ["steam_api64.dll", "steam_appid.txt", "xinput1_3.dll", "Custom.dll", "dlllist.txt", "winmm.dll", "doorstop_config.ini", "winhttp.dll"];
Game.FileSymlinkCopyInstead = ["GameAssembly.dll", "UnityCrashHandler64.exe", "UnityPlayer.dll"];
Game.GameName = "GTFO";
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = false;
Game.ExecutableName = "GTFO.exe";
Game.SteamID = "493520";
Game.CreateSteamAppIdByExe = true;
Game.GUID = "GTFO";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.UseGoldberg = true;
Game.LauncherTitle = "BepinEx";
Game.SetTopMostAtEnd = true;
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "GTFO";
Game.FakeFocus = true;
Game.FakeFocusInterval = 8000;
Game.SendFakeFocusMsg = true;
Game.SetWindowHook = false;
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.XInputPlusDll = ["xinput1_3.dll"];
Game.UserProfileConfigPath = "AppData\\LocalLow\\10 Chambers Collective\\GTFO";
Game.Description =
  "IMPORTANT: Make sure you have a clean install of this game without any mods before running this, also make sure you have the LAN Fix files linked here in the correct folder: https://hub.splitscreen.me/handler/oaJFWFvNvPG6kfgqc. On first launch the instances will take a bit to open because BepinEx will apply the LAN fix. After an instance fully opens select the GTFO process in Nucleus process picker window, alt-tab to the process picker window if you can not move your cursor to select the process. To connect the instances host a lobby in an instance, remove the bots if there are any, select +invite and invite the other players, they will auto join your lobby, you can also invite via the overlay, alt-tab to or click on a game window and open the invite overlay with left shift+tab, right click the other players and select invite, if the overlay does not show make sure you disable any external overlays that could be interfering. Reduce graphics in your main game to improve performance.";
Game.KeepSymLinkOnExit = true;
Game.PauseBetweenProcessGrab = 35;
Game.PauseBetweenStarts = 40;

Game.Play = function() {
  var txtPath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\10 Chambers Collective\\GTFO\\GTFO_Settings.txt";
  var dict = [
    Context.FindLineNumberInTextFile(txtPath, '        "x":', Nucleus.SearchType.StartsWith) + '|        "x": ' + Context.Width + ".0,",
    Context.FindLineNumberInTextFile(txtPath, '        "y":', Nucleus.SearchType.StartsWith) + '|        "y": ' + Context.Height + ".0,",
    Context.FindLineNumberInTextFile(txtPath, '    "FullScreen": {', Nucleus.SearchType.StartsWith) + 1 + '|      "Value": 3'
  ];
  Context.ReplaceLinesInTextFile(txtPath, dict);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\10 Chambers Collective\\GTFO", "Screenmanager Fullscreen mode_h3630240806", 3, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\10 Chambers Collective\\GTFO", "Screenmanager Resolution Height_h2627697771", Context.Height, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\10 Chambers Collective\\GTFO", "Screenmanager Resolution Width_h182942802", Context.Width, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\10 Chambers Collective\\GTFO", "Screenmanager Resolution Use Native_h1405027254", 0, Nucleus.RegType.DWord);

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

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\GTFO_Data\\Plugins\\x86_64\\steam_api64.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "LFix\\steam_api64.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var invite = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\GTFO_Data\\Plugins\\x86_64\\steam_settings\\auto_accept_invite.txt";
  var lines = [
    "76561199023125438",
    "76561199023125439",
    "76561199023125440",
    "76561199023125441",
    "76561199023125442",
    "76561199023125443",
    "76561199023125444",
    "76561199023125445",
    "76561199023125446",
    "76561199023125447",
    "76561199023125448"
  ];
  Context.WriteTextFile(invite, lines);

  var nowar = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\GTFO_Data\\Plugins\\x86_64\\steam_settings\\disable_overlay_warning_local_save.txt";
  var lines = [""];
  Context.WriteTextFile(nowar, lines);

  if (!System.IO.File.Exists(Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\SaveData\\OtherConfigs\\EnabledFeatures.json")) {
    var filePath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\SaveData\\FeatureSettings";
    System.IO.Directory.CreateDirectory(filePath);

    var filePath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\SaveData\\OtherConfigs";
    System.IO.Directory.CreateDirectory(filePath);

    var savePath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\SaveData\\FeatureSettings\\LocalProgressionController_Settings_LocalProgressionSettings.json";
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "LFix\\LocalProgressionController_Settings_LocalProgressionSettings.json");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\SaveData\\OtherConfigs\\EnabledFeatures.json";
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "LFix\\EnabledFeatures.json");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePath = Context.NucleusUserRoot + "\\AppData\\LocalLow\\GTFO_TheArchive\\discord_game_sdk.dll";
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "LFix\\discord_game_sdk.dll");
    System.IO.File.Copy(savePkgOrigin, savePath, true);
  }

  if (!System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\LFix\\EnabledFeatures.json")) {
    Context.CopyScriptFolder(Context.GetFolder(Nucleus.Folder.InstancedGameFolder));

    Game.ForceProcessPick = true;
  } else {
  }
};