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

Halo: The Master Chief Collection · handler “Halo: The Master Chef Collection”

Version 14

Release notes

Season 6 update.

Released
Size
1.3 MB
Downloads
214
Check
Verified
SHA-256
ee7ee8f8fb08d5e1db39edce86d0b29f7c0d839949a32605f68ff33507a272bd
Download v14 (.nc)All versions

Files 4

PathSize
Halo The Master Chief Collection/steam_api64.dll2.7 MB
Halo The Master Chief Collection/unlockdb.xml225 KB
Halo The Master Chief Collection/xlive64.dll528 KB
handler.js13 KB

handler.js

Plain text
Hub.Handler.Version = 14; // Released at https://hub.splitscreen.me/ on Thu Apr 08 2021 01:15:39 GMT+0000 (UTC).
Hub.Handler.Id = "xjBSwFNj3ndRntsZh";
Hub.Maintainer.Name = "dr.oldboi";
Hub.Maintainer.Id = "dPRj3q6kFtT4HvMGg";

var answers1 = ["Yes", "No"];
var answers2 = ["LAN", "Online"];
var answers3 = ["Default", "Enable", "Disable"];
var answers4 = ["Default", "Enable", "Disable"];
Game.AddOption("Unlock all?", "Unlocks all armors, skins, emblems and nameplates.", "Unlock", answers1);
Game.AddOption("LAN or Online?", "Online requires multiple xboxlive acc. and the diff. users option to be enabled.", "LAN", answers2);
Game.AddOption("Enable Launch as different users? Status: Disabled.", "When the instances launch close Nucleus, open the app again for it to enable.", "Users", answers3);
Game.AddOption("Enable experimental Xinput Reroute? Status: Disabled.", "When the instances launch close Nucleus, open it again for Reroute to enable.", "Reroute", answers4);

