11# Arma 3 Server
22
3- Ein Arma 3 Gameserver ermöglicht es Arma 3 Spielern eine
4- gemeinsame Mission zu spielen. Das hier beschriebene Vorgehen
5- erweitert die Grundfunktionalität von LGSM (Linux Game Server
6- Manager) um die benötigten Paketen für extdb3.
7-
8- In diesem Beispiel wird ein Arma 3 Exile Mod Server aufgesetzt:
3+ Ein Arma 3 Gameserver ermöglicht es Arma 3 Spielern eine gemeinsame Mission zu spielen.
4+ Das hier beschriebene Vorgehen erweitert die Grundfunktionalität von LGSM (Linux Game Server
5+ Manager) um die benötigten Paketen für extdb2/extdb3.
96
107``` yaml
118services :
129 arma3 :
1310 image : ghcr.io/felbinger/arma3server
1411 restart : always
15- environment :
16- # will be stored on filesystem during installation:
17- # /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
18- - " STEAM_USER="
19- - " STEAM_PASS="
12+ env_file : .arma3.env
2013 ports :
21- - ' 2302:2302/udp' # Arma 3 + voice over network
22- - ' 2303:2303/udp' # Steam Query
23- - ' 2304:2304/udp' # Steam Master
24- - ' 2305:2305/udp' # old Voice over Network
25- - ' 2306:2306/udp' # BattleEye
14+ - " 2302:2302/udp" # Arma 3 + voice over network
15+ - " 2303:2303/udp" # Steam Query
16+ - " 2304:2304/udp" # Steam Master
17+ - " 2305:2305/udp" # old Voice over Network
18+ - " 2306:2306/udp" # BattleEye
2619 volumes :
27- - ' /srv/arma3:/home/linuxgsm'
20+ - " /srv/arma3:/home/linuxgsm"
2821
2922 mariadb :
3023 image : mariadb
@@ -37,6 +30,12 @@ services:
3730 volumes :
3831 - " /srv/arma3-mariadb:/var/lib/mysql"
3932` ` `
33+ ` ` ` sh
34+ # .arma3.env
35+ # will also be stored on filesystem (/srv/aram3/lgsm/config-lgsm/arma3server/arma3server.cfg) during installation!
36+ STEAM_USER=steam_username
37+ STEAM_PASS=steam_password
38+ ```
4039
4140Vor dem ersten Start müssen die Berechtigungen des Verzeichnisses ` /srv/arma3 ` angepasst werden.
4241``` shell
@@ -47,13 +46,28 @@ chown 1000:1000 /srv/arma3
4746Anschließend können die Container gestartet werden (` docker compose up -d arma3 ` ),
4847wodurch die Installation angestoßen wird.
4948
49+ ### Wichtige Pfade
50+ ``` shell
51+ # things that need to be done to start the server (e. g. mods)
52+ /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
53+
54+ # arma 3 server / network config
55+ /srv/arma3/serverfiles/cfg/arma3server.server.cfg
56+ /srv/arma3/serverfiles/cfg/arma3server.network.cfg
57+
58+ # mpmission folder
59+ /srv/arma3/serverfiles/mpmissions
60+ ```
61+
62+ ## Exile Mod
63+
5064Für Exile müssen nun einige Mods im Verzeichnis ` /srv/arma3/serverfiles/ ` hinzugefügt werden:
5165``` shell
5266cd /srv/arma3/serverfiles/
5367
5468# download and extract mods
55- wget http ://bravofoxtrotcompany.com/exile/@Exile-1.0.4.zip
56- wget http ://exilemod.com/ExileServer-1.0.4a.zip
69+ wget https ://bravofoxtrotcompany.com/exile/@Exile-1.0.4.zip
70+ wget https ://exilemod.com/ExileServer-1.0.4a.zip
5771unzip @Exile-1.0.4.zip
5872unzip ExileServer-1.0.4a.zip
5973rm * .zip
@@ -81,20 +95,93 @@ servermods="@ExileServer"
8195_EOF
8296
8397# delete remaining extracted files from exile-server
84- rm -r /srv/arma3/serverfiles/Arma\ 3\ Server/
85- rm -r /srv/arma3/serverfiles/MySQL
98+ rm -r /srv/arma3/serverfiles/{Arma\ 3\ Server,MySQL}/
99+
100+ # adjust permissions, so that LGSM can work with all files
101+ chown -R 1000:1000 /srv/arma3
86102```
87103
88104Nach einem Neustart der Container (` docker compose down && docker compose up -d ` )
89105sollten diese geladen werden, falls Probleme auftreten können diese dem Serverlog
90106entnommen werden (` docker compose exec arma3 arma3server console ` ).
91107
92- # ## Wichtige Pfade
93- ` ` ` shell
94- # things that need to be done to start the server (e. g. mods)
95- /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
96-
97- # arma 3 server / network config
98- /srv/arma3/serverfiles/cfg/arma3server.server.cfg
99- /srv/arma3/serverfiles/cfg/arma3server.network.cfg
100- ` ` `
108+ <!--
109+ ### Mod: Extended Base Mod
110+ Die Datei `/srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg` muss in der Zeile `mods=` um `;@Extended_Base_Mod` erweitert werden.
111+
112+ siehe https://www.youtube.com/watch?v=dhT6C4PrCrQ
113+ -->
114+
115+ ### Mod: AdminToolkit
116+ 1 . [ Git-Repository] ( https://github.com/ole1986/a3-admintoolkit ) herunterladen
117+ 2 . Mittels [ PBO-Manager] ( https://github.com/SteezCram/Armaholic-Archive/tree/main/PBO_Manager ) ` /a3-admintoolkit-master/@AdminToolkitServer/addons/admintoolkit_servercfg.pbo ` entpacken
118+ 3 . Variablen in ` config.cpp ` anpassen (siehe ` class AdminToolkit ` in ` class CfgSettings ` ):
119+ - ServerCommandPassword
120+ - AdminList
121+ - ModeratorList
122+ 4 . PBO mit modifizierter ` config.cpp ` packen und @AdminToolkitServer auf den Server hochladen.
123+ 5 . mission anpassen
124+ 1 . Mission entpacken
125+ 2 . ` /a3-admintoolkit-master/source/mission_file/atk ` in root-Verzeichnis der Mission kopieren
126+ 3 . Vor ` class CfgExileCustomCode ` folgende ` class CfgAdminToolkitCustomMod ` einfügen:
127+ ``` cpp
128+ class CfgAdminToolkitCustomMod {
129+ /* Exclude some main menu items
130+ * To only show the menus loaded from an extension, use:
131+ *
132+ * ExcludeMenu[ ] = {"Players", "Vehicles", "Weapons" , "Other"};
133+ * /
134+ ExcludeMenu[ ] = {};
135+
136+ /* Load an additional sqf file as MOD */
137+ Extensions[] = {
138+ /**
139+ * Usage: {"<Your Mod Title>", "<YourModFile>"}
140+ * add a new menu entry called My Extension into main menu */
141+ {"My Extension", "MyExtension"}
142+ };
143+
144+ /* 4 Quick buttons allowing to add any action you want - See example below*/
145+ QuickButtons[] = {
146+ /* send a message to everyone using the parameter text field */
147+ {"Restart Msg", "['messageperm', ['Server Restart in X minutes']] call AdminToolkit_doAction"},
148+ /* Quickly get a Helicopter */
149+ {"Heli", "['getvehicle', ['B_Heli_Light_01_armed_F']] call AdminToolkit_doAction"},
150+ /*4 button*/
151+ {"Empty", "['Command', ['Variable #1', 'Variable #2']] call AdminToolkit_doAction"}
152+ };
153+ };
154+ ```
155+
156+ 4. `description.ext` bearbeiten, Nachfolgendes zur `class CfgRemoteExec.Functions` hinzufügen:
157+ ```cpp
158+ class AdminToolkit_network_receiveRequest {
159+ allowedTargets = 2;
160+ };
161+ ```
162+ 5. Mission packen und auf Server hochladen
163+
164+ 6 . @AdminToolkitServer als Client(!) Mod zur Serverkonfiguration (` /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg ` ) hinzufügen
165+ ```
166+ mods="@Exile;@AdminToolkitServer"
167+ servermods="@ExileServer"
168+ ```
169+
170+ 8. `verifySignatures` in `serverfiles/cfg/arma3server.server.cfg` deaktivieren, da die Mod nicht signiert ist.
171+
172+ 9. Server Neustarten und testen
173+ ```sh
174+ docker compose -f /home/admin/arma3/docker-compose.yml down
175+ docker compose -f /home/admin/arma3/docker-compose.yml up -d
176+ ```
177+
178+ Client mit @AdminToolkit Mod starten und dem Spiel beitreten.
179+
180+ Das AdminInterface sollte auf der Taste F2 liegen.
181+
182+ <!--
183+ ### Mod: DMS with "Capture point" missions
184+
185+ siehe https://youtube.com/watch?v=4syLDu9lIrM
186+ siehe https://youtube.com/watch?v=z24natBw37c
187+ -->
0 commit comments