Compare commits

...

21 Commits
main ... main

Author SHA1 Message Date
383d6a8b55 Update bootstrapper manual for 0.11.3 hotfix 1 2025-06-12 19:46:51 +02:00
9b7d1d188b Add link to mods directory 2025-06-10 14:50:12 +02:00
4e7d829129 Be more vague about support for new versions 2025-06-10 14:07:37 +02:00
28ab0860a7 Note versions that have full modding support 2025-06-10 14:06:54 +02:00
51456c0af2 Remove DLL renaming note because wtsapi32.dll is now the default 2025-06-10 14:04:11 +02:00
7d4dab61c3 Prefer wtsapi32.dll for Windows users 2025-06-04 12:47:46 +02:00
ca7bd6e702 Update for bootstrapper v0.11.2 2025-06-03 20:15:50 +02:00
8b2bd63a05 Use an EXE for setup instead of a powershell script
The execution restrictions applied to powershell script are honestly so damn stupid, they're basically unusable if they're tainted with the mark of the web.
2025-06-02 01:48:57 +02:00
3ddcbbd0cb Remove unused variables from guide.php 2025-05-31 15:05:10 +02:00
351cbe26f9 Switch client guide to exclusively rely on a setup script 2025-05-31 15:03:28 +02:00
872681a332 Avoid OS-specific language around update server script 2025-05-31 14:59:38 +02:00
4bcb61f340 Move client guide below server guide 2025-05-31 14:59:38 +02:00
fd9b8732b7 Update for bootstrapper v0.11.0 2025-05-26 16:10:22 +02:00
cf0e7a933e Remove "Recent Versions" header 2025-05-26 06:10:41 +02:00
0e414f28ad Add bootstrapper setup powershell script 2025-05-22 10:21:37 +02:00
4aefca85c3 Note that sideloadify is not needed on Linux 2025-05-22 10:06:49 +02:00
be4fdea6ec Note manifest 6046892458385712496 2025-05-22 09:52:46 +02:00
c74b921431 Update client guide for 38.6.0 2025-05-21 23:17:08 +02:00
db5f3dd37f Note bootstrapper is no longer just targeting the latest version 2025-05-21 22:59:25 +02:00
dfbe9fe504 Note 6636116079410913663 2025-05-14 13:44:39 +02:00
a9c97938eb Hoist explanation for how to download old versions 2025-05-14 11:24:31 +02:00
10 changed files with 220 additions and 81 deletions

4
.gitignore vendored
View File

@ -1 +1,3 @@
supplementals/
supplementals/client drop-in
supplementals/static data
supplementals/IRC.zip

View File

@ -19,7 +19,7 @@
<li>Open the DDS file inside of a hex editor like <a href="https://hexed.it/" target="_blank">HexEd.it</a> or <a href="https://mh-nexus.de/en/hxd/" target="_blank">HxD</a> and take note of the format, e.g. you will see the string <code>DXT1</code> or <code>DXT5</code> in the 6th row.</li>
<li>You are now free to modify the image however you want. Just take care that the file has the same name, dimensions/resolution, and format/encoding as seen before.</li>
<li>To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.</li>
<li>Finally, to get the assets into the game, you can copy the <code>content (managed)</code> folder from warframe-cache-tools into the OpenWF folder of your client. The Bootstrapper will automatically patch the game to use your modified content, and if you ever wanna stop using it, you can simply remove the client's <code>content (managed)</code> folder.</li>
<li>Finally, to get the assets into the game, you can copy the <code>Content Replacements</code> folder from warframe-cache-tools into the OpenWF folder of your client. The Bootstrapper will automatically patch the game to use your modified content, and if you ever wanna stop using it, you can simply remove the client's <code>Content Replacements</code> folder.</li>
</ol>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>

View File

