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

Call of Duty: Black Ops II · handler “Call of Duty: Black Ops II Zombies”

Version 4

Release notes

Mouse & Keyboard support added

Released
Size
9.1 MB
Downloads
387
Check
Verified
SHA-256
29bf8076f3049dd4be397d653dd82ae4058d30fb9d7e1244aa1cedc9a432a50e
Download v4 (.nc)All versions

Files 35

PathSize
handler.js29 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Cloud/iotd-english.jpg72 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Cloud/iotd-english.jpg.Manifest2 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Cloud/iotd-english.png30 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Cloud/iotd-english.png.Manifest2 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/dedicatedleaderboards.csv36 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/ffotd_tu0_mp_147.ff2.6 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/ffotd_tu17_mp_147.ff.0043 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/ffotd_tu17_zm_147.ff.0062 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/ffotd_tu17_zm_147.ff.018.6 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/iotd-english.jpg72 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/iotd-english.png30 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/largeheatmap.raw7.8 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/lsssk059 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/lsssk159 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/online_tu17_mp_english.wad46 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/online_tu17_zm_english.wad24 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/online_tu8_mp_english.wad5.9 KB
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/statskeyPRIVATE.dat59 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/statskeyPUBLIC.dat59 B
Call of Duty Black Ops 2 Zombies/Ayria/Assets/Alwaysoffline/18397/Server/sv_ffotd_tu8_mp_147.ff.0042 KB
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/aimassist.Ayria3231 KB
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/aiming.ini2 B
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/Alwaysoffline.Localnet321.7 MB
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/localmp.Aryia32456 KB
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/Localnetworking.Ayria32511 KB
Call of Duty Black Ops 2 Zombies/Ayria/Plugins/Platformwrapper.Ayria32701 KB
Call of Duty Black Ops 2 Zombies/binkw32.dll212 KB
Call of Duty Black Ops 2 Zombies/Bootstrapper32.dll132 KB
Call of Duty Black Ops 2 Zombies/d3d11.ini5.2 KB
Call of Duty Black Ops 2 Zombies/hardware_zm.chp4.0 KB
Call of Duty Black Ops 2 Zombies/osd.ini4.6 KB
Call of Duty Black Ops 2 Zombies/SpecialK32.dll12.5 MB
Call of Duty Black Ops 2 Zombies/user_common.cgp.music1000 B
Call of Duty Black Ops 2 Zombies/user_common.cgp.nomusic1000 B

handler.js

Plain text
Hub.Handler.Version = 4; // Released at https://hub.splitscreen.me/ on Thu Sep 02 2021 12:09:29 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "8ojcrL79RrFdpiaHD";
Hub.Maintainer.Name = "PoundlandBacon";
Hub.Maintainer.Id = "AdiAjSyfZPMvu3a4M";

