Compare commits

..

93 Commits

Author SHA1 Message Date
fanyx f50397562e Rework image to use s6-overlay to run TMServer and Xaseco
- Adds S6-Overlay
- Bundles Xaseco into the image
2022-06-26 17:55:35 +02:00
fanyx 6ea355fb89 New specification 2022-06-26 17:55:10 +02:00
fanyx ca1fee1e93 Add backup SQL files
Not needed due to patches done to plugin.localdatabase.php in the past.
2022-06-26 17:48:26 +02:00
fanyx 7687125d4d Add Xaseco scripts 2022-06-26 17:46:55 +02:00
fanyx 4626519ab1 Add Xaseco as s6-rc service 2022-06-26 17:46:34 +02:00
fanyx c63c24c949 Add Xaseco base files 2022-06-26 17:43:44 +02:00
fanyx 716a54d4a5 Rework Trackmania server 2022-06-26 17:41:12 +02:00
fanyx 839b000ef1 Clean up environment 2022-06-26 17:39:27 +02:00
fanyx d07e4ec6dc
Update README.md 2020-08-28 11:27:30 +02:00
fanyx a119825572
Update README.md 2020-01-05 15:25:03 +01:00
Hendrik Boll 2dd7f3bac4 fixed custom playlist capability 2019-09-28 14:38:15 +02:00
Hendrik Boll d74a5101b8 cleaned up playlist template 2019-09-28 13:27:40 +02:00
Hendrik Boll f70a456a18 added custom playlist support 2019-09-28 13:25:49 +02:00
ryluth dd59d0f859
Update README.md 2019-09-28 13:10:42 +02:00
Hendrik Boll b521393ab2 added xmlstarlet to image 2019-09-28 12:24:32 +02:00
Hendrik Boll 6a12bbbfbe cleaned up file structure and filled .dockerignore 2019-09-28 12:13:08 +02:00
Hendrik Boll adeeb523d8 updated example docker-compose.yml 2019-09-28 12:08:11 +02:00
ryluth 13bd22657c
Update README.md 2019-09-28 12:04:20 +02:00
Hendrik Boll 5307b4a83d exporting environment variables 2019-09-28 11:49:02 +02:00
Hendrik Boll 3ca1aa59ab is_lan 1 2019-09-28 09:52:53 +02:00
Hendrik Boll 5c8712ef20 is_lan 1 2019-09-28 09:52:12 +02:00
Hendrik Boll 35b9895041 adjusted variable assignment in entrypoint 2019-09-27 23:38:24 +02:00
Hendrik Boll bba2e5c0ea added port 5000 to Dockerfile for RPC interface 2019-09-27 22:36:49 +02:00
ryluth c504299604
fixed paths again 2019-09-27 11:21:22 +02:00
ryluth b05a359b32
fixed _playlist.txt template path 2019-09-27 11:17:14 +02:00
ryluth 5918aa3521
Update entrypoint-tmserver.sh 2019-09-27 11:07:14 +02:00
ryluth a9fb55153c
Update entrypoint-tmserver.sh 2019-09-27 11:01:03 +02:00
ryluth 931fd0d989
fixed syntax errors in entrypoint 2019-09-27 10:55:08 +02:00
ryluth 82679ffa2e
Update Dockerfile
corrected COPY path
2019-09-27 10:45:03 +02:00
ryluth 1a9835192b
apt install -y 2019-09-27 10:10:43 +02:00
ryluth 8b303216e7
Update Dockerfile 2019-09-18 15:52:58 +02:00
ryluth 79cca1eb1a
Update Dockerfile 2019-09-18 08:21:11 +02:00
Hendrik Boll 3d3bbfd7bd fixed path in Dockerfile 2019-09-17 22:46:00 +02:00
Hendrik Boll ac245355ec removed broken ENV command in Dockerfile 2019-09-17 22:40:12 +02:00
Hendrik Boll 891a64c84e fixed sensitive information 2019-09-17 22:34:17 +02:00
Hendrik Boll c230f02b2e entrypoint script - added neccessary variables - updated Dockerfile 2019-09-17 22:29:32 +02:00
Hendrik Boll fe968cbbed Added gettext-base package to Dockerfile install for envsubst 2019-09-17 20:45:30 +02:00
Hendrik Boll 05b711927f updated _playlist.txt 2019-09-17 20:37:50 +02:00
ryluth 376b9672f5
Update README.md 2019-09-17 20:27:06 +02:00
ryluth 7c23bfd3d6
Update README.md 2019-09-17 20:04:20 +02:00
Hendrik Boll 92841304a7 updates including README 2019-09-17 20:00:37 +02:00
Hendrik Boll 6674d7ff7a updates including README 2019-09-17 19:59:28 +02:00
Hendrik Boll 37233499e9 updates including README 2019-09-17 19:58:11 +02:00
Hendrik Boll 90b29439d0 Merge branch 'master' of https://github.com/ryluth/docker-tmserver 2019-09-17 19:55:38 +02:00
Hendrik Boll 161e9e31a2 general updates 2019-09-17 19:40:48 +02:00
ryluth 07484a3185
Update README.md 2019-05-12 22:20:24 +02:00
ryluth 6fcdf6c0e8
Update README.md 2019-05-12 22:19:06 +02:00
Hendrik Boll 6e02d28160 disabled dedimania per default 2019-05-12 19:40:24 +02:00
Hendrik Boll 95d00cc8c2 fixed the database construction in plugins/plugin.localdatabase.php 2019-05-12 19:37:45 +02:00
Hendrik Boll 96fa8ef80a removed xml comment tag from MasterAdmin entry 2019-05-12 19:26:55 +02:00
Hendrik Boll 370ccf6089 cleaned up entrypoint-xaseco.sh
:
2019-05-12 19:21:16 +02:00
Hendrik Boll 1c36cef3fb Updated files to be in compliance with testing resultUpdated files to be in compliance with testing results 2019-05-12 19:03:32 +02:00
Hendrik Boll abb1bec479 updated entrypoint-xaseco 2019-05-12 15:34:02 +02:00
Hendrik Boll d9bc25ec7b fixed an error in the sed commands 2019-05-12 15:23:45 +02:00
Hendrik Boll b501897b6e fixed restart policy of xaseco 2019-05-12 15:16:17 +02:00
Hendrik Boll 75c390f065 fixed apt upgrade 2019-05-12 15:11:16 +02:00
Hendrik Boll 2ce213ff2f Fixed CMD in docker-xaseco Dockerfile 2019-05-12 15:08:37 +02:00
Hendrik Boll ccd6be23a2 Added sleep 30 to entrypoint-xaseco.sh to wait for trackmania server to boot up 2019-05-12 15:04:18 +02:00
Hendrik Boll 9f16e73977 Updated TODO.md 2019-05-12 15:03:08 +02:00
Hendrik Boll e2e8a83493 merged the tmserver and xaseco repository and included docker-compose.yml 2019-05-12 15:00:14 +02:00
Hendrik Boll 9ea1c309ef added xaseco option to docker-compose.yml 2019-05-12 14:55:58 +02:00
Hendrik Boll 738e5777a3 removed the image tag from docker-compose file 2019-05-12 11:33:09 +02:00
Hendrik Boll 9cbdce8891 Changed the base image to debian:stretch-slim instead of my old php image 2019-05-12 11:31:31 +02:00
Hendrik Boll 584f7b8487 Fixed small error with SERVER_ADM_PASSWORD variable 2019-05-12 11:21:18 +02:00
Hendrik Boll bbca8b418f Fixed block mapping error in yml parsing 2019-05-12 11:18:28 +02:00
Hendrik Boll e35c58d3de Fixed the tabstops at the end of docker-compose.yml 2019-05-12 11:11:48 +02:00
Hendrik Boll 32b89ce4df Merge branch 'master' of https://github.com/ryluth/docker-tmserver 2019-05-12 11:10:39 +02:00
Hendrik Boll 16bf8031f7 removed .gitignore from commit files 2019-05-12 11:10:10 +02:00
ryluth 54ecc6269d
Update README.md 2019-05-12 11:09:18 +02:00
Hendrik Boll 1579b016fd rewrote the tmserver container to only host tmserver and not xaseco 2019-05-12 11:07:07 +02:00
Hendrik Boll 50dd3690ee Fixed a lot of syntax error in entrypoint.sh and tmserver 2019-05-11 23:06:03 +02:00
Hendrik Boll ebb664cd37 Checking what's wrong in the repo 2019-05-11 16:21:21 +02:00
Hendrik Boll 03d9b306c7 Merge branch 'master' of https://github.com/ryluth/docker-tmserver 2019-05-11 16:10:30 +02:00
Hendrik Boll e835aadd06 Update and testing on docker builds 2019-05-11 16:09:58 +02:00
ryluth 9d4108f09c
Update README.md 2019-05-11 14:17:57 +02:00
ryluth 2e75dd3e35
Update README.md 2019-05-11 14:10:29 +02:00
Hendrik Boll a58e97e7e5 several changeseveral changess 2019-05-11 04:11:24 +02:00
ryluth 01af10784e
Update README.md 2019-05-11 02:37:07 +02:00
ryluth 2c73bc949f
Update README.md 2019-05-11 02:35:53 +02:00
Hendrik Boll f09b82cb1f Merge branch 'master' of https://github.com/ryluth/docker-tmserver 2019-05-11 02:34:35 +02:00
Hendrik Boll df00f0042a initial upload of docker-compose.yml 2019-05-11 02:33:13 +02:00
ryluth 1eb9bd71b3
Update README.md 2019-05-11 02:08:45 +02:00
ryluth e552d08036
Update README.md 2019-05-11 02:03:22 +02:00
ryluth b8061bd573
Update README.md 2019-05-11 02:01:52 +02:00
ryluth 258b68cbe8
Update README.md 2019-05-11 01:05:14 +02:00
Hendrik Boll dd34ae8939 Updated xaseco files to support variable substition 2019-05-11 00:59:28 +02:00
Hendrik Boll fa9e5aba50 Updated tmserver files 2019-05-11 00:47:24 +02:00
Hendrik Boll 9fafab2cf7 Cleaned up Dockerfile because of recent changes 2019-05-11 00:33:13 +02:00
Hendrik Boll cce43874dc Merge branch 'master' of https://github.com/ryluth/docker-tmserver 2019-05-11 00:24:17 +02:00
Hendrik Boll 1db33df91f Initial Commit. Syncing image files with repository. 2019-05-11 00:23:36 +02:00
ryluth 32f0be6332
Update TODO.md 2019-05-11 00:20:18 +02:00
ryluth 15e3fa95eb
Update TODO.md 2019-05-11 00:20:06 +02:00
ryluth 025c5a735e
Create TODO.md 2019-05-11 00:19:37 +02:00
54 changed files with 2071 additions and 414 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
/docker-compose.yml
/.git/
/.gitignore
/LICENSE
/README.md
/TODO.md

