Quake · handler “Quake (Quakespasm-Spiked)”
Version 4
Release notes
finally fixednomousy?
- Released
- Size
- 12 KB
- Downloads
- 405
- Check
- Verified
- SHA-256
- ae3dfc5393b8c758fece8abb235cf22779a6bfabc54e583393148cbf4530c2ec
Files 4
| Path | Size |
|---|---|
| handler.js | 15 KB |
| Quake/checknucleus.bat | 968 B |
| Quake/hidemouse.bat | 30 B |
| Quake/nomousy.exe | 13 KB |
handler.js
Plain textHub.Handler.Version = 4; // Released at https://hub.splitscreen.me/ on Wed Jul 28 2021 23:30:14 GMT+0000 (UTC).
Hub.Handler.Id = "uir6tptWirXfg6Z87";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";
var answers = ["None", "Scourge of Armagon", "Dissolution of Eternity", "Malice", "Aliens", "Dimension of the Past", "Insomnia", "Zerstörer", "Reaper Bots", "Arcane Dimensions"];
Game.AddOption("Select a Mod", "", "mod", answers);
Game.ExecutableContext = ["libFLAC-8.dll"];
Game.DirSymlinkCopyInstead = ["id1", "hipnotic", "rogue", "rpbot", "malice", "zer", "dopa", "insomnia", "aliens", "ad"];
Game.FileSymlinkExclusions = ["xinput1_4.dll"];
Game.NeedsSteamEmulation = false;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.ExecutableName = "quakespasm-spiked-win64.exe";
Game.SteamID = "2310";
Game.GUID = "Quakespasm-Spiked";
Game.GameName = "Quake";
Game.MaxPlayers = 8;
Game.MaxPlayersOneMonitor = 8;
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "QSS 2021-07-08";
Game.HasDynamicWindowTitle = true;
Game.FakeFocus = true;
Game.HookFocus = false;
Game.SupportsKeyboard = false;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.CustomDllEnabled = false;
Game.XInputPlusDll = ["xinput1_4.dll"];
Game.Description =
"This script requires Quakespasm-Spiked to be installed in your clean Quake files. Run quakespasm-spiked-win64.exe in your main game files first and change/save any graphics setting and all mission packs before launching via Nucleus. Start a multiplayer game in the first instance then press ok on the prompt to open the next instances when the server is ready, the other instances will connect automatically.";
Game.KeepSymLinkOnExit = true;
Game.PromptAfterFirstInstance = true;
Game.PauseBetweenProcessGrab = 5;
Game.PauseBetweenStarts = 20;
Game.Play = function() {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\id1\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\hipnotic\\CONFIG.CFG")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\hipnotic\\CONFIG.CFG";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\rogue\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\rogue\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\aliens\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\aliens\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\dopa\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\dopa\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\insomnia\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\insomnia\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\malice\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\malice\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\ad\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\ad\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (System.IO.File.Exists(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\zer\\config.cfg")) {
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\zer\\config.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "joy_enable ", Nucleus.SearchType.StartsWith) + '|joy_enable "1"',
Context.FindLineNumberInTextFile(txtPath, "m_pitch ", Nucleus.SearchType.StartsWith) + '|m_pitch "0"',
Context.FindLineNumberInTextFile(txtPath, "m_yaw ", Nucleus.SearchType.StartsWith) + '|m_yaw "0"',
Context.FindLineNumberInTextFile(txtPath, "name ", Nucleus.SearchType.StartsWith) + '|name "' + Context.Nickname + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_borderless ", Nucleus.SearchType.StartsWith) + '|vid_borderless "1"',
Context.FindLineNumberInTextFile(txtPath, "vid_desktopfullscreen ", Nucleus.SearchType.StartsWith) + '|vid_desktopfullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_fullscreen ", Nucleus.SearchType.StartsWith) + '|vid_fullscreen "0"',
Context.FindLineNumberInTextFile(txtPath, "vid_height ", Nucleus.SearchType.StartsWith) + '|vid_height "' + Context.Height + '"',
Context.FindLineNumberInTextFile(txtPath, "vid_width ", Nucleus.SearchType.StartsWith) + '|vid_width "' + Context.Width + '"'
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
var mod = Context.Options["mod"];
if (mod == "None") {
var modarg = "";
}
if (mod == "Scourge of Armagon") {
var modarg = "-game hipnotic";
}
if (mod == "Dissolution of Eternity") {
var modarg = "-game rogue";
}
if (mod == "Malice") {
var modarg = "-game malice";
}
if (mod == "Aliens") {
var modarg = "-game aliens";
}
if (mod == "Dimension of the Past") {
var modarg = "-game dopa";
}
if (mod == "Insomnia") {
var modarg = "-game insomnia";
}
if (mod == "Zerstörer") {
var modarg = "-game zer";
}
if (mod == "Reaper Bots") {
var modarg = "-game RPBOT";
}
if (mod == "Arcane Dimensions") {
var modarg = "-game ad";
}
if (Context.PlayerID == 0) {
Context.StartArguments = modarg;
} else {
Context.StartArguments = modarg + " +connect 127.0.0.1";
}
Context.RunAdditionalFiles([System.IO.Path.Combine(Game.Folder) + "\\hidemouse.bat"], false, 1);
Context.RunAdditionalFiles([System.IO.Path.Combine(Game.Folder) + "\\checknucleus.bat"], false, 1);
};