Switch website to Jekyll

This commit is contained in:
DeathByDenim 2022-12-15 12:46:53 -05:00
parent f6feee34a4
commit 06cfda8440
Signed by: DeathByDenim
GPG Key ID: 4A475283D925365B
139 changed files with 13164 additions and 1290 deletions

View File

@ -67,7 +67,7 @@ apt install --assume-yes \
fuse g++ gcc curl firewalld automake autoconf libtool \
libcurl3-dev libc-ares-dev zlib1g-dev libncurses-dev make python3-aiohttp \
nginx-core certbot python3-certbot-nginx sudo python3-psutil \
ldc dub libenet-dev python3-bcrypt jq telnet
ldc dub libenet-dev python3-bcrypt jq telnet jekyll
# Create the user for running the game servers
if ! getent passwd ${systemuser}; then

View File

@ -43,8 +43,8 @@ EOF
systemctl restart armagetronad-dedicated.service
cat > /etc/nginx/gameserver.d/armagetronad.conf <<EOF
location /armagetronad {
cat > /etc/nginx/gameserver.d/armagetron.conf <<EOF
location /armagetron {
proxy_pass http://localhost:62551/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;

View File

@ -26,28 +26,29 @@ firewall-cmd --reload
# Request SSL certificate. This assumes DNS has been set up already
if [ x"$NOSSL" = "x" ] || [ $NOSSL -ne 1 ]; then
ssl="true"
certbot -n --nginx -d ${DOMAINNAME} -d www.${DOMAINNAME} --agree-tos -m "${letsencryptemail}"
else
ssl="false"
fi
# Put the website files in place
cp -r "$(dirname "$0")"/../website/[^_]* /var/www/html
for file in /var/www/html/*\.html /var/www/html/js/*\.js; do
sed -i $file -e s/"DOMAINNAME"/"${DOMAINNAME}"/g
done
for file in /var/www/html/*\.html; do
sed -i $file -e s/"HOSTEDBYNAME"/"${HOSTEDBYNAME}"/g
done
for file in /var/www/html/*\.html; do
sed -i $file -e "/SERVERSTATE/r $(dirname "$0")/../website/_state/online.html"
sed -i $file -e "/SERVERSTATE/d"
done
if [ x"$NOSSL" != "x" ] && [ $NOSSL -eq 1 ]; then
for file in /var/www/html/js/*\.js; do
sed -i $file -e s/"wss:"/"ws:"/g
sed -i $file -e s/"https:"/"http:"/g
done
# Generate the website and put in place
curl --location https://github.com/twbs/bootstrap/archive/v5.2.3.zip > ${TMPDIR:-/tmp}/bootstrap.zip
unzip -o -d ${TMPDIR:-/tmp}/bootstrap ${TMPDIR:-/tmp}/bootstrap.zip "bootstrap-5.2.3/scss/*"
if [ -d "$(dirname "$0")"/../website/_sass/bootstrap ]; then
rm -r "$(dirname "$0")"/../website/_sass/bootstrap
fi
sed -i /var/www/html/js/consoles.js -e s/"MD5GAMEPASSWORD"/"$(echo -n "${systempassword}" | md5sum | cut -d' ' -f1)"/g
mv ${TMPDIR:-/tmp}/bootstrap/bootstrap-5.2.3/scss "$(dirname "$0")"/../website/_sass/bootstrap
rm -r ${TMPDIR:-/tmp}/bootstrap.zip ${TMPDIR:-/tmp}/bootstrap
cat > "$(dirname "$0")"/../website/_config.yml <<EOF
content:
hosted_by_name: "${HOSTEDBYNAME}"
domain_name: "${DOMAINNAME}"
offline: false
ssl: ${ssl}
md5password: "$(echo -n "${systempassword}" | md5sum | cut -d' ' -f1)"
EOF
jekyll build --source "$(dirname "$0")"/../website --destination /var/www/html
# Patch the NGINX configuration for the web sockets
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

78
website/_data/events.yml Normal file
View File

@ -0,0 +1,78 @@
- date: 2022-12-17T14:00:00UTC
intro: "onFOSS-LAN hosted by DeathByDenim"
games:
- time: "14:00"
title: "Get together"
- time: "14:30"
title: "Doom (ODAMEX) XMAS mod"
- time: "15:15"
title: "Teeworlds"
- time: "16:00"
title: "OpenSpades"
- time: "17:00"
title: "Break"
- time: "18:00"
title: "Lix"
- time: "18:30"
title: "Free Play!"
- date: 2022-07-02T14:00:00UTC
intro: "onFOSS-LAN hosted by DeathByDenim"
games:
- time: "14:00"
title: "OpenSoldat"
- time: "15:00"
title: "Lix"
- time: "16:00"
title: "Teeworlds DDrace"
- time: "17:00"
title: "Free play!"
extras: ["OpenSpades", "OpenHV"]
- date: 2022-03-19T14:00:00UTC
intro: "onFOSS-LAN hosted by DeathByDenim"
games:
- time: "14:00"
title: "Armagetron Advanced"
- time: "15:00"
title: "Xonotic - Battle Royale"
- time: "16:00"
title: "Lix"
- time: "16:30"
title: "Free play!"
extras: ["Hedgewars", "SuperTuxKart (Race and Soccer modes)"]
content: |
<p>
Additionally, there was a fundraiser to help the people suffering
from the war in Ukraine &#x1F1FA;&#x1F1E6;. I matched your donation
(up to $500 total) and additionally, the government of Canada
&#x1F1E8;&#x1F1E6; will match mine until 18 March. So, that's triple
the value for any donation you make. It doesn't have to be to the
Canadian Red Cross, you probably have a local equivalent.
</p>
<p>
<em>UPDATE (2022-03-08)</em>: Canada reached the $10M already so they are not
doubling anymore. I'll still double but this means your amount won't
count as triple anymore.
</p>
<p>
<em>UPDATE (2022-03-13)</em>: Canada increased the limit to $30M, so
any donation you make is once again tripled.
</p>
<p>
<em>UPDATE (2022-03-14)</em>: Oh, never mind, this goal has already
been reached. Anyway, I'll still match what you donate!
</p>
<p>
<em>UPDATE (2022-03-19)</em>: Donations are closed. A total amount
of &euro;40 was collected and the equivalent of CAD 55.64 was
donated to the Canadian Red Cross.
</p>
<p>List of donations:</p>
<ul>
<li>Anonymous: &euro;40</li>
</ul>
- date: 2022-02-12T15:00UTC
intro: "Session to test if it all works as intended"
games:
- title: "OpenSpades"
- title: "OpenHV"
- title: "Xonotic"

114
website/_data/games.yml Normal file
View File

@ -0,0 +1,114 @@
- name: armagetron
title: "Armagetron Advanced"
description: "Drive your lightcycle and leave a lightwall behind you. Survive as long as you can and try to make other run into walls."
download_link: "http://www.armagetronad.org/downloads.php"
has_console: true
console_output_coloring: "Terminal"
console_initial_command: "players"
console_help_link: "http://wiki.armagetronad.org/index.php?title=Console_Commands"
console_example_commands:
- ["players", "Show current players"]
- ["kick <name>", "Kick the player"]
- ["num_ais <num>", "Set the number of AIs for games with more than one player"]
- ["limit_rounds", "End the match after this number of rounds"]
- name: bzflag
title: "Bzflag"
description: "Drive around in a tank that can jump, trying to shoot your opponents while dodging their bullets."
download_link: "https://www.bzflag.org/downloads/"
has_console: true
console_output_coloring: "Terminal"
console_initial_command: "/playerlist"
console_help_link: "https://wiki.bzflag.org/Slash_Commands"
console_example_commands:
- ["/playerlist", "Display list of players"]
- ["/kick <name>", "Kick the player"]
- ["/gameover", "end the current game"]
- name: hedgewars
title: "Hedgewars"
description: "Worms-like game where your team of hedgehogs needs to destroy the other teams using the ludicrous arsenal at their disposal."
download_link: "https://www.hedgewars.org/download.html"
- name: lix
title: "Lix"
description: "Lemmings-like game where you need to guide your little people to safety despite their best efforts of wandering into things that will kill them."
download_link: "https://github.com/SimonN/LixD#get-lix"
- name: mindustry
title: "Mindustry"
description: "A building and tower defence game where you build up an industry and defences against ever larger waves of enemies."
download_link: "https://github.com/Anuken/Mindustry/releases"
has_console: true
console_output_coloring: "Terminal"
console_initial_command: "status"
console_help_link: "https://mindustrygame.github.io/wiki/servers/#dedicated-server-commands"
console_example_commands:
- ["status", "Display server status"]
- ["runwave", "Trigger the next wave"]
- ["kick <name>", "Kick a person by name"]
- name: odamex
title: "Odamex"
description: "Multiplayer-focused DOOM engine that allows deathmatch, coop, and capture the flag mode. Here we are using the Freedom assets so you don't need a copy of the original game to play."
download_link: "https://odamex.net/"
- name: openhv
title: "OpenHV"
description: "Real-time strategy game where you mine resources and build units to attack and defend."
download_link: "https://github.com/OpenHV/OpenHV/releases"
- name: openspades
title: "OpenSpades"
description: "Mix between a first person shooter and Minecraft. Build defence structures, dig many tunnels or go on the offensive."
warning: "uses potentially non-open assets. Fix is <a href=\"help_openspades.html#nonfreeassets\"> here</a>."
download_link: "https://github.com/yvt/openspades/releases"
- name: shatteredparadise
title: "Shattered Paradise"
description: "Real-time strategy game where you mine resources and build units to attack and defend."
download_link: "https://github.com/ABrandau/Shattered-Paradise-SDK/releases"
- name: opensoldat
title: "OpenSoldat"
description: "Fast-paced 2D side-scrolling shooter game where you have a big gun and a jetpack."
download_link: "https://github.com/opensoldat/opensoldat/releases/"
- name: supertuxkart
title: "SuperTuxKart"
description: "Kart racing game where you can use the various power-ups to give yourself a boost of hinder your opponents."
download_link: "https://supertuxkart.net/Download"
- name: supertuxparty
title: "Super Tux Party"
description: "Turn-based party game where you challenge other player in real-time mini games."
download_link: "https://supertux.party/download/latest/"
- name: teeworlds
title: "Teeworlds"
description: "Fast-paced 2D side-scrolling shooter game where you have a big gun and a grappling hook."
download_link: "https://www.teeworlds.com/?page=downloads"
has_console: true
console_output_coloring: "Terminal"
console_initial_command: "status"
console_help_link: "https://www.teeworlds.com/?page=docs&wiki=server_commands"
console_example_commands:
- ["status", "Display server status"]
- ["change_map <mapname>", "Switch to <mapname>"]
- ["kick <id>", "Kick a person by id"]
- name: ufoai
title: "UFO: Alien Invasion"
description: "Squad-based turn-based tactical strategy game in the tradition of the old X-COM PC games"
download_link: "https://ufoai.org/wiki/Download"
- name: unvanquished
title: "Unvanquished"
description: "First-person shooter of aliens vs humans. There are several classes and it's possible to build structures."
download_link: "https://unvanquished.net/download/"
has_console: true
console_output_coloring: "Daemoned"
console_initial_command: "/status"
console_help_link: "https://wiki.unvanquished.net/wiki/Server/Running#Commands"
console_example_commands:
- ["/listplayers", "List current players in-game"]
- ["/kick <name>", "Kick the player"]
- ["/nextmap", "Go to the next map in the rotation"]
- name: xonotic
title: "Xonotic"
description: "First-person shooter where players compete in a 3D world. It features Battle Royale mode."
download_link: "https://xonotic.org/download/"
has_console: true
console_output_coloring: "Daemoned"
console_initial_command: "who"
console_help_link: "https://gitlab.com/xonotic/xonotic/-/wikis/Basic-server-configuration"
console_example_commands:
- ["who", "List current players in-game"]
- ["kick <name>", "Kick the player"]
- ["gotomap <name>", "Go to the specified map"]

View File

@ -0,0 +1,29 @@
<h4>{{ event.date | date: "%A %d %B %Y, %H:%M %Z" }}</h4>
<script>
var event_year = {{ event.date | date: "%Y" }};
var event_month = {{ event.date | date: "%M" }};
var event_day = {{ event.date | date: "%M" }};
var d = new Date(Date.UTC(event_year, event_month, event_day, {{ event.date | date: "%H" }}, {{ event.date | date: "%M" }}));
document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")
</script>
{% if event.intro %}
<p>{{ event.intro }}</p>
{% endif %}
<ul>
{% for game in event.games %}
{% assign time = game.time | split: ":"%}
{% if game.time %}
<li>{{ game.time }}UTC {{ game.title }}<script>d=new Date(Date.UTC(event_year, event_month, event_day, {{ time | slice: 0 }}, {{ time | slice: 1 }}));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
{% else %}
<li>{{ game.title }}</li>
{% endif %}
{% if game.extras %}
<ul>
{% for extra in game.extras %}
<li>{{ extra }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</ul>
{{ event.content }}

View File

@ -0,0 +1,27 @@
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by {{ site.content.hosted_by_name }}</span>
</a>
<ul class="nav nav-pills">
{% if layout.nav_pill %}
{% assign nav_pill = layout.nav_pill %}
{% else %}
{% assign nav_pill = page.nav_pill %}
{% endif %}
{% case nav_pill %}
{% when "tournament", "schedule", "help", "admin" %}
{% assign home = false %}
{% else %}
{% assign home = true %}
{% endcase %}
<li class="nav-item"><a href="index.html" class="nav-link {% if home %}active{% endif %}" aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link {% if nav_pill == "tournament" %}active{% endif %}">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link {% if nav_pill == "schedule" %}active{% endif %}">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link {% if nav_pill == "help" %}active{% endif %}">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link {% if nav_pill == "admin" %}active{% endif %}">Admin</a></li>
</ul>
</header>
</nav>

View File

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="js/serverstats.js"></script>
</head>
<body>
{% include nav.html %}
<div class="container">
<div class="row">
<div class="col-md-8">
{{ content }}
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
{% if site.content.offline %}
{% include offline.html %}
{% else %}
{% include online.html %}
{% endif %}
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
---
layout: default
nav_pill: help
---
<link rel="stylesheet" href="assets/css/help.css">
{% assign game = site.data.games | where_exp: "item", "item.name == page.game" | first %}
<h1>{{ game.title }}</h1>
<p>{{ game.description }}</p>
<img src="assets/img/{{ game.name }}.png" alt="Screenshot of {{ game.title }}">
<h2>Getting the game</h2>
<div class="download"><a href="{{ game.download_link }}">DOWNLOAD</a></div>
{{ content }}
<p></p>

25
website/_sass/base.scss Normal file
View File

@ -0,0 +1,25 @@
/*
$primary: #89A55D;
body {
width: 100%;
height: 100vh;
margin: 0;
padding: 0;
font-family: Arial, system-ui;
}
main > div {
height: 10rem;
margin: 2rem;
border: darkgrey 1px solid;
border-radius: 8px;
overflow: hidden;
}
h1 {
text-align: center;
color: $primary;
background-color: $secondary;
}
*/

56
website/_site/admin.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link ">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link active">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/terminal.css">
<script src="assets/js/terminalcolors.js"></script>
<script src="js/consoles.js"></script>
<div id="console-div">
<noscript>The admin console needs JavaScript to function since it uses web sockets to connect to the controller processes</noscript>
</div>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 105 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

View File

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

View File

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

View File

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 126 KiB

View File

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

View File

@ -0,0 +1,58 @@
// Collection of scripts to deploy a server hosting several open-source games
// Copyright (C) 2022 Jarno van der Kolk
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
let heightScale = d3.scaleLinear()
.domain([0,100])
.range([100,0]);
let timeScale = d3.scaleLinear()
.domain([0,60])
.range([5,305]);
function updateGraph(data, svgid, property_class, property) {
d3.select(svgid)
.selectAll('line')
.data(data, function(d) {return d.t})
.join(
function(enter) {
return enter
.append('line')
.attr('x1', function(d,i){return timeScale(i)})
.attr('x2', function(d,i){return timeScale(i)})
.attr('y1', function(d,i){return heightScale(0)})
.attr('y2', 100)
.attr('class', property_class);
},
function(update) {
return update
},
function(exit) {
return exit.remove();
}
)
.transition()
.ease(d3.easeLinear)
.duration(5000)
.attr('x1', function(d,i){return timeScale(i-1)})
.attr('x2', function(d,i){return timeScale(i-1)})
.attr('y1', function(d,i){return heightScale(d[property])})
}
function update() {
d3.json('http://192.168.122.44/monitoring/all').then(function(data){
updateGraph(data, '#memgraph', 'mem', 'm');
updateGraph(data, '#cpugraph', 'cpu', 'c');
});
}

View File

@ -12,7 +12,7 @@
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Shell command can have control codes. Some of these mean colours.
function convertTerminalCodeToHtml(line) {

158
website/_site/help.html Normal file
View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>Help</h1>
<h3>Communication</h3>
<h4>How to use Mumble</h4>
<p>
Mumble is free and open source software that can be download from
<a href="https://www.mumble.info/downloads/">Mumble.info</a>. It is
a low-latency voice client that lets you talk to your fellow
players using your microphone.
</p>
<p>
After installation, you will need to configure your audio first. The
helpful audio wizard will guide your through the settings.
</p>
<p>
Once that is all set up, you can connect to the Mumble server by
using the mumble link from the <a href="index.html">Home</a> page.
You should be able to connect and see something like this:
</p>
<img src="assets/img/mumble_interface.png" alt="Screenshot of the Mumble interface">
<p>
By default, you will be place in the Root, but you can double-click
on any channel to join. You will most likely want to go to the Lobby,
however, you can see which channels the other people hang out in. Note
that there will likely only be people here during the actual event.
</p>
<h4>How to use Matrix/Element</h4>
<p>
For text-based chatting, there is the Matrix channel. Matrix is a chat
protocol (amongst other things). To use the Matrix protocol, you will
need a client to connect to it. One of the most popular ones is called
Element which you can either download from
<a href="https://element.io/get-started">element.io</a> or just run in
your browser. If you don't have an account yet, you will be able to
create one.
</p>
<p>
Once you are logged in, you can follow the Matrix link on the
<a href="index.html">Home</a> page. It will take you to a page
asking about the application you want to use. If you downloaded
Element before, click on the Continue button for that. You should
be able to connect and see something like this:
</p>
<img src="assets/img/element_interface.png" alt="Screenshot of the Element interface">
<p>There are usually people here, even outside of the event.</p>
<h4>How to use XMPP/Movim</h4>
<p>
Another option for text-based chatting is XMPP. It's another protocol,
like Matrix but you can use it to join the same chat channel as above.
The two protocols are "bridged" which means that users can simply
talk to eachother despite using different protocols.
</p>
<p>
Like the Matrix protocol, there are also many XMPP chat clients
available. One of the easier ones it <a href="https://movim.eu/">Movim.eu</a>.
It allows you to easily create and account if you don't already have
an XMPP account.
</p>
<p>
From there, you can start the web-based client at <a href="https://mov.im">mov.im</a>.
After logging in, choose &quot;chats&quot; and then click on the big plus symbol.
</p>
<img src="assets/img/movim_interface.png" alt="Screenshot of the Mov.im interface">
<p>
In the new screen that pops up, you will find &quot;Join a chatroom&quot;
and then &quot;Join a custom chatroom&quot;. Paste the room name from
the link on the <a href="index.html">Home</a> page. You can type anything
you want in the Name field. That's only visible for you as the name
of this room.
</p>
<img src="assets/img/movim_interface2.png" alt="Screenshot of the Mov.im interface">
<p>There are usually people here, even outside of the event.</p>
<h3>Games</h3>
<p>Each game has their own separate help page</p>
<ul>
<li><a href="help_armagetron.html">Armagetron Advanced</a></li>
<li><a href="help_bzflag.html">Bzflag</a></li>
<li><a href="help_hedgewars.html">Hedgewars</a></li>
<li><a href="help_lix.html">Lix</a></li>
<li><a href="help_mindustry.html">Mindustry</a></li>
<li><a href="help_odamex.html">Odamex</a></li>
<li><a href="help_openhv.html">OpenHV</a></li>
<li><a href="help_openspades.html">OpenSpades</a></li>
<li><a href="help_shatteredparadise.html">Shattered Paradise</a></li>
<li><a href="help_opensoldat.html">OpenSoldat</a></li>
<li><a href="help_supertuxkart.html">SuperTuxKart</a></li>
<li><a href="help_supertuxparty.html">Super Tux Party</a></li>
<li><a href="help_teeworlds.html">Teeworlds</a></li>
<li><a href="help_ufoai.html">UFO: Alien Invasion</a></li>
<li><a href="help_unvanquished.html">Unvanquished</a></li>
<li><a href="help_xonotic.html">Xonotic</a></li>
</ul>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Armagetron Advanced</h1>
<p>Drive your lightcycle and leave a lightwall behind you. Survive as long as you can and try to make other run into walls.</p>
<img src="assets/img/armagetron.png" alt="Screenshot of Armagetron Advanced">
<h2>Getting the game</h2>
<div class="download"><a href="http://www.armagetronad.org/downloads.php">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>Press the down arrow key to brake</li>
<li>Drive as close as you can to a wall to get a speed boost</li>
</ul>
<h2>Connecting</h2>
<p>
Use the arrow keys to nagivate to Play Game and press &lt;Enter&gt;.
Then go to Multiplayer and then to Custom Connect.
</p>
<p>
Enter 192.168.122.44 in the Address field and keep the port number at 4534.
Navigate down to Connect to Server to join.
</p>
<p>You should now be connected.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Bzflag</h1>
<p>Drive around in a tank that can jump, trying to shoot your opponents while dodging their bullets.</p>
<img src="assets/img/bzflag.png" alt="Screenshot of Bzflag">
<h2>Getting the game</h2>
<div class="download"><a href="https://www.bzflag.org/downloads/">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>Jump using the &lt;Tab&gt; key</li>
<li>Shoot using the &lt;Enter&gt; key</li>
<li>You stay still by placing the mouse cursor on the centre of the screen. Placing it slightly above will slowly move forward and all the way at the top means maximum speed. The same for turning left or right or reversing.</li>
</ul>
<h2>Connecting</h2>
<p>Use the arrow keys to nagivate to Join Game and press &lt;Enter&gt;.</p>
<p>
Move down to Server and type 192.168.122.44 and keep the port number at 5154.
You can also set your Callsign here. This is how other players will see
your name. Then move up to Connect and press &lt;Enter&gt;.</p>
<img src="assets/img/help_bzflag.png" alt="Server join screen for Bzflag" class="img-fluid">
<p>You should now be connected.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Hedgewars</h1>
<p>Worms-like game where your team of hedgehogs needs to destroy the other teams using the ludicrous arsenal at their disposal.</p>
<img src="assets/img/hedgewars.png" alt="Screenshot of Hedgewars">
<h2>Getting the game</h2>
<div class="download"><a href="https://www.hedgewars.org/download.html">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>Use the right mouse button to open the weapons menu.</li>
<li>
Use the arrow keys to move around. You can jump with &lt;Enter&gt;
or do a long jump &lt;Backspace&gt;.
</li>
<li>
Hold down &lt;Space&gt; to shoot. The longer you keep it pressed,
the further you will shoot.
</li>
</ul>
<h2>Connecting</h2>
<p>
To set your in-game name, click on the wrench icon at the bottom-right.
You can set your name under the Network tab. A password is not necessary.
</p>
<p>
Go back to the main menu by clicking on the red arrow at the bottom
left of the screen and click the globe on the right and choose
&quot;Play local network game&quot;. A new screen will open up.
</p>
<p>
At the bottom, there is a button called &quot;Specify addres&quot;.
Fill in 192.168.122.44 for the host and leave the port number at 46631.
</p>
<img src="assets/img/help_hedgewars.png" alt="Connection settings for Hedgewars" class="img-fluid">
<p>
You should now see a list of rooms. There should be one room you can join.
</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Lix</h1>
<p>Lemmings-like game where you need to guide your little people to safety despite their best efforts of wandering into things that will kill them.</p>
<img src="assets/img/lix.png" alt="Screenshot of Lix">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/SimonN/LixD#get-lix">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
</ul>
<h2>Connecting</h2>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Mindustry</h1>
<p>A building and tower defence game where you build up an industry and defences against ever larger waves of enemies.</p>
<img src="assets/img/mindustry.png" alt="Screenshot of Mindustry">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/Anuken/Mindustry/releases">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>
There is lots of stuff to build, so at first things will be
daunting, but worry not, the mode is co-op so you are all
working together.
</li>
<li>Move around with the WASD keys.</li>
<li>Use the left mouse button to shoot or build. It will build if you select something from the menu in the bottom right, otherwise it will shoot.</li>
</ul>
<h2>Connecting</h2>
<p>
From the main menu choose &quot;Play&quot; and then &quot;Join
Game&quot;. You will be able to set you in-game name here.
</p>
<p>To join the server, click on &quot;Add Server&quot; and type in 192.168.122.44. When you press Ok, it will be added under &quot;Remote Servers&quot;.</p>
<img src="assets/img/help_mindustry.png" alt="The join screen in Mindustry with the server added" class="img-fluid">
<p>You can then click on the server name to join.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Odamex</h1>
<p>Multiplayer-focused DOOM engine that allows deathmatch, coop, and capture the flag mode. Here we are using the Freedom assets so you don't need a copy of the original game to play.</p>
<img src="assets/img/odamex.png" alt="Screenshot of Odamex">
<h2>Getting the game</h2>
<div class="download"><a href="https://odamex.net/">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>Use &lt;SPACE&gt; to jump</li>
<li>Use E to open doors or to respawn if dead</li>
</ul>
<h2>Connecting</h2>
<p>While Odamex does have a launcher, if requires that you have DOOM assets available locally. It won't launch the game without it, which means you either need the original game data of open assets such as Freedoom.</p>
<p>However, if you connect to the game server directly, odamex will download the required assets automatically from the server.</p>
<p>From the terminal, type:</p>
<p><tt>odamex -connect 192.168.122.44 +set cl_name "YourName"</tt></p>
<p>Of course, substitute &quot;YourName&quot; with the in-game name you want.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>OpenHV</h1>
<p>Real-time strategy game where you mine resources and build units to attack and defend.</p>
<img src="assets/img/openhv.png" alt="Screenshot of OpenHV">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/OpenHV/OpenHV/releases">DOWNLOAD</a></div>
<p>You will have to expand &quot;Assets&quot; to see the download links.</p>
<h2>Tips</h2>
<ul>
<li>
The menu on the right lets you build buildings and units. The first
things you need to build are a Power Plant (gives you power), a
Module (builds units) and Storage (harvests resources).
</li>
<li>
When you build your Storage, there will be a Miner that comes with
it. Use this to harvest resources. Resources will look like a couple
of ingots.
</li>
</ul>
<h2>Connecting</h2>
<p>
To set your in-game name, click on &quot;Settings&quot;. You'll be
able to set your name under &quot;Player Name&quot;.
</p>
<p>
From the main menu, click on &quot;Multiplayer&quot; and then click
on &quot;Direct IP&quot;. Fill in 192.168.122.44 and keep the port at
1234. Then click on &quot;Join&quot;
</p>
<img src="assets/img/help_openhv.png" alt="The join screen in OpenHV" class="img-fluid">
<p>You will be placed in the lobby with the other players</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -2,41 +2,45 @@
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Game server</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/serverstats.css">
<link rel="stylesheet" href="css/help.css">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="js/serverstats.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by HOSTEDBYNAME</span>
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link" aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link">Schedule</a></li>
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link">Admin</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>Soldat</h1>
<link rel="stylesheet" href="assets/css/help.css">
<h1>OpenSoldat</h1>
<p>Fast-paced 2D side-scrolling shooter game where you have a big gun and a jetpack.</p>
<img src="img/soldat.png" alt="Screenshot of Soldat">
<img src="assets/img/opensoldat.png" alt="Screenshot of OpenSoldat">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/opensoldat/opensoldat/releases/">DOWNLOAD</a></div>
<p>The game does not have a GUI yet. You need to start it from the terminal/command prompt. When you do so, it will create a configs directory with a client.cfg file. You can add your settings to that.</p>
<p>The game does not have a GUI yet. You need to start it from the terminal/command prompt. When you do so, it will create a configs directory with a client.cfg file. You can add your settings to that.</p>
<p>The AppImage for Linux creates the config file in <tt>~/.config/share/Soldat/Soldat</tt> instead.</p>
<p>Things you might like to set:</p>
<ul>
@ -50,12 +54,19 @@
</ul>
<h2>Connecting</h2>
<p>Start Soldat by typing:</p>
<p><tt>./soldat -join DOMAINNAME</tt></p>
<p><tt>./soldat -join 192.168.122.44</tt></p>
<p>You should now be connected. If it doesn't work. Try to connect by IP address instead of domain name.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
SERVERSTATE
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>

View File

@ -0,0 +1,108 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>OpenSpades</h1>
<p>Mix between a first person shooter and Minecraft. Build defence structures, dig many tunnels or go on the offensive.</p>
<img src="assets/img/openspades.png" alt="Screenshot of OpenSpades">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/yvt/openspades/releases">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>
On joining, you will be asked to choose a team and a weapon. If
you change your mind during play, press L to get back to that
selection screen.
</li>
<li>
Use the scroll wheel to cycle between your weapons, the shovel
and the block. The shovel can destroy blocks, the block can build
walls
</li>
<li>
If you want to see a bigger map, press N. Press N again to make
the map go away again.
</li>
</ul>
<h2 id="nonfreeassets">Non-free assets</h2>
<p>
OpenSpades contains non-free assets that were copied from the original
Ace of Spades games. The creators of OpenSpades were unabled to contact
the authos, so these assets were never released under an open licence.
</p>
<p>
Fortunately, there is a drop-in replacement for these assets available.
All models have been recreated under a CC0 licence and the sound effects
have been replaced by mostly CC0 equivalents with a few exceptions that
are CC-BY.
</p>
<h3>Installation</h3>
<ul>
<li>Download the libre assets: <a href="https://github.com/DeathByDenim/openspades-free-pak/releases/download/latest/pak001-Free.pak">pak001-Free.pak</a></li>
<li>Find the location of pak000-Nonfree.pak for your OpenSpades installation. For example <tt>/usr/share/openspades/Resources/</tt></li>
<li>Copy the downloaded pak001-Free.pak to the same location.</li>
<li>Optionally, delete pak000-Nonfree.pak. It it no longer needed because pak001-Free.pak will overrule all of the content in pak000-Nonfree.pak.</li>
</ul>
<h2>Connecting</h2>
<p>
When you start the game you will immediately enter the server
browser. If you click on &quot;Setup&quot; at the bottom of the
screen, you can set your in-game name. Click on &quot;Back&quot;
to return to the server browser.
</p>
<p>
To connect to the server, type 192.168.122.44 in the input field at the
top and click on the &quot;Connect&quot; button to the right.
</p>
<img src="assets/img/help_openspades.png" alt="The join screen in OpenSpades" class="img-fluid">
<p></p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Shattered Paradise</h1>
<p>Real-time strategy game where you mine resources and build units to attack and defend.</p>
<img src="assets/img/shatteredparadise.png" alt="Screenshot of Shattered Paradise">
<h2>Getting the game</h2>
<div class="download"><a href="https://github.com/ABrandau/Shattered-Paradise-SDK/releases">DOWNLOAD</a></div>
<p>You will have to expand &quot;Assets&quot; to see the download links.</p>
<h2>Tips</h2>
<ul>
<li>
The menu on the right lets you build buildings and units. The first
things you need to build are a Power Plant (gives you power), a
Infantry building (builds units) and Storage (harvests resources).
</li>
<li>
When you build your Storage, there will be a Miner that comes with
it. Use this to harvest resources. Resources will look like a forest.
You can build more harvester from the vehicle building.
</li>
</ul>
<h2>Connecting</h2>
<p>
To set your in-game name, click on &quot;Settings&quot;. You'll be
able to set your name under &quot;Player Name&quot;.
</p>
<p>
From the main menu, click on &quot;Multiplayer&quot; and then click
on &quot;Direct IP&quot;. Fill in 192.168.122.44 and set the port at
12340. The standard port is 1234, but is already taken. Then click on &quot;Join&quot;
</p>
<img src="assets/img/help_shatteredparadise.png" alt="The join screen in Shattered Paradise" class="img-fluid">
<p>You will be placed in the lobby with the other players</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>SuperTuxKart</h1>
<p>Kart racing game where you can use the various power-ups to give yourself a boost of hinder your opponents.</p>
<img src="assets/img/supertuxkart.png" alt="Screenshot of SuperTuxKart">
<h2>Getting the game</h2>
<div class="download"><a href="https://supertuxkart.net/Download">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>Use the arrow keys to accelerate, brake, and steer.</li>
<li>Pick up presents to get items to use. Use &lt;Space*gt; to activate.</li>
<li>The blue bottle give you turbo. Use N to activate.</li>
<li>
Use V to grind in the corners and keep it pressed. Yellow sparks
will give you a speed boost. Red ones even more.
</li>
</ul>
<h2>Connecting</h2>
<p>
Click on the globe labelled &quot;Online&quot;. At the top, just
below the title, you can click the yellow button to set your in-game
name. You don't have to set a password.
</p>
<p>
To connect to out server, click on &quot;Enter server address&quot;.
Then type in 192.168.122.44 and click on &quot;OK&quot;.
</p>
<img src="assets/img/help_supertuxkart.png" alt="Entering the server address" class="img-fluid">
<p>
You will then be placed in the lobby of our game server and ready to go!
</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Super Tux Party</h1>
<p>Turn-based party game where you challenge other player in real-time mini games.</p>
<img src="assets/img/supertuxparty.png" alt="Screenshot of Super Tux Party">
<h2>Getting the game</h2>
<div class="download"><a href="https://supertux.party/download/latest/">DOWNLOAD</a></div>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Teeworlds</h1>
<p>Fast-paced 2D side-scrolling shooter game where you have a big gun and a grappling hook.</p>
<img src="assets/img/teeworlds.png" alt="Screenshot of Teeworlds">
<h2>Getting the game</h2>
<div class="download"><a href="https://www.teeworlds.com/?page=downloads">DOWNLOAD</a></div>
<p>Click the name of your OS on the left of the most recent version. Extract the file wherever you like and start playing.</p>
<h2>Tips</h2>
<ul>
<li>You can double jump by pressing &lt;Space&gt; a second time.</li>
<li>Use your grappling hook by using the right-mouse button.</li>
</ul>
<h2>Connecting</h2>
<p>Click on Settings and choose the Player tab. You can fill in your name so we can recognize you when you join the server. The Tee tab will also let you customize your appearance.</p>
<img src="assets/img/help_teeworlds_name.png" alt="Teeworlds setting for player name" class="img-fluid">
<p>To connect to the server, got back to the main menu and click Play.</p>
<p>At the bottom of the screen you can fill in the name of the server in the Host address field. Type 192.168.122.44 and press &lt;Enter&gt; or click Connect.</p>
<img src="assets/img/help_teeworlds_server.png" alt="Joining the Teeworlds server" class="img-fluid">
<p>You should now be connected.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>UFO: Alien Invasion</h1>
<p>Squad-based turn-based tactical strategy game in the tradition of the old X-COM PC games</p>
<img src="assets/img/ufoai.png" alt="Screenshot of UFO: Alien Invasion">
<h2>Getting the game</h2>
<div class="download"><a href="https://ufoai.org/wiki/Download">DOWNLOAD</a></div>
<p>The download page only has binaries for Linux and Windows. We compiled the macOS version ourselves. Download: <a href="https://www.jottacloud.com/s/2277232ff2022034678bafb62b3c9b7ef3a">ufoai-macos.tar.bz2</a></p>
<p>Then open the Terminal and type the following:</p>
<pre>
tar xf ufoai-macos.tar.bz2
cd dist
./ufo
</pre>
<p>To get rid of the graphical glitches disable &quot;GLSL Shaders&quot; under Options → Video → Advanced → OpenGL Setting</p>
<h2>Tips</h2>
<ul>
<li>Click on a squad member and then click where you want them to move. The target box will be green if you can make it in that turn. Walking is aborted if an enemy is spotted.</li>
<li>To shoot, click on the target button at the bottom left, choose what weapon mode you want to use and then click on your target.</li>
<li>Everything costs TUI. Actions will be greyed out of you don't have enough left for the current turn.</li>
</ul>
<h2>Connecting</h2>
<p>Click on Multiplayer. You'll need to create a team before you can do anything, so click on Team and then Generate New Team and choose the type you want.</p>
<img src="assets/img/help_ufoai.png" alt="Generating a new team" class="img-fluid">
<p>Click no the done button at the very bottom right if you are happy with it. You'll return to the multiplayer menu</p>
<p>Click on Join and type 192.168.122.44 in the field for Connect to IP and click Connect.</p>
<img src="assets/img/help_ufoai_connect.png" alt="Joining the UFO:AI server" class="img-fluid">
<p>You'll see a summary of the server. Click on Connect to connect.</p>
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Unvanquished</h1>
<p>First-person shooter of aliens vs humans. There are several classes and it's possible to build structures.</p>
<img src="assets/img/unvanquished.png" alt="Screenshot of Unvanquished">
<h2>Getting the game</h2>
<div class="download"><a href="https://unvanquished.net/download/">DOWNLOAD</a></div>
<h2>Tips</h2>
<ul>
<li>
As humans you can buy upgraded weapons at the armory. Get close
and press Q to activate. You can also become an engineer and build
defences or repair stuff.
</li>
<li>
As aliens you can evolve anywhere by pressing Q. They also have an
engineer class that can build structures.
</li>
</ul>
<h2>Connecting</h2>
<p>Set your in-game name by clicking on &quot;Player&quot; under &quot;Options&quot;.</p>
<p>To connect to the server, press ~ to open the console and type &quot;connect 192.168.122.44&quot;</p>
<img src="assets/img/help_unvanquished.png" alt="In-game terminal connecting to the game server" class="img-fluid">
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link active">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<link rel="stylesheet" href="assets/css/help.css">
<h1>Xonotic</h1>
<p>First-person shooter where players compete in a 3D world. It features Battle Royale mode.</p>
<img src="assets/img/xonotic.png" alt="Screenshot of Xonotic">
<h2>Getting the game</h2>
<div class="download"><a href="https://xonotic.org/download/">DOWNLOAD</a></div>
<p>Note that the download has the executable for all OS inside of it.</p>
<h2>Tips</h2>
<ul>
<li>
Always keep moving and jumping to make yourself harder to hit.
</li>
<li>
Weapons often has a secondary action. Use the right-mouse button to use it.
</li>
<li>
Gather as much health and armour as you can.
</li>
</ul>
<h2>Connecting</h2>
<p>
Go to &quot;Multiplayer&quot; and click on the &quot;Profile&quot;
button to set your in-game name.
</p>
<p>
To connect to the game server, click on the &quot;Servers&quot;
button. At the bottom of the screen you can fill in 192.168.122.44 in
the Address field. Then press Join.
</p>
<img src="assets/img/help_xonotic.png" alt="Server name input in Xonotic" class="img-fluid">
<p></p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

384
website/_site/icon.svg Normal file
View File

@ -0,0 +1,384 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="6.6145835mm"
height="6.6145835mm"
viewBox="0 0 6.6145835 6.6145835"
version="1.1"
id="svg100451"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
sodipodi:docname="blackmage.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview100453"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="22.627417"
inkscape:cx="4.839262"
inkscape:cy="13.523417"
inkscape:window-width="1540"
inkscape:window-height="862"
inkscape:window-x="722"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="layer3" />
<defs
id="defs100448" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Laag 2"
style="display:inline;opacity:1">
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107655"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="1.5875" />
<rect
style="fill:#000000;stroke-width:0.648093"
id="rect107737"
width="1.5875"
height="0.26458332"
x="1.3229166"
y="1.3229166" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107739"
width="0.52916664"
height="0.26458332"
x="2.9104166"
y="1.0583333" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107741"
width="0.52916664"
height="0.26458332"
x="3.4395833"
y="0.79374993" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107743"
width="0.26458332"
height="0.26458332"
x="3.96875"
y="0.52916658" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107745"
width="0.52916664"
height="0.26458332"
x="4.2333331"
y="0.26458323" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107747"
width="0.52916664"
height="0.26458332"
x="4.7624998"
y="-1.1920929e-07" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107749"
width="0.26458332"
height="0.52916664"
x="5.2916665"
y="0.2645832" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107751"
width="0.26458332"
height="0.52916664"
x="5.0270834"
y="0.79374981" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect107753"
width="0.26458332"
height="0.79374999"
x="4.7625003"
y="1.3229165" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107755"
width="0.26458332"
height="0.26458332"
x="4.4979172"
y="2.1166666" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107757"
width="0.26458332"
height="0.26458332"
x="4.7625003"
y="2.3812499" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107759"
width="0.26458332"
height="0.26458332"
x="5.0270834"
y="2.6458333" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107761"
width="0.26458332"
height="0.26458332"
x="5.2916665"
y="2.9104166" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107763"
width="0.26458332"
height="0.26458332"
x="5.5562496"
y="3.175" />
<path
id="rect142063"
style="fill:#39bdff;stroke-width:0.264583"
d="m 1.5875002,3.4395833 h 0.2645831 l 3e-7,-0.2645833 h 3.1749993 v 0.2645833 l 5e-7,0.5291667 H 4.7625003 V 4.2333331 H 5.0270834 V 5.2916665 H 4.7625003 v 0.7937498 h 0.2645831 l 2e-7,0.2645829 0.2645829,2e-7 V 6.6145825 H 1.3229166 V 6.3499994 l 0.2645833,-10e-8 z"
sodipodi:nodetypes="cccccccccccccccccccc" />
<path
id="rect107765"
style="stroke-width:0.374177"
d="M 5.0270829,3.4395833 H 5.5562496 V 3.7041666 H 5.2916663 l 4e-7,0.2645834 H 5.0270833 l -4e-7,-0.2645834 z"
sodipodi:nodetypes="cccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107866"
width="0.26458332"
height="0.26458332"
x="4.7624998"
y="3.175" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107868"
width="0.26458332"
height="0.26458332"
x="1.3229166"
y="1.8520833" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108293"
width="0.26458332"
height="0.26458332"
x="4.7625003"
y="3.96875" />
<rect
style="fill:#000000;stroke-width:0.529166"
id="rect108295"
width="0.26458332"
height="1.0583333"
x="5.0270834"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect108297"
width="0.26458332"
height="0.79374999"
x="4.7625003"
y="5.2916665" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108299"
width="0.26458332"
height="0.26458332"
x="5.0270834"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108301"
width="0.26458332"
height="0.26458332"
x="4.4979172"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108303"
width="0.26458332"
height="0.26458332"
x="5.2916665"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect108305"
width="0.52916664"
height="0.26458332"
x="3.9687505"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108307"
width="0.26458332"
height="0.26458332"
x="3.7041674"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect108309"
width="0.26458332"
height="0.52916664"
x="3.439584"
y="5.5562496" />
<path
id="rect108311"
style="stroke-width:0.591626"
d="M 2.9104167,4.2333331 H 3.439584 V 5.5562497 H 3.1750007 l -0.5291674,3e-7 V 5.2916667 h 0.5291674 v -0.79375 h -0.264584 z"
sodipodi:nodetypes="cccccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108697"
width="0.26458332"
height="0.26458332"
x="2.6458333"
y="4.4979167" />
<path
id="rect108699"
style="stroke-width:0.458271"
d="m 1.5875,2.1166666 h 0.79375 v 0.2645833 l 0.79375,1e-7 v 0.2645833 h 0.79375 v 0.2645834 h 0.5291667 v 0.5291666 l 0.2645831,-3.9e-6 2e-7,0.2645873 H 3.175 V 3.96875 H 2.38125 V 3.7041667 H 1.8520833 V 3.4395833 H 2.1166667 V 3.175 H 1.8520833 V 2.6458333 h 0.2645834 l -3.6e-6,-0.2645875 -0.5291667,-10e-8 z"
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111069"
width="0.26458332"
height="0.26458332"
x="1.5875002"
y="3.175" />
<path
id="rect111071"
style="stroke-width:0.458271"
d="m 1.3229169,3.4395833 h 0.2645833 v 0.79375 H 1.0583333 V 3.96875 h 0.2645834 z"
sodipodi:nodetypes="ccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111609"
width="0.26458332"
height="0.26458332"
x="0.79374993"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111611"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="4.4979162" />
<path
id="rect111613"
style="stroke-width:0.648093"
d="m 1.3229166,4.7624993 0.5291667,7e-7 V 5.0270833 H 1.5875 l -10e-8,1.322916 H 1.3229166 Z"
sodipodi:nodetypes="ccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111923"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111925"
width="0.26458332"
height="0.52916664"
x="1.8520833"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111927"
width="0.26458332"
height="0.52916664"
x="1.8520833"
y="5.0270834" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111929"
width="0.26458332"
height="0.26458332"
x="2.1166666"
y="5.5562501" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111931"
width="0.26458332"
height="0.26458332"
x="2.3812499"
y="5.8208332" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111933"
width="0.52916664"
height="0.26458332"
x="2.6458333"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect111935"
width="0.79374999"
height="0.26458332"
x="3.439584"
y="3.96875" />
<path
id="rect147135"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 1.0583333,4.2333331 0.5291669,2e-7 -2e-7,-0.2645833 h 0.2645833 l 10e-8,0.7937497 H 1.3229167 l -10e-8,-0.2645835 H 1.0583333 Z"
sodipodi:nodetypes="ccccccccc" />
<path
id="path147866"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 2.3812497,4.7624996 0.5291669,2e-7 -2e-7,-0.2645833 h 0.2645833 l 1e-7,0.7937497 H 2.6458331 l -10e-8,-0.2645835 H 2.3812497 Z"
sodipodi:nodetypes="ccccccccc" />
<path
id="path151355"
style="fill:#ad7b00;fill-opacity:1;stroke-width:0.529166"
d="m 1.3229167,1.5875002 1.5874999,-2e-7 V 1.3229166 H 3.4395833 V 1.0583333 H 3.96875 V 0.79374993 H 4.2333331 V 0.52916658 H 4.7624998 V 0.26458323 l 0.5291667,-3e-8 v 0.52916661 l -0.2645762,-2e-8 -6.9e-6,0.52916671 H 4.7625003 V 2.1166666 H 4.4979172 V 2.3812499 H 4.7625003 V 2.6458333 H 5.0270834 V 2.9104166 H 5.2916665 V 3.175 H 5.5562496 V 3.4395833 H 5.0270829 V 3.175 H 4.4979167 V 2.9104167 H 3.96875 V 2.6458333 H 3.175 V 2.38125 l -0.79375,-1e-7 V 2.1166666 H 1.5875 V 1.8520833 H 1.3229167 Z"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" />
<path
id="path147872"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 1.3229167,1.5875002 1.5874999,-2e-7 V 1.3229166 H 3.4395833 V 1.0583333 H 3.96875 V 0.79374993 H 4.2333331 V 0.52916658 H 4.7624998 V 0.26458323 l 0.5291667,-3e-8 2e-7,0.26458347 H 5.0270833 l 7e-6,0.26458312 L 4.7625,0.79375 V 1.0583333 H 4.2333333 v 0.2645834 l -0.5238095,-0.00485 -0.00536,0.2694265 H 3.4395833 V 1.8520833 H 3.7041667 V 2.1166667 H 4.2333333 V 2.38125 h -0.79375 V 2.1166667 h -0.79375 V 1.8520833 H 1.3229167 Z"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccc" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.374177"
id="rect160539"
width="0.26458332"
height="0.52916664"
x="2.3812499"
y="2.6458333" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.187088"
id="rect160559"
width="0.26458332"
height="0.13229166"
x="3.175"
y="2.9104166" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.132291"
id="rect160561"
width="0.13229166"
height="0.13229166"
x="3.4395833"
y="3.0427082" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.132291"
id="rect160563"
width="0.13229166"
height="0.13229166"
x="3.0427084"
y="3.0427082" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

243
website/_site/index.html Normal file
View File

@ -0,0 +1,243 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link active" aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link ">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>About onFOSS-LAN</h1>
<p>
onFOSS-LAN is a online, "Free (as Freedom) and Open Source" LAN-Party
hosted by DeathByDenim. The goal is to get people together, enjoying the
art of computer games and having a great time in these days. The FOSS
community is a place of being open minded and acceptance to all
different kinds of people with the focus of fully transparent systems
and protecting individuals. So it does not matter if you are on Windows,
Mac or Linux and it is also NOT necessary to have a PC MASTERRACE setup
to run those games.
</p>
<p>This concept was originally started at <a href="https://onfoss.hribhrib.at/">hribhrib.at</a></p>
<h1>Next event</h1>
<h4>Saturday 17 December 2022, 14:00 UTC</h4>
<script>var zone = new Date().toLocaleTimeString('en-ca',{timeZoneName:'short'}).split(' ')[2];d=new Date("Sat, 17 Dec 2022 14:00:00 UTC");document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")</script>
<p>See <a href="schedule.html">schedule</a> for more information.</p>
<h1>Communication</h1>
<p>We use Mumble voice chat on <a href="mumble://hribhrib.at">mumble://hribhrib.at</a>. It is the main mode of cummunication during the event.</p>
<p>Matrix chat on <a href="https://matrix.to/&#35;/&#35;xmpp_onfoss_conference.hribhrib.at:matrix.org">#xmpp_onfoss_conference.hribhrib.at:matrix.org</a></p>
<p>XMPP chat on <a href="xmpp:onfoss@conference.hribhrib.at?join">onfoss@conference.hribhrib.at</a></p>
<p>See the <a href="help.html">help page</a> for more information on how to connect to these services.</p>
<h1>Games</h1>
<p>There are a few game servers running. To connect, simply start the game and connect to this domain. See also the <a href="help.html">Help</a> section for more information.</p>
<table class="table">
<tbody>
<tr>
<td><a href="help_armagetron.html"><img src="assets/img/armagetron.png" height="64" alt="Tiny screenshot of Armagetron Advanced"></a></td>
<td>Armagetron Advanced</td>
<td>
Drive your lightcycle and leave a lightwall behind you. Survive as long as you can and try to make other run into walls.
</td>
<td><a href="help_armagetron.html">More info</a></td>
</tr>
<tr>
<td><a href="help_bzflag.html"><img src="assets/img/bzflag.png" height="64" alt="Tiny screenshot of Bzflag"></a></td>
<td>Bzflag</td>
<td>
Drive around in a tank that can jump, trying to shoot your opponents while dodging their bullets.
</td>
<td><a href="help_bzflag.html">More info</a></td>
</tr>
<tr>
<td><a href="help_hedgewars.html"><img src="assets/img/hedgewars.png" height="64" alt="Tiny screenshot of Hedgewars"></a></td>
<td>Hedgewars</td>
<td>
Worms-like game where your team of hedgehogs needs to destroy the other teams using the ludicrous arsenal at their disposal.
</td>
<td><a href="help_hedgewars.html">More info</a></td>
</tr>
<tr>
<td><a href="help_lix.html"><img src="assets/img/lix.png" height="64" alt="Tiny screenshot of Lix"></a></td>
<td>Lix</td>
<td>
Lemmings-like game where you need to guide your little people to safety despite their best efforts of wandering into things that will kill them.
</td>
<td><a href="help_lix.html">More info</a></td>
</tr>
<tr>
<td><a href="help_mindustry.html"><img src="assets/img/mindustry.png" height="64" alt="Tiny screenshot of Mindustry"></a></td>
<td>Mindustry</td>
<td>
A building and tower defence game where you build up an industry and defences against ever larger waves of enemies.
</td>
<td><a href="help_mindustry.html">More info</a></td>
</tr>
<tr>
<td><a href="help_odamex.html"><img src="assets/img/odamex.png" height="64" alt="Tiny screenshot of Odamex"></a></td>
<td>Odamex</td>
<td>
Multiplayer-focused DOOM engine that allows deathmatch, coop, and capture the flag mode. Here we are using the Freedom assets so you don't need a copy of the original game to play.
</td>
<td><a href="help_odamex.html">More info</a></td>
</tr>
<tr>
<td><a href="help_openhv.html"><img src="assets/img/openhv.png" height="64" alt="Tiny screenshot of OpenHV"></a></td>
<td>OpenHV</td>
<td>
Real-time strategy game where you mine resources and build units to attack and defend.
</td>
<td><a href="help_openhv.html">More info</a></td>
</tr>
<tr>
<td><a href="help_openspades.html"><img src="assets/img/openspades.png" height="64" alt="Tiny screenshot of OpenSpades"></a></td>
<td>OpenSpades</td>
<td>
Mix between a first person shooter and Minecraft. Build defence structures, dig many tunnels or go on the offensive.
<br><mark>Warning:</mark> uses potentially non-open assets. Fix is <a href="help_openspades.html#nonfreeassets"> here</a>.
</td>
<td><a href="help_openspades.html">More info</a></td>
</tr>
<tr>
<td><a href="help_shatteredparadise.html"><img src="assets/img/shatteredparadise.png" height="64" alt="Tiny screenshot of Shattered Paradise"></a></td>
<td>Shattered Paradise</td>
<td>
Real-time strategy game where you mine resources and build units to attack and defend.
</td>
<td><a href="help_shatteredparadise.html">More info</a></td>
</tr>
<tr>
<td><a href="help_opensoldat.html"><img src="assets/img/opensoldat.png" height="64" alt="Tiny screenshot of OpenSoldat"></a></td>
<td>OpenSoldat</td>
<td>
Fast-paced 2D side-scrolling shooter game where you have a big gun and a jetpack.
</td>
<td><a href="help_opensoldat.html">More info</a></td>
</tr>
<tr>
<td><a href="help_supertuxkart.html"><img src="assets/img/supertuxkart.png" height="64" alt="Tiny screenshot of SuperTuxKart"></a></td>
<td>SuperTuxKart</td>
<td>
Kart racing game where you can use the various power-ups to give yourself a boost of hinder your opponents.
</td>
<td><a href="help_supertuxkart.html">More info</a></td>
</tr>
<tr>
<td><a href="help_supertuxparty.html"><img src="assets/img/supertuxparty.png" height="64" alt="Tiny screenshot of Super Tux Party"></a></td>
<td>Super Tux Party</td>
<td>
Turn-based party game where you challenge other player in real-time mini games.
</td>
<td><a href="help_supertuxparty.html">More info</a></td>
</tr>
<tr>
<td><a href="help_teeworlds.html"><img src="assets/img/teeworlds.png" height="64" alt="Tiny screenshot of Teeworlds"></a></td>
<td>Teeworlds</td>
<td>
Fast-paced 2D side-scrolling shooter game where you have a big gun and a grappling hook.
</td>
<td><a href="help_teeworlds.html">More info</a></td>
</tr>
<tr>
<td><a href="help_ufoai.html"><img src="assets/img/ufoai.png" height="64" alt="Tiny screenshot of UFO: Alien Invasion"></a></td>
<td>UFO: Alien Invasion</td>
<td>
Squad-based turn-based tactical strategy game in the tradition of the old X-COM PC games
</td>
<td><a href="help_ufoai.html">More info</a></td>
</tr>
<tr>
<td><a href="help_unvanquished.html"><img src="assets/img/unvanquished.png" height="64" alt="Tiny screenshot of Unvanquished"></a></td>
<td>Unvanquished</td>
<td>
First-person shooter of aliens vs humans. There are several classes and it's possible to build structures.
</td>
<td><a href="help_unvanquished.html">More info</a></td>
</tr>
<tr>
<td><a href="help_xonotic.html"><img src="assets/img/xonotic.png" height="64" alt="Tiny screenshot of Xonotic"></a></td>
<td>Xonotic</td>
<td>
First-person shooter where players compete in a 3D world. It features Battle Royale mode.
</td>
<td><a href="help_xonotic.html">More info</a></td>
</tr>
</tbody>
</table>
<p>Enjoy!</p>
<h1>Code</h1>
<p>Code for setting up server is on <a href="https://git.libregaming.org/DeathByDenim/gameserver">git.libregaming.org</a> and is licensed under the AGPLv3 or later.</p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,198 @@
// Collection of scripts to deploy a server hosting several open-source games
// Copyright (C) 2022 Jarno van der Kolk
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
function createConsole(root, game_name, game_title, text_colour_function, initial_command, help_url, tooltip) {
const div_card = document.createElement('div');
const div_card_header = document.createElement('div');
const h5 = document.createElement('h5');
const card_button = document.createElement('button');
const div_collapse = document.createElement('div');
const div_card_body = document.createElement('div');
const header = document.createElement('h4');
const output = document.createElement('div');
const output_text = document.createElement('p');
const input = document.createElement('form');
const input_text = document.createElement('input');
const input_submit = document.createElement('button');
const input_help = document.createElement('button');
div_card.className = "card";
div_card_header.className = "card-header";
h5.className = "mb-0";
card_button.className = "btn btn-link";
card_button.innerText = game_title;
div_collapse.className = "collapse";
div_card_body.className = "card-body";
output.id = game_name + "_output";
output.className = "console_output";
output_text.innerText = game_name + " console";
input.id = game_name + "_form";
input.className = "console_form";
input_text.id = game_name + "_command";
input_text.className = "console_command";
input_text.size = 80;
input_text.autocomplete = "off";
if(tooltip) {
input_text.title = tooltip;
}
input_submit.id = game_name + "_submit";
input_submit.className = "console_submit";
input_submit.innerText = "Enter";
input_help.id = game_name + "_submit";
input_help.className = "console_help";
input_help.innerText = "?";
root.appendChild(div_card);
div_card.appendChild(div_card_header);
div_card_header.appendChild(h5);
h5.appendChild(card_button);
div_card.appendChild(div_collapse);
div_collapse.appendChild(div_card_body);
output.appendChild(output_text);
div_card_body.appendChild(output);
input.appendChild(input_text);
input.appendChild(input_submit);
input.appendChild(input_help);
div_card_body.appendChild(input);
input_help.addEventListener('click', function(e) {
e.preventDefault();
window.open(help_url, '_blank');
});
input.addEventListener('submit', function(e){
e.preventDefault();
let line = document.createElement('p')
line.innerText = input_text.value;
line.className = "user_input";
output.prepend(line);
socket.send(input_text.value);
input_text.value = "";
});
// Create WebSocket connection.
const socket = new WebSocket("ws://192.168.122.44/" + game_name)
// Connection opened
socket.addEventListener('open', function (event) {
socket.send(initial_command);
});
socket.addEventListener('error', function (event) {
console.error(event);
});
// Listen for messages
socket.addEventListener('message', function (event) {
const output = document.getElementById(game_name + '_output');
let line = document.createElement('p')
line.innerHTML = text_colour_function(event.data);
output.prepend(line);
});
}
function consoles_init() {
document.cookie = 'token=MD5GAMEPASSWORD; SameSite=Strict';
const root = document.getElementById('console-div');
createConsole(
root,
'armagetron',
'Armagetron Advanced',
convertTerminalCodeToHtml,
'players',
'http://wiki.armagetronad.org/index.php?title=Console_Commands',
"Helpful commands:\n• players\tShow current players\n• kick <name>\tKick the player\n• num_ais <num>\tSet the number of AIs for games with more than one player\n• limit_rounds\tEnd the match after this number of rounds\n"
);
createConsole(
root,
'bzflag',
'Bzflag',
convertTerminalCodeToHtml,
'/playerlist',
'https://wiki.bzflag.org/Slash_Commands',
"Helpful commands:\n• /playerlist\tDisplay list of players\n• /kick <name>\tKick the player\n• /gameover\tend the current game\n"
);
createConsole(
root,
'mindustry',
'Mindustry',
convertTerminalCodeToHtml,
'status',
'https://mindustrygame.github.io/wiki/servers/#dedicated-server-commands',
"Helpful commands:\n• status\tDisplay server status\n• runwave\tTrigger the next wave\n• kick <name>\tKick a person by name\n"
);
createConsole(
root,
'teeworlds',
'Teeworlds',
convertTerminalCodeToHtml,
'status',
'https://www.teeworlds.com/?page=docs&wiki=server_commands',
"Helpful commands:\n• status\tDisplay server status\n• change_map <mapname>\tSwitch to <mapname>\n• kick <id>\tKick a person by id\n"
);
createConsole(
root,
'unvanquished',
'Unvanquished',
convertDaemonedCodeToHtml,
'/status',
'https://wiki.unvanquished.net/wiki/Server/Running#Commands',
"Helpful commands:\n• /listplayers\tList current players in-game\n• /kick <name>\tKick the player\n• /nextmap\tGo to the next map in the rotation\n"
);
createConsole(
root,
'xonotic',
'Xonotic',
convertDaemonedCodeToHtml,
'who',
'https://gitlab.com/xonotic/xonotic/-/wikis/Basic-server-configuration',
"Helpful commands:\n• who\tList current players in-game\n• kick <name>\tKick the player\n• gotomap <name>\tGo to the specified map\n"
);
collapse_init();
}
function collapse_init() {
const bars = document.getElementsByClassName('card-header');
for(let bar of bars) {
bar.addEventListener('click', function(e) {
const bartexts = document.getElementsByClassName('collapse');
for(let bartext of bartexts) {
bartext.classList.remove("show");
}
this.parentElement.children[1].classList.add("show");
})
}
document.getElementsByClassName('collapse')[0].classList.add("show");
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', consoles_init);
} else {
consoles_init();
}

280
website/_site/schedule.html Normal file
View File

@ -0,0 +1,280 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link ">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link active">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link ">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>Schedule</h1>
<h2>Upcoming</h2>
<h4>Saturday 17 December 2022, 14:00 UTC</h4>
<script>
var event_year = 2022;
var event_month = 00;
var event_day = 00;
var d = new Date(Date.UTC(event_year, event_month, event_day, 14, 00));
document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")
</script>
<p>onFOSS-LAN hosted by DeathByDenim</p>
<ul>
<li>14:00UTC Get together<script>d=new Date(Date.UTC(event_year, event_month, event_day, 14, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>14:30UTC Doom (ODAMEX) XMAS mod<script>d=new Date(Date.UTC(event_year, event_month, event_day, 14, 30));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>15:15UTC Teeworlds<script>d=new Date(Date.UTC(event_year, event_month, event_day, 15, 15));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>16:00UTC OpenSpades<script>d=new Date(Date.UTC(event_year, event_month, event_day, 16, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>17:00UTC Break<script>d=new Date(Date.UTC(event_year, event_month, event_day, 17, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>18:00UTC Lix<script>d=new Date(Date.UTC(event_year, event_month, event_day, 18, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>18:30UTC Free Play!<script>d=new Date(Date.UTC(event_year, event_month, event_day, 18, 30));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
</ul>
<h2>Past</h2>
<h4>Saturday 02 July 2022, 14:00 UTC</h4>
<script>
var event_year = 2022;
var event_month = 00;
var event_day = 00;
var d = new Date(Date.UTC(event_year, event_month, event_day, 14, 00));
document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")
</script>
<p>onFOSS-LAN hosted by DeathByDenim</p>
<ul>
<li>14:00UTC OpenSoldat<script>d=new Date(Date.UTC(event_year, event_month, event_day, 14, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>15:00UTC Lix<script>d=new Date(Date.UTC(event_year, event_month, event_day, 15, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>16:00UTC Teeworlds DDrace<script>d=new Date(Date.UTC(event_year, event_month, event_day, 16, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>17:00UTC Free play!<script>d=new Date(Date.UTC(event_year, event_month, event_day, 17, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<ul>
<li>OpenSpades</li>
<li>OpenHV</li>
</ul>
</ul>
<h4>Saturday 19 March 2022, 14:00 UTC</h4>
<script>
var event_year = 2022;
var event_month = 00;
var event_day = 00;
var d = new Date(Date.UTC(event_year, event_month, event_day, 14, 00));
document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")
</script>
<p>onFOSS-LAN hosted by DeathByDenim</p>
<ul>
<li>14:00UTC Armagetron Advanced<script>d=new Date(Date.UTC(event_year, event_month, event_day, 14, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>15:00UTC Xonotic - Battle Royale<script>d=new Date(Date.UTC(event_year, event_month, event_day, 15, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>16:00UTC Lix<script>d=new Date(Date.UTC(event_year, event_month, event_day, 16, 00));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<li>16:30UTC Free play!<script>d=new Date(Date.UTC(event_year, event_month, event_day, 16, 30));document.writeln(" ("+ Intl.DateTimeFormat(undefined, {hour: '2-digit', minute: '2-digit', timeZoneName: 'short'}).format(d) + ")")</script></li>
<ul>
<li>Hedgewars</li>
<li>SuperTuxKart (Race and Soccer modes)</li>
</ul>
</ul>
<p>
Additionally, there was a fundraiser to help the people suffering
from the war in Ukraine &#x1F1FA;&#x1F1E6;. I matched your donation
(up to $500 total) and additionally, the government of Canada
&#x1F1E8;&#x1F1E6; will match mine until 18 March. So, that's triple
the value for any donation you make. It doesn't have to be to the
Canadian Red Cross, you probably have a local equivalent.
</p>
<p>
<em>UPDATE (2022-03-08)</em>: Canada reached the $10M already so they are not
doubling anymore. I'll still double but this means your amount won't
count as triple anymore.
</p>
<p>
<em>UPDATE (2022-03-13)</em>: Canada increased the limit to $30M, so
any donation you make is once again tripled.
</p>
<p>
<em>UPDATE (2022-03-14)</em>: Oh, never mind, this goal has already
been reached. Anyway, I'll still match what you donate!
</p>
<p>
<em>UPDATE (2022-03-19)</em>: Donations are closed. A total amount
of &euro;40 was collected and the equivalent of CAD 55.64 was
donated to the Canadian Red Cross.
</p>
<p>List of donations:</p>
<ul>
<li>Anonymous: &euro;40</li>
</ul>
<h4>Saturday 12 February 2022, 15:00 UTC</h4>
<script>
var event_year = 2022;
var event_month = 00;
var event_day = 00;
var d = new Date(Date.UTC(event_year, event_month, event_day, 15, 00));
document.writeln("<p>(Local time: "+d.toTimeString()+")</p>")
</script>
<p>Session to test if it all works as intended</p>
<ul>
<li>OpenSpades</li>
<li>OpenHV</li>
<li>Xonotic</li>
</ul>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -3,42 +3,47 @@
<head>
<meta charset="utf-8">
<title>onFOSS-LAN</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/serverstats.css">
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/serverstats.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="js/serverstats.js"></script>
<script src="assets/js/serverstats.js"></script>
</head>
<body>
<nav class="container">
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by HOSTEDBYNAME</span>
<img class="bi me-2" width="40" height="32" src="assets/img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by DeathByDenim</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link" aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link">Admin</a></li>
<li class="nav-item"><a href="index.html" class="nav-link " aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link active">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link ">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link ">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link ">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>Thanks!</h1>
<p>
The form has been successfully submitted. Your donation will not
appear right away since it's a bit of a manual process!
</p>
<h1>Tournament</h1>
<p>Xonotic: Battle Royale</p>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
SERVERSTATE
<div class="offline-blur">OFFLINE</div>
<div class="offline">OFFLINE</div>
</div>
</div>
</div>

View File

@ -1,45 +1,10 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Game server</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/serverstats.css">
<link rel="stylesheet" href="css/terminal.css">
<link rel="icon" href="icon.svg" sizes="any" type="image/svg+xml">
<script src="js/terminalcolors.js"></script>
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="js/serverstats.js"></script>
---
layout: default
nav_pill: admin
---
<link rel="stylesheet" href="assets/css/terminal.css">
<script src="assets/js/terminalcolors.js"></script>
<script src="js/consoles.js"></script>
</head>
<body>
<nav class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<img class="bi me-2" width="40" height="32" src="img/blackmage.svg" alt="Site icon">
<span class="fs-4">onFOSS-LAN hosted by HOSTEDBYNAME</span>
</a>
<ul class="nav nav-pills">
<li class="nav-item"><a href="index.html" class="nav-link" aria-current="page">Home</a></li>
<li class="nav-item"><a href="tournament.html" class="nav-link">Tournament</a></li>
<li class="nav-item"><a href="schedule.html" class="nav-link">Schedule</a></li>
<li class="nav-item"><a href="help.html" class="nav-link">Help</a></li>
<li class="nav-item"><a href="admin.html" class="nav-link active">Admin</a></li>
</ul>
</header>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8" id="console-div">
<div id="console-div">
<noscript>The admin console needs JavaScript to function since it uses web sockets to connect to the controller processes</noscript>
</div>
<div class="col-6 col-md-4">
<h5>Live stats</h5>
SERVERSTATE
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,15 @@
.download {
margin-top: 2em;
margin-bottom: 2em;
}
.download a {
color: #222;
font-weight: bold;
text-decoration: none;
border: solid 3px #bbb;
border-radius: 30px;
padding: 1em;
margin: 1em;
background-color: #eee;
}

View File

@ -0,0 +1,5 @@
---
---
@import "bootstrap/bootstrap";
@import "base";

View File

@ -0,0 +1,39 @@
.cpu {
stroke: hotpink;
stroke-width: 3px;
}
.mem {
stroke: darkgreen;
stroke-width: 3px;
}
.graph {
}
.graphframe {
stroke: black;
fill: none;
}
.offline {
color: red;
font-size: 300%;
font-weight: bold;
}
.offline-blur {
position: absolute;
color: red;
font-size: 300%;
font-weight: bold;
animation-name: glow;
animation-duration: 4s;
animation-iteration-count: infinite;
}
@keyframes glow {
from {
filter: blur(.05em);
}
50% {
filter: blur(.1em);
}
to {
filter: blur(.05em);
}
}

View File

@ -0,0 +1,121 @@
:root {
--terminal-color-0: rgb(30,34,41);
--terminal-color-1: rgb(237,21,21);
--terminal-color-2: rgb(68,133,58);
--terminal-color-3: rgb(246,116,192);
--terminal-color-4: rgb(29,153,243);
--terminal-color-5: rgb(155,89,182);
--terminal-color-6: rgb(=26,188,156);
--terminal-color-7: rgb(252,252,252);
--terminal-color-0-intense: rgb(127,140,141);
--terminal-color-1-intense: rgb(192,57,43);
--terminal-color-2-intense: rgb(50,100,44);
--terminal-color-3-intense: rgb(253,188,75);
--terminal-color-4-intense: rgb(61,174,233);
--terminal-color-5-intense: rgb(142,68,173);
--terminal-color-6-intense: rgb(22,160,133);
--terminal-color-7-intense: rgb(255,255,255);
--terminal-color-default: rgb(23,168,139);
--terminal-color-background: rgb(30,34,41);
}
.console_output {
border: solid grey;
background-color: var(--terminal-color-background);
width: min(95%, 1024px);
height: 30em;
overflow-x: hidden;
overflow-y: auto;
display: flex;
flex-direction: column-reverse;
}
.console_output p {
margin: 0;
padding: 0;
font-family: monospace;
white-space: pre-wrap;
color: var(--terminal-color-default);
display: inline-block;
}
.user_input::before {
content: '$ ';
color: var(--terminal-color-7-intense);
}
.console_command {
width: calc(min(95%, 1024px) - 8em);
}
.console_submit {
width: 6em;
padding: 0;
margin: 0;
border-radius: 0;
text-shadow: 0;
}
.console_help {
width: 2em;
padding: 0;
margin: 0;
border-radius: 0;
text-shadow: 0;
}
.TERM_FOREGROUND_0 {
color: var(--terminal-color-0);
}
.TERM_FOREGROUND_1 {
color: var(--terminal-color-1);
}
.TERM_FOREGROUND_2 {
color: var(--terminal-color-2);
}
.TERM_FOREGROUND_3 {
color: var(--terminal-color-3);
}
.TERM_FOREGROUND_4 {
color: var(--terminal-color-4);
}
.TERM_FOREGROUND_5 {
color: var(--terminal-color-5);
}
.TERM_FOREGROUND_6 {
color: var(--terminal-color-6);
}
.TERM_FOREGROUND_7 {
color: var(--terminal-color-7);
}
.TERM_FOREGROUND_0_INTENSE {
color: var(--terminal-color-0-intense);
}
.TERM_FOREGROUND_1_INTENSE {
color: var(--terminal-color-1-intense);
}
.TERM_FOREGROUND_2_INTENSE {
color: var(--terminal-color-2-intense);
}
.TERM_FOREGROUND_3_INTENSE {
color: var(--terminal-color-3-intense);
}
.TERM_FOREGROUND_4_INTENSE {
color: var(--terminal-color-4-intense);
}
.TERM_FOREGROUND_5_INTENSE {
color: var(--terminal-color-5-intense);
}
.TERM_FOREGROUND_6_INTENSE {
color: var(--terminal-color-6-intense);
}
.TERM_FOREGROUND_7_INTENSE {
color: var(--terminal-color-7-intense);
}
.TERM_FOREGROUND_BOLD {
font-weight: bold;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -0,0 +1,408 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="6.6145835mm"
height="6.6145835mm"
viewBox="0 0 6.6145835 6.6145835"
version="1.1"
id="svg100451"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
sodipodi:docname="blackmage.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview100453"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="22.627417"
inkscape:cx="4.8613591"
inkscape:cy="13.523417"
inkscape:window-width="1540"
inkscape:window-height="862"
inkscape:window-x="722"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="layer3" />
<defs
id="defs100448" />
<g
inkscape:label="Laag 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-115.94271,-125.8427)"
style="display:none;opacity:0.355982">
<image
width="6.6145835"
height="6.6145835"
preserveAspectRatio="none"
style="image-rendering:optimizeSpeed"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB
IElEQVRIia2VQRKCMAxFfxwvVZf2Bnoc1h5Hb1CXcqy4YAohJGlF/kwHKMx/SdMUYmbGASIiAIBl
dz7MvCzPGvQXhIhmcwB4ve3vdkF09BVwfxywXJ55SyakmmlF5l4WJkSvs6We6EMIM4OI8BzW87fr
+v4XEHl9IpcsAkYFb0IsmAWsikAhRO4mytv3GuiB/oJYMBPEjgBwKtO1Nep3z2Ea2taE/ALQICvu
sONTmdIeM23mPHXVRNbhAtvQgo55e/qaEN3tlNeRV3MvGw90kg/M7O6iMbePG0/usQIsEX9AwE4A
oDKRSoXn5fFq06vu/0nUjEBceDcTYJ1NKjwPubt6FEI0aK+aEAmSWUnwmAmpsPtHNZux1dXSvELl
nK7NF18iI9LSnZznAAAAAElFTkSuQmCC
"
id="image100814"
x="115.94271"
y="125.8427" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Laag 2"
style="display:inline;opacity:1">
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107655"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="1.5875" />
<rect
style="fill:#000000;stroke-width:0.648093"
id="rect107737"
width="1.5875"
height="0.26458332"
x="1.3229166"
y="1.3229166" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107739"
width="0.52916664"
height="0.26458332"
x="2.9104166"
y="1.0583333" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107741"
width="0.52916664"
height="0.26458332"
x="3.4395833"
y="0.79374993" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107743"
width="0.26458332"
height="0.26458332"
x="3.96875"
y="0.52916658" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107745"
width="0.52916664"
height="0.26458332"
x="4.2333331"
y="0.26458323" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107747"
width="0.52916664"
height="0.26458332"
x="4.7624998"
y="-1.1920929e-07" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107749"
width="0.26458332"
height="0.52916664"
x="5.2916665"
y="0.2645832" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect107751"
width="0.26458332"
height="0.52916664"
x="5.0270834"
y="0.79374981" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect107753"
width="0.26458332"
height="0.79374999"
x="4.7625003"
y="1.3229165" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107755"
width="0.26458332"
height="0.26458332"
x="4.4979172"
y="2.1166666" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107757"
width="0.26458332"
height="0.26458332"
x="4.7625003"
y="2.3812499" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107759"
width="0.26458332"
height="0.26458332"
x="5.0270834"
y="2.6458333" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107761"
width="0.26458332"
height="0.26458332"
x="5.2916665"
y="2.9104166" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107763"
width="0.26458332"
height="0.26458332"
x="5.5562496"
y="3.175" />
<path
id="rect142063"
style="fill:#39bdff;stroke-width:0.264583"
d="m 1.5875002,3.4395833 h 0.2645831 l 3e-7,-0.2645833 h 3.1749993 v 0.2645833 l 5e-7,0.5291667 H 4.7625003 V 4.2333331 H 5.0270834 V 5.2916665 H 4.7625003 v 0.7937498 h 0.2645831 l 2e-7,0.2645829 0.2645829,2e-7 V 6.6145825 H 1.3229166 V 6.3499994 l 0.2645833,-10e-8 z"
sodipodi:nodetypes="cccccccccccccccccccc" />
<path
id="rect107765"
style="stroke-width:0.374177"
d="M 5.0270829,3.4395833 H 5.5562496 V 3.7041666 H 5.2916663 l 4e-7,0.2645834 H 5.0270833 l -4e-7,-0.2645834 z"
sodipodi:nodetypes="cccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107866"
width="0.26458332"
height="0.26458332"
x="4.7624998"
y="3.175" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect107868"
width="0.26458332"
height="0.26458332"
x="1.3229166"
y="1.8520833" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108293"
width="0.26458332"
height="0.26458332"
x="4.7625003"
y="3.96875" />
<rect
style="fill:#000000;stroke-width:0.529166"
id="rect108295"
width="0.26458332"
height="1.0583333"
x="5.0270834"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect108297"
width="0.26458332"
height="0.79374999"
x="4.7625003"
y="5.2916665" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108299"
width="0.26458332"
height="0.26458332"
x="5.0270834"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108301"
width="0.26458332"
height="0.26458332"
x="4.4979172"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108303"
width="0.26458332"
height="0.26458332"
x="5.2916665"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect108305"
width="0.52916664"
height="0.26458332"
x="3.9687505"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108307"
width="0.26458332"
height="0.26458332"
x="3.7041674"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect108309"
width="0.26458332"
height="0.52916664"
x="3.439584"
y="5.5562496" />
<path
id="rect108311"
style="stroke-width:0.591626"
d="M 2.9104167,4.2333331 H 3.439584 V 5.5562497 H 3.1750007 l -0.5291674,3e-7 V 5.2916667 h 0.5291674 v -0.79375 h -0.264584 z"
sodipodi:nodetypes="cccccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect108697"
width="0.26458332"
height="0.26458332"
x="2.6458333"
y="4.4979167" />
<path
id="rect108699"
style="stroke-width:0.458271"
d="m 1.5875,2.1166666 h 0.79375 v 0.2645833 l 0.79375,1e-7 v 0.2645833 h 0.79375 v 0.2645834 h 0.5291667 v 0.5291666 l 0.2645831,-3.9e-6 2e-7,0.2645873 H 3.175 V 3.96875 H 2.38125 V 3.7041667 H 1.8520833 V 3.4395833 H 2.1166667 V 3.175 H 1.8520833 V 2.6458333 h 0.2645834 l -3.6e-6,-0.2645875 -0.5291667,-10e-8 z"
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111069"
width="0.26458332"
height="0.26458332"
x="1.5875002"
y="3.175" />
<path
id="rect111071"
style="stroke-width:0.458271"
d="m 1.3229169,3.4395833 h 0.2645833 v 0.79375 H 1.0583333 V 3.96875 h 0.2645834 z"
sodipodi:nodetypes="ccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111609"
width="0.26458332"
height="0.26458332"
x="0.79374993"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111611"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="4.4979162" />
<path
id="rect111613"
style="stroke-width:0.648093"
d="m 1.3229166,4.7624993 0.5291667,7e-7 V 5.0270833 H 1.5875 l -10e-8,1.322916 H 1.3229166 Z"
sodipodi:nodetypes="ccccccc" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111923"
width="0.26458332"
height="0.26458332"
x="1.0583333"
y="6.3499994" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111925"
width="0.26458332"
height="0.52916664"
x="1.8520833"
y="4.2333331" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111927"
width="0.26458332"
height="0.52916664"
x="1.8520833"
y="5.0270834" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111929"
width="0.26458332"
height="0.26458332"
x="2.1166666"
y="5.5562501" />
<rect
style="fill:#000000;stroke-width:0.264583"
id="rect111931"
width="0.26458332"
height="0.26458332"
x="2.3812499"
y="5.8208332" />
<rect
style="fill:#000000;stroke-width:0.374177"
id="rect111933"
width="0.52916664"
height="0.26458332"
x="2.6458333"
y="6.0854163" />
<rect
style="fill:#000000;stroke-width:0.458271"
id="rect111935"
width="0.79374999"
height="0.26458332"
x="3.439584"
y="3.96875" />
<path
id="rect147135"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 1.0583333,4.2333331 0.5291669,2e-7 -2e-7,-0.2645833 h 0.2645833 l 10e-8,0.7937497 H 1.3229167 l -10e-8,-0.2645835 H 1.0583333 Z"
sodipodi:nodetypes="ccccccccc" />
<path
id="path147866"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 2.3812497,4.7624996 0.5291669,2e-7 -2e-7,-0.2645833 h 0.2645833 l 1e-7,0.7937497 H 2.6458331 l -10e-8,-0.2645835 H 2.3812497 Z"
sodipodi:nodetypes="ccccccccc" />
<path
id="path151355"
style="fill:#ad7b00;stroke-width:0.529166;fill-opacity:1"
d="m 1.3229167,1.5875002 1.5874999,-2e-7 V 1.3229166 H 3.4395833 V 1.0583333 H 3.96875 V 0.79374993 H 4.2333331 V 0.52916658 H 4.7624998 V 0.26458323 l 0.5291667,-3e-8 v 0.52916661 l -0.2645762,-2e-8 -6.9e-6,0.52916671 H 4.7625003 V 2.1166666 H 4.4979172 V 2.3812499 H 4.7625003 V 2.6458333 H 5.0270834 V 2.9104166 H 5.2916665 V 3.175 H 5.5562496 V 3.4395833 H 5.0270829 V 3.175 H 4.4979167 V 2.9104167 H 3.96875 V 2.6458333 H 3.175 V 2.38125 l -0.79375,-1e-7 V 2.1166666 H 1.5875 V 1.8520833 H 1.3229167 Z"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" />
<path
id="path147872"
style="fill:#ffbd00;stroke-width:0.529166"
d="m 1.3229167,1.5875002 1.5874999,-2e-7 V 1.3229166 H 3.4395833 V 1.0583333 H 3.96875 V 0.79374993 H 4.2333331 V 0.52916658 H 4.7624998 V 0.26458323 l 0.5291667,-3e-8 2e-7,0.26458347 H 5.0270833 l 7e-6,0.26458312 L 4.7625,0.79375 V 1.0583333 H 4.2333333 v 0.2645834 l -0.5238095,-0.00485 -0.00536,0.2694265 H 3.4395833 V 1.8520833 H 3.7041667 V 2.1166667 H 4.2333333 V 2.38125 h -0.79375 V 2.1166667 h -0.79375 V 1.8520833 H 1.3229167 Z"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccc" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.374177"
id="rect160539"
width="0.26458332"
height="0.52916664"
x="2.3812499"
y="2.6458333" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.187088"
id="rect160559"
width="0.26458332"
height="0.13229166"
x="3.175"
y="2.9104166" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.132291"
id="rect160561"
width="0.13229166"
height="0.13229166"
x="3.4395833"
y="3.0427082" />
<rect
style="fill:#ffbd00;fill-opacity:1;stroke-width:0.132291"
id="rect160563"
width="0.13229166"
height="0.13229166"
x="3.0427084"
y="3.0427082" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
website/assets/img/lix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Some files were not shown because too many files have changed in this diff Show More