View File

@ -1,46 +0,0 @@
# TMSERVER
SERVER_LOGIN=<Dedicated Server Login>
SERVER_LOGIN_PASSWORD=
VALIDATION_KEY=
SERVER_SA_PASSWORD=
SERVER_ADM_PASSWORD=
SERVER_PORT=2350
SERVER_P2P_PORT=3450
SERVER_NAME=Trackmania Server
SERVER_COMMENT=This is a Trackmania Server
SERVER_PASSWORD=
HIDE_SERVER=0
MAX_PLAYERS=32
PACKMASK=stadium
GAMEMODE=1
CHATTIME=10000
FINISHTIMEOUT=1
DISABLERESPAWN=0
ROUNDS_POINTSLIMIT=30
TIMEATTACK_LIMIT=180000
TEAM_POINTSLIMIT=50
TEAM_MAXPOINTS=6
LAPS_NBLAPS=5
LAPS_TIMELIMIT=0
CUP_POINTSLIMIT=100
CUP_ROUNDSPERCHALLENGE=5
CUP_NBWINNERS=3
CUP_WARMUPDURATION=2
CUSTOM_PLAYLIST=
# XASECO
MASTERADMIN_LOGIN=<Your Login>
MYSQL_HOST=db
MYSQL_LOGIN=trackmania
MYSQL_DATABASE=trackmania
MYSQL_PASSWORD=

View File

@ -1,4 +0,0 @@
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=trackmania
MYSQL_USER=trackmania
MYSQL_PASSWORD=

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
.gitignore .gitignore
/.tmp /.tmp
.env .env
.env-mysql .env-mysql

215
README.md
View File

