147 lines
8.3 KiB
HTML
147 lines
8.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>OpenWF Bootstrapper Manual</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<style>
|
|
/* https://calamity-inc.github.io/Silver/base.css */
|
|
|
|
html
|
|
{
|
|
background: #111;
|
|
color: #fff;
|
|
|
|
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
}
|
|
|
|
body
|
|
{
|
|
margin: 8px 12px;
|
|
}
|
|
|
|
h1
|
|
{
|
|
font-weight: 400;
|
|
font-size: 2.5em;
|
|
margin-block: 0.3em;
|
|
}
|
|
|
|
h2
|
|
{
|
|
font-weight: 350;
|
|
font-size: 2em;
|
|
margin-block-end: 0.4em;
|
|
}
|
|
|
|
h3
|
|
{
|
|
font-weight: 300;
|
|
font-size: 1.5em;
|
|
margin-block-end: 0.4em;
|
|
}
|
|
|
|
p
|
|
{
|
|
margin-block: 0.5em;
|
|
}
|
|
|
|
code
|
|
{
|
|
padding: 1px 2px;
|
|
border: 1px solid #2f2f2f;
|
|
}
|
|
|
|
li:not(:last-child)
|
|
{
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
a
|
|
{
|
|
color: #257afb
|
|
}
|
|
|
|
a:hover
|
|
{
|
|
color: #3586ff;
|
|
}
|
|
|
|
a:focus
|
|
{
|
|
color: #4791ff;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>OpenWF Bootstrapper Manual</h1>
|
|
<p>While the main feature of the dwmapi.dll is to use a custom server with the game, it has other features as well.</p>
|
|
<h2>client_config.json</h2>
|
|
<p>The bootstrapper's configuration is in <code>OpenWF/client_config.json</code> relative to your game folder. It has the following fields:</p>
|
|
<ul>
|
|
<li><code>fallback_language</code> — The language to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.</li>
|
|
<li><code>fallback_graphicsDriver</code> — The graphics driver to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.</li>
|
|
<li><code>fallback_cluster</code> — The cluster to use when Warframe.x64.exe was double-clicked or the argument was simply omitted. Can be <code>public</code>, <code>test</code>, or <code>dev</code> — the latter two enable some more logging.</li>
|
|
|
|
<li><code>server_host</code> — The hostname or IP address to redirect game traffic to. This should match <code>myAddress</code> in SpaceNinjaServer.</li>
|
|
<li><code>http_port</code> — The port to use for HTTP traffic. This should match <code>httpPort</code> in SpaceNinjaServer.</li>
|
|
<li><code>https_port</code> — The port to use for HTTPS traffic. This should match <code>httpsPort</code> in SpaceNinjaServer.</li>
|
|
<li><code>autologin</code></li>
|
|
<li><code>autologin_email</code></li>
|
|
<li><code>autologin_password</code> — The whirlpool hash of the password to use for autologin. You can simply enter your password and it will automatically be hashed and overwritten.</li>
|
|
|
|
<li><code>high_damage_numbers_patch</code> — If true, patches the game to display the exact number of damage that you dealt to fix -2147483648 showing up on high damage.</li>
|
|
<li><code>simulacrum_blacklisted</code> — If true, blacklisted enemies are shown in the Simulacrum. Defaults to false to match the game.</li>
|
|
<li><code>simulacrum_whitelisted</code> — If true, whitelisted enemies are shown in the Simulacrum. Defaults to true to match the game.</li>
|
|
<li><code>pause_always_stops_time</code></li>
|
|
<li><code>disable_nrs_connection</code> — If true, disables NRS connections, preventing the game from showing "Please ensure that your firewall permits UDP ports 4950 & 4955."</li>
|
|
|
|
<li><code>ee_log_in_console</code> — If true, writes everything that gets written to EE.log to the console as well.</li>
|
|
<li><code>skip_mission_start_timer</code> — If true, disables the 5 second wait before a mission starts.</li>
|
|
<li><code>fov_override</code> — If not 0, overrides the game's FOV setting. You can use any value from 1 to 226.</li>
|
|
<li><code>forced_profile_dir</code> — An absolute path to a folder that will be used to read and write your game settings. Notably, this can be used to have the same settings regardless of username.</li>
|
|
<li><code>auto_start_scripts</code> — A list of scripts to automatically start, e.g. <code>["samples/Cycle Camera Hotkey (K).pluto"]</code>.</li>
|
|
<li><code>dont_resolve_labels</code> — If true, shows language tags instead of their associated value, e.g. <code>/Menu/Confirm_Item_Yes</code> instead of <code>YES</code>.</li>
|
|
<li><code>save_all_metadata</code> — If true, implicitly creates an empty patch on every metadata read to make it available for get_effective_metadata requests. May degrade performance.</li>
|
|
<li><code>write_all_metadata_reads_to_console</code> — If true, writes all metadata reads to the console. May degrade performance.</li>
|
|
<li><code>write_all_metadata_reads_to_ee_log</code> — If true, write all metadata reads to EE.log. May degrade performance.</li>
|
|
<li><code>write_patches_metadata_reads_to_console</code> — If true, writes patched metadata reads to the console. May degrade performance.</li>
|
|
<li><code>write_patches_metadata_reads_to_ee_log</code> — If true, write patched metadata reads to EE.log. May degrade performance.</li>
|
|
</ul>
|
|
<h2>HTTP Interface</h2>
|
|
<p>While the game is running, the you can visit <a href="http://localhost:61558/" target="_blank">http://localhost:61558/</a> to modify some of the above options, access additional features like teleportation, and use scripts.</p>
|
|
<h2>Command Line Arguments</h2>
|
|
<p>The bootstrapper adds the <code>owfServerHost</code> command line argument, which can be used to override the <code>server_host</code> in the config.</p>
|
|
<h2>Pre-Login</h2>
|
|
<p>While in the pre-login state, the overlay indicates the current server host, which can also be changed by typing <code>@server_host</code> (e.g. <code>@localhost</code>) in the email field with any password and attempting to log in.</p>
|
|
<h2>Tunables</h2>
|
|
<p>When connecting to a server, the bootstrapper requests <code>/custom/tunables.json</code> to check the JSON object for the presence of the following fields:</p>
|
|
<ul>
|
|
<li><code>prohibit_skip_mission_start_timer</code></li>
|
|
<li><code>prohibit_fov_override</code></li>
|
|
<li><code>prohibit_freecam</code></li>
|
|
<li><code>prohibit_teleport</code></li>
|
|
<li><code>prohibit_scripts</code></li>
|
|
</ul>
|
|
<p>The presence of a field disables the respective feature.</p>
|
|
<h2>HTTP Traffic Deviations</h2>
|
|
<ul>
|
|
<li>login.php & worldState.php requests have the extra query parameter <code>buildLabel</code> to indicate the client's buildLabel.</li>
|
|
<li>login.php requests also have an extra <code>clientMod</code> parameter to indicate that the OpenWF Bootstrapper is being used and what version of it.</li>
|
|
<li>inventory.php & missionInventoryUpdate.php requests have the extra query parameter <code>xpBasedLevelCapDisabled</code> to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.</li>
|
|
</ul>
|
|
<h2>Metadata Patches</h2>
|
|
<p>Metadata Patches are loaded from <code>OpenWF/Metadata Patches.txt</code>, although you can also create a <code>OpenWF/Metadata Patches/</code> folder and any text file inside of that will be loaded as well.</p>
|
|
<p>They are generally parsed line by line, with roughly the following steps being taken for each line:</p>
|
|
<ol>
|
|
<li>If the line starts with <code>/</code>, a new patch for the given absolute path is started. If the line ends on <code>&</code>, the next line that also starts with <code>/</code> will be added to this patch instead of creating a new patch.</li>
|
|
<li>Leading and trailing tabs and spaces are removed from the line.</li>
|
|
<li>If the line starts with <code>&</code>, that character is removed from the line and the rest of the line is assumed to be an absolute path to be added to the current patch.</li>
|
|
<li>If the line starts with <code>></code>, that character is removed from the line and the rest of the line is assumed to be an absolute path for which a new patch is created.</li>
|
|
<li>If the line starts with <code>r|</code>, a replacement is added to the current patch in the form <code>r|A|Z</code> which means <code>A</code> in the metadata will be replaced with <code>Z</code>.</li>
|
|
<li>The line is added as a metadata prefix to the current patch. This works to add top-level properties but also to replace them because the game resolves duplicates by ignoring subsequent entries.</li>
|
|
</ol>
|
|
<p>If multiple patches affect the same absolute path, they are combined.</p>
|
|
<br>
|
|
</body>
|
|
</html>
|