Game.KillMutex = ["Chelankenstein"];
Game.DirSymlinkExclusions = ["MCC\\Binaries\\Win64", "MCC\\Content\\Movies"];
Game.DirSymlinkCopyInstead = ["halo1\\original\\build\\shaders"];
Game.DirSymlinkCopyInsteadIncludeSubFolders = true;
Game.FileSymlinkExclusions = ["steam_api64.dll", "steam_api.dll", "xlive64.dll", "xinput1_3.dll", "FMS_logo_microsoft_7_1_.bk2", "unlockdb.xml"];
Game.CopyEnvFoldersToNucleusAccounts = ["AppData\\LocalLow\\MCC\\LocalFiles"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.GoldbergNoLocalSave = true;
Game.UseNucleusEnvironment = true;
Game.LaunchAsDifferentUsers = false;
Game.TransferNucleusUserAccountProfiles = true;
Game.UseCurrentUserEnvironment = false;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.HardlinkGame = true;
Game.SupportsKeyboard = true;
Game.KeyboardPlayerFirst = true;
Game.ExecutableName = "MCC-Win64-Shipping.exe";
Game.SteamID = "976730";
Game.GUID = "Halo MCC";
Game.GameName = "Halo: The Master Chief Collection";
Game.MaxPlayers = 16;
Game.MaxPlayersOneMonitor = 16;
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.BinariesFolder = "MCC\\Binaries\\Win64";
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Halo: The Master Chief Collection";
Game.RefreshWindowAfterStart = true;
Game.ResetWindows = true;
Game.HookFocus = true;
Game.Hook.DInputEnabled = false;
Game.UseDInputBlocker = true;
Game.Hook.DInputForceDisable = true;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.Hook.CustomDllEnabled = false;
Game.UseForceBindIP = true;
Game.UserProfileSavePath = "AppData\\Roaming\\Goldberg SteamEmu Saves\\976730\\remote";
Game.UserProfileSavePathNoCopy = true;
Game.Description =
  "IMPORTANT: Your game and Nucleus need to be in the same drive for this to work but do not place Nucleus inside the game files. Change network type to LAN in the game settings for all instances then press x on your gamepad to join the other players. If the mouse stops responding, alt+tab to your mouse and keyboard instance if you launched one. The new offline LAN option is the default now and the recommended one being a lot easier to use but if you still want to use the old Online connection method you have to select the Online UI option and enable the launch as different users option too, this will allow you to play with other people through Xbox Live but modes that require EAC enabled (such as Matchmaking) will not work. Using these, Nucleus will launch all instances under different temporary windows users so each instance can log-in using different accounts and can connect to each other, you need to launch Nucleus as admin for this. Log in using different microsoft accounts in each instance, once it's done setting up, press OK on the prompt. To connect the instances open the rooster (by pressing X on the menu or hovering over it with the mouse) and invite all other players, you can also invite the other instaces if you use the invite friends option or press left shift+tab to invite the other players via the overlay that appears, use the mouse cursor, right click on them and select invite, close the overlay and accept the invitation quickly in the other instances with the cursor too. For this script to work Nucleus needs to be in the root of the drive you have your game on outside any users folders, C: is recommended, for example C:\\NucleusCoop, you can also try giving full permissions to the game and Nucleus folders to all users. You need internet connection if you are using the online option cause the instances connect via the xbox live servers. The Xinput Reroute UI option reroutes directinput back to xinput to track more than 4 gamepads on xinput at once allowing you to play with more than 4 xinput gamepads. Xbox one gamepads do not work with focus when using reroute because of the driver background input issue.";
Game.KeepSymLinkOnExit = false;
Game.PauseBetweenStarts = 40;

Game.Play = function() {
  var Args = (Context.Args = " -windowed " + " -AlwaysFocus " + " -nosplash " + " -ResX= " + Context.Width + " -ResY= " + Context.Height);

  Context.StartArguments = Args;

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

  var dlc = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\steam_settings\\DLC.txt";
  var lines = [
    "1109621=MCC - Reach: Extended Language Pack",
    "1108760=MCC - H1: Extended Language Pack",
    "1108761=MCC - H2: Extended Language Pack",
    "1108762=MCC - H3: Extended Language Pack",
    "1108763=MCC - ODST: Extended Language Pack",
    "1109620=MCC - H4: Extended Language Pack",
    "1097224=MCC - Reach (Content Pack 2)",
    "1080080=MCC - H1: Multiplayer",
    "1097223=MCC - H2: Multiplayer",
    "1097222=MCC - H3: Multiplayer",
    "1097220=MCC - H4: Multiplayer",
    "1064273=Halo 4",
    "1064272=Halo 3: ODST",
    "1064271=Halo 3",
    "1064270=Halo 2: Anniversary",
    "1064221=Halo: Combat Evolved Anniversary",
    "1064220=Halo: Reach"
  ];

  Context.WriteTextFile(dlc, lines);

  var depots = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\steam_settings\\depots.txt";
  var lines = [
    "228987",
    "228990",
    "229005",
    "976731",
    "976732",
    "976733",
    "976734",
    "976735",
    "976736",
    "976737",
    "976738",
    "976739",
    "1064222",
    "1064223",
    "1064224",
    "1064225",
    "1064226",
    "1064227",
    "1064228",
    "1064229",
    "1064274",
    "1064275",
    "1064276"
  ];

  Context.WriteTextFile(depots, lines);

  var nolan = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\disable_lan_only.txt";
  var lines = [""];

  Context.WriteTextFile(nolan, lines);

  var appid = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\steam_settings\\steam_appid.txt";
  var lines = ["976730"];

  Context.WriteTextFile(appid, lines);

  if (Context.NumControllers < 5) {
    Game.Hook.XInputReroute = false;
  } else {
    Game.XInputPlusDll = ["dummy"];
    Game.InjectHookXinput = true;
    Game.InjectDinputToXinputTranslation = true;
  }

  if (Context.HasKeyboardPlayer == true) {
    Game.PromptBetweenInstances = true;
    Game.PreventWindowDeactivation = true;
    Game.KeyboardPlayerSkipPreventWindowDeactivate = true;
  } else {
    Game.FakeFocus = true;
    Game.SetForegroundWindowElsewhere = true;
  }

  var unlock = Context.Options["Unlock"];
  var lan = Context.Options["LAN"];
  var users = Context.Options["Users"];
  var reroute = Context.Options["Reroute"];

  if (unlock == "Yes") {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\data\\ui\\unlockdb.xml");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "unlockdb.xml");
    System.IO.File.Copy(savePkgOrigin, savePath, true);
  }

  if (unlock == "No") {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\data\\ui\\unlockdb.xml");
    var savePkgOrigin = System.IO.Path.Combine(Context.OrigRootFolder, "data\\ui\\unlockdb.xml");
    System.IO.File.Copy(savePkgOrigin, savePath, true);
  }

  if (lan == "LAN") {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\steam_api64.dll");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "steam_api64.dll");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

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

    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\steam_settings\\load_dlls\\xlive64.dll");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "xlive64.dll");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var nonet = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\MCC\\Binaries\\Win64\\steam_settings\\disable_networking.txt";
    var lines = [""];

    Context.WriteTextFile(nonet, lines);
  }

  if (lan == "Online") {
  }

  if (users == "Default") {
  }

  if (users == "Enable") {
    var txtPath = Context.NucleusFolder + "\\scripts\\Halo The Master Chief Collection.js";
    var dict = [
      Context.FindLineNumberInTextFile(txtPath, 'Game.AddOption("Enable Launch as different users? Status:', Nucleus.SearchType.StartsWith) +
        '|Game.AddOption("Enable Launch as different users? Status: Enabled.", "When the instances launch close Nucleus, open the app again for it to enable.", "Users", answers3);',
      Context.FindLineNumberInTextFile(txtPath, "Game.LaunchAsDifferentUsers", Nucleus.SearchType.StartsWith) + "|Game.LaunchAsDifferentUsers = true;",
      Context.FindLineNumberInTextFile(txtPath, "Game.UseNucleusEnvironment", Nucleus.SearchType.StartsWith) + "|Game.UseNucleusEnvironment = false;"
    ];
    Context.ReplaceLinesInTextFile(txtPath, dict);
  }
  if (users == "Disable") {
    var txtPath = Context.NucleusFolder + "\\scripts\\Halo The Master Chief Collection.js";
    var dict = [
      Context.FindLineNumberInTextFile(txtPath, 'Game.AddOption("Enable Launch as different users? Status:', Nucleus.SearchType.StartsWith) +
        '|Game.AddOption("Enable Launch as different users? Status: Disabled.", "When the instances launch close Nucleus, open the app again for it to enable.", "Users", answers3);',
      Context.FindLineNumberInTextFile(txtPath, "Game.LaunchAsDifferentUsers", Nucleus.SearchType.StartsWith) + "|Game.LaunchAsDifferentUsers = false;",
      Context.FindLineNumberInTextFile(txtPath, "Game.UseNucleusEnvironment", Nucleus.SearchType.StartsWith) + "|Game.UseNucleusEnvironment = true;"
    ];
    Context.ReplaceLinesInTextFile(txtPath, dict);
  }

  if (reroute == "Default") {
  }

  if (reroute == "Enable") {
    var txtPath = Context.NucleusFolder + "\\scripts\\Halo The Master Chief Collection.js";
    var dict = [
      Context.FindLineNumberInTextFile(txtPath, 'Game.AddOption("Enable experimental Xinput Reroute? Status:', Nucleus.SearchType.StartsWith) +
        '|Game.AddOption("Enable experimental Xinput Reroute? Status: Enabled.", "When the instances launch close Nucleus, open it again for Reroute to enable.", "Reroute", answers4);',
      Context.FindLineNumberInTextFile(txtPath, "Game.UseDInputBlocker", Nucleus.SearchType.StartsWith) + "|Game.UseDInputBlocker = false;",
      Context.FindLineNumberInTextFile(txtPath, "Game.Hook.XInputReroute", Nucleus.SearchType.StartsWith) + "|Game.Hook.XInputReroute = true;"
    ];
    Context.ReplaceLinesInTextFile(txtPath, dict);
  }
  if (reroute == "Disable") {
    var txtPath = Context.NucleusFolder + "\\scripts\\Halo The Master Chief Collection.js";
    var dict = [
      Context.FindLineNumberInTextFile(txtPath, 'Game.AddOption("Enable experimental Xinput Reroute? Status:', Nucleus.SearchType.StartsWith) +
        '|Game.AddOption("Enable experimental Xinput Reroute? Status: Disabled.", "When the instances launch close Nucleus, open it again for Reroute to enable.", "Reroute", answers4);',
      Context.FindLineNumberInTextFile(txtPath, "Game.UseDInputBlocker", Nucleus.SearchType.StartsWith) + "|Game.UseDInputBlocker = true;",
      Context.FindLineNumberInTextFile(txtPath, "Game.Hook.XInputReroute", Nucleus.SearchType.StartsWith) + "|Game.Hook.XInputReroute = false;"
    ];
    Context.ReplaceLinesInTextFile(txtPath, dict);
  }
};