@ -1,155 +1,103 @@
# docker-tmserver # docker-tmserver
Docker image for simple or customizable Trackmania Nations Forever server
Docker image for simple or customizable Trackmania Nations/United Forever server
bundled with XAseco.
## How to use this image ## How to use this image
`docker run -e {required environment variables} -p {selected ports} fanyx/tmserver`
### docker run ### There are several required environment variables that you need to set:
`docker run --env-file <path/to/env-file> -p 2350/2350:udp -p 3450/3450:udp [-v {volumes}] fanyx/tmserver`
### docker-compose
Check the default [`docker-compose.yml`](./docker-compose.yml) to familiarize yourself
with a possible setup. Adjust it to your needs and according to the documentation below,
then run
`docker-compose up -d`
## Configuration - Trackmania
### Mandatory
``` ```
- SERVER_LOGIN | Server account login - $SERVER_LOGIN | Server account login
- SERVER_LOGIN_PASSWORD | Server account password - $SERVER_LOGIN_PASSWORD | Server account password
``` ```
### Optional
### Optional environment variables are:
``` ```
- SERVER_SA_PASSWORD | Password for SuperAdmin credential - $SERVER_PORT | Port for server communications -> Default : 2350
-> when left empty will be randomly generated - $SERVER_P2P_PORT | Port for peer2peer communication -> Default : 3450
- SERVER_ADM_PASSWORD | Password for Admin credential - $SERVER_SA_PASSWORD | Password for SuperAdmin credential -> when left empty will be randomly generated
-> when left empty will be randomly generated - $SERVER_ADM_PASSWORD | Password for Admin credential -> when left empty will be randomly generated
- SERVER_PORT | Port for server communications -> Default : 2350 - $SERVER_NAME | Server name in ingame browser -> Default : "Trackmania Server"
- SERVER_P2P_PORT | Port for peer2peer communication -> Default : 3450 - $SERVER_COMMENT | Server description -> Default : "This is a Trackmania Server"
- SERVER_NAME | Server name in ingame browser -> Default : "Trackmania Server" - $SERVER_PASSWORD | If you want to secure your server against unwanted logins, set a server password
- SERVER_COMMENT | Server description -> Default : "This is a Trackmania Server"
- SERVER_PASSWORD | If you want to secure your server against
unwanted logins, set a server password
- HIDE_SERVER | Whether you want your server public or not -> Default : 0 (public)
- MAX_PLAYERS | Max player count -> Default : 32
- PACKMASK | Leave empty to change server mode to United -> Default : stadium
(Nations)
``` ```
### Gamemodes
## Running this image with `docker-compose`
I have a default [`docker-compose.yml`](./docker-compose.yml) included in this repository.
You can adjust this file to your needs but running with docker-compose is more comfortable in general.
## Configuring the Trackmania server
Without manual configuration the server launches with Nadeo's default config.
This means round based driving.
Other configuration options are listed below:
``` ```
- GAMEMODE | 0 (Rounds), 1 (TimeAttack), 2 (Team), 3 (Laps), 4 (Stunts) -> Default : 1 - $GAMEMODE | 0 (Rounds), 1 (TimeAttack), 2 (Team), 3 (Laps), 4 (Stunts) -> Default : 1
- CHATTIME | Chat time value in milliseconds -> Default : 10000 - $CHATTIME | chat time value in milliseconds -> Default : 10000
- FINISHTIMEOUT | Finish timeout value in milliseconds. - $FINISHTIMEOUT | finish timeout value in milliseconds. 0 means classic, 1 means adaptive -> Default : 1
0 = classic, 1 = adaptive -> Default : 1 - $DISABLERESPAWN | 0 (respawns enabled), 1 (respawns disabled) -> Default : 0
- DISABLERESPAWN | 0 (respawns enabled), 1 (respawns disabled) -> Default : 0
``` ```
#### Gamemode : Rounds #### Gamemode : Rounds
```
- $ROUNDS_POINTSLIMIT | points limit for rounds mode -> Default : 30
```
```
- ROUNDS_POINTSLIMIT | Points limit for rounds mode -> Default : 30
```
#### Gamemode : TimeAttack #### Gamemode : TimeAttack
```
- $TIMEATTACK_LIMIT | time limit in milliseconds for time attack mode -> Default : 180000
```
```
- TIMEATTACK_LIMIT | Time limit in milliseconds for time attack mode -> Default : 180000
```
#### Gamemode : Team #### Gamemode : Team
```
- $TEAM_POINTSLIMIT | points limit for team mode -> Default : 50
- $TEAM_MAXPOINTS | number of maximum points per round for team mode -> Default : 6
```
```
- TEAM_POINTSLIMIT | Points limit for team mode -> Default : 50
- TEAM_MAXPOINTS | Number of maximum points per round for team mode -> Default : 6
```
#### Gamemode : Laps #### Gamemode : Laps
``` ```
- LAPS_NBLAPS | Number of laps for laps mode -> Default : 5 - $LAPS_NBLAPS | number of laps for laps mode -> Default : 5
- LAPS_TIMELIMIT | Time limit in milliseconds for laps mode -> Default : 0 - $LAPS_TIMELIMIT | time limit in milliseconds for laps mode -> Default : 0
``` ```
#### Gamemode : Cup
``` ### Running custom tracks
- CUP_POINTSLIMIT | Points limit for cup mode -> Default : 100 While the Nadeo tracks are available in this repository and accessible under `GameData/Tracks/Challenges/Nadeo/` you can also run custom tracks following the instructions below.
- CUP_ROUNDSPERCHALLENGE | Rounds per challenge -> Default : 5
- CUP_NBWINNERS | Number of Winners -> Default : 3
- CUP_WARMUPDURATION | Warmup duration -> Default : 2
```
## Configuration - XAseco You can run custom tracks by mounting a volume from where your tracks are stored to `/opt/tmserver/GameData/Tracks/Custom`.
I've taken the freedom to ease the MySQL configuration a bit. In this example i am storing my tracks in `./tracks` relative to the docker-compose file.
Other plugins still need to be configured fully.
Acquire the necessary files and follow the guide to custom configurations below.
### Mandatory
```
- MASTERADMIN_LOGIN | Login name of the player to assume MasterAdmin role for XAseco
```
### MySQL
```
- MYSQL_HOST | Host of MySQL database -> Default : db
- MYSQL_LOGIN | Username of MySQL database -> Default : trackmania
- MYSQL_PASSWORD (Mandatory) | Password of MySQL user
- MYSQL_DATABASE | Name of MySQL database -> Default : trackmania
```
## Customization
Apart from the configuration possibilities, I've included some scripts to add custom tracks, tracklist, configuration files, plugins and a blacklist to disable unwanted default plugins.
### Custom Tracks
While the Nadeo tracks are available in this repository and accessible under `GameData/Tracks/Challenges/Nadeo/`,
adding custom tracks from e.g. [Trackmania Exchange](https://tmuf.exchange/) is as simple as placing the files
in the `tracks/` folder and mounting it to `/var/lib/tmserver/GameData/Tracks/Custom/`.
``` ```
[...] [...]
tmserver: tmserver:
image: fanyx/tmserver image: fanyx/tmserver:latest
[...] [...]
volumes: volumes:
- ./tracks:/var/lib/tmserver/GameData/Tracks/Custom - ./tracks:/opt/tmserver/GameData/Tracks/Custom
[...] [...]
``` ```
### Custom Playlist
You can add tracks to a playlist in a simple way. ### Running a custom playlist
Create a plaintext file like in the example below and mount it to `/var/lib/tmserver/playlist.txt`.
To enable parsing of this file set `CUSTOM_PLAYLIST` in your env-file to anything but an empty string.
The tracks for the server are stored relative to `/var/lib/tmserver/GameData/Tracks`. You can add tracks to a playlist in a simple way. Just provide a `playlist.txt` that contains every track in a certain format. Create a folder next to your `docker-compose.yml`, mount it as a volume to `/opt/tmserver/playlist` and put the `playlist.txt` in there.
Creating your own playlist is as easy as specifying each track on a separate line in the `playlist.txt`
by its relative path to the `Tracks` folder. The tracks for the server are stored relative to `/opt/tmserver/GameData/Tracks`. Creating your own playlist is as easy as specifying each track on a separate line in the `playlist.txt` adressed by its relative path to the `Tracks` folder.
#### Example: #### Example:
Folder structure: Folder structure:
``` ```
|--> docker-compose.yml |--> docker-compose.yml
|--> ./tracks |--> ./tracks
|--> mini01.Challenge.Gbx
`--> SpeedxZxZ.Challenge.Gbx
|--> ./db-data |--> ./db-data
`--> ./playlist.txt `--> ./playlist
`--> playlist.txt
``` ```
playlist.txt : playlist.txt :
@ -158,64 +106,3 @@ Challenges/Nadeo/C01-Race.Challenge.Gbx
Custom/mini01.Challenge.Gbx Custom/mini01.Challenge.Gbx
Custom/SpeedxZxZ.Challenge.Gbx Custom/SpeedxZxZ.Challenge.Gbx
``` ```
---
**NOTE**
When mounting your own `playlist.xml` file to the container you overwrite a lot of
customization options that usually would be parsed from environment variables.
```xml
<gameinfos>
<game_mode>@GAMEMODE@</game_mode>
<chat_time>@CHATTIME@</chat_time>
<finishtimeout>@FINISHTIMEOUT@</finishtimeout>
<disablerespawn>@DISABLERESPAWN@</disablerespawn>
<rounds_pointslimit>@ROUNDS_POINTSLIMIT@</rounds_pointslimit>
<team_pointslimit>@TEAM_POINTSLIMIT@</team_pointslimit>
<team_maxpoints>@TEAM_MAXPOINTS@</team_maxpoints>
<timeattack_limit>@TIMEATTACK_LIMIT@</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>@LAPS_NBLAPS@</laps_nblaps>
<laps_timelimit>@LAPS_TIMELIMIT@</laps_timelimit>
<cup_pointslimit>@CUP_POINTSLIMIT@</cup_pointslimit>
<cup_roundsperchallenge>@CUP_ROUNDSPERCHALLENGE@</cup_roundsperchallenge>
<cup_nbwinners>@CUP_NBWINNERS@</cup_nbwinners>
<cup_warmupduration>@CUP_WARMUPDURATION@</cup_warmupduration>
</gameinfos>
```
If you're familiar with these options anyway, you can mount `playlist.xml` to
`/var/lib/tmserver/GameData/MatchSettings/playlist.xml` and use it as a complete
and persistent configuration file that can be written to by plugins or external tools
like RemoteCP.
---
### Custom configuration files
Most plugins need you to provide valid configuration files to function in the first place.
Place these in a folder e.g. `config/` and mount it to `/var/lib/xaseco/config/`.
All files will be linked to XAseco's root folder.
Careful, this will overwrite exisiting default files and `localdatabase.xml` as well.
### Custom plugins
Custom plugins work similar to configuration files.
Create a folder like `plugins/` and mount it to `/var/lib/xaseco/plugins/custom/`.
They will be linked down to the plugins folder.
### Plugin blacklist
Create a file called `blacklist` and list plugins by filename that you want ignored on
XAseco's boot.
Mount this file at `/var/lib/xaseco/blacklist`.
blacklist:
```
jfreu.chat.php
jfreu.plugin.php
```
would disable jfreu's plugins but leave all others enabled.

View File

@ -1,6 +1,7 @@
version: '3.8'
services: services:
tmserver: tmserver:
image: fanyx/tmserver:2.2.0 image: fanyx/tmserver:2.0.0
container_name: trackmania_tmserver container_name: trackmania_tmserver
depends_on: depends_on:
- db - db
@ -8,12 +9,10 @@ services:
env_file: .env env_file: .env
volumes: volumes:
- ./tracks:/var/lib/tmserver/GameData/Tracks/Challenges/Custom # => Custom tracks - ./tracks:/var/lib/tmserver/GameData/Tracks/Challenges/Custom # => Custom tracks
- ./playlist.txt:/var/lib/tmserver/playlist.txt # => Custom playlist
- ./blacklist:/var/lib/xaseco/blacklist # => Plugin blacklist - ./blacklist:/var/lib/xaseco/blacklist # => Plugin blacklist
- ./plugins:/var/lib/xaseco/plugins/custom # => Custom plugins - ./plugins:/var/lib/xaseco/plugins/custom # => Custom plugins
- ./config:/var/lib/xaseco/config # => Custom configuration files - ./config:/var/lib/xaseco/config # => Custom configuration files
ports: ports:
- "2350:2350"
- "2350:2350/udp" - "2350:2350/udp"
- "3450:3450/udp" - "3450:3450/udp"
db: db:

View File

@ -2,9 +2,7 @@
set -e set -e
[[ "$(id -u)" == 0 ]] && \ [[ "$(id -u)" == 0 ]] && s6-setuidgid trackmania "$0"
chown -R trackmania:trackmania /var/lib/xaseco && \
s6-setuidgid trackmania "$0"
cd /var/lib/xaseco cd /var/lib/xaseco

Binary file not shown.

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<blacklist>
<!-- format:
<player>
<login></login>
</player>
-->
</blacklist>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8" ?>
<cache version=4.0>
</cache>

View File

@ -15,13 +15,13 @@
<password>User</password> <password>User</password>
</level> </level>
</authorization_levels> </authorization_levels>
<masterserver_account> <masterserver_account>
<login>@SERVER_LOGIN@</login> <login>@SERVER_LOGIN@</login>
<password>@SERVER_LOGIN_PASSWORD@</password> <password>@SERVER_LOGIN_PASSWORD@</password>
<validation_key>@VALIDATION_KEY@</validation_key> <validation_key>@VALIDATION_KEY@</validation_key>
</masterserver_account> </masterserver_account>
<server_options> <server_options>
<name>@SERVER_NAME@</name> <name>@SERVER_NAME@</name>
<comment>@SERVER_COMMENT@</comment> <comment>@SERVER_COMMENT@</comment>
@ -29,17 +29,17 @@
<max_players>@MAX_PLAYERS@</max_players> <max_players>@MAX_PLAYERS@</max_players>
<password>@SERVER_PASSWORD@</password> <password>@SERVER_PASSWORD@</password>
<max_spectators>32</max_spectators> <max_spectators>32</max_spectators>
<password_spectator></password_spectator> <password_spectator></password_spectator>
<ladder_mode>forced</ladder_mode> <!-- value between 'inactive', 'forced' (or '0', '1') --> <ladder_mode>forced</ladder_mode> <!-- value between 'inactive', 'forced' (or '0', '1') -->
<ladder_serverlimit_min>0</ladder_serverlimit_min> <!-- Those values will be clamped to the limits authorized on http://official.trackmania.com/tmf-ladderserver/ --> <ladder_serverlimit_min>0</ladder_serverlimit_min> <!-- Those values will be clamped to the limits authorized on http://official.trackmania.com/tmf-ladderserver/ -->
<ladder_serverlimit_max>50000</ladder_serverlimit_max> <ladder_serverlimit_max>50000</ladder_serverlimit_max>
<enable_p2p_upload>True</enable_p2p_upload> <enable_p2p_upload>True</enable_p2p_upload>
<enable_p2p_download>True</enable_p2p_download> <enable_p2p_download>True</enable_p2p_download>
<callvote_timeout>60000</callvote_timeout> <callvote_timeout>60000</callvote_timeout>
<callvote_ratio>0.5</callvote_ratio> <!-- default ratio. value in [0..1], or -1 to forbid. --> <callvote_ratio>0.5</callvote_ratio> <!-- default ratio. value in [0..1], or -1 to forbid. -->
<callvote_ratios> <callvote_ratios>
@ -56,28 +56,28 @@
<use_changing_validation_seed>False</use_changing_validation_seed> <use_changing_validation_seed>False</use_changing_validation_seed>
</server_options> </server_options>
<system_config> <system_config>
<connection_uploadrate>512</connection_uploadrate> <!-- Kbps (kilo bits per second) --> <connection_uploadrate>512</connection_uploadrate> <!-- Kbps (kilo bits per second) -->
<connection_downloadrate>8192</connection_downloadrate> <!-- Kbps --> <connection_downloadrate>8192</connection_downloadrate> <!-- Kbps -->
<force_ip_address>@FORCE_IP_ADDRESS@</force_ip_address> <force_ip_address></force_ip_address>
<server_port>@SERVER_PORT@</server_port> <server_port>$SERVER_PORT</server_port>
<server_p2p_port>@SERVER_P2P_PORT@</server_p2p_port> <server_p2p_port>$SERVER_P2P_PORT</server_p2p_port>
<client_port>0</client_port> <client_port>0</client_port>
<bind_ip_address></bind_ip_address> <bind_ip_address></bind_ip_address>
<use_nat_upnp></use_nat_upnp> <use_nat_upnp></use_nat_upnp>
<p2p_cache_size>600</p2p_cache_size> <p2p_cache_size>600</p2p_cache_size>
<xmlrpc_port>5000</xmlrpc_port> <xmlrpc_port>5000</xmlrpc_port>
<xmlrpc_allowremote>True</xmlrpc_allowremote> <!-- If you specify an ip adress here, it'll be the only accepted adress. this will improve security. --> <xmlrpc_allowremote>True</xmlrpc_allowremote> <!-- If you specify an ip adress here, it'll be the only accepted adress. this will improve security. -->
<blacklist_url></blacklist_url> <blacklist_url></blacklist_url>
<guestlist_filename></guestlist_filename> <guestlist_filename></guestlist_filename>
<blacklist_filename></blacklist_filename> <blacklist_filename></blacklist_filename>
<packmask>@PACKMASK@</packmask> <packmask>stadium</packmask>
<allow_spectator_relays>False</allow_spectator_relays> <allow_spectator_relays>False</allow_spectator_relays>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<guestlist>
<!-- format
<player>
<login></login>
</player>
-->
</guestlist>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>27</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\Nations\Blue\C01-Race.Challenge.Gbx</file>
<ident>eDgWjoKe2dT3GfoTCGCmI_qMvfk</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C02-Race.Challenge.Gbx</file>
<ident>hlRjJEZGm0yr1sT91CtdIwmqsti</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C03-Acrobatic.Challenge.Gbx</file>
<ident>c4oQLgleEPkNtehypwdYXTkmVvi</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C04-Race.Challenge.Gbx</file>
<ident>yWy7ROt2lgk2zL44HKdBgUjuthi</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C05-Endurance.Challenge.Gbx</file>
<ident>UR7xWwTkMeFB2kqVLVVOGDBCKFb</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C06-Speed.Challenge.Gbx</file>
<ident>fwj7Gn1nSQ_8qx6MPUtzAfHngTj</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C07-Race.Challenge.Gbx</file>
<ident>PLVn84D8NoVGjidP1pLafZP8qA8</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C08-Obstacle.Challenge.Gbx</file>
<ident>Hb_oIOr6Y4_I3aoMogsTPufz8hl</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C09-Race.Challenge.Gbx</file>
<ident>9MOwoNkpYZhw8e99cxFI3hVZrvi</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C10-Acrobatic.Challenge.Gbx</file>
<ident>XYiTfAdultrTWVJpjl_Bdnf7x4l</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C11-Race.Challenge.Gbx</file>
<ident>npRjhClGPZMs_YK_T5yUrnWY0q9</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C12-Obstacle.Challenge.Gbx</file>
<ident>znbgMZayw8uBByLWqc6kYsEfG6l</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C13-Race.Challenge.Gbx</file>
<ident>qxHe8iBNC2soNhkOoOvEKDkxZ58</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C14-Endurance.Challenge.Gbx</file>
<ident>uuGCAivChymPBU6TAHp6qIKSoR4</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Blue\C15-Speed.Challenge.Gbx</file>
<ident>n4QZfCzSzwMxsY2ILHFUEEipjtg</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>17</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\Nations\Green\B01-Race.Challenge.Gbx</file>
<ident>8oDWqaNMXpyFg6e_QUb07Wzpkk3</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B02-Race.Challenge.Gbx</file>
<ident>b4ubJL0Aayrg7aqhe0RwI4jBQR1</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B03-Race.Challenge.Gbx</file>
<ident>HIH70OwdsvC7ZX_oKOWhwqDITx2</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B04-Acrobatic.Challenge.Gbx</file>
<ident>OfPhGxBSu5zHgl3GsndJGGens8k</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B05-Race.Challenge.Gbx</file>
<ident>R2W9o_MsXRP2PNp46stzmMWkgHb</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B06-Obstacle.Challenge.Gbx</file>
<ident>SZHG1tFsmJLJInUsruGgREWsFq1</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B07-Race.Challenge.Gbx</file>
<ident>NdajMtuuXvuxhfGkye4Om8wUXYi</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B08-Endurance.Challenge.Gbx</file>
<ident>u8RcNHvafbeKfHcNvgye0uq_jpb</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B09-Acrobatic.Challenge.Gbx</file>
<ident>t6kPFNQiJTm3rFqjGRGHBxwZOkd</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B10-Speed.Challenge.Gbx</file>
<ident>o7StLUfi3bsutUxdOjQgsOO6p_m</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B11-Race.Challenge.Gbx</file>
<ident>RVEoquUninLI8FqVo_ZCo4lr5X9</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B12-Race.Challenge.Gbx</file>
<ident>p4PhXsVTp7NhVmhSLZXeJjrFahe</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B13-Obstacle.Challenge.Gbx</file>
<ident>NxUOXF2VDOHaOyrYlD9p81Gnfp3</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B14-Speed.Challenge.Gbx</file>
<ident>bx9QX_lcEZ0IIGKXeYOw3lWqBXh</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Green\B15-Race.Challenge.Gbx</file>
<ident>X_uZrnyHg_3HuqP9oWEkg2pNh5c</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>37</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\Nations\Red\D01-endurance.Challenge.Gbx</file>
<ident>E0ZXX6DbQ1wZXMiLYW77zgjFcB9</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D02-Race.Challenge.Gbx</file>
<ident>r7OqCgR3yODNwmJcPGyUafJKRAh</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D03-Acrobatic.Challenge.Gbx</file>
<ident>KvPlXufFJaLjDGSRP1rcregOaX3</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D04-Race.Challenge.Gbx</file>
<ident>h1doGRJ46hAGF3AeCJPsPHE_Vb2</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D05-Race.Challenge.Gbx</file>
<ident>iDnUBYbFhfD0QIPmIyRvy1UIw_0</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D06-Obstacle.Challenge.Gbx</file>
<ident>Twnk9iISEER4KYGY8bfPffK5BU5</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D07-Race.Challenge.Gbx</file>
<ident>bRZJ7Wn3QyftteDpbnIYlrcEqp9</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D08-Speed.Challenge.Gbx</file>
<ident>RgXELEylfSWdjQG_XiiTFVkYi99</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D09-obstacle.Challenge.Gbx</file>
<ident>ka5WLGb0IrqZ1L7fVb6dXHNTWF0</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D10-Race.Challenge.Gbx</file>
<ident>icDiiqPi3EljXk49VJ6WUl0LQzb</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D11-Acrobatic.Challenge.Gbx</file>
<ident>yQULZVxaNxr7tFlNXr9SdOVA6l3</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D12-Speed.Challenge.Gbx</file>
<ident>DceckSvMpluYYGHaEeALei6A4tf</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D13-Race.Challenge.Gbx</file>
<ident>Nk8jftxeWaIICIOEGV8M_cV3gba</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D14-Endurance.Challenge.Gbx</file>
<ident>vIIX52BcNOt86BJ1NrZq6_bJir5</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\Red\D15-Endurance.Challenge.Gbx</file>
<ident>q9ETZ0R5yClf_9wDxsPI41gO6V6</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>7</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\Nations\White\A01-Race.Challenge.Gbx</file>
<ident>BeySZdnfuSh4nHY5xztiXLmlrXe</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A02-Race.Challenge.Gbx</file>
<ident>JwKdDsOUh4L9_eYyRsdiA2o1fW1</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A03-Race.Challenge.Gbx</file>
<ident>mWxQhvvPOoNfPaq18j3dokLqyO7</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A04-Acrobatic.Challenge.Gbx</file>
<ident>SEHmwPJVBl3NpHS56w6Sirac2Ic</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A05-Race.Challenge.Gbx</file>
<ident>I7rI7jAga6C4tGAe5OTDoyLF2fh</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A06-Obstacle.Challenge.Gbx</file>
<ident>syko1DvAxleoVlqMsc1sJzqbt66</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A07-Race.Challenge.Gbx</file>
<ident>KzeBzLOI62lxu3haZCPFn_4BfD6</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A08-Endurance.Challenge.Gbx</file>
<ident>KDBPTuNkrZG6jMxuRqmDBbLjfp6</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A09-Race.Challenge.Gbx</file>
<ident>TteOqSjrhVsdjZYAaLuGBWX2a4c</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A10-Acrobatic.Challenge.Gbx</file>
<ident>jH8X3qPtpn6pj3dLAaq08pyDdp1</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A11-Race.Challenge.Gbx</file>
<ident>N0CpLabOm8Kk6Lsf0kwelgHiMQm</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A12-Speed.Challenge.Gbx</file>
<ident>zwAbNlFSDcXjRBk0YSMyxc5kJJ8</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A13-Race.Challenge.Gbx</file>
<ident>K27AW3HYV47qqqXentunIoUERu8</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A14-Race.Challenge.Gbx</file>
<ident>6ktPCqLADXXuy5LaOLTzktaGlKf</ident>
</challenge>
<challenge>
<file>Campaigns\Nations\White\A15-Speed.Challenge.Gbx</file>
<ident>dJQvN8hB18o3SXNl897MOShzZQ5</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>24</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Bay\Blue\BayC1.Challenge.Gbx</file>
<ident>xnVb_5H4zM7LrTmwlqSu7I89WIm</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Blue\BayC2.Challenge.Gbx</file>
<ident>8l4cVTumajf1li2xZDF3QyfRGQ9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Blue\BayC3.Challenge.Gbx</file>
<ident>jJvxTMLeMW4JxWSTQsoS2ksxCBd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Blue\BayC4.Challenge.Gbx</file>
<ident>BEVHXBWkNy4Fd7SukIPneaNhMwf</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Blue\BayC5.Challenge.Gbx</file>
<ident>SWHPkY4p7qEBMS11Wwh551OnyCj</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>14</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Bay\Green\BayB1.Challenge.Gbx</file>
<ident>TSuQuXG8raQHgXVnNEpUZozYET1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Green\BayB2.Challenge.Gbx</file>
<ident>GlFei54b57sePj9a4uB7hGxtQfi</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Green\BayB3.Challenge.Gbx</file>
<ident>UMbXb6QFLSK7htbk1wFeUIwq113</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Green\BayB4.Challenge.Gbx</file>
<ident>CiC_mlGNS7sEVGFcFppEskFn8of</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Green\BayB5.Challenge.Gbx</file>
<ident>qtW6yA7T424zfXZifFRVN3HD2om</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>34</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Bay\Red\BayD1.Challenge.Gbx</file>
<ident>iAMrEREtlhtVQlsGNYdAD0uU3P8</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Red\BayD2.Challenge.Gbx</file>
<ident>sfe9vjSKIyMyt21Ye1US9fO3d2f</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Red\BayD3.Challenge.Gbx</file>
<ident>gMvY9waBx_B9YPu7zWQIBTKWG5l</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Red\BayD4.Challenge.Gbx</file>
<ident>DxIxSLl1P8K2dO9DUEvU4KPqrz5</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\Red\BayD5.Challenge.Gbx</file>
<ident>RJHi5c19gnBFZIdz1GLLOXHYobi</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>4</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Bay\White\BayA1.Challenge.Gbx</file>
<ident>KK8GilfJAgzqG_NFkyls9TAGiO3</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\White\BayA2.Challenge.Gbx</file>
<ident>6buhcEyIPyS_xoKlt8OQKiGjY5k</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\White\BayA3.Challenge.Gbx</file>
<ident>CyBlWFIdSwLZRmUOc0NOCcO_nQ9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\White\BayA4.Challenge.Gbx</file>
<ident>owjlOUpiUQ3FqK16PNGAOUrT5x9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Bay\White\BayA5.Challenge.Gbx</file>
<ident>drNAv9wcBw_ZISm84dtDjF1qJl5</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>25</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Coast\Blue\CoastC1.Challenge.Gbx</file>
<ident>GeY0_507YZXNhgEQfhYI7i_aCLd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Blue\CoastC2.Challenge.Gbx</file>
<ident>A2NzvnUxz0wb4gmqZtv67lw9SM3</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Blue\CoastC3.Challenge.Gbx</file>
<ident>NvVnDYzN6enW1XTeDNObyTw4TWe</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Blue\CoastC4.Challenge.Gbx</file>
<ident>3La8ljzEpqE3uTnTaA4VBHn9xP3</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Blue\CoastC5.Challenge.Gbx</file>
<ident>oYCwfKgUWfhx0ZiT3H0zp78Csf8</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>15</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Coast\Green\CoastB1.Challenge.Gbx</file>
<ident>fLRpPpLnhinpKmtaUaC00jQ5e5e</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Green\CoastB2.Challenge.Gbx</file>
<ident>Tqp8shDKD9YxdZpd_mGI387ysN9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Green\CoastB3.Challenge.Gbx</file>
<ident>vAp79h7b9B49CUKl1RPJH4u6dY6</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Green\CoastB4.Challenge.Gbx</file>
<ident>7mZGrks3D3ZG_likA2X25_v2bb4</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Green\CoastB5.Challenge.Gbx</file>
<ident>XcbwzBasWroMvTUMoGfWEZZXnvc</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>35</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Coast\Red\CoastD1.Challenge.Gbx</file>
<ident>M_41NAd0ZJ7rZGdAyilpaA_l84c</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Red\CoastD2.Challenge.Gbx</file>
<ident>zgHD7z4InE2dnZuMUu5ZiZ6TJOh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Red\CoastD3.Challenge.Gbx</file>
<ident>ElhoPK8FejcTArBcbzzhROSCm9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Red\CoastD4.Challenge.Gbx</file>
<ident>xiWyJq6r22r_a3XDLOHabPPuRN1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\Red\CoastD5.Challenge.Gbx</file>
<ident>zsGreGIjoEJioRna4Ca2LnVffL7</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>5</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Coast\White\CoastA1.Challenge.Gbx</file>
<ident>Q5O8JTSrfBj_Sho4UEppipNn1lm</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\White\CoastA2.Challenge.Gbx</file>
<ident>sHrP4F_Hft__4t7Lxn3KGNApRBf</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\White\CoastA3.Challenge.Gbx</file>
<ident>BIhWR1XVwqtBYsdBXfazoK0zGU</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\White\CoastA4.Challenge.Gbx</file>
<ident>pq8JuF3BUsitoTundl5RYn8wEPk</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Coast\White\CoastA5.Challenge.Gbx</file>
<ident>eG13RWHwWYtEMXSSreS6zr6vDH2</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>22</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Desert\Blue\DesertC1.Challenge.Gbx</file>
<ident>8SebSPNUFIajLWymNFZHZkW2Xnh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Blue\DesertC2.Challenge.Gbx</file>
<ident>IGfT1x5wHxLcPyfntC5moemN39h</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Blue\DesertC3.Challenge.Gbx</file>
<ident>RAREa_O26jy7ijEp9WjBEuXz9_d</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Blue\DesertC4.Challenge.Gbx</file>
<ident>PxxR0F6ELbXIi7tp6gxRYgWZmBf</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Blue\DesertC5.Challenge.Gbx</file>
<ident>caTwVpFAdA_PzLEpmAdPe02lg53</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>12</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Desert\Green\DesertB1.Challenge.Gbx</file>
<ident>RPJZdVvNCRcC7sNYZ0pcFzJUC0a</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Green\DesertB2.Challenge.Gbx</file>
<ident>L5XJzuLfS8eTsyDv2okLFT5EmYh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Green\DesertB3.Challenge.Gbx</file>
<ident>pwvOUneeZupb8gXmSzxIvcQfGZj</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Green\DesertB4.Challenge.Gbx</file>
<ident>j6acnHdHyOJfeRXKiKKlRBvwPX5</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Green\DesertB5.Challenge.Gbx</file>
<ident>VeFqtdTr0cmH4KtM5mSiBzLZ3B0</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>32</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Desert\Red\DesertD1.Challenge.Gbx</file>
<ident>JD3rNOcd_zztFZUDLIRYHBw2fSi</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Red\DesertD2.Challenge.Gbx</file>
<ident>spjUHBBBwxXbmz9t28dvsg0Mjsd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Red\DesertD3.Challenge.Gbx</file>
<ident>H5kJQMsdXjB_FUX9g6HliH872kj</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Red\DesertD4.Challenge.Gbx</file>
<ident>OyBGZZYhTTS2srBwVwR8xpB7g19</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\Red\DesertD5.Challenge.Gbx</file>
<ident>JtMRm7HqtomW8t2740PyBx3t5fk</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>2</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Desert\White\DesertA1.Challenge.Gbx</file>
<ident>fN8oFawm1KTGkVXFEDIcT0z1oC2</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\White\DesertA2.Challenge.Gbx</file>
<ident>ohcKygytqGuu0cbIkMyqh8EAXJ1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\White\DesertA3.Challenge.Gbx</file>
<ident>0rJOhZ9owlrbpzdn4kuyDUzwBWd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\White\DesertA4.Challenge.Gbx</file>
<ident>irSjbm9UWTVfcaMZm3HlLg5Gewc</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Desert\White\DesertA5.Challenge.Gbx</file>
<ident>q1N7wa2TmNz_QmG3QZfm5DMmsY</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>21</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Island\Blue\IslandC1.Challenge.Gbx</file>
<ident>rX5YyKmUiPBmyvzj34hWdrVWrK2</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Blue\IslandC2.Challenge.Gbx</file>
<ident>5RLV0JFiEknMWSoLfOP93JXoJe1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Blue\IslandC3.Challenge.Gbx</file>
<ident>Acogr0IIF6bqJv5jjlINxw8aZp0</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Blue\IslandC4.Challenge.Gbx</file>
<ident>X6CxBL5bSBGhWXmhzLdEsiEcPSa</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Blue\IslandC5.Challenge.Gbx</file>
<ident>byoRiBrftGh9sL6SpqGpKxH2h8m</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>11</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Island\Green\IslandB1.Challenge.Gbx</file>
<ident>cNVFIz24Lp6zvxlOURjU5Hfi8hb</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Green\IslandB2.Challenge.Gbx</file>
<ident>lHQPPQZ4w7SBegPPiJCu11Tyg8m</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Green\IslandB3.Challenge.Gbx</file>
<ident>feAvIdvjrzDL8f8wBgVZzs7auSh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Green\IslandB4.Challenge.Gbx</file>
<ident>gsBKhcmvnVITHRaTGRdnFUhTj0l</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Green\IslandB5.Challenge.Gbx</file>
<ident>bg9z0E_7QY8vwYVEQBssRBH6Knd</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>31</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Island\Red\IslandD1.Challenge.Gbx</file>
<ident>A7s5IpC7XfDWknn1PXKKBKCD2W1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Red\IslandD2.Challenge.Gbx</file>
<ident>E7XQEP4oT4qP8NYeOn81YPYgEO5</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Red\IslandD3.Challenge.Gbx</file>
<ident>rK_OGHHTE9GdMqSpPBOqvkjleq5</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Red\IslandD4.Challenge.Gbx</file>
<ident>ST387vLgNaX4HbasZzXruPq3kzh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\Red\IslandD5.Challenge.Gbx</file>
<ident>PTOfMzMx8Sdrk4by2lJFqf9vtJl</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>1</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Island\White\IslandA1.Challenge.Gbx</file>
<ident>BFLkfRWgOLoqhmFoGQmcIpMG7f3</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\White\IslandA2.Challenge.Gbx</file>
<ident>cCky5HvrsCNjBYwdAm06DGf3F1e</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\White\IslandA3.Challenge.Gbx</file>
<ident>tGOCtEIitr7u8GGshFsat_0hAZ2</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\White\IslandA4.Challenge.Gbx</file>
<ident>dMUhOtUAj1XhssvIJn5hrTEslX4</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Island\White\IslandA5.Challenge.Gbx</file>
<ident>5qigQIX0mBqHUtFQ5rHC5h5SZ47</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>23</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Rally\Blue\RallyC1.Challenge.Gbx</file>
<ident>r8BgTLVQvpc97avfjSnWFkymRcd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Blue\RallyC2.Challenge.Gbx</file>
<ident>invHcwznN0lhX1knqKoh8NWT5Im</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Blue\RallyC3.Challenge.Gbx</file>
<ident>wbUzUoCydZTCoXv14oqOTsZmLSl</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Blue\RallyC4.Challenge.Gbx</file>
<ident>OXJ6oNACOvUHwOciVadq4awfvi3</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Blue\RallyC5.Challenge.Gbx</file>
<ident>8Sp6qCSx5GcIpyoEG7TXegPJPN4</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>13</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Rally\Green\RallyB1.Challenge.Gbx</file>
<ident>6_anVkrO2thrW95MPMnMryaSMQa</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Green\RallyB2.Challenge.Gbx</file>
<ident>8IVaoPt_RUtEvKn4bwqLxIWZvK0</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Green\RallyB3.Challenge.Gbx</file>
<ident>IrF1y5XyYYHCKCXW9O3Ppm3Z2Rj</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Green\RallyB4.Challenge.Gbx</file>
<ident>FvtjVC7UGq5iukJ9RsNMs7wqKRi</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Green\RallyB5.Challenge.Gbx</file>
<ident>GvlexZR0shOTxSdgiKlYKMDo8F</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>33</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Rally\Red\RallyD1.Challenge.Gbx</file>
<ident>O8hVBuqe_BaccF_1lHx4ppFjwtc</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Red\RallyD2.Challenge.Gbx</file>
<ident>xgK3TtJnAIdaJtutIObAtLVO87l</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Red\RallyD3.Challenge.Gbx</file>
<ident>F82aQO8FVuDKGxXptO3hO0_eby8</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Red\RallyD4.Challenge.Gbx</file>
<ident>Fx99sI7vtJL_xewqzNYVV9Tp6Wd</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\Red\RallyD5.Challenge.Gbx</file>
<ident>i2cGu9Hw2EZhce2V6ELEPNWAHfd</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>3</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Rally\White\RallyA1.Challenge.Gbx</file>
<ident>SjKnJSYPsFPur7GiG0pIou3Q934</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\White\RallyA2.Challenge.Gbx</file>
<ident>QRoBVUTGMNIuxqK0ktZeWVmi3B9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\White\RallyA3.Challenge.Gbx</file>
<ident>Y4fLtLANTRLAb60CaSamoKcsiUh</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\White\RallyA4.Challenge.Gbx</file>
<ident>_qHnykwSFw9fN41US14CwO6Hxb5</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Rally\White\RallyA5.Challenge.Gbx</file>
<ident>H33E9Yhc75mHQfdhIN1JD9D2Jef</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>26</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Snow\Blue\SnowC1.Challenge.Gbx</file>
<ident>iLrDjHss2EsvnWpo7u4pWqK_NGc</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Blue\SnowC2.Challenge.Gbx</file>
<ident>PMjgzPR2XKuSf_xqJGs8fESdjI7</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Blue\SnowC3.Challenge.Gbx</file>
<ident>pwVSn8op8_yKKyIVZrurBNUxk71</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Blue\SnowC4.Challenge.Gbx</file>
<ident>Vo9x9JGDFROJM8uYNRmcaBw3N54</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Blue\SnowC5.Challenge.Gbx</file>
<ident>MDBKjzABmlnjPLEwGHz5U8FLUPk</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>16</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Snow\Green\SnowB1.Challenge.Gbx</file>
<ident>yLDCGWXRY2t6AR0iyCfXrOm9iai</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Green\SnowB2.Challenge.Gbx</file>
<ident>9HahRrBoTxsV0XcodW9_vPShgIg</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Green\SnowB3.Challenge.Gbx</file>
<ident>TATIyxp9q1kHD8s2euKBksYPm07</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Green\SnowB4.Challenge.Gbx</file>
<ident>GBnhBkg8xkLdc7udoClIJQbLYu</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Green\SnowB5.Challenge.Gbx</file>
<ident>KOlYpZNGUTAevOQ7KXh5yw3LEr5</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>36</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Snow\Red\SnowD1.Challenge.Gbx</file>
<ident>cc1SDaOom8g_XB8_KtAbN1ax96e</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Red\SnowD2.Challenge.Gbx</file>
<ident>vSqn4Hur9pfZHqRpZipsXstbeAa</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Red\SnowD3.Challenge.Gbx</file>
<ident>NvKB_hLYO2yRdh1fkUlhdHuhpua</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Red\SnowD4.Challenge.Gbx</file>
<ident>DzKVX_DeyJfsl_fNAeJAmnVnzLl</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\Red\SnowD5.Challenge.Gbx</file>
<ident>lHyjPIxLIk3uV07EflGjdl81Y60</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>6</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Snow\White\SnowA1.Challenge.Gbx</file>
<ident>QlVUCrLbaN03PZBwhNJQyeuAevg</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\White\SnowA2.Challenge.Gbx</file>
<ident>eZoARW46f9HTlWtrNweTNUHzVba</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\White\SnowA3.Challenge.Gbx</file>
<ident>d9Vhi2RP6n5uodtvG_Xr9ELK5E1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\White\SnowA4.Challenge.Gbx</file>
<ident>U9x197ObY3pRRnIPXU4DPaERPG9</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Snow\White\SnowA5.Challenge.Gbx</file>
<ident>ds921J29OfPhk6uzPKAu7j6DUca</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>240000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>240000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>20</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Stadium\Blue\StadiumC1.Challenge.Gbx</file>
<ident>5lSunHjU4j0twFNK7MQNP5FOp3m</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Blue\StadiumC2.Challenge.Gbx</file>
<ident>3QBb5EgTVuUNhnDrizNJmi4K4Ii</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Blue\StadiumC3.Challenge.Gbx</file>
<ident>q0ljLrLGWogdntNr85I4UrwPsLf</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Blue\StadiumC4.Challenge.Gbx</file>
<ident>3uxg8E_RaZSQezPhykAveG3tH_6</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Blue\StadiumC5.Challenge.Gbx</file>
<ident>Yv5PKpzZhwTSFpKPeitsjsgDTJ1</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>180000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>10</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Stadium\Green\StadiumB1.Challenge.Gbx</file>
<ident>AJr0WOWFNr16GgPR5gATk0FaR4c</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Green\StadiumB2.Challenge.Gbx</file>
<ident>jwkqslQXaAKq4pvLWVHGnVzPute</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Green\StadiumB3.Challenge.Gbx</file>
<ident>hm4BM_c3sqpI2qzgX2vR9acvTj4</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Green\StadiumB4.Challenge.Gbx</file>
<ident>LiSj9Js5kM4erXyCy8ez6l4cQej</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Green\StadiumB5.Challenge.Gbx</file>
<ident>dVAqPX0DEuox0R7Z3qcX4N0gvD8</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<lan_game_mode>0</lan_game_mode>
<internet_game_mode>1</internet_game_mode>
<hotseat_game_mode>0</hotseat_game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<timeattack_limit>300000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<team_pointslimit>5</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<hotseat_timeattack_limit>300000</hotseat_timeattack_limit>
<hotseat_rounds_count>5</hotseat_rounds_count>
</gameinfos>
<filter>
<is_solo>0</is_solo>
<is_hotseat>1</is_hotseat>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<sort_index>30</sort_index>
<random_map_order>0</random_map_order>
</filter>
<challenge>
<file>Campaigns\United\Race\Stadium\Red\StadiumD1.Challenge.Gbx</file>
<ident>Jy1iY548W5lQ1wUZxi4QdWcUJig</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Red\StadiumD2.Challenge.Gbx</file>
<ident>w6QxL8QkmzuC7zUeQ9lfzlGFX92</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Red\StadiumD3.Challenge.Gbx</file>
<ident>ZQu1Y0CVPbrHrXlTupqwz6F7CQi</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Red\StadiumD4.Challenge.Gbx</file>
<ident>xm4qMVhLEiq35ZyzMf6vMudIwxi</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\Red\StadiumD5.Challenge.Gbx</file>
<ident>rE2zbgLaeB7aCoSpRXqm8Q62rXk</ident>
</challenge>
</playlist>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<playlist>
<gameinfos>
<game_mode>0</game_mode>
<chat_time>10000</chat_time>
<finishtimeout>1</finishtimeout>
<allwarmupduration>0</allwarmupduration>
<disablerespawn>0</disablerespawn>
<forceshowallopponents>0</forceshowallopponents>
<rounds_pointslimit>30</rounds_pointslimit>
<rounds_usenewrules>0</rounds_usenewrules>
<rounds_forcedlaps>0</rounds_forcedlaps>
<rounds_pointslimitnewrules>5</rounds_pointslimitnewrules>
<team_pointslimit>50</team_pointslimit>
<team_maxpoints>6</team_maxpoints>
<team_usenewrules>0</team_usenewrules>
<team_pointslimitnewrules>5</team_pointslimitnewrules>
<timeattack_limit>180000</timeattack_limit>
<timeattack_synchstartperiod>0</timeattack_synchstartperiod>
<laps_nblaps>5</laps_nblaps>
<laps_timelimit>0</laps_timelimit>
<cup_pointslimit>100</cup_pointslimit>
<cup_roundsperchallenge>5</cup_roundsperchallenge>
<cup_nbwinners>3</cup_nbwinners>
<cup_warmupduration>2</cup_warmupduration>
</gameinfos>
<hotseat>
<game_mode>0</game_mode>
<time_limit>300000</time_limit>
<rounds_count>5</rounds_count>
</hotseat>
<filter>
<is_lan>1</is_lan>
<is_internet>1</is_internet>
<is_solo>0</is_solo>
<is_hotseat>0</is_hotseat>
<sort_index>0</sort_index>
<random_map_order>0</random_map_order>
<force_default_gamemode>0</force_default_gamemode>
</filter>
<startindex>0</startindex>
<challenge>
<file>Campaigns\United\Race\Stadium\White\StadiumA1.Challenge.Gbx</file>
<ident>4kQ_0mHdJtnSdsQty9ZX0W8SDb1</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\White\StadiumA2.Challenge.Gbx</file>
<ident>u8WV4GNAj7tJe22gwcseGtPNP1n</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\White\StadiumA3.Challenge.Gbx</file>
<ident>2WPJKLTVg7J7vBYP8QIA0T4L6K</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\White\StadiumA4.Challenge.Gbx</file>
<ident>Eh81Raowv4vxF9gKQ6g5DA5kNA6</ident>
</challenge>
<challenge>
<file>Campaigns\United\Race\Stadium\White\StadiumA5.Challenge.Gbx</file>
<ident>TGQmmc6MHpqlt5gzl9LkEfzsCB9</ident>
</challenge>
</playlist>

View File

@ -4,23 +4,20 @@ config=( )
playlist=( ) playlist=( )
# Mandatory # Mandatory
SERVER_SA_PASSWORD=${SERVER_SA_PASSWORD:?ERROR | SuperAdminPassword needs to be set. Generate with pwgen if needed.} && \
config+=( "SERVER_SA_PASSWORD" )
SERVER_ADM_PASSWORD=${SERVER_ADM_PASSWORD:?ERROR | AdminPassword needs to be set. Generate with pwgen if needed.} && \
config+=( "SERVER_ADM_PASSWORD" )
SERVER_LOGIN=${SERVER_LOGIN?:ERROR | ServerLogin is missing. Server cannot start.} && \ SERVER_LOGIN=${SERVER_LOGIN?:ERROR | ServerLogin is missing. Server cannot start.} && \
config+=( "SERVER_LOGIN" ) config+=( "SERVER_LOGIN" )
SERVER_LOGIN_PASSWORD=${SERVER_LOGIN_PASSWORD?:ERROR | ServerLoginPassword is missing. Server cannot start.} && \ SERVER_LOGIN_PASSWORD=${SERVER_LOGIN_PASSWORD?:ERROR | ServerLoginPassword is missing. Server cannot start.} && \
config+=( "SERVER_LOGIN_PASSWORD" ) config+=( "SERVER_LOGIN_PASSWORD" )
# Optional # Optional
VALIDATION_KEY=${VALIDATION_KEY:-} && config+=( "VALIDATION_KEY" )
SERVER_SA_PASSWORD=${SERVER_SA_PASSWORD:-$(pwgen -s 24 1)} && config+=( "SERVER_SA_PASSWORD" )
echo "INFO | SERVER_SA_PASSWORD: ${SERVER_SA_PASSWORD}"
SERVER_ADM_PASSWORD=${SERVER_ADM_PASSWORD:-$(pwgen -s 24 1)} && config+=( "SERVER_ADM_PASSWORD" )
echo "INFO | SERVER_ADM_PASSWORD: ${SERVER_ADM_PASSWORD}"
SERVER_PORT=${SERVER_PORT:-2350} && config+=( "SERVER_PORT" ) SERVER_PORT=${SERVER_PORT:-2350} && config+=( "SERVER_PORT" )
echo "INFO | SERVER_PORT: ${SERVER_PORT}" echo "INFO | SERVER_PORT: ${SERVER_PORT}"
SERVER_P2P_PORT=${SERVER_P2P_PORT:-3450} && config+=( "SERVER_P2P_PORT" ) SERVER_P2P_PORT=${SERVER_P2P_PORT:-3450} && config+=( "SERVER_P2P_PORT" )
echo "INFO | SERVER_P2P_PORT: ${SERVER_P2P_PORT}" echo "INFO | SERVER_P2P_PORT: ${SERVER_P2P_PORT}"
FORCE_IP_ADDRESS=${FORCE_IP_ADDRESS:-${curl https://api.ipify.org}} && config += ( "FORCE_IP_ADDRESS" )
echo "INFO | FORCE_IP_ADDRESS: ${FORCE_IP_ADDRESS}"
SERVER_NAME=${SERVER_NAME:-Trackmania Server} && config+=( "SERVER_NAME" ) SERVER_NAME=${SERVER_NAME:-Trackmania Server} && config+=( "SERVER_NAME" )
echo "INFO | SERVER_NAME: ${SERVER_NAME}" echo "INFO | SERVER_NAME: ${SERVER_NAME}"
SERVER_COMMENT=${SERVER_COMMENT:-This is a Trackmania Server} && config+=( "SERVER_COMMENT" ) SERVER_COMMENT=${SERVER_COMMENT:-This is a Trackmania Server} && config+=( "SERVER_COMMENT" )
@ -31,8 +28,6 @@ HIDE_SERVER=${HIDE_SERVER:-0} && config+=( "HIDE_SERVER" )
echo "INFO | HIDE_SERVER: ${HIDE_SERVER}" echo "INFO | HIDE_SERVER: ${HIDE_SERVER}"
MAX_PLAYERS=${MAX_PLAYERS:-32} && config+=( "MAX_PLAYERS" ) MAX_PLAYERS=${MAX_PLAYERS:-32} && config+=( "MAX_PLAYERS" )
echo "INFO | MAX_PLAYERS: ${MAX_PLAYERS}" echo "INFO | MAX_PLAYERS: ${MAX_PLAYERS}"
PACKMASK=${PACKMASK:-stadium} && config+=( "PACKMASK" )
echo "INFO | PACKMASK: ${PACKMASK}"
# Game Config # Game Config
GAMEMODE=${GAMEMODE:-1} && playlist+=( "GAMEMODE" ) GAMEMODE=${GAMEMODE:-1} && playlist+=( "GAMEMODE" )
@ -74,4 +69,4 @@ done
for idx in "${!playlist[@]}"; do for idx in "${!playlist[@]}"; do
arg=${playlist[$idx]} arg=${playlist[$idx]}
sed -i -e "s/@$arg@/${!arg}/g" GameData/Tracks/MatchSettings/playlist.xml sed -i -e "s/@$arg@/${!arg}/g" GameData/Tracks/MatchSettings/playlist.xml
done done

View File

@ -2,23 +2,19 @@
echo "INFO | Parsing custom playlist..." echo "INFO | Parsing custom playlist..."
[[ -z "${CUSTOM_PLAYLIST}" ]] && \ CUSTOM_PLAYLIST=${CUSTOM_PLAYLIST:-playlist.txt}
echo "INFO | Custom Playlist is not enabled, keeping default or user-edited playlist" && \
exit 0
PLAYLIST_PATH=${PLAYLIST_PATH:-playlist.txt}
PLAYLIST_FILE='GameData/Tracks/MatchSettings/playlist.xml' PLAYLIST_FILE='GameData/Tracks/MatchSettings/playlist.xml'
if [[ -f "${PLAYLIST_PATH}" ]]; then if [[ -f "${CUSTOM_PLAYLIST}" ]]; then
count=1 count=1
while read l; do while read l; do
xmlstarlet ed -L -s /playlist -t elem -n challenge $PLAYLIST_FILE xmlstarlet ed -L -s /playlist -t elem -n challenge $PLAYLIST_FILE
xmlstarlet ed -L -s "/playlist/challenge[${count}]" -t elem -n file -v "${l}" $PLAYLIST_FILE xmlstarlet ed -L -s "/playlist/challenge[${count}]" -t elem -n file -v "${l}" $PLAYLIST_FILE
count=$((count+1)) count=$((count+1))
done < $PLAYLIST_PATH done < $CUSTOM_PLAYLIST
else else
xmlstarlet ed -L -s /playlist -t elem -n challenge $PLAYLIST_FILE xmlstarlet ed -L -s /playlist -t elem -n challenge $PLAYLIST_FILE
xmlstarlet ed -L -s "playlist/challenge[1]" -t elem -n file -v "Challenges/Nadeo/A01-Race.Challenge.Gbx" $PLAYLIST_FILE xmlstarlet ed -L -s "playlist/challenge[1]" -t elem -n file -v "Challenges/Nadeo/A01-Race.Challenge.Gbx" $PLAYLIST_FILE
fi fi
echo "INFO | Finished parsing playlist files" echo "INFO | Finished parsing playlist files."

View File

@ -2,9 +2,7 @@
set -e set -e
[[ "$(id -u)" == 0 ]] && \ [[ "$(id -u)" == 0 ]] && s6-setuidgid trackmania "$0"
chown -R trackmania:trackmania /var/lib/tmserver && \
s6-setuidgid trackmania "$0"
cd /var/lib/tmserver cd /var/lib/tmserver

View File

@ -21,7 +21,7 @@ echo "INFO | TMSERVER_PORT: ${TMSERVER_PORT}"
MYSQL_HOST=${MYSQL_HOST:-db} && \ MYSQL_HOST=${MYSQL_HOST:-db} && \
database+=( "MYSQL_HOST" ) database+=( "MYSQL_HOST" )
echo "INFO | MYSQL_HOST: ${MYSQL_HOST}" echo "INFO | MYSQL_HOST: ${MYSQL_HOST}"
MYSQL_LOGIN=${MYSQL_LOGIN:?-trackmani} && \ MYSQL_LOGIN=${MYSQL_LOGIN:?ERROR | MySQL username was not given...} && \
database+=( "MYSQL_LOGIN" ) database+=( "MYSQL_LOGIN" )
echo "INFO | MYSQL_LOGIN: ${MYSQL_LOGIN}" echo "INFO | MYSQL_LOGIN: ${MYSQL_LOGIN}"
MYSQL_PASSWORD=${MYSQL_PASSWORD:?ERROR | MySQL password was not given...} && \ MYSQL_PASSWORD=${MYSQL_PASSWORD:?ERROR | MySQL password was not given...} && \

View File

@ -1,2 +0,0 @@
jfreu.lite.php
jfreu.chat.php

View File

@ -1,100 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<matchsave_settings>
<!-- use the following section to force known logins to a specific team -->
<teamforce_teams>
<team>
<name>XXX</name>
<logins>
<login>xxx-max</login>
<login>siteguru</login>
<!-- ... add as many logins as you like -->
</logins>
</team>
<!-- ... add as many teams as you like -->
<default_team_name>Challengers</default_team_name> <!-- This is the team where all other players end up when teamforce is enabled -->
</teamforce_teams>
<!-- now the design stuff, colors and so on -->
<str_points_this_round>$i$0AFPoints This Round</str_points_this_round>
<str_points_this_match>$i$AF0Points This Match</str_points_this_match>
<col_chat_plugin>{#emotic}</col_chat_plugin>
<col_chat_default>{#message}</col_chat_default>
<col_chat_highlite>{#server}</col_chat_highlite>
<col_window_default>$000</col_window_default>
<col_window_highlite>$f00</col_window_highlite>
<col_window_highlite_team>$0af</col_window_highlite_team>
<col_window_special>$i$n</col_window_special>
<col_window_separator>$fff</col_window_separator>
<col_window_hint>$n$888</col_window_hint>
<col_round_points>{#highlite}</col_round_points>
<col_match_points>{#highlite}</col_match_points>
<col_teamname_round>$0af</col_teamname_round>
<col_teamname_round_highlite>{#server}</col_teamname_round_highlite>
<col_teamname_match>$af0</col_teamname_match>
<col_teamname_match_highlite>{#server}</col_teamname_match_highlite>
<!-- help messages - they show up when the points are displayed, but only if you activate them -->
<help_enabled>True</help_enabled>
<!-- you can add more random messages (these will only show up if the player does not belong to a team-->
<hlp_no_team>{#server}To join a team type "{#welcome}/team {#message}yourteamname{#server}"</hlp_no_team>
<hlp_random_msg_no_team>{#server}See all team options by typing "{#welcome}/team {#message}help{#server}"</hlp_random_msg_no_team>
<hlp_random_msg_no_team>{#server}Join a team and chat with your teammates via "{#welcome}/tc {#message}Hello Teammates{#server}"</hlp_random_msg_no_team>
<hlp_random_msg_no_team>{#server}See the current match standings by typing "{#welcome}/standings{#server}"</hlp_random_msg_no_team>
<!-- you can add more random messages (these will only show up if the player already belongs to a team-->
<hlp_change_team>{#server}Change your teamname with "{#welcome}/team {#message}yourteamname{#server}"</hlp_change_team>
<hlp_random_msg>{#server}See all team options by typing "{#welcome}/team {#message}help{#server}"</hlp_random_msg>
<hlp_random_msg>{#server}See the current match standings by typing "{#welcome}/standings{#server}"</hlp_random_msg>
<hlp_random_msg>{#server}Chat with your teammates by typing "{#welcome}/tc {#message}Hello Teammates{#server}"</hlp_random_msg>
<!-- last but not least, edit the startup configuration below -->
<show_teamname_changes_to_public>true</show_teamname_changes_to_public> <!-- Determines whether a teamname change will be shown to all players or not (affects only the /teamname or /team command)-->
<admin_can_read_teamchat>True</admin_can_read_teamchat> <!-- If true admins can read the teamchat of other teams -->
<teamchat_enabled>true</teamchat_enabled> <!-- Enable or disable teamchat -->
<teamchat_prefix>{#highlite}[Team]</teamchat_prefix> <!-- Prefix shown in front of each teamchat line -->
<team_force_enabled>False</team_force_enabled> <!-- Determines whether all players are forced to be in a team -->
<others_can_score>True</others_can_score> <!-- Determines whether teamless players' scores are tracked or not -->
<teamname_colors_allowed>False</teamname_colors_allowed> <!-- Determines if the teamnames are allowed to be color coded -->
<teamname_max_length>12</teamname_max_length> <!-- Determines how long a teamname is allowed to be -->
<match_results_timeout>5000</match_results_timeout> <!-- Match Result window timeout in milliseconds -->
<save_to_db>True</save_to_db> <!-- Shall the teamnames be saved to a database -->
<save_to_file>True</save_to_file> <!-- Shall the results be written to files -->
<!-- some filenames -->
<template_name>html.tpl</template_name>
<output_name>race_results.html</output_name>
<output_name_last>race_results_last.html</output_name_last>
<output_name_match>match_results.html</output_name_match>
<!-- path to your playlist directory, enable one of these two: -->
<!-- Windows -->
<!-- <playlist_dir>D:/TMDedicated/GameData/Tracks/MatchSettings</playlist_dir> -->
<!-- Linux -->
<playlist_dir>/home/tmf/TMF/GameData/Tracks/MatchSettings</playlist_dir>
<!-- basic settings -->
<max_player_count>16</max_player_count>
<format_date>Y-m-d</format_date>
<format_time>H:i</format_time>
<points>10, 8, 6, 4, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0</points>
<!-- enable the whole plugin -->
<enabled>True</enabled>
</matchsave_settings>

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<!-- override a track's custom music? -->
<override_track>False</override_track>
<!-- automatically load next song upon next track? -->
<auto_nextsong>True</auto_nextsong>
<!-- automatically shuffle songs at start-up & reload? -->
<auto_shuffle>False</auto_shuffle>
<!-- allow jukeboxing songs by players? -->
<allow_jukebox>True</allow_jukebox>
<!-- strip subdirs when showing song files? -->
<strip_subdirs>False</strip_subdirs>
<!-- strip extensions when showing song files? -->
<strip_exts>False</strip_exts>
<!-- read tags from all .ogg songs? -->
<cache_tags>True</cache_tags>
<!-- use read-only cache file? -->
<cache_readonly>False</cache_readonly>
<!-- filename in main directory to store tags -->
<cache_file>musictagscache.xml</cache_file>
<!-- full http link to directory holding the song files -->
<!-- http server must allow direct download of those files -->
<!-- OR a path below the server's GameData directory (e.g. -->
<!-- "Music/") which allows serving songs without webserver -->
<music_server>YOUR_SERVER_URL</music_server>
<!-- list of song files at your music server in .ogg or .mux -->
<!-- avoid spaces and special characters in the filenames and -->
<!-- http link, and observe correct upper/lowercase characters -->
<song_files>
<song>YOUR_FIRST_SONG.ogg</song>
<song>YOUR_SECOND_SONG.mux</song>
<song>YOUR_THIRD_SONG.ogg</song>
<!-- and so on -->
</song_files>
<messages>
<current>{#server}> {#music}The current song is: {#highlite}{1}</current>
<next>{#server}>> {#music}{1}$z$s {#highlite}{2}$z$s{#music} loaded the next song: {#highlite}{3}</next>
<reloaded>{#server}>> {#music}{1}$z$s {#highlite}{2}$z$s{#music} reloaded music config and cleared jukebox!</reloaded>
<sorted>{#server}>> {#music}{1}$z$s {#highlite}{2}$z$s{#music} sorted song list and cleared jukebox!</sorted>
<shuffled>{#server}>> {#music}{1}$z$s {#highlite}{2}$z$s{#music} shuffled song list and cleared jukebox!</shuffled>
<jukebox>{#server}>> {#highlite}{1}{#music} jukeboxed song: {#highlite}{2}</jukebox>
<jukebox_already>{#server}> {#music}You already have a song in the jukebox! Wait till it's been played before adding another.</jukebox_already>
<jukebox_dupl>{#server}> {#music}This song has already been added to the jukebox, pick another one.</jukebox_dupl>
<jukebox_notfound>{#server}> {#music}Song_ID not found - Type {#highlite}/music list{#music} to see all songs.</jukebox_notfound>
<jukebox_drop>{#server}>> {#music}Player {#highlite}{1}{#music} dropped his/her song {#highlite}{2}{#music} from jukebox!</jukebox_drop>
<jukebox_nodrop>{#server}> {#music}You don't have a song in the jukebox, use {#highlite}/music Song_ID{#music} to add one...</jukebox_nodrop>
<jukebox_empty>{#server}> {#music}No songs in the jukebox, use {#highlite}/music Song_ID{#music} to add one...</jukebox_empty>
<no_jukebox>{#server}> {#highlite}/music #{#music} is not currently enabled on this server.</no_jukebox>
<shutdown>{#server}>> {#music}{1}$z$s {#highlite}{2}$z$s{#music} disabled server music!</shutdown>
</messages>
</settings>