@ -74,9 +74,9 @@
</head>
<body>
<h1>OpenWF Bootstrapper Manual</h1>
<p>While the main feature of the bootstrapper (dwmapi.dll, wtsapi32.dll, or version.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>
<p>While the main feature of the bootstrapper (wtsapi32.dll, dwmapi.dll, or version.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> — If not empty, this language will be used when Warframe.x64.exe is invoked without a <code>language</code> command line argument.</li>
<li><code>fallback_graphicsDriver</code> — If not empty, this graphics driver will be used when Warframe.x64.exe is invoked without a <code>graphicsDriver</code> command line argument.</li>
@ -132,7 +132,7 @@
<li>The IRC <code>USER</code> message is adjusted to contain <code>nonce=...</code> in the 'realname' field.</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>Metadata Patches are loaded from <code>.txt</code> files in the <code>OpenWF/Metadata Patches/</code> folder.</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>

View File

@ -1,7 +1,3 @@
<?php
$dll_version = @file_get_contents("supplementals/client drop-in/latest.txt");
$version = ""; //json_decode(file_get_contents("supplementals/static data/buildConfig.json"), true)["version"];
?>
<!DOCTYPE html>
<html>
<head>
@ -12,14 +8,6 @@ $version = ""; //json_decode(file_get_contents("supplementals/static data/buildC
<body data-bs-theme="dark">
<?php require "_components/navbar.php"; ?>
<div class="container mt-3">
<h2>Client/Boostrapper</h2>
<p>To use OpenWF, you only need to download the <a href="/supplementals/client%20drop-in/<?=$dll_version;?>/dwmapi.dll" download>dwmapi.dll</a> and put it in your game's installation folder (the one where Warframe.x64.exe is in).</p>
<ul>
<li>As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.</li>
<li>Opening the game's launcher will revert it back to normal.</li>
</ul>
<p>The DLL is <a href="bootstrapper-manual" target="_blank">fully documented here</a>, but the most important point is that, while the game is running, you can visit <a href="http://localhost:6155/" target="_blank">http://localhost:6155/</a> to manage options, cheats, and scripts.</p>
<p><b>Next steps:</b> By default, the DLL redirects requests to localhost meaning the same machine you're playing on — so you'll either need to set up a server or change the server_host to point to a different machine that's already got a server running.</p>
<h2>Server Prerequisites</h2>
<ul>
<li>Git (<a href="https://git-scm.com/downloads" target="_blank">Download</a>)</li>
@ -38,7 +26,7 @@ $version = ""; //json_decode(file_get_contents("supplementals/static data/buildC
<li>Now you can run <code>npm run start</code> to start the server anytime</li>
</ol>
<h2>Server Update</h2>
<p>Windows users can simply double-click the <code>UPDATE AND START SERVER.bat</code>, but otherwise the steps are pretty simple:</p>
<p>You can simply run the <code>UPDATE AND START SERVER</code> script for this, but otherwise the steps are pretty simple:</p>
<ol>
<li>Run <code>git pull</code> in the SpaceNinjaServer folder</li>
<li>(Optional) If you have the stripped assets, run <code>git pull</code> in the <code>static/data/0</code> folder</li>
@ -46,6 +34,14 @@ $version = ""; //json_decode(file_get_contents("supplementals/static data/buildC
<li>Run <code>npm run build</code> to build the server</li>
<li>Now you can use <code>npm run start</code> to start the server again</li>
</ol>
<h2>Client Patch</h2>
<p>In order to connect to custom servers, the client needs to be patched, which is what the Boostrapper is for. To set it up:</p>
<ol>
<li>Download the bootstrapper setup <a href="https://onlyg.it/OpenWF/Bootstrapper-Setup/releases/download/latest/Bootstrapper%20Setup.exe" download>for Windows</a> or <a href="/supplementals/Bootstrapper%20Setup.sh" download>for Linux-ish (Bash)</a>.</li>
<li>Put the setup in the game's installation folder (the one where Warframe.x64.exe is in) and run it there.</li>
</ol>
<p>With that done, you can double-click Warframe.x64.exe to start the game with OpenWF. Opening the game's launcher will revert it back to normal.</p>
<p>The bootstrapper is <a href="bootstrapper-manual" target="_blank">fully documented here</a>, but the most important point is that, while the game is running, you can visit <a href="http://localhost:6155/" target="_blank">http://localhost:6155/</a> to manage options, cheats, and scripts.</p>
<h2>IRC Server</h2>
<p>In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:</p>
<ul>

View File

@ -11,7 +11,7 @@
<p>OpenWF is a software suite centered around customizing Warframe, including:</p>
<ul>
<li><b>SpaceNinjaServer</b> an <a href="https://openwf.io/SpaceNinjaServer.git">open-source</a> reimplementation of the game's web services. As we have custom server software, OpenWF avoids interference with the live game while allowing full customization of savedata.</li>
<li>The <b>Bootstrapper</b> our main DLL targeting the latest game version. Its core precept is connecting to custom servers, but it also has some QoL features and cheats as well as a scripting API, label replacements and metadata patches, allowing for extensive customization of the experience.</li>
<li>The <b>Bootstrapper</b> our main DLL patching the client to connect to custom servers, but for newer versions, it also has some QoL features and cheats as well as a scripting API, label replacements and metadata patches, allowing for extensive customization of the experience. <a href="https://onlyg.it/OpenWF/Mods" target="_blank">Browse mods.</a></li>
</ul>
<a href="/guide<?=$ext;?>" class="btn btn-primary">Get Started</a>
<h3 class="mt-3">Preservation</h3>

View File

@ -8,8 +8,8 @@
<body data-bs-theme="dark">
<?php require "_components/navbar.php"; ?>
<div class="container mt-3">
<h3>Recent Versions</h3>
<p>While the Bootstrapper and SpaceNinjaServer do stay up-to-date, they are still compatible with previous versions and should at least allow you to login and play:</p>
<p>The following is a list of game versions that have been verified to at least be able to login and play when using the Bootstrapper and SpaceNinjaServer.</p>
<p>To download an old version, you can use <a href="https://github.com/SteamRE/DepotDownloader/releases">DepotDownloader</a> like so: <code>DepotDownloader -app 230410 -depot 230411 -manifest &lt;manifest id&gt; -username &lt;your steam username&gt;</code></p>
<table class="table table-sm">
<thead>
<tr>
@ -21,19 +21,26 @@
</thead>
<tbody>
<!-- https://steamdb.info/depot/230411/manifests/ -->
<tr>
<td>6046892458385712496</td>
<td><code>2025.03.18.09.51</code></td>
<td>&lt;&nbsp;38.6.0</td>
<td>Yareli&nbsp;Prime<!-- Login screen says "Techrot Encore" --></td>
<td><abbr title="Metadata Patches, Scripting API, etc. are fully functional in the bootstrapper.">Full modding support</abbr></td>
</tr>
<tr>
<td>4212893560910494140</td>
<td><code>2025.03.18.09.51</code></td>
<td>&lt;&nbsp;38.5.0</td>
<td>Techrot&nbsp;Encore</td>
<td></td>
<td><abbr title="Metadata Patches, Scripting API, etc. are fully functional in the bootstrapper.">Full modding support</abbr></td>
</tr>
<tr>
<td>3864063200081954630</td>
<td><code>2024.12.11.14.26</code></td>
<td>&lt;&nbsp;38.0.0</td>
<td>1999</td>
<td></td>
<td><abbr title="Metadata Patches, Scripting API, etc. are fully functional in the bootstrapper.">Full modding support</abbr></td>
</tr>
<tr>
<td>513490184226321110</td>
@ -258,119 +265,119 @@
<td><code>2020.08.12.19.57</code></td>
<td>&nbsp;28.3.0</td>
<td>Derelict&nbsp;Shift<!-- Login screen says "The Deadlock Protocol" --></td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8322392782655512672</td>
<td><code>2020.06.12.16.46</code></td>
<td>&nbsp;28.0.0</td>
<td>The&nbsp;Deadlock&nbsp;Protocol</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>940429389442729133</td>
<td><code>2020.03.24.20.24</code></td>
<td>&nbsp;27.3.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>3078917755629993445</td>
<td><code>2020.03.05.16.06</code></td>
<td>&nbsp;27.2.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5383208407459190147</td>
<td><code>2019.12.13.15.04</code></td>
<td>&nbsp;27.0.0</td>
<td>Empyrean</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>1746499861411165604</td>
<td><code>2019.12.13.00.31</code></td>
<td>&nbsp;26.1.3</td>
<td>Rising&nbsp;Tide</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5191423722994130705</td>
<td><code>2019.11.22.21.24</code></td>
<td>&nbsp;26.1.0</td>
<td>Rising&nbsp;Tide</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>4211752956119480973</td>
<td><code>2019.11.05.12.52</code></td>
<td>&nbsp;26.0.4</td>
<td>The&nbsp;Old&nbsp;Blood</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5213493012981659231</td>
<td><code>2019.10.31.22.42</code></td>
<td>&nbsp;26.0.0</td>
<td>The&nbsp;Old&nbsp;Blood</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>6484357939617346090</td>
<td><code>2019.09.09.12.43</code></td>
<td>&nbsp;25.7.5</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>6955217559566015186&nbsp;</td>
<td><code>2019.08.29.21.58</code></td>
<td>&nbsp;25.7.0</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8839989774604564585</td>
<td><code>2019.08.29.20.01</code></td>
<td>&nbsp;25.7.0</td>
<td>Saint&nbsp;of&nbsp;Altra</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>3318532863308652389</td>
<td><code>2019.05.22.23.12</code></td>
<td>&nbsp;25.0.0</td>
<td>The&nbsp;Jovian&nbsp;Concord</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>192898029640470386</td>
<td><code>2019.04.04.21.31</code></td>
<td>&nbsp;24.6.0</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>4942488930993990244</td>
<td><code>2019.03.15.18.11</code></td>
<td>&nbsp;24.5.1</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>4404971551504983924</td>
<td><code>2019.03.08.00.37</code></td>
<td>&nbsp;24.4.0</td>
<td>Buried&nbsp;Debts</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>1904743723246597237</td>
<td><code>2019.03.07.20.21</code></td>
<td>&nbsp;24.4.0</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 174676543101364914 is 2018.11.29.15.55, Fortuna, but has a broken font. -->
<tr>
@ -378,14 +385,14 @@
<td><code>2018.11.29.15.55</code></td>
<td>&nbsp;24.1.2</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>3725569727599851360</td>
<td><code>2018.11.15.16.49</code></td>
<td>&nbsp;24.0.8</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 8461211368258506784 is 2018.11.15.16.49 but needs Tools folder from another manifest + has a broken font. -->
<tr>
@ -393,70 +400,70 @@
<td><code>2018.11.08.14.45</code></td>
<td>&nbsp;24.0.0</td>
<td>Fortuna</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8049567794324118250</td>
<td><code>2018.10.11.23.29</code></td>
<td>&nbsp;23.10.0</td>
<td>Chimera</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>1234607834806579897</td>
<td><code>2018.09.28.19.09</code></td>
<td>&nbsp;23.9.1</td>
<td>Mask&nbsp;of&nbsp;the&nbsp;Revenant</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>677450530474051174</td>
<td><code>2018.08.01.08.09</code></td>
<td>&nbsp;23.2.0</td>
<td>The&nbsp;Sacrifice</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8058901711639962245</td>
<td><code>2018.06.14.23.21</code></td>
<td>&nbsp;23.0.0</td>
<td>The&nbsp;Sacrifice<!-- Login screen says "Beasts of the Sanctuary" --></td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>566447983471491143</td>
<td><code>2018.05.17.16.28</code></td>
<td>&nbsp;22.20.0</td>
<td>Beasts&nbsp;of&nbsp;the&nbsp;Sanctuary</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8448828347811631025</td>
<td><code>2018.04.20.02.04</code></td>
<td>&nbsp;22.18.0</td>
<td>Beasts&nbsp;of&nbsp;the&nbsp;Sanctuary</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5922375304465722812</td>
<td><code>2018.03.15.19.39</code></td>
<td>&nbsp;22.16.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>6640882772717519747</td>
<td><code>2018.03.07.14.18</code></td>
<td>&nbsp;22.15.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>8004325165498360760</td>
<td><code>2018.02.22.14.34</code></td>
<td>&nbsp;22.13.4</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 8621631773919294851 is 2018.01.26.12.22, can log in but then you're stuck due to Script Error: attempt to call method 'GetOperator' (a nil value): In ?(844) originating from /Lotus/Scripts/PlayerShip.lua::SpawnPets with owner /Layer0/ScriptTrigger2 -->
<tr>
@ -464,14 +471,14 @@
<td><code>2018.01.04.13.12</code></td>
<td>&nbsp;22.8.2</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5301169201249491747</td>
<td><code>2017.12.12.12.15</code></td>
<td>&nbsp;22.7.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 5914709226935570547 is 2017.12.08.15.29, fails to start due to an assertion failure -->
<tr>
@ -479,49 +486,49 @@
<td><code>2017.11.16.17.34</code></td>
<td>&nbsp;22.2.4</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>4661126446448856114</td>
<td><code>2017.10.12.17.04</code></td>
<td>&nbsp;22.0.0</td>
<td>Plains&nbsp;of&nbsp;Eidolon</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>1835327182756411758</td>
<td><code>2017.07.26.13.59</code></td>
<td>&nbsp;21.2.0</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>2970877824413815022</td>
<td><code>2017.06.29.03.54</code></td>
<td>&nbsp;21.0.1</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>9187782625344917768</td>
<td><code>2017.06.29.02.13</code></td>
<td>&nbsp;21.0.0</td>
<td>Chains&nbsp;of&nbsp;Harrow</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>3099723078202393524</td>
<td><code>2017.05.05.15.41</code></td>
<td>&nbsp;20.4.0</td>
<td>Octavia's&nbsp;Anthem</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>4574874014936523212</td>
<td><code>2017.03.26.04.21</code></td>
<td>&nbsp;20.0.3</td>
<td>Octavia's&nbsp;Anthem</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 8705016425420648723 is 2017.03.24.17.25, ~20.0.0, seems to have a broken cache as the loading scaleform doesn't show properly and it doesn't proceed to the login screen -->
<tr>
@ -529,7 +536,7 @@
<td><code>2017.03.06.15.49</code></td>
<td>&nbsp;19.13.0</td>
<td>The&nbsp;Glast&nbsp;Gambit</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 2663512682334598162 is 2017.03.03.17.01, ~19.12.1, fails to start due to an assertion failure -->
<!-- 4864838558963648894 is 2017.03.02.14.59, ~19.12.0, fails to start due to an assertion failure -->
@ -538,7 +545,7 @@
<td><code>2016.12.21.19.13</code></td>
<td>&nbsp;19.5.0</td>
<td>The&nbsp;Glast&nbsp;Gambit</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 6118281920152298389 only contains installscript.vdf -->
<tr>
@ -546,7 +553,7 @@
<td><code>2016.12.16.14.33</code></td>
<td>&nbsp;19.4.1</td>
<td>The&nbsp;War&nbsp;Within</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 6784000424578492584 is 2016.11.11.17.46, ~19.0.0, fails to start due to an assertion failure -->
<tr>
@ -554,21 +561,21 @@
<td><code>2016.09.30.12.04</code></td>
<td>&nbsp;18.22.1</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>2086935969100698619</td>
<td><code>2016.08.26.11.08</code></td>
<td>&nbsp;18.18.5</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>3584168904277131181</td>
<td><code>2016.08.19.17.12</code></td>
<td>&nbsp;18.18.0</td>
<td>The&nbsp;Silver&nbsp;Grove</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 8065552974390268707 is 2016.07.08.16.56. Seems to have a broken cache as everyone is A-posing and subtitle texts don't resolve. -->
<tr>
@ -576,21 +583,21 @@
<td><code>2016.03.31.15.16</code></td>
<td>&nbsp;18.7.1</td>
<td>Sands&nbsp;of&nbsp;Inaros</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>1331043799698924734</td>
<td><code>2016.03.04.10.06</code></td>
<td>&nbsp;18.5.0</td>
<td>Sands&nbsp;of&nbsp;Inaros</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>5378301586494814297</td>
<td><code>2015.12.09.17.09</code></td>
<td>&nbsp;18.0.6</td>
<td>The&nbsp;Second&nbsp;Dream</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<!-- 4603106986143048670 is 2015.12.08.16.01, same issues as previous version. -->
<!-- 5567085556474789237 is 2015.12.05.18.07, should be ~18.0.2 The Second Dream, but says The Jordas Precept on the login screen. Seems to have a broken cache as enemy spawns are broken. -->
@ -599,67 +606,73 @@
<td><code>2015.10.21.12.48</code></td>
<td>&nbsp;17.8.0</td>
<td>The&nbsp;Jordas&nbsp;Precept</td>
<td>Rename dwmapi.dll to wtsapi32.dll or version.dll.</td>
<td><!-- Rename dwmapi.dll to wtsapi32.dll or version.dll. --></td>
</tr>
<tr>
<td>7055925076570413672</td>
<td><code>2015.10.15.12.24</code></td>
<td>&nbsp;17.7.1</td>
<td>The&nbsp;Jordas&nbsp;Precept</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>232461576962714068</td>
<td><code>2015.05.14.16.29</code></td>
<td>&nbsp;16.5.5</td>
<td>Tubemen&nbsp;of&nbsp;Regor</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>567734397704178704</td>
<td><code>2015.03.21.08.17</code></td>
<td>&nbsp;16.0.2</td>
<td>Sanctuary</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>5952644847955190118</td>
<td><code>2015.02.13.10.41</code></td>
<td>&nbsp;15.14.1</td>
<td>Eyes&nbsp;of&nbsp;Blight</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>7377933404197762308</td>
<td><code>2014.11.27.14.35</code></td>
<td>&nbsp;15.5.0</td>
<td>Mesa&nbsp;Update</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>6368936033089773713</td>
<td><code>2014.10.29.18.19</code></td>
<td>&nbsp;15.0.8</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>1212629036031221707</td>
<td><code>2014.10.28.17.15</code></td>
<td>&nbsp;15.0.7</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>1048315274024428186</td>
<td><code>2014.10.27.17.07</code></td>
<td>&nbsp;15.0.6</td>
<td>Archwing</td>
<td>Rename DLL & copy "Tools" folder from 2275730668734249647.</td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
<tr>
<td>6636116079410913663</td>
<td><code>2014.10.24.08.24</code></td>
<td>&nbsp;15.0.0</td>
<td>Archwing<!-- Login screen says "The Mad Cephalon" --></td>
<td><!-- Rename DLL & -->Copy "Tools" folder from 2275730668734249647</td>
</tr>
</tbody>
</table>
<p>To download an old version, you can use <a href="https://github.com/SteamRE/DepotDownloader/releases">DepotDownloader</a> like so: <code>DepotDownloader -app 230410 -depot 230411 -manifest &lt;manifest id&gt; -username &lt;your steam username&gt;</code></p>
<h3>2013 Warframe</h3>
<p>There is a DLL + fork of SpaceNinjaServer that can be used to revisit 2013 Warframe. More information about this can be found <a href="https://discord.gg/PNNZ3asUuY">on our Discord</a>, specifically <a href="https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497">in this thread</a>.</p>
</div>

View File

@ -0,0 +1,12 @@
if (Test-Path "Warframe.x64.exe") {
if (!(Test-Path "OpenWF/Download Latest DLL.ps1")) {
[System.IO.Directory]::CreateDirectory("OpenWF") | Out-Null
Invoke-WebRequest -Uri "https://openwf.io/supplementals/Download%20Latest%20DLL.ps1" -OutFile "OpenWF/Download Latest DLL.ps1"
}
Set-Location -Path OpenWF
& "$PSScriptRoot\OpenWF\Download Latest DLL.ps1"
}
else {
Write-Host "Please put this script into your Warframe installation folder (the one where Warframe.x64.exe is in) before running it."
Start-Sleep -Seconds 864000
}

View File

@ -0,0 +1,13 @@
#!/bin/bash
if [[ -f "Warframe.x64.exe" ]]; then
if [[ ! -f "OpenWF/Download Latest DLL.sh" ]]; then
mkdir -p OpenWF
curl -L "https://openwf.io/supplementals/Download%20Latest%20DLL.sh" -o "OpenWF/Download Latest DLL.sh"
fi
cd OpenWF
chmod +x "Download Latest DLL.sh"
./Download\ Latest\ DLL.sh
else
echo "Please put this script into your Warframe installation folder (the one where Warframe.x64.exe is in) before running it."
fi

View File

@ -0,0 +1,65 @@
Write-Host "Fetching latest version..."
$latest = Invoke-RestMethod -Uri "https://openwf.io/supplementals/client%20drop-in/meta" -Method Get
$dll_path = "../wtsapi32.dll"
if (Test-Path "../dwmapi.dll") {
$dll_path = "../dwmapi.dll"
}
if (Test-Path "../version.dll") {
$dll_path = "../version.dll"
}
$sha256 = ""
if (Test-Path $dll_path) {
$sha256 = (Get-FileHash $dll_path -Algorithm SHA256).Hash.ToLower()
}
$hotfix_sha256 = ""
if (Test-Path "Hotfix.owf") {
$hotfix_sha256 = (Get-FileHash "Hotfix.owf" -Algorithm SHA256).Hash.ToLower()
}
$sideloadify_sha256 = ""
if (Test-Path "sideloadify-cli.cache") {
$sideloadify_sha256 = (Get-FileHash "sideloadify-cli.cache" -Algorithm SHA256).Hash
}
if ($sideloadify_sha256 -ne "EE990FF8366E49DE5AF5A80DB845A9BFE9285092365E3A887FDFC76EB20C61AF") {
Invoke-WebRequest -Uri "https://github.com/Sainan/Sideloadify/releases/download/1.1.0/sideloadify-cli.exe" -OutFile "sideloadify-cli.cache"
}
$should_sleep = $false
if ($sha256 -ne $latest.sha256 -or $hotfix_sha256 -ne $latest.hotfix_sha256) {
if ($latest.hotfix -ne "") {
Write-Host "Downloading OpenWF Bootstrapper v$($latest.version) $($latest.hotfix)..."
}
else {
Write-Host "Downloading OpenWF Bootstrapper v$($latest.version)..."
}
if ($sha256 -ne $latest.sha256) {
Invoke-WebRequest -Uri "https://openwf.io/supplementals/client%20drop-in/$($latest.version)/dwmapi.dll" -OutFile $dll_path
}
if ($hotfix_sha256 -ne $latest.hotfix_sha256) {
if ($latest.hotfix -ne "") {
Invoke-WebRequest -Uri "https://openwf.io/supplementals/client%20drop-in/$($latest.version)/$($latest.hotfix)/Hotfix.owf" -OutFile "Hotfix.owf"
}
else {
Remove-Item "Hotfix.owf"
}
}
}
else {
Write-Host "Your OpenWF Bootstrapper is up-to-date."
$should_sleep = $true
}
Rename-Item -Path "sideloadify-cli.cache" -NewName "sideloadify-cli.exe"
$sideloadified = (./sideloadify-cli.exe ../Warframe.x64.exe).Contains(" has successfully been sideloadified.")
Rename-Item -Path "sideloadify-cli.exe" -NewName "sideloadify-cli.cache"
if ($sideloadified) {
Write-Host "Warframe.x64.exe has successfully been sideloadified."
$should_sleep = $true
}
if ($should_sleep) {
Start-Sleep -Seconds 2
}

View File

@ -0,0 +1,38 @@
#!/bin/bash
echo "Fetching latest version..."
latest_version=$(curl -s "https://openwf.io/supplementals/client%20drop-in/latest.txt")
latest_hotfix=$(curl -s "https://openwf.io/supplementals/client%20drop-in/latest_hotfix.txt")
latest_sha256=$(curl -s "https://openwf.io/supplementals/client%20drop-in/sha256.txt")
latest_hotfix_sha256=$(curl -s "https://openwf.io/supplementals/client%20drop-in/sha256_hotfix.txt")
sha256=""
hotfix_sha256=""
if [[ -f "../dwmapi.dll" ]]; then
sha256=$(sha256sum "../dwmapi.dll" | awk '{print $1}')
fi
if [[ -f "Hotfix.owf" ]]; then
hotfix_sha256=$(sha256sum "Hotfix.owf" | awk '{print $1}')
fi
if [[ "$sha256" != "$latest_sha256" || "$hotfix_sha256" != "$latest_hotfix_sha256" ]]; then
if [[ -n "$latest_hotfix" ]]; then
echo "Downloading OpenWF Bootstrapper v$latest_version $latest_hotfix..."
else
echo "Downloading OpenWF Bootstrapper v$latest_version..."
fi
if [[ "$sha256" != "$latest_sha256" ]]; then
curl -L "https://openwf.io/supplementals/client%20drop-in/$latest_version/dwmapi.dll" -o "../dwmapi.dll"
fi
if [[ "$hotfix_sha256" != "$latest_hotfix_sha256" ]]; then
if [[ -n "$latest_hotfix" ]]; then
curl -L "https://openwf.io/supplementals/client%20drop-in/$latest_version/${latest_hotfix// /%20}/Hotfix.owf" -o "Hotfix.owf"
else
rm -f "Hotfix.owf"
fi
fi
else
echo "Your OpenWF Bootstrapper is up-to-date."
fi