forked from OpenWF/Website
Add translation support
This commit is contained in:
parent
d67231b4d7
commit
d3a2b5652c
24
_components/loc.php
Normal file
24
_components/loc.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
$lang_names = [
|
||||
"en" => "English",
|
||||
"de" => "Deutsch",
|
||||
];
|
||||
|
||||
$lang_code = $_GET["lang"] ?? "en";
|
||||
if (!array_key_exists($lang_code, $lang_names))
|
||||
{
|
||||
$lang_code = "en";
|
||||
}
|
||||
|
||||
$data = json_decode(file_get_contents(__DIR__."/../_lang/$lang_code.json"), true);
|
||||
|
||||
function loc($key)
|
||||
{
|
||||
global $data;
|
||||
$str = $data[$key];
|
||||
if (substr($str, 0, 15) == "[UNTRANSLATED] ")
|
||||
{
|
||||
$str = substr($str, 15);
|
||||
}
|
||||
return $str;
|
||||
}
|
@ -1,21 +1,40 @@
|
||||
<?php
|
||||
$ext = substr($_SERVER["SERVER_SOFTWARE"] ?? "", 0, 3) == "PHP" ? ".php" : "";
|
||||
function getQueryForLang($code)
|
||||
{
|
||||
if ($code != "en")
|
||||
{
|
||||
return "?lang=".$code;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
$query = getQueryForLang($lang_code);
|
||||
$ext = (substr($_SERVER["SERVER_SOFTWARE"] ?? "", 0, 3) == "PHP" ? ".php" : "") . $query;
|
||||
$path = strtok($_SERVER["REQUEST_URI"], '?');
|
||||
?>
|
||||
<nav class="navbar navbar-expand bg-body-tertiary">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="/" <?php if ($_SERVER["REQUEST_URI"] == "/"): ?> onclick="event.preventDefault();" <?php endif; ?>>OpenWF</a>
|
||||
<a class="navbar-brand" href="/<?=$query;?>" <?php if ($path == "/"): ?> onclick="event.preventDefault();" <?php endif; ?>>OpenWF</a>
|
||||
<ul class="navbar-nav me-auto mb-0">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle<?=((substr($_SERVER["REQUEST_URI"], 0, 6) == "/guide" || substr($_SERVER["REQUEST_URI"], 0, 25) == "/asset-replacements-guide") ? " active" : ""); ?>" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Guides</a>
|
||||
<a class="nav-link dropdown-toggle<?=((substr($path, 0, 6) == "/guide" || substr($path, 0, 25) == "/asset-replacements-guide") ? " active" : ""); ?>" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"><?=loc("guides");?></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item<?=(substr($_SERVER["REQUEST_URI"], 0, 6) == "/guide" ? " active" : ""); ?>" href="/guide<?=$ext;?>">Setup</a></li>
|
||||
<li><a class="dropdown-item<?=(substr($_SERVER["REQUEST_URI"], 0, 25) == "/asset-replacements-guide" ? " active" : ""); ?>" href="/asset-replacements-guide<?=$ext;?>">Asset Replacements</a></li>
|
||||
<li><a class="dropdown-item<?=(substr($path, 0, 6) == "/guide" ? " active" : ""); ?>" href="/guide<?=$ext;?>">Setup</a></li>
|
||||
<li><a class="dropdown-item<?=(substr($path, 0, 25) == "/asset-replacements-guide" ? " active" : ""); ?>" href="/asset-replacements-guide<?=$ext;?>">Asset Replacements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://discord.gg/PNNZ3asUuY" target="_blank">Discord</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="navbar-nav ms-auto mb-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://discord.gg/PNNZ3asUuY" target="_blank">Discord</a>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"><?=$lang_names[$lang_code];?></a>
|
||||
<ul class="dropdown-menu">
|
||||
<?php foreach ($lang_names as $code => $name): ?>
|
||||
<li><a class="dropdown-item<?=($lang_code == $code ? " active" : ""); ?>" href="<?=$path.getQueryForLang($code); ?>"><?=$name;?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
21
_lang/_update.php
Normal file
21
_lang/_update.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
php_sapi_name() == "cli" or die("CLI only!");
|
||||
|
||||
$source = json_decode(file_get_contents("en.json"), true);
|
||||
foreach (["de"] as $code)
|
||||
{
|
||||
$target = json_decode(file_get_contents("$code.json"), true);
|
||||
$rewritten = [];
|
||||
foreach ($source as $key => $value)
|
||||
{
|
||||
if (array_key_exists($key, $target))
|
||||
{
|
||||
$rewritten[$key] = $target[$key];
|
||||
}
|
||||
else
|
||||
{
|
||||
$rewritten[$key] = "[UNTRANSLATED] ".$source[$key];
|
||||
}
|
||||
}
|
||||
file_put_contents("$code.json", json_encode($rewritten, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
|
||||
}
|
50
_lang/de.json
Normal file
50
_lang/de.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"about.title": "Über OpenWF",
|
||||
"about.0": "OpenWF ist eine Software-Suite zur Anpassung von Warframe, die Folgendes umfasst:",
|
||||
"about.1": "<b>SpaceNinjaServer</b> — eine <a href=\"https://openwf.io/SpaceNinjaServer.git\">Open-Source</a>-Reimplementierung der Webdienste des Spiels. Da wir eigene Server-Software haben, vermeidet OpenWF Eingriffe in das Live-Spiel und ermöglicht gleichzeitig eine vollständige Anpassung der Spieldaten.",
|
||||
"about.2": "Der <b>Bootstrapper</b> — unsere Haupt-DLL für die neueste Spielversion. Ihr Hauptzweck ist die Verbindung zu benutzerdefinierten Servern, aber sie bietet auch einige QoL-Funktionen und Cheats sowie eine Skripting-API, Label-Ersetzungen und Metadaten-Patches an, die eine umfassende Anpassung des Spiels ermöglichen.",
|
||||
"about.cta": "Jetzt Loslegen",
|
||||
"preservation.title": "Warframe bewahren",
|
||||
"preservation.0": "Ein langfristiges Ziel des Projekts ist es, Warframe auch nach der Abschaltung der offiziellen Server zu erhalten und tatsächlich jedes Update spielbar zu machen.",
|
||||
"preservation.1": "Unser Hauptfokus liegt derzeit darauf, mit dem Spiel aktuell zu bleiben. Es gibt jedoch eine DLL + einen Fork von SpaceNinjaServer, mit dem man Warframe aus dem Jahr 2013 erneut erleben kann. Weitere Informationen dazu findest du <a href=\"https://discord.gg/PNNZ3asUuY\">auf unserem Discord</a>, insbesondere <a href=\"https://discord.com/channels/1108159019635462206/1280628166825873510/1280628233355923497\">in diesem Thread</a>.",
|
||||
"tm_disclaimer": "Warframe ist eine eingetragene Marke von Digital Extremes. Die Verwendung dient ausschließlich zur Identifikation und impliziert keine Zugehörigkeit zu oder Unterstützung durch Digital Extremes.",
|
||||
"guides": "Anleitungen",
|
||||
"setup.title": "[UNTRANSLATED] OpenWF Setup Guide",
|
||||
"setup.c.title": "[UNTRANSLATED] Client/Boostrapper",
|
||||
"setup.c.simple": "[UNTRANSLATED] To use OpenWF, you only need to download the |DLL| and put it in your game's installation folder (the one where Warframe.x64.exe is in).",
|
||||
"setup.c.dblclk": "[UNTRANSLATED] As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.",
|
||||
"setup.c.laurvt": "[UNTRANSLATED] Opening the game's launcher will revert it back to normal.",
|
||||
"setup.c.docshttp": "[UNTRANSLATED] 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:61558/\" target=\"_blank\">http://localhost:61558/</a> to manage options, cheats, and scripts.",
|
||||
"setup.c.next": "[UNTRANSLATED] <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. You can use <a href=\"/server-list\">a public server</a> if you don't need to be able to play offline and have full control.",
|
||||
"setup.s.prereq": "[UNTRANSLATED] Server Prerequisites",
|
||||
"download": "[UNTRANSLATED] Download",
|
||||
"setup.s.install": "[UNTRANSLATED] Server Installation",
|
||||
"setup.s.install.1": "[UNTRANSLATED] Run <code>git clone https://openwf.io/SpaceNinjaServer.git</code> in a command prompt to download SpaceNinjaServer in the current working directory",
|
||||
"setup.s.install.2": "[UNTRANSLATED] Open the SpaceNinjaServer folder (<code>cd SpaceNinjaServer</code>)",
|
||||
"setup.s.install.3": "[UNTRANSLATED] Run <code>copy config.json.example config.json</code> to create a config.json from config.json.example",
|
||||
"setup.s.install.4": "[UNTRANSLATED] (Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server",
|
||||
"setup.s.install.5": "[UNTRANSLATED] (Optional) If you want stripped assets (~622 <abbr title=\"mebibytes (1 MiB = 1048576 bytes)\">MiB</abbr>) which the client will request from the server on-demand (most notably, <abbr title=\"Ability videos show a brief clip of an ability in action. They can be seen by hovering over an ability in the Arsenal, Codex, etc.\">ability videos</abbr>), run <code>git clone https://openwf.io/0.git</code> in the <code>static/data</code> folder",
|
||||
"setup.s.install.6": "[UNTRANSLATED] Run <code>npm i</code> (or <code>npm install</code>) to install library dependencies",
|
||||
"setup.s.install.7": "[UNTRANSLATED] Now, to start the server, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)",
|
||||
"setup.s.update": "[UNTRANSLATED] Server Update",
|
||||
"setup.s.update.wineasy": "[UNTRANSLATED] Windows users can simply double-click the <code>UPDATE AND START SERVER.bat</code>, but otherwise the steps are pretty simple:",
|
||||
"setup.s.update.1": "[UNTRANSLATED] Run <code>git pull</code> in the SpaceNinjaServer folder",
|
||||
"setup.s.update.2": "[UNTRANSLATED] (Optional) If you have the stripped assets, run <code>git pull</code> in the <code>static/data/0</code> folder",
|
||||
"setup.s.update.3": "[UNTRANSLATED] Run <code>npm i</code> (or <code>npm install</code>) to synchronize library dependencies",
|
||||
"setup.s.update.4": "[UNTRANSLATED] Now to start the server again, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)",
|
||||
"setup.irc": "[UNTRANSLATED] IRC Server",
|
||||
"setup.irc.leadin": "[UNTRANSLATED] In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:",
|
||||
"setup.irc.wheel": "[UNTRANSLATED] <a href=\"https://github.com/Sainan/warframe-irc-server/releases\" target=\"_blank\">warframe-irc-server</a> — an IRC server specifically made for Warframe. Talks to SpaceNinjaServer to give \"chat moderator\" permissions and report dropped connections.",
|
||||
"setup.irc.inspircd": "[UNTRANSLATED] InspIRCd — a well-known IRC server implementation used by DE themselves (albeit with unknown modifications). A pre-configured Windows copy of it can be downloaded <a href=\"/supplementals/IRC.zip\" download>here</a>.",
|
||||
"arep.title": "[UNTRANSLATED] Asset Replacements Guide | OpenWF",
|
||||
"arep.desc": "[UNTRANSLATED] This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.",
|
||||
"arep.what": "[UNTRANSLATED] Before we start: <b>know what you're replacing</b>. I am going to be using <code>/Lotus/Interface/PolarityPoint.png</code> as an example, which is the icon for the Vazarin polarity.",
|
||||
"arep.explore": "[UNTRANSLATED] To explore textures, I can recommend using the GUI of <a href=\"https://github.com/Puxtril/Warframe-Exporter\" target=\"_blank\">Puxtril's Warframe Exporter</a>.",
|
||||
"arep.1": "[UNTRANSLATED] Clone <a href=\"https://github.com/Sainan/warframe-cache-tools\" target=\"_blank\">warframe-cache-tools</a>.",
|
||||
"arep.2": "[UNTRANSLATED] Within your copy of warframe-cache-tools, you can now run <code>pluto extract.pluto /Lotus/Interface/PolarityPoint.png</code> to download & export the texture to the <code>assets</code> folder.",
|
||||
"arep.3": "[UNTRANSLATED] Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.",
|
||||
"arep.4": "[UNTRANSLATED] 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.",
|
||||
"arep.5": "[UNTRANSLATED] 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.",
|
||||
"arep.6": "[UNTRANSLATED] To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.",
|
||||
"arep.7": "[UNTRANSLATED] 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."
|
||||
}
|
50
_lang/en.json
Normal file
50
_lang/en.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"about.title": "About OpenWF",
|
||||
"about.0": "OpenWF is a software suite centered around customizing Warframe, including:",
|
||||
"about.1": "<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.",
|
||||
"about.2": "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 game.",
|
||||
"about.cta": "Get Started",
|
||||
"preservation.title": "Preserving Warframe",
|
||||
"preservation.0": "A long-term goal of the project is to preserve Warframe after the official servers have shut down, and indeed being able to play any update.",
|
||||
"preservation.1": "Our main focus right now is on staying up-to-date with the game, but 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>.",
|
||||
"tm_disclaimer": "Warframe is a registered trademark of Digital Extremes. Its use is for identification purposes only and does not imply any affiliation with or endorsement by Digital Extremes.",
|
||||
"guides": "Guides",
|
||||
"setup.title": "OpenWF Setup Guide",
|
||||
"setup.c.title": "Client/Boostrapper",
|
||||
"setup.c.simple": "To use OpenWF, you only need to download the |DLL| and put it in your game's installation folder (the one where Warframe.x64.exe is in).",
|
||||
"setup.c.dblclk": "As long as this DLL is in the game folder, you can double-click Warframe.x64.exe to start the game with OpenWF.",
|
||||
"setup.c.laurvt": "Opening the game's launcher will revert it back to normal.",
|
||||
"setup.c.docshttp": "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:61558/\" target=\"_blank\">http://localhost:61558/</a> to manage options, cheats, and scripts.",
|
||||
"setup.c.next": "<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. You can use <a href=\"/server-list\">a public server</a> if you don't need to be able to play offline and have full control.",
|
||||
"setup.s.prereq": "Server Prerequisites",
|
||||
"download": "Download",
|
||||
"setup.s.install": "Server Installation",
|
||||
"setup.s.install.1": "Run <code>git clone https://openwf.io/SpaceNinjaServer.git</code> in a command prompt to download SpaceNinjaServer in the current working directory",
|
||||
"setup.s.install.2": "Open the SpaceNinjaServer folder (<code>cd SpaceNinjaServer</code>)",
|
||||
"setup.s.install.3": "Run <code>copy config.json.example config.json</code> to create a config.json from config.json.example",
|
||||
"setup.s.install.4": "(Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server",
|
||||
"setup.s.install.5": "(Optional) If you want stripped assets (~622 <abbr title=\"mebibytes (1 MiB = 1048576 bytes)\">MiB</abbr>) which the client will request from the server on-demand (most notably, <abbr title=\"Ability videos show a brief clip of an ability in action. They can be seen by hovering over an ability in the Arsenal, Codex, etc.\">ability videos</abbr>), run <code>git clone https://openwf.io/0.git</code> in the <code>static/data</code> folder",
|
||||
"setup.s.install.6": "Run <code>npm i</code> (or <code>npm install</code>) to install library dependencies",
|
||||
"setup.s.install.7": "Now, to start the server, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)",
|
||||
"setup.s.update": "Server Update",
|
||||
"setup.s.update.wineasy": "Windows users can simply double-click the <code>UPDATE AND START SERVER.bat</code>, but otherwise the steps are pretty simple:",
|
||||
"setup.s.update.1": "Run <code>git pull</code> in the SpaceNinjaServer folder",
|
||||
"setup.s.update.2": "(Optional) If you have the stripped assets, run <code>git pull</code> in the <code>static/data/0</code> folder",
|
||||
"setup.s.update.3": "Run <code>npm i</code> (or <code>npm install</code>) to synchronize library dependencies",
|
||||
"setup.s.update.4": "Now to start the server again, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)",
|
||||
"setup.irc": "IRC Server",
|
||||
"setup.irc.leadin": "In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:",
|
||||
"setup.irc.wheel": "<a href=\"https://github.com/Sainan/warframe-irc-server/releases\" target=\"_blank\">warframe-irc-server</a> — an IRC server specifically made for Warframe. Talks to SpaceNinjaServer to give \"chat moderator\" permissions and report dropped connections.",
|
||||
"setup.irc.inspircd": "InspIRCd — a well-known IRC server implementation used by DE themselves (albeit with unknown modifications). A pre-configured Windows copy of it can be downloaded <a href=\"/supplementals/IRC.zip\" download>here</a>.",
|
||||
"arep.title": "Asset Replacements Guide | OpenWF",
|
||||
"arep.desc": "This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.",
|
||||
"arep.what": "Before we start: <b>know what you're replacing</b>. I am going to be using <code>/Lotus/Interface/PolarityPoint.png</code> as an example, which is the icon for the Vazarin polarity.",
|
||||
"arep.explore": "To explore textures, I can recommend using the GUI of <a href=\"https://github.com/Puxtril/Warframe-Exporter\" target=\"_blank\">Puxtril's Warframe Exporter</a>.",
|
||||
"arep.1": "Clone <a href=\"https://github.com/Sainan/warframe-cache-tools\" target=\"_blank\">warframe-cache-tools</a>.",
|
||||
"arep.2": "Within your copy of warframe-cache-tools, you can now run <code>pluto extract.pluto /Lotus/Interface/PolarityPoint.png</code> to download & export the texture to the <code>assets</code> folder.",
|
||||
"arep.3": "Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.",
|
||||
"arep.4": "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.",
|
||||
"arep.5": "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.",
|
||||
"arep.6": "To build your assets, run <code>pluto build.pluto</code> within the warframe-cache-tools directory.",
|
||||
"arep.7": "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."
|
||||
}
|
@ -1,26 +1,27 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Asset Replacements Guide | OpenWF</title>
|
||||
<title><?=loc("arep.title");?></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
</head>
|
||||
<body data-bs-theme="dark">
|
||||
<?php require "_components/navbar.php"; ?>
|
||||
<div class="container mt-3">
|
||||
<p>This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.</p>
|
||||
<p><?=loc("arep.desc");?></p>
|
||||
<p>
|
||||
Before we start: <b>know what you're replacing</b>. I am going to be using <code>/Lotus/Interface/PolarityPoint.png</code> as an example, which is the icon for the Vazarin polarity.<br/>
|
||||
To explore textures, I can recommend using the GUI of <a href="https://github.com/Puxtril/Warframe-Exporter" target="_blank">Puxtril's Warframe Exporter</a>.
|
||||
<?=loc("arep.what");?><br/>
|
||||
<?=loc("arep.explore");?>
|
||||
</p>
|
||||
<ol>
|
||||
<li>Clone <a href="https://github.com/Sainan/warframe-cache-tools" target="_blank">warframe-cache-tools</a>.</li>
|
||||
<li>Within your copy of warframe-cache-tools, you can now run <code>pluto extract.pluto /Lotus/Interface/PolarityPoint.png</code> to download & export the texture to the <code>assets</code> folder.</li>
|
||||
<li>Head inside of the <code>assets</code> folder until you find <code>PolarityPoint.png.dds</code>.</li>
|
||||
<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><?=loc("arep.1");?></li>
|
||||
<li><?=loc("arep.2");?></li>
|
||||
<li><?=loc("arep.3");?></li>
|
||||
<li><?=loc("arep.4");?></li>
|
||||
<li><?=loc("arep.5");?></li>
|
||||
<li><?=loc("arep.6");?></li>
|
||||
<li><?=loc("arep.7");?></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>
|
||||
|
61
guide.php
61
guide.php
@ -1,56 +1,55 @@
|
||||
<?php
|
||||
require "_components/loc.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>
|
||||
<title>OpenWF Setup Guide</title>
|
||||
<title><?=loc("setup.title");?></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
</head>
|
||||
<body data-bs-theme="dark">
|
||||
<?php require "_components/navbar.php"; ?>
|
||||
<div class="container mt-3">
|
||||
<h2>Client/Boostrapper</h3>
|
||||
<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>
|
||||
<h2><?=loc("setup.c.title");?></h3>
|
||||
<p><?=str_replace("|DLL|", '<a href="/supplementals/client%20drop-in/'.$dll_version.'/dwmapi.dll" download>dwmapi.dll</a>', loc("setup.c.simple"));?></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>
|
||||
<li><?=loc("setup.c.dblclk");?></li>
|
||||
<li><?=loc("setup.c.laurvt");?></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:61558/" target="_blank">http://localhost:61558/</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. You can use <a href="/server-list">a public server</a> if you don't need to be able to play offline and have full control.</p>
|
||||
<h2>Server Prerequisites</h2>
|
||||
<p><?=loc("setup.c.docshttp");?></p>
|
||||
<p><?=loc("setup.c.next");?></p>
|
||||
<h2><?=loc("setup.s.prereq");?></h2>
|
||||
<ul>
|
||||
<li>Git (<a href="https://git-scm.com/downloads" target="_blank">Download</a>)</li>
|
||||
<li>Node.js (<a href="https://nodejs.org/en/download" target="_blank">Download</a>)</li>
|
||||
<li>MongoDB (<a href="https://www.mongodb.com/try/download/community" target="_blank">Download</a>)</li>
|
||||
<li>Git (<a href="https://git-scm.com/downloads" target="_blank"><?=loc("download");?></a>)</li>
|
||||
<li>Node.js (<a href="https://nodejs.org/en/download" target="_blank"><?=loc("download");?></a></a>)</li>
|
||||
<li>MongoDB (<a href="https://www.mongodb.com/try/download/community" target="_blank"><?=loc("download");?></a></a>)</li>
|
||||
</ul>
|
||||
<h2>Server Installation</h2>
|
||||
<h2><?=loc("setup.s.install");?></h2>
|
||||
<ol>
|
||||
<li>Run <code>git clone https://openwf.io/SpaceNinjaServer.git</code> in a command prompt to download SpaceNinjaServer in the current working directory</li>
|
||||
<li>Open the SpaceNinjaServer folder (<code>cd SpaceNinjaServer</code>)</li>
|
||||
<li>Run <code>copy config.json.example config.json</code> to create a config.json from config.json.example</li>
|
||||
<li>(Optional) Edit the config.json to match your MongoDB settings (if not default) and however else you would like to configure the server</li>
|
||||
<!-- <li>Download <a href="/supplementals/static%20data/buildConfig.json" download>buildConfig.json</a> and <a href="/supplementals/static%20data/H.Cache_<?=$version;?>.bin" download>H.Cache_<?=$version;?>.bin</a> and put them in the server's <code>static/data</code> folder</li> -->
|
||||
<li>(Optional) If you want stripped assets (~622 <abbr title="mebibytes (1 MiB = 1048576 bytes)">MiB</abbr>) which the client will request from the server on-demand (most notably, <abbr title="Ability videos show a brief clip of an ability in action. They can be seen by hovering over an ability in the Arsenal, Codex, etc.">ability videos</abbr>), run <code>git clone https://openwf.io/0.git</code> in the <code>static/data</code> folder</li>
|
||||
<li>Run <code>npm i</code> (or <code>npm install</code>) to install library dependencies</li>
|
||||
<li>Now, to start the server, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)</li>
|
||||
<li><?=loc("setup.s.install.1");?></li>
|
||||
<li><?=loc("setup.s.install.2");?></li>
|
||||
<li><?=loc("setup.s.install.3");?></li>
|
||||
<li><?=loc("setup.s.install.4");?></li>
|
||||
<li><?=loc("setup.s.install.5");?></li>
|
||||
<li><?=loc("setup.s.install.6");?></li>
|
||||
<li><?=loc("setup.s.install.7");?></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>
|
||||
<h2><?=loc("setup.s.update");?></h2>
|
||||
<p><?=loc("setup.s.update.wineasy");?></p>
|
||||
<ol>
|
||||
<!-- <li>For game updates, ensure the <code>static/data</code> folder has the latest <a href="/supplementals/static%20data/buildConfig.json" download>buildConfig.json</a> and cache (<a href="/supplementals/static%20data/H.Cache_<?=$version;?>.bin" download>H.Cache_<?=$version;?>.bin</a>)</li> -->
|
||||
<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>
|
||||
<li>Run <code>npm i</code> (or <code>npm install</code>) to synchronize library dependencies</li>
|
||||
<li>Now to start the server again, run <code>npm run dev</code> (if this is too slow on your machine, you can use <code>npm run build</code> followed by <code>npm run start</code>)</li>
|
||||
<li><?=loc("setup.s.update.1");?></li>
|
||||
<li><?=loc("setup.s.update.2");?></li>
|
||||
<li><?=loc("setup.s.update.3");?></li>
|
||||
<li><?=loc("setup.s.update.4");?></li>
|
||||
</ol>
|
||||
<h2>IRC Server</h2>
|
||||
<p>In addition to SpaceNinjaServer, you can also set up an IRC server for the in-game chat:</p>
|
||||
<h2><?=loc("setup.irc");?></h2>
|
||||
<p><?=loc("setup.irc.leadin");?></p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/Sainan/warframe-irc-server/releases" target="_blank">warframe-irc-server</a> — an IRC server specifically made for Warframe. Talks to SpaceNinjaServer to give "chat moderator" permissions and report dropped connections.</li>
|
||||
<li>InspIRCd — a well-known IRC server implementation used by DE themselves (albeit with unknown modifications). A pre-configured Windows copy of it can be downloaded <a href="/supplementals/IRC.zip" download>here</a>.</li>
|
||||
<li><?=loc("setup.irc.wheel");?></li>
|
||||
<li><?=loc("setup.irc.inspircd");?></li>
|
||||
</ul>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
|
||||
|
19
index.php
19
index.php
@ -1,26 +1,27 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>About OpenWF</title>
|
||||
<title><?=loc("about.title");?></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
</head>
|
||||
<body data-bs-theme="dark">
|
||||
<?php require "_components/navbar.php"; ?>
|
||||
<div class="container mt-3">
|
||||
<p>OpenWF is a software suite centered around customizing Warframe, including:</p>
|
||||
<p><?=loc("about.0");?></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 game.</li>
|
||||
<li><?=loc("about.1");?></li>
|
||||
<li><?=loc("about.2");?></li>
|
||||
</ul>
|
||||
<a href="/guide<?=$ext;?>" class="btn btn-primary">Get Started</a>
|
||||
<h3 class="mt-3">Preserving Warframe</h3>
|
||||
<a href="/guide<?=$ext;?>" class="btn btn-primary"><?=loc("about.cta");?></a>
|
||||
<h3 class="mt-3"><?=loc("preservation.title");?></h3>
|
||||
<p>
|
||||
A long-term goal of the project is to preserve Warframe after the official servers have shut down, and indeed being able to play any update.<br/>
|
||||
Our main focus right now is on staying up-to-date with the game, but 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>.
|
||||
<?=loc("preservation.0");?><br/>
|
||||
<?=loc("preservation.1");?>
|
||||
</p>
|
||||
<hr>
|
||||
<p>Warframe is a registered trademark of Digital Extremes. Its use is for identification purposes only and does not imply any affiliation with or endorsement by Digital Extremes.</p>
|
||||
<p><?=loc("tm_disclaimer");?></p>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
|
Loading…
x
Reference in New Issue
Block a user