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

Charlie Murder · handler “Charlie Murder”

Version 1

Release notes

Charlie Murder

Released
Size
1.6 KB
Downloads
159
Check
Verified
SHA-256
d01691ace955c9e4960c8beec930f599fbaff6d6f88c877ba06a548d1e93ae3a
Download v1 (.nc)All versions

Files 1

PathSize
handler.js5.8 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Wed Nov 25 2020 14:16:22 GMT+0000 (UTC).
Hub.Handler.Id = "zHLGHA6b2WGesgHYM";
Hub.Maintainer.Name = "slothburgers";
Hub.Maintainer.Id = "jkqHmpETDAuMiGNMy";

Game.DirSymlinkExclusions = ["x64", "x86", "character", "clothes", "food", "gfx", "loading", "map", "monster", "scene", "smashable", "weapons", "worldmap"];
Game.FileSymlinkExclusions = ["steam_api64.dll", "steam_api.dll", "steam_interfaces.txt", "steam_appid.txt", "xinput1_4.dll"];
Game.DirSymlinkCopyInstead = ["character", "clothes", "food", "gfx", "loading", "map", "monster", "scene", "smashable", "weapons", "worldmap"];
Game.DirSymlinkCopyInsteadIncludeSubFolders = true;
Game.FileSymlinkCopyInstead = ["FNA.dll", "FNA.Steamworks.dll", "Steamworks.NET.dll"];
Game.GameName = "Charle Murder";
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = false;
Game.HandlerInterval = 100;
Game.SupportsKeyboard = true;
Game.ExecutableName = "CharlieMurder.exe";
Game.SteamID = "405290";
Game.GUID = "Charlie Murder";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.WorkingFolder = "x64";
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.GoldbergExperimental = true;
Game.UseNucleusEnvironment = true;
Game.UserProfileConfigPath = "AppData\\Roaming\\CharlieMurder";
Game.LauncherTitle = "";
Game.StartArguments = "-dsound";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Charlie Murder";
Game.Hook.DInputForceDisable = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.FakeFocus = false;
Game.HookFocus = false;
Game.SetWindowHook = true;
Game.Description =
  "This game has local co-op for 4 players already but all local players share the same 5 playable characters data. Through Nucleus additional players can keep different progress even for the same character. Create a public online game in one instance and join in the others.";
Game.PauseBetweenStarts = 25;

Game.Play = function() {
  var txtPath = Context.EnvironmentPlayer + Context.UserProfileConfigPath + "\\config.ini";
  var dict = ["2|display_width=" + Context.Width, "3|display_height=" + Context.Height, "4|window_mode=1", "9|pause_on_lost_focus=False"];

  Context.ReplaceLinesInTextFile(txtPath, dict);

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

  var nolay = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\steam_settings\\disable_overlay.txt";
  var lines = [""];

  Context.WriteTextFile(nolay, lines);

  var interfaces = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\steam_interfaces.txt";
  var lines = ["SteamClient017", "SteamGameServer012", "SteamUser019", "SteamUtils008", "SteamController003"];

  Context.WriteTextFile(interfaces, lines);

  var NucleusRoot = System.IO.Path.Combine(Game.Folder, "..", "..");
  System.IO.File.Copy(NucleusRoot + "\\utils\\XInputPlus\\XInputPlus.ini", Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XInputPlus.ini");

  System.IO.File.Copy(NucleusRoot + "\\utils\\XInputPlus\\x64\\xinput1_3.dl_", Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\xinput1_4.dll");

  if (Context.PlayerID == 0) {
    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XinputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "1"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "1"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "1"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "1")
    ]);
  }
  if (Context.PlayerID == 1) {
    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XinputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "2"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "2"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "2"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "2")
    ]);
  }
  if (Context.PlayerID == 2) {
    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XinputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "3"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "3"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "3"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "3")
    ]);
  }
  if (Context.PlayerID == 3) {
    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XinputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "4"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "4"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "4"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "4")
    ]);
  }

  if (Player.IsKeyboardPlayer) {
    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XinputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "0"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "0"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "0"),
      new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "0")
    ]);
  }
};