Charlie Murder · handler “Charlie Murder”
Version 1
Release notes
Charlie Murder
- Released
- Size
- 1.6 KB
- Downloads
- 159
- Check
- Verified
- SHA-256
- d01691ace955c9e4960c8beec930f599fbaff6d6f88c877ba06a548d1e93ae3a
Files 1
| Path | Size |
|---|---|
| handler.js | 5.8 KB |
handler.js
Plain textHub.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")
]);
}
};