forked from OpenWF/Website
merge upstream
This commit is contained in:
commit
dde8791a52
@ -1,24 +0,0 @@
|
||||
<?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,46 +1,26 @@
|
||||
<?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;
|
||||
$ext = (substr($_SERVER["SERVER_SOFTWARE"] ?? "", 0, 3) == "PHP" ? ".php" : "");
|
||||
$path = strtok($_SERVER["REQUEST_URI"], '?');
|
||||
?>
|
||||
<nav class="navbar navbar-expand-sm bg-body-tertiary">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="/<?=$query;?>" <?php if ($path == "/"): ?> onclick="event.preventDefault();" <?php endif; ?>>OpenWF</a>
|
||||
<a class="navbar-brand" href="/" <?php if ($path == "/"): ?> onclick="event.preventDefault();" <?php endif; ?>>OpenWF</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-content" aria-controls="navbar-content" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbar-content">
|
||||
<ul class="navbar-nav me-auto mb-0">
|
||||
<li class="nav-item dropdown">
|
||||
<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>
|
||||
<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">Guides</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item<?=(substr($path, 0, 6) == "/guide" ? " active" : ""); ?>" href="/guide<?=$ext;?>"><?=loc("setup");?></a></li>
|
||||
<li><a class="dropdown-item<?=(substr($path, 0, 7) == "/import" ? " active" : ""); ?>" href="/import<?=$ext;?>"><?=loc("import");?></a></li>
|
||||
<li><a class="dropdown-item<?=(substr($path, 0, 25) == "/asset-replacements-guide" ? " active" : ""); ?>" href="/asset-replacements-guide<?=$ext;?>"><?=loc("arep");?></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, 7) == "/import" ? " active" : ""); ?>" href="/import<?=$ext;?>">Importing</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<?=(substr($path, 0, 11) == "/contribute" ? " active" : ""); ?>" href="/contribute<?=$ext;?>"><?=loc("contribute");?></a></li>
|
||||
<li class="nav-item"><a class="nav-link<?=(substr($path, 0, 11) == "/contribute" ? " active" : ""); ?>" href="/contribute<?=$ext;?>">Contribute</a></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 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>
|
||||
</div>
|
||||
</nav>
|
||||
@ -50,4 +30,10 @@ $path = strtok($_SERVER["REQUEST_URI"], '?');
|
||||
{
|
||||
elm.onclick = (event) => { event.preventDefault() };
|
||||
});
|
||||
|
||||
// User-facing stuff really has no reason to be served over insecure HTTP.
|
||||
if (location.host == "openwf.io" && location.protocol == "http:")
|
||||
{
|
||||
location.protocol = "https:";
|
||||
}
|
||||
</script>
|
@ -1,27 +1,25 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?=loc("arep.title");?></title>
|
||||
<title>Asset Replacements Guide | OpenWF</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><?=loc("arep.desc");?></p>
|
||||
<p>This guide will go through the steps to modify a texture used by Warframe via the OpenWF Bootstrapper.</p>
|
||||
<p>
|
||||
<?=loc("arep.what");?><br/>
|
||||
<?=loc("arep.explore");?>
|
||||
</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>. </p>
|
||||
<ol>
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
|
@ -1,22 +1,20 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?=loc("contribute.title");?></title>
|
||||
<title>Contributing to OpenWF</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><?=loc("contribute.code");?></h2>
|
||||
<p><?=loc("contribute.code.desc");?></p>
|
||||
<h2><?=loc("contribute.trans");?></h2>
|
||||
<p><?=loc("contribute.trans.desc");?></p>
|
||||
<h2>Code</h2>
|
||||
<p>Code contributions would be most welcome, especially on SpaceNinjaServer, with <a href='https://onlyg.it/OpenWF/SpaceNinjaServer/issues' target='_blank'>many open issues</a>.</p>
|
||||
<h2>Translations</h2>
|
||||
<p>Most OpenWF software has support for translations:</p>
|
||||
<ul>
|
||||
<li><a href="https://onlyg.it/OpenWF/SpaceNinjaServer/src/branch/main/static/webui/translations" target="_blank">SpaceNinjaServer WebUI</a></li>
|
||||
<li><a href="https://onlyg.it/OpenWF/Translations/src/branch/main/client-webui" target="_blank">Bootstrapper WebUI</a></li>
|
||||
<li><a href="https://onlyg.it/OpenWF/Website/src/branch/main/_lang" target="_blank"><?=loc("contribute.trans.this");?></a></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>
|
||||
|
63
guide.php
63
guide.php
@ -1,57 +1,56 @@
|
||||
<?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><?=loc("setup.title");?></title>
|
||||
<title>OpenWF Setup Guide</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><?=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>
|
||||
<h2>Client/Boostrapper</h2>
|
||||
<p>To use OpenWF, you only need to download the <a href="/supplementals/client%20drop-in//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><?=loc("setup.c.dblclk");?></li>
|
||||
<li><?=loc("setup.c.laurvt");?></li>
|
||||
<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><?=loc("setup.c.docshttp");?></p>
|
||||
<p><?=loc("setup.c.next");?></p>
|
||||
<h2><?=loc("setup.s.prereq");?></h2>
|
||||
<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"><?=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>
|
||||
<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></a>)</li>
|
||||
<li>MongoDB (<a href="https://www.mongodb.com/try/download/community" target="_blank">Download</a></a>)</li>
|
||||
</ul>
|
||||
<h2><?=loc("setup.s.install");?></h2>
|
||||
<h2>Server Installation</h2>
|
||||
<ol>
|
||||
<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>
|
||||
<li><?=loc("setup.s.install.8");?></li>
|
||||
<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>(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 install --omit=dev</code> to install library dependencies</li>
|
||||
<li>Run <code>npm run build</code> to build the server</li>
|
||||
<li>Now you can run <code>npm run start</code> to start the server anytime</li>
|
||||
</ol>
|
||||
<h2><?=loc("setup.s.update");?></h2>
|
||||
<p><?=loc("setup.s.update.wineasy");?></p>
|
||||
<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>
|
||||
<ol>
|
||||
<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.install.7");?></li>
|
||||
<li><?=loc("setup.s.update.5");?></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 install --omit=dev</code> to synchronize library dependencies</li>
|
||||
<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><?=loc("setup.irc");?></h2>
|
||||
<p><?=loc("setup.irc.leadin");?></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>
|
||||
<li><?=loc("setup.irc.wheel");?></li>
|
||||
<li><?=loc("setup.irc.inspircd");?></li>
|
||||
<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>
|
||||
</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>
|
||||
|
15
import.php
15
import.php
@ -1,22 +1,21 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?=loc("import.title")?></title>
|
||||
<title>Importing Guide | OpenWF</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><?=loc("import.intro")?></p>
|
||||
<h2><?=loc("import.export.title")?></h2>
|
||||
<p>This guide will go over how to get your inventory data from live servers and import it in SpaceNinjaServer.</p>
|
||||
<h2>Exporting Your Inventory From Live</h2>
|
||||
<ul>
|
||||
<li><?=loc("import.export.alecaframe");?></li>
|
||||
<li><?=str_replace("|warframe-api-helper|", '<a href="https://github.com/Sainan/warframe-api-helper/releases/latest/download/warframe-api-helper.exe">warframe-api-helper</a>', loc("import.export.helper"));?></li>
|
||||
<li>If you use AlecaFrame, you already have an encrypted version of your inventory. You can use <a href="https://sainan.github.io/alecaframe-inventory-parser/" target="_blank">this tool</a> to help you locate and decrypt it.</li>
|
||||
<li>Alternatively, you can use <a href="https://github.com/Sainan/warframe-api-helper/releases/latest/download/warframe-api-helper.exe">warframe-api-helper</a> to get a fresh copy by running it while the game is running & logged in on live. It will store it in <code>inventory.json</code>.</li>
|
||||
</ul>
|
||||
<h2><?=loc("import.import.title")?></h2>
|
||||
<p><?=loc("import.import.desc")?></p>
|
||||
<h2>Importing Your Inventory To SpaceNinjaServer</h2>
|
||||
<p>Now that you have your inventory, open the SpaceNinjaServer WebUI and locate the "Import" tab. You can simply paste the entire thing in the textbox and press the "Submit" button.</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>
|
||||
|
20
index.php
20
index.php
@ -1,27 +1,25 @@
|
||||
<?php require "_components/loc.php"; ?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?=loc("about.title");?></title>
|
||||
<title>About OpenWF</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><?=loc("about.0");?></p>
|
||||
<p>OpenWF is a software suite centered around customizing Warframe, including:</p>
|
||||
<ul>
|
||||
<li><?=loc("about.1");?></li>
|
||||
<li><?=loc("about.2");?></li>
|
||||
<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>
|
||||
</ul>
|
||||
<a href="/guide<?=$ext;?>" class="btn btn-primary"><?=loc("about.cta");?></a>
|
||||
<h3 class="mt-3"><?=loc("preservation.title");?></h3>
|
||||
<a href="/guide.php" class="btn btn-primary">Get Started</a>
|
||||
<h3 class="mt-3">Preserving Warframe</h3>
|
||||
<p>
|
||||
<?=loc("preservation.0");?><br/>
|
||||
<?=loc("preservation.1");?>
|
||||
</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>. </p>
|
||||
<hr>
|
||||
<p><?=loc("tm_disclaimer");?></p>
|
||||
<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>
|
||||
</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