mirror of
https://git.techniverse.net/scriptos/tmserver-docker.git
synced 2026-07-09 21:47:02 +00:00
feat: Automatische MatchSettings-Erkennung & AdminServ-Bugfixes
This commit is contained in:
@@ -66,3 +66,35 @@ rm -rf ./data/controlpanel/*
|
||||
# Container neu starten – AdminServ wird frisch initialisiert
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Gepatchte AdminServ-Bugs (TmForever)
|
||||
|
||||
AdminServ (v2.1.1) enthält zwei Bugs, die speziell im Zusammenspiel mit TmForever auftreten. Diese werden beim Container-Start automatisch gepatcht – auch bei bestehenden Volumes.
|
||||
|
||||
### Falscher Pfad in MatchSettings-Dateien
|
||||
|
||||
Beim Erstellen einer neuen MatchSettings-Datei über AdminServ wurden die Track-Pfade falsch geschrieben. Statt des tatsächlichen Ordners (z.B. `Challenges/Downloaded/`) wurde immer der Speicherort der MatchSettings (`MatchSettings/`) als Pfad-Präfix verwendet:
|
||||
|
||||
```xml
|
||||
<!-- Fehlerhaft (Original) -->
|
||||
<file>MatchSettings/speed vs. fullspeed.Challenge.Gbx</file>
|
||||
|
||||
<!-- Korrekt (nach Patch) -->
|
||||
<file>Challenges/Downloaded/speed vs. fullspeed.Challenge.Gbx</file>
|
||||
```
|
||||
|
||||
**Ursache:** Die AJAX-Funktion `get_matchset_mapimport.php` hat den URL-Parameter `d` (= MatchSettings-Speicherordner) als relativen Pfad für die Map-Dateinamen verwendet, anstatt den tatsächlichen Ordner aus der Dropdown-Auswahl zu berechnen.
|
||||
|
||||
**Betroffene Datei:** `resources/ajax/get_matchset_mapimport.php`
|
||||
|
||||
### GetModeScriptInfo-Fehler (-506)
|
||||
|
||||
Beim Speichern einer MatchSettings-Datei erschien die Fehlermeldung:
|
||||
|
||||
```
|
||||
[-506] Method 'GetModeScriptInfo' not defined
|
||||
```
|
||||
|
||||
**Ursache:** `GetModeScriptInfo` ist eine XML-RPC-Methode, die nur in ManiaPlanet/TM2 existiert. AdminServ hat sie ohne Versionsprüfung aufgerufen. An anderen Stellen im Code wurde korrekt mit `SERVER_VERSION_NAME != 'TmForever'` unterschieden – nur hier fehlte die Prüfung.
|
||||
|
||||
**Betroffene Datei:** `resources/process/maps-creatematchset.php`
|
||||
|
||||
@@ -160,3 +160,49 @@ Alle diese Parameter können über [Umgebungsvariablen](umgebungsvariablen.md) g
|
||||
| `<xmlrpc_port>` | `SERVER_XMLRPC_PORT` | `5000` |
|
||||
| `<connection_uploadrate>` | `SERVER_UPLOAD_RATE` | `512` |
|
||||
| `<connection_downloadrate>` | `SERVER_DOWNLOAD_RATE` | `8192` |
|
||||
|
||||
## MatchSettings (Spieleinstellungen)
|
||||
|
||||
Die MatchSettings-Dateien liegen im Verzeichnis `data/gamedata/Tracks/MatchSettings/` und definieren Spielmodus, Regeln und die aktive Track-Liste des Servers. Sie werden als `.txt`-Dateien im XML-Format gespeichert.
|
||||
|
||||
### Automatische Erkennung (Standard)
|
||||
|
||||
Standardmäßig wird beim Serverstart automatisch die **neueste** `.txt`-Datei im MatchSettings-Ordner anhand des Änderungsdatums geladen. So werden z.B. über AdminServ erstellte oder bearbeitete MatchSettings beim nächsten Neustart automatisch aktiv.
|
||||
|
||||
```bash
|
||||
# In der .env-Datei (Standardwert):
|
||||
MATCHSETTINGS_FILE=auto
|
||||
```
|
||||
|
||||
**Ablauf bei jedem Containerstart:**
|
||||
|
||||
1. Der Ordner `data/gamedata/Tracks/MatchSettings/` wird nach `.txt`-Dateien durchsucht
|
||||
2. Die Datei mit dem neuesten Änderungsdatum wird ermittelt
|
||||
3. Diese Datei wird als `/game_settings`-Parameter an den TM-Server übergeben
|
||||
4. Dateiname und Änderungsdatum werden in der Konsole ausgegeben
|
||||
|
||||
### Bestimmte Datei verwenden
|
||||
|
||||
Alternativ kann eine bestimmte MatchSettings-Datei direkt angegeben werden:
|
||||
|
||||
```bash
|
||||
# In der .env-Datei:
|
||||
MATCHSETTINGS_FILE=turnier_settings.txt
|
||||
```
|
||||
|
||||
Der Dateiname bezieht sich immer auf den Ordner `data/gamedata/Tracks/MatchSettings/`.
|
||||
|
||||
### Fallback
|
||||
|
||||
Falls die angegebene oder automatisch ermittelte Datei nicht existiert, wird auf die mitgelieferte Standard-Datei `custom_game_settings.txt` zurückgefallen.
|
||||
|
||||
### Neue MatchSettings über AdminServ erstellen
|
||||
|
||||
1. In AdminServ mit SuperAdmin einloggen
|
||||
2. Unter „Maps" → „MatchSettings" → „Create" eine neue Datei anlegen
|
||||
3. Tracks aus den gewünschten Ordnern importieren (z.B. `Challenges/Downloaded/`)
|
||||
4. Spielmodus und Regeln konfigurieren
|
||||
5. Speichern – die Datei wird in `MatchSettings/` abgelegt
|
||||
6. Container neustarten (`docker compose restart`) – die neue Datei wird automatisch als neueste erkannt und geladen
|
||||
|
||||
> **Hinweis:** Die aktive MatchSettings-Datei wird beim Serverstart in der Konsole ausgegeben. Mit `docker logs tmserver` kann überprüft werden, welche Datei geladen wurde.
|
||||
|
||||
@@ -71,8 +71,25 @@ nano .env
|
||||
|
||||
| Variable | Beschreibung | Standard |
|
||||
|----------|-------------|----------|
|
||||
| `MATCHSETTINGS_FILE` | MatchSettings-Datei beim Serverstart: `auto` = neueste `.txt`-Datei im Ordner wird automatisch geladen, oder ein expliziter Dateiname (z.B. `meine_settings.txt`) | `auto` |
|
||||
| `ALLWARMUPDURATION` | Warmup-Dauer für alle Runden (`0` = deaktiviert, `1` = eine Runde Warmup) | `0` |
|
||||
|
||||
### Automatische MatchSettings-Erkennung
|
||||
|
||||
Standardmäßig (`MATCHSETTINGS_FILE=auto`) wird beim Serverstart automatisch die **neueste** `.txt`-Datei im Verzeichnis `data/gamedata/Tracks/MatchSettings/` anhand des Änderungsdatums ermittelt und geladen. So werden z.B. über AdminServ exportierte MatchSettings beim nächsten Neustart automatisch aktiv.
|
||||
|
||||
**Beispiele:**
|
||||
|
||||
```bash
|
||||
# Automatisch die neueste Datei laden (Standard)
|
||||
MATCHSETTINGS_FILE=auto
|
||||
|
||||
# Eine bestimmte Datei verwenden
|
||||
MATCHSETTINGS_FILE=turnier_settings.txt
|
||||
```
|
||||
|
||||
> **Hinweis:** Falls die angegebene oder automatisch ermittelte Datei nicht existiert, wird auf `custom_game_settings.txt` zurückgefallen. Die aktiv geladene Datei wird beim Serverstart in der Konsole ausgegeben.
|
||||
|
||||
## RemoteCP
|
||||
|
||||
RemoteCP verwendet die SuperAdmin-Zugangsdaten (`SERVER_SA_PASSWORD`) des TM-Servers für den Web-Login. Es werden keine separaten Login-Variablen benötigt.
|
||||
|
||||
Reference in New Issue
Block a user