var answers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"];
var answers1 = ["No", "Yes"];
var answers2 = ["Manual/Current Settings", "Yes", "No"];
var answers3 = ["60", "50", "45", "40", "30", "0"];
Game.AddOption("Enable music only in the first instance?", '"Manual/Current Settings" will not touch the instances current settings.', "Mus", answers2);
// Game.AddOption('Enable aim assist', 'Use Rip3535\'s custom aim assist for Black Ops 2', 'Aim', answers1);
Game.AddOption("Change graphics settings?", "Allows you to change graphics settings, for all players, in the first instance", "Gra", answers1);
Game.AddOption("PC-ID", "If you are playing with other PCs in LAN, be sure to have different IDs", "Id", answers);
Game.AddOption("Add PC-ID number in nicknames?", "If different nicknames are not set in Nucleus, this will still allow LAN.", "Nik", answers1);
Game.AddOption("Select the FPS Cap the game will use", "", "fps", answers3);
Game.FileSymlinkExclusions = ["binkw32.dll", "t6mp.exe", "t6sp.exe", "t6zm.exe", "hardware_zm.chp", "user_common.cgp"];
Game.DirSymlinkCopyInstead = ["players"];
Game.GameName = "Call of Duty Black Ops 2 Zombies";
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.KeepSymLinkOnExit = true;
Game.ForceSymlink = true;
Game.UseNucleusEnvironment = false;
Game.SupportsKeyboard = false;
Game.ExecutableName = "t6zm.exe";
Game.KillProcessesOnClose = ["END", "cmd"];
Game.LauncherExeIgnoreFileCheck = true;
Game.SteamID = "202970";
Game.GUID = "CallofDutyBlackOps2ZM";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.BinariesFolder = "";
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = false;
Game.LauncherTitle = "";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Call of Duty";
Game.HasDynamicWindowTitle = true;
Game.PreventWindowDeactivation = true;
Game.KeyboardPlayerSkipPreventWindowDeactivate = true;
Game.SetForegroundWindowElsewhere = true;
Game.DontReposition = false;
Game.NotTopMost = false;
Game.WindowStyleValues = ["0x08000000", /* '0x80000000',*/ "0x40000000", "~0xC00000", "~0x40000", "~0x20000000", "~0x20000", "~0x80000"];
Game.ExtWindowStyleValues = ["~0x00000001", "~0x00000200", "~0x00020000"];
Game.WindowStyleEndChanges = ["~0x08000000", "~0x40000000"];
Game.PauseBetweenStarts = 20;
Game.PromptAfterFirstInstance = true;
Game.Description =
  "Requires the steam version of the game, it's recommended you have the dlc too. Steam doesn't need to be running when you use the script. The game needs to be set to English language for the script to work. You can change this by right clicking the game in your steam library and selecting the properties menu, then selecting the Language tab. Select English from the dropdown menu and the required files will be downloaded. Your antivirus may delete files the script needs, if the script doesn't work this is the first thing to check. If you find it has deleted files you may need to remove and redownload the script. There are two ways to start a game: 1) The first player starts searching for an online game (it will only find players connected to your local network) after around 7 seconds it will stop searching and start hosting instead, at this point the other players can join by searching the same game mode via the online menu. 2) The first player creates a custom game and then uses the friends menu to send invites to the other players. For invites to work  make sure you set your party to open. If you are using one or more mice/keyboards make sure you press the END key, when all the instances have finished loading, to lock input. Press it again at any time to unlock input. Credits/Thanks to The Project Nova Team https://projectnova.us/ for the LAN mod, and Pinecone from their forums for his invaluable advice! Script contributors: Rip3535, Pizzo and Zerofox. Also huge thanks to Talos, Ilyaki, Dr.Oldboi and the rest of the SplitScreenDreams discord.";
Game.Hook.DInputEnabled = false;
Game.Hook.DInputForceDisable = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.InjectHookXinput = true;
Game.SupportsMultipleKeyboardsAndMice = true;
Game.ProtoInput.XinputHook = false;
Game.ProtoInput.UseDinputRedirection = false;
Game.ProtoInput.DinputDeviceHook = false;
Game.ProtoInput.DinputHookAlsoHooksGetDeviceState = false;
Game.ProtoInput.UseOpenXinput = false;
Game.ProtoInput.InjectStartup = false;
Game.ProtoInput.InjectRuntime_RemoteLoadMethod = false;
Game.ProtoInput.InjectRuntime_EasyHookMethod = true;
Game.ProtoInput.InjectRuntime_EasyHookStealthMethod = false;
Game.HookSetCursorPos = false;
Game.HookGetCursorPos = false;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = false;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;
Game.SendNormalMouseInput = false;
Game.SendNormalKeyboardInput = false;
Game.SendScrollWheel = false;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = false;
Game.LockInputAtStart = false;
Game.LockInputToggleKey = 0x23;

