This commit is contained in:
parent
6c7442e33c
commit
f930deaba8
@ -22,6 +22,12 @@
|
|||||||
sprite: `${env.PUBLIC_BASE_PATH}/img/menu-rules.png`,
|
sprite: `${env.PUBLIC_BASE_PATH}/img/menu-rules.png`,
|
||||||
href: `${env.PUBLIC_BASE_PATH}/rules`,
|
href: `${env.PUBLIC_BASE_PATH}/rules`,
|
||||||
active: false
|
active: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'FAQ',
|
||||||
|
sprite: `${env.PUBLIC_BASE_PATH}/img/menu-faq.png`,
|
||||||
|
href: `${env.PUBLIC_BASE_PATH}/faq`,
|
||||||
|
active: false
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -22,6 +22,9 @@ export const load: PageServerLoad = async ({ parent, cookies }) => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
settings: {
|
settings: {
|
||||||
|
global: {
|
||||||
|
paypal_link: settings['global.paypal_link'] ?? ''
|
||||||
|
},
|
||||||
register: {
|
register: {
|
||||||
enabled: settings['register.enabled'] ?? true,
|
enabled: settings['register.enabled'] ?? true,
|
||||||
disabled_title: settings['register.disabled_title'] ?? 'Anmeldung geschlossen',
|
disabled_title: settings['register.disabled_title'] ?? 'Anmeldung geschlossen',
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
await fetch(`${env.PUBLIC_BASE_PATH}/admin/settings`, {
|
await fetch(`${env.PUBLIC_BASE_PATH}/admin/settings`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
global: {
|
||||||
|
paypal_link: returnIfNoDup(settings.global.paypal_link, data.settings.global.paypal_link)
|
||||||
|
},
|
||||||
register: {
|
register: {
|
||||||
enabled: returnIfNoDup(settings.register.enabled, data.settings.register.enabled),
|
enabled: returnIfNoDup(settings.register.enabled, data.settings.register.enabled),
|
||||||
disabled_title: returnIfNoDup(
|
disabled_title: returnIfNoDup(
|
||||||
@ -32,6 +35,13 @@
|
|||||||
|
|
||||||
<div class="h-full flex flex-col items-center justify-between">
|
<div class="h-full flex flex-col items-center justify-between">
|
||||||
<div class="grid grid-cols-3 w-full [&>*]:mx-8">
|
<div class="grid grid-cols-3 w-full [&>*]:mx-8">
|
||||||
|
<div>
|
||||||
|
<div class="divider">Global</div>
|
||||||
|
<label class="label">
|
||||||
|
<span class="label-text">PayPal-Spendenlink</span>
|
||||||
|
<input type="text" class="input input-bordered" bind:value={settings.global.paypal_link} />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="divider">Anmeldung</div>
|
<div class="divider">Anmeldung</div>
|
||||||
<label class="label cursor-pointer">
|
<label class="label cursor-pointer">
|
||||||
|
@ -13,16 +13,18 @@ export const POST = (async ({ request, cookies }) => {
|
|||||||
|
|
||||||
const settings: PageData['settings'] = await request.json();
|
const settings: PageData['settings'] = await request.json();
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(settings.register)) {
|
for (const [group, entries] of Object.entries(settings)) {
|
||||||
const setting = await Settings.findOne({ where: { key: `register.${key}` } });
|
for (const [key, value] of Object.entries(entries)) {
|
||||||
if (setting) {
|
const setting = await Settings.findOne({ where: { key: `${group}.${key}` } });
|
||||||
setting.value = JSON.stringify(value);
|
if (setting) {
|
||||||
await setting.save();
|
setting.value = JSON.stringify(value);
|
||||||
} else {
|
await setting.save();
|
||||||
await Settings.create({
|
} else {
|
||||||
key: `register.${key}`,
|
await Settings.create({
|
||||||
value: JSON.stringify(value)
|
key: `${group}.${key}`,
|
||||||
});
|
value: JSON.stringify(value)
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
<div class="mx-4 my-6 sm:mx-3 sm:my-12">
|
<div class="mx-4 my-6 sm:mx-24 sm:my-12">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
|
8
src/routes/faq/+page.server.ts
Normal file
8
src/routes/faq/+page.server.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import type { PageServerLoad } from './$types';
|
||||||
|
import { Settings } from '$lib/server/database';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = async () => {
|
||||||
|
return {
|
||||||
|
paypal_link: (await Settings.findOne({ where: { key: 'global.paypal_link' } }))?.value ?? ''
|
||||||
|
};
|
||||||
|
};
|
@ -1,16 +1,202 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
let questions = [
|
import type { PageData } from './$types';
|
||||||
|
|
||||||
|
export let data: PageData;
|
||||||
|
|
||||||
|
let faq = [
|
||||||
{
|
{
|
||||||
title: '',
|
section: 'Anmeldung',
|
||||||
content: ''
|
questions: [
|
||||||
|
{
|
||||||
|
title: 'Wann startet CraftAttack 7?',
|
||||||
|
content: `<p>Der Start von CraftAttack 7 findet gemeinsam am 27.12.2024 um 14:00 Uhr statt. Am besten
|
||||||
|
bist du schon einige Minuten vorher auf dem Server. Natürlich kannst du aber auch danach
|
||||||
|
jederzeit dazustoßen.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wer kann alles mitspielen?',
|
||||||
|
content: `<p>Jeder, der entweder Minecraft Java oder Bedrock (Handy und Konsole) besitzt und
|
||||||
|
mindestens 6 Jahre alt ist, kann mitspielen.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wie kann ich mitspielen?',
|
||||||
|
content: `<p>Um mitzuspielen, musst du dich einfach hier auf der Website anmelden und der WhatsApp-
|
||||||
|
Gruppe beitreten.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Auf welcher Version läuft der Server?',
|
||||||
|
content: `<p>Gespielt wird immer auf der neuesten Version, also laut aktuellem Stand Version 1.21.3.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Kann ich auch als Bedrock-Spieler (Handy oder Konsole) mitspielen?',
|
||||||
|
content: `<p>Ja, auch als Bedrock-Spieler kannst du mitspielen, sofern du anderen Servern beitreten kannst.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Ich kann mich nicht anmelden, was kann ich tun?',
|
||||||
|
content: `<p>Wenn du dich nicht anmelden kannst, solltest du Folgendes überprüfen:</p>
|
||||||
|
<ol class="list-decimal pl-8 py-3">
|
||||||
|
<li>Ist dein Spielername korrekt geschrieben?</li>
|
||||||
|
<li>Hast du dich bereits angemeldet? Es ist nur ein Account pro Spieler erlaubt.</li>
|
||||||
|
<li>Hast du die richtige Spieledition ausgewählt?</li>
|
||||||
|
</ol>
|
||||||
|
<p>Falls du dich aus unerklärlichen Gründen trotzdem nicht anmelden kannst, kannst du
|
||||||
|
dich jederzeit beim Admin-Team melden.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Ich komme nicht auf den Server, was kann ich tun?',
|
||||||
|
content: `<p>Wenn du dem Server nicht beitreten kannst, überprüfe Folgendes:</p>
|
||||||
|
<ol class="list-decimal pl-8 py-3">
|
||||||
|
<li>Hast du die korrekte IP verwendet? Sie lautet craftattack.mhsl.eu.</li>
|
||||||
|
<li>Hast du Leerzeichen verwendet, insbesondere vor oder hinter der IP, oder dich vertippt?</li>
|
||||||
|
<li>Kommst du auf andere Server, oder ist es nur ein Problem beim CraftAttack-Server?</li>
|
||||||
|
<li>Hast du dich korrekt auf der Webseite angemeldet?</li>
|
||||||
|
</ol>
|
||||||
|
<p>Falls du trotzdem nicht beitreten kannst, melde dich beim Admin-Team und halte die
|
||||||
|
Fehlermeldung bereit.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was ist die Server-IP?',
|
||||||
|
content: `<p>Die Serveradresse lautet: <span class="underline italic">craftattack.mhsl.eu</span></p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Ist es kostenlos mitzuspielen?',
|
||||||
|
content: `<p>Ja, die Teilnahme ist selbstverständlich kostenlos. Wir freuen uns aber, wenn du das Projekt
|
||||||
|
mit einer Spende nach der Anmeldung unterstützen würdest.<\br>
|
||||||
|
Hier kannst du für das Projekt spenden: <a class="link" href=${data.paypal_link}>${data.paypal_link}</a></p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:
|
||||||
|
'Die Anmeldefrist ist vorbei, aber ich möchte mich trotzdem noch anmelden. Was kann ich tun?',
|
||||||
|
content: `Generell solltest du dich immer während des Anmeldezeitraums anmelden. Falls die
|
||||||
|
Anmeldung allerdings bereits geschlossen ist, kannst du einen Admin kontaktieren, der dich
|
||||||
|
im Fall der Fälle noch nachträglich anmelden kann.`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Ist ein 2. Account erlaubt?',
|
||||||
|
content: `<p>Nein, pro Teilnehmer ist nur ein Account zugelassen.</p>`
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
section: 'Anderes',
|
||||||
|
questions: [
|
||||||
|
{
|
||||||
|
title: 'Wie kann ich einen Admin kontaktieren?',
|
||||||
|
content: `<p>Einen Admin kannst du im Chat, über WhatsApp, per Teamspeak (<span class="underline italic">mhsl.eu</span>) oder Discord kontaktieren.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wer ist eigentlich Organisator und warum?',
|
||||||
|
content: `<p>Wir sind ein kleines Team von Minecraft-Enthusiasten, das bereits im siebten Jahr in Folge
|
||||||
|
Minecraft CraftAttack organisiert. Jedes Jahr arbeiten wir daran, das Spielerlebnis zu
|
||||||
|
verbessern und die Teilnehmerzahl zu steigern. Weitere Infos findest du auf der Teamseite.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wie lange bleibt der Server online?',
|
||||||
|
content: `<p>Der Server wird traditionell so lange online bleiben, wie noch aktiv darauf gespielt wird.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Warum benötigt ihr meine Daten bei der Anmeldung?',
|
||||||
|
content: `<p>Deine Daten werden nur intern gespeichert und dienen den Admins rein zur Organisation
|
||||||
|
des Projekts.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Gibt es einen Teamspeak-Server?',
|
||||||
|
content: `<p>Ja, den offiziellen Teamspeak-Server erreichst du unter der IP <span class="underline italic">mhsl.eu</span>.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wozu dient die CraftAttack-WhatsApp-Gruppe?',
|
||||||
|
content: `<p>In der WhatsApp-Gruppe erhältst du alle wichtigen Infos bezüglich CraftAttack.</p>`
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
section: 'Ingame',
|
||||||
|
questions: [
|
||||||
|
{
|
||||||
|
title: 'Wo kann ich meinen Shop errichten?',
|
||||||
|
content: `<p>Generell darfst du Shops überall errichten, aber es bietet sich an, alle Shops in einem
|
||||||
|
Shopping-District nahe des Spawns anzusiedeln.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Sind Farmen erlaubt?',
|
||||||
|
content: `<p>Ja, Farmen sind generell erlaubt. Allerdings sind lag-erzeugende Maschinen, Farmen (Zero-
|
||||||
|
Tick-Farmen etc.) oder andere Bauten, die den Spielfluss stören könnten, verboten.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was und wann sind Events?',
|
||||||
|
content: `<p>Abends, meist gegen 18 Uhr, finden gelegentlich Events statt, bei denen du Items gewinnen
|
||||||
|
kannst und in kleinen Minispielen gegen deine Mitspieler antrittst. Die genauen Abläufe
|
||||||
|
siehst du, wenn du abends auf dem Server bist.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wo und wie kann ich einen Regelverstoß melden?',
|
||||||
|
content: `<p>Wenn du einen Regelverstoß melden willst, kannst du ingame den Befehl /report nutzen, um
|
||||||
|
einen Admin zu kontaktieren.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was hat es mit dem Blutmond auf sich?',
|
||||||
|
content: `<p>Alle dreißig ingame-Tage solltest du nachts auf der Hut sein, denn die Monster sind in dieser
|
||||||
|
Nacht deutlich stärker als üblich, droppen aber auch besseren Loot.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was hat es mit dem Vogelfrei-Modus auf sich?',
|
||||||
|
content: `CraftAttack ist grundsätzlich ein friedliches Projekt. Falls du jedoch kein Problem damit hast,
|
||||||
|
angegriffen zu werden, kannst du dich mit /vogelfrei in den Vogelfrei-Modus setzen.
|
||||||
|
Dadurch sehen andere Spieler, dass du für einen Kampf offen bist. Der Vogelfrei-Modus kann
|
||||||
|
allerdings erst nach einigen Stunden wieder beendet werden.`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was hat es mit dem Rang „Langzeitspieler“ auf sich?',
|
||||||
|
content: `Spieler, die seit über drei Jahren am Projekt teilnehmen, erhalten den Langzeitrang. Dieser
|
||||||
|
wirkt sich allerdings nicht auf das Spielgeschehen aus.`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Was gibt es für neue coole Features?',
|
||||||
|
content: `<ul class="list-disc pl-8">
|
||||||
|
<li>Miniböcke, die du selbst gestalten kannst</li>
|
||||||
|
<li>Neue Event-Spiele</li>
|
||||||
|
<li>Einige Quality-of-Life-Features, die du mit <code>/settings</code> erreichst</li>
|
||||||
|
<li>Langzeitrang</li>
|
||||||
|
</ul>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Wann wird das End geöffnet?',
|
||||||
|
content: `<p>Das End wird gemeinsam am <span class="underline">03.01.2025</span> um <span class="underline">19:00 Uhr</span> geöffnet, und wir besiegen
|
||||||
|
gemeinsam den Enderdrachen.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Darf ich andere Spieler töten?',
|
||||||
|
content: `<p>Andere Spieler zu töten ist generell verboten. Wenn es jedoch nur zum Spaß und mit dem
|
||||||
|
anderen Spieler abgesprochen ist, haben wir nichts dagegen einzuwenden. Außerdem ist es
|
||||||
|
erlaubt, vogelfreie Spieler zu töten.</p>`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Welche Minecraft-Clients sind erlaubt?',
|
||||||
|
content: `<p>Jegliche Clientmodifikationen, die deutliche Vorteile gegenüber anderen Spielern bringen,
|
||||||
|
sind nicht gestattet.</p>`
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#each questions as question}
|
<h1 class="text-3xl lg:text-5xl mb-16 text-center">FAQ</h1>
|
||||||
<div class="collapse collapse-plus bg-base-200">
|
<div class="flex flex-row gap-10">
|
||||||
<input type="radio" />
|
{#each faq as questions}
|
||||||
<div class="collapse-title text-xl font-medium">{question.title}</div>
|
<div>
|
||||||
<div class="collapse-content">{@html question.content}</div>
|
<h2 class="text-4xl text-center mb-3">{questions.section}</h2>
|
||||||
</div>
|
<div>
|
||||||
{/each}
|
{#each questions.questions as question}
|
||||||
|
<div class="collapse collapse-arrow">
|
||||||
|
<input type="checkbox" autocomplete="off" />
|
||||||
|
<div class="collapse-title">{question.title}</div>
|
||||||
|
<div class="collapse-content">
|
||||||
|
<div class="ml-2">{@html question.content}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span class="block w-full h-[1px] mx-auto mb-1 bg-gray-600" />
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
@ -76,6 +76,3 @@
|
|||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
|
||||||
</style>
|
|
||||||
|
BIN
static/img/menu-faq.png
Normal file
BIN
static/img/menu-faq.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 285 B |
Loading…
x
Reference in New Issue
Block a user