Game.Play = function() {
  var gra = Context.Options["Gra"];
  if (gra == "No") {
    Game.PromptAfterFirstInstance = false;
  }
  Context.PatchFile(
    System.IO.Path.Combine(Context.RootInstallFolder, "t6zm.exe"),
    System.IO.Path.Combine(Context.RootFolder, "t6zm.exe"),
    [0x39, 0x8e, 0xe3, 0x3f],
    Context.ConvertToBytes(Context.AspectRatioDecimal)
  );
  if (!System.IO.Directory.Exists(Context.GetFolder(Nucleus.Folder.Documents) + "\\My Mods\\SpecialK\\Global")) {
    var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Mods\\SpecialK\\Global");
    System.IO.Directory.CreateDirectory(filePath);
  }
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Cloud");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper\\209170");
  System.IO.Directory.CreateDirectory(filePath);
  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins");
  System.IO.Directory.CreateDirectory(filePath);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Bootstrapper32.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Bootstrapper32.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "SpecialK32.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.ini");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "d3d11.ini");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.jpg");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.jpg");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.jpg.Manifest");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.jpg.Manifest");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.png");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.png");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.png.Manifest");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Cloud\\iotd-english.png.Manifest");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\dedicatedleaderboards.csv");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\dedicatedleaderboards.csv");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu0_mp_147.ff");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu0_mp_147.ff");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_mp_147.ff.00");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_mp_147.ff.00");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_zm_147.ff.00");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_zm_147.ff.00");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_zm_147.ff.01");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\ffotd_tu17_zm_147.ff.01");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\iotd-english.jpg");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\iotd-english.jpg");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\iotd-english.png");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\iotd-english.png");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\largeheatmap.raw");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\largeheatmap.raw");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\lsssk0");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\lsssk0");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\lsssk1");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\lsssk1");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu8_mp_english.wad");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu8_mp_english.wad");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu17_mp_english.wad");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu17_mp_english.wad");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu17_zm_english.wad");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\online_tu17_zm_english.wad");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\statskeyPRIVATE.dat");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\statskeyPRIVATE.dat");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\statskeyPUBLIC.dat");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\statskeyPUBLIC.dat");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Alwaysoffline\\18397\\Server\\sv_ffotd_tu8_mp_147.ff.00");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Assets\\Alwaysoffline\\18397\\Server\\sv_ffotd_tu8_mp_147.ff.00");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\Alwaysoffline.Localnet32");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Plugins\\Alwaysoffline.Localnet32");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\Localnetworking.Ayria32");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Plugins\\Localnetworking.Ayria32");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\Platformwrapper.Ayria32");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Plugins\\Platformwrapper.Ayria32");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  // var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\aiming.ini');
  // var savePkgOrigin = System.IO.Path.Combine(Game.Folder, 'Ayria\\Plugins\\aiming.ini');
  // System.IO.File.Copy(savePkgOrigin, savePath, true);
  // var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aiming.ini');
  // var savePkgOrigin = System.IO.Path.Combine(Game.Folder, 'Ayria\\Plugins\\aiming.ini');
  // System.IO.File.Copy(savePkgOrigin, savePath, true);
  // var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aimassist.Ayria32');
  // var savePkgOrigin = System.IO.Path.Combine(Game.Folder, 'Ayria\\Plugins\\aimassist.Ayria32');
  // System.IO.File.Copy(savePkgOrigin, savePath, true);
  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\binkw32.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "binkw32.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);
  if (!System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.Documents) + "\\My Mods\\SpecialK\\Global\\osd.ini")) {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Mods\\SpecialK\\Global\\osd.ini");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "osd.ini");
    System.IO.File.Copy(savePkgOrigin, savePath, true);
  } else {
    var txtPath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Mods\\SpecialK\\Global\\osd.ini";
    Context.ReplaceLinesInTextFile(txtPath, [Context.FindLineNumberInTextFile(txtPath, "Duration=", Nucleus.SearchType.StartsWith) + "|Duration=0.0"], "utf-8");
  }
  // var aim = Context.Options['Aim'];
  var nik = Context.Options["Nik"];
  var id = Context.Options["Id"];
  // if (aim == 'No') {
  // if (Context.IsKeyboardPlayer != true) {
  // if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aimassist.Ayria32')) {
  // System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aimassist.Ayria32');
  // }
  // if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aiming.ini')) {
  // System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + '\\Ayria\\Plugins\\aiming.ini');
  // }
  // }
  // }
  if (nik == "No") {
    var UserName = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper\\Username.txt";
    var lines = [Context.Nickname];
    Context.WriteTextFile(UserName, lines);
  }
  if (nik == "Yes") {
    if (id == "1") {
      var UserName = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper\\Username.txt";
      var lines = [Context.Nickname];
      Context.WriteTextFile(UserName, lines);
    }
    if (id != "1") {
      var UserName = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper\\Username.txt";
      var lines = [Context.Nickname + "(" + id + ")"];
      Context.WriteTextFile(UserName, lines);
    }
  }
  var UserID = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Assets\\Platformwrapper\\UserID.txt";
  var lines = [11111110 + 19 * id + Context.PlayerID];
  Context.WriteTextFile(UserID, lines);
  if (Context.PlayerID == 0) {
    if (!System.IO.Directory.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players")) {
      var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players");
      System.IO.Directory.CreateDirectory(filePath);
    }
    if (!System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\hardware_zm.chp")) {
      var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\hardware_zm.chp");
      var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "hardware_zm.chp");
      System.IO.File.Copy(savePkgOrigin, savePath, true);
    }
  } else {
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\localmp.Aryia32");
    var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Ayria\\Plugins\\localmp.Aryia32");
    System.IO.File.Copy(savePkgOrigin, savePath, true);
    if (!System.IO.Directory.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players")) {
      var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players");
      System.IO.Directory.CreateDirectory(filePath);
    }
    if (!System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\hardware_zm.chp")) {
      var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\hardware_zm.chp");
      var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "hardware_zm.chp");
      System.IO.File.Copy(savePkgOrigin, savePath, true);
    }
    if (gra == "Yes") {
      if (System.IO.File.Exists(Context.NucleusFolder + "\\content\\CallofDutyBlackOps2ZM\\Instance0\\players\\hardware_zm.chp")) {
        System.IO.File.Copy(
          Context.NucleusFolder + "\\content\\CallofDutyBlackOps2ZM\\Instance0\\players\\hardware_zm.chp",
          Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\hardware_zm.chp",
          true
        );
      }
    }
    var mus = Context.Options["Mus"];
    if (mus == "Manual/Current Settings") {
    }
    if (mus == "Yes") {
      var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\user_common.cgp");
      var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "user_common.cgp.nomusic");
      System.IO.File.Copy(savePkgOrigin, savePath, true);
    }
    if (mus == "No") {
      var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\players\\user_common.cgp");
      var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "user_common.cgp.music");
      System.IO.File.Copy(savePkgOrigin, savePath, true);
    }
  }
  var fps = Context.Options["fps"];
  var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.ini";
  Context.ReplaceLinesInTextFile(
    txtPath,
    [
      Context.FindLineNumberInTextFile(txtPath, "OverrideRes=", Nucleus.SearchType.StartsWith) + "|OverrideRes=" + Context.Width + "x" + Context.Height,
      Context.FindLineNumberInTextFile(txtPath, "TargetFPS=", Nucleus.SearchType.StartsWith) + "|TargetFPS=" + fps,
      Context.FindLineNumberInTextFile(txtPath, "BackgroundFPS=", Nucleus.SearchType.StartsWith) + "|BackgroundFPS=" + fps,
      Context.FindLineNumberInTextFile(txtPath, "MinRes=", Nucleus.SearchType.StartsWith) + "|MinRes=" + Context.Width + "x" + Context.Height,
      Context.FindLineNumberInTextFile(txtPath, "MaxRes=", Nucleus.SearchType.StartsWith) + "|MaxRes=" + Context.Width + "x" + Context.Height
    ],
    "utf-8"
  );
  if (Context.Height < 600) {
    var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.ini";
    Context.ReplaceLinesInTextFile(
      txtPath,
      [
        Context.FindLineNumberInTextFile(txtPath, "OverrideRes=", Nucleus.SearchType.StartsWith) + "|OverrideRes=" + Context.Width + "x600",
        Context.FindLineNumberInTextFile(txtPath, "MinRes=", Nucleus.SearchType.StartsWith) + "|MinRes=" + Context.Width + "x600",
        Context.FindLineNumberInTextFile(txtPath, "MaxRes=", Nucleus.SearchType.StartsWith) + "|MaxRes=" + Context.Width + "x600"
      ],
      "utf-8"
    );
  }
  if (Context.IsKeyboardPlayer == true) {
    if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\aimassist.Ayria32")) {
      System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\aimassist.Ayria32");
    }
    if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\aiming.ini")) {
      System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\aiming.ini");
    }
    if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\aiming.ini")) {
      System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Ayria\\Plugins\\aiming.ini");
    }
    var disable0 = "46|DisabledToGame=false";
    var disable1 = "49|DisabledToGame=false";
    var disable2 = "65|DisabledToGame=true";
    var rendback = Context.FindLineNumberInTextFile(txtPath, "RenderInBackground=", Nucleus.SearchType.StartsWith) + "|RenderInBackground=false";
  } else {
    var disable0 = "46|DisabledToGame=true";
    var disable1 = "49|DisabledToGame=true";
    var disable2 = "65|DisabledToGame=false";
    var rendback = Context.FindLineNumberInTextFile(txtPath, "RenderInBackground=", Nucleus.SearchType.StartsWith) + "|RenderInBackground=true";
  }
  var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.ini";
  Context.ReplaceLinesInTextFile(txtPath, [disable0, disable1, disable2, rendback], "utf-8");
  if (Context.HasKeyboardPlayer == true) {
    Game.FakeFocus = true;
    Game.KeyboardPlayerSkipFakeFocus = true;
    Game.ProtoInput.RegisterRawInputHook = true;
    Game.ProtoInput.GetRawInputDataHook = false;
    Game.ProtoInput.MessageFilterHook = true;
    Game.ProtoInput.GetCursorPosHook = true;
    Game.ProtoInput.SetCursorPosHook = true;
    Game.ProtoInput.GetKeyStateHook = false;
    Game.ProtoInput.GetAsyncKeyStateHook = false;
    Game.ProtoInput.GetKeyboardStateHook = false;
    Game.ProtoInput.CursorVisibilityHook = true;
    Game.ProtoInput.ClipCursorHook = true;
    Game.ProtoInput.FocusHooks = true;
    Game.ProtoInput.DrawFakeCursor = true;
    Game.ProtoInput.RawInputFilter = true;
    Game.ProtoInput.MouseMoveFilter = true;
    Game.ProtoInput.MouseActivateFilter = false;
    Game.ProtoInput.WindowActivateFilter = true;
    Game.ProtoInput.WindowActvateAppFilter = false;
    Game.ProtoInput.MouseWheelFilter = true;
    Game.ProtoInput.MouseButtonFilter = true;
    Game.ProtoInput.KeyboardButtonFilter = true;
    Game.ProtoInput.SendMouseWheelMessages = true;
    Game.ProtoInput.SendMouseButtonMessages = true;
    Game.ProtoInput.SendMouseMovementMessages = true;
    Game.ProtoInput.SendKeyboardButtonMessages = true;
    Game.ProtoInput.EnableFocusMessageLoop = true;
    Game.ProtoInput.FocusLoopIntervalMilliseconds = 10;
    Game.ProtoInput.FocusLoop_WM_ACTIVATE = true;
    Game.ProtoInput.FocusLoop_WM_ACTIVATEAPP = true;
    Game.ProtoInput.FocusLoop_WM_NCACTIVATE = true;
    Game.ProtoInput.FocusLoop_WM_SETFOCUS = true;
    Game.ProtoInput.FocusLoop_WM_MOUSEACTIVATE = true;
    Game.ProtoInput.BlockedMessages = [0x0008, 0x0006];
    Game.ProtoInput.RenameHandlesHook = false;
    Game.ProtoInput.RenameHandles = [];
    Game.ProtoInput.RenameNamedPipes = [];
    Game.ProtoInput.OnInputLocked = function() {
      for (var i = 0; i < PlayerList.Count; i++) {
        var player = PlayerList[i];
        ProtoInput.DisableMessageBlock(player.ProtoInputInstanceHandle, 0x0006);
        ProtoInput.StartFocusMessageLoop(player.ProtoInputInstanceHandle, 0, true, true, true, true, true);
        System.Threading.Thread.Sleep(1000);
        ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.KeyboardButtonFilterID);
        ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
        ProtoInput.EnableMessageBlock(player.ProtoInputInstanceHandle, 0x0006);
        ProtoInput.StopFocusMessageLoop(player.ProtoInputInstanceHandle);
      }
    };
    Game.ProtoInput.OnInputUnlocked = function() {
      for (var i = 0; i < PlayerList.Count; i++) {
        var player = PlayerList[i];
        ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.KeyboardButtonFilterID);
        ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
      }
    };
    var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\d3d11.ini";
    Context.ReplaceLinesInTextFile(
      txtPath,
      [
        Context.FindLineNumberInTextFile(txtPath, "ConfineCursor=", Nucleus.SearchType.StartsWith) + "|ConfineCursor=true",
        Context.FindLineNumberInTextFile(txtPath, "UnconfineCursor=", Nucleus.SearchType.StartsWith) + "|UnconfineCursor=false"
      ],
      "utf-8"
    );
  }
  // var DEBUG = Context.ScriptFolder + '\\' + '\\DEBUG.txt';
  // var lines = [CalcWidth2, Height];
  // Context.WriteTextFile(DEBUG, lines);
};