Arma: server.cfg, missioner og mods
De tre konfigurationsfiler, missionsrotation der virker, forskellen på -mod og -serverMod, signaturer og keys-mappen - plus admin-kommandoerne.
Tre filer, tre formål
| Fil | Indlæses med | Hvad den styrer |
|---|---|---|
server.cfg |
-config= |
Servernavn, kodeord, admins, missioner, sikkerhed |
basic.cfg |
-cfg= |
Netværksindstillinger og båndbredde |
<navn>.Arma3Profile |
-profiles= + -name= |
Sværhedsgrad og hvilke hjælpemidler spillerne har |
Arma har ingen standard-config. Peger
-config=på en fil der ikke findes, indlæses ingen konfiguration - uden fejlbesked. Serveren starter fint, men uden dit navn, dine missioner og dine indstillinger. Det er den hyppigste "hvorfor sker der ingenting"-sag.
Navnene server.cfg og basic.cfg er ren konvention. Det er opstartsparametrene, der afgør hvilke filer der læses.
server.cfg
hostname = "Min Arma server";
password = "";
passwordAdmin = "vaelg-noget-langt";
maxPlayers = 40;
motd[] = {"Velkommen til serveren.", "Regler i vores Discord."};
admins[] = {"76561198000000000"};
logFile = "server_console.log";
timeStampFormat = "short";
verifySignatures = 2;
BattlEye = 1;
kickduplicate = 1;
allowedFilePatching = 0;
disableVoN = 0;
vonCodecQuality = 10;
persistent = 1;
| Nøgle | Betydning |
|---|---|
hostname |
Navnet i serverbrowseren |
password |
Kodeord for at joine. Tom = åben server |
passwordAdmin |
Bruges med #login inde i spillet |
admins[] |
SteamID64. De på listen kan bruge #login uden kodeord |
maxPlayers |
Loftet er det laveste af denne og missionens antal slots |
verifySignatures |
2 kræver at alle klientens mods er signeret. 1 er udgået og opfører sig som 2 |
kickduplicate |
Smider spiller nummer to ud med samme ID |
allowedFilePatching |
0 ingen, 1 kun headless clients, 2 alle |
persistent |
1 lader missionen køre videre, når sidste spiller går |
timeStampFormat |
none, short eller full i loggen |
missionWhitelist[] |
Begrænser hvilke missioner en admin må vælge |
Husk semikolon efter hver linje. Det er den anden store fejlkilde.
Missioner
Missioner er .pbo-filer i mappen mpmissions/. Navnet følger mønstret Missionsnavn.Terræn.pbo.
I server.cfg sættes rotationen op sådan:
class Missions
{
class Mission1
{
template = MP_Marksmen_01.Altis;
difficulty = "veteran";
class Params {};
};
class Mission2
{
template = MP_End_Game_01.Altis;
difficulty = "veteran";
class Params {};
};
};
Tre ting der går galt:
templateskrives uden anførselstegn og uden.pbo. FilenMP_Marksmen_01.Altis.pbobliver tiltemplate = MP_Marksmen_01.Altis;- Hver indre
classlukkes med};- både krøllet parentes og semikolon - Den ydre
class Missionslukkes også med};
difficulty tager navnet på en sværhedsgrad: recruit, regular, veteran eller custom. Vælger du custom, hentes indstillingerne fra CustomDifficulty i din profilfil.
Uden en admin på serveren vælger den selv en mission, når den første spiller forbinder, og skifter til den næste i rækken, når missionen er slut.
Vil du have missionen til at køre videre uden spillere, sætter du persistent = 1; og starter serveren med -autoInit.
Mods
Der er to parametre, og forskellen er vigtig:
| Parameter | Betydning |
|---|---|
-mod= |
Mods som spillerne også skal have. Kort, våben, ACE, CBA, RHS |
-serverMod= |
Mods der kun kører på serveren. Admin- og logværktøjer. Spillerne behøver dem ikke |
Syntaksen er semikolonsepareret uden mellemrum:
-mod=@CBA_A3;@ace;@RHSUSAF
-serverMod=@serverTools
På Linux skal semikolonerne escapes:
-mod=@CBA_A3\;@ace\;@RHSUSAF. Uden det bliver kun det første mod indlæst.Linux er også versalfølsomt. Et mod der virker på Windows, kan fejle på serveren, fordi mappe- eller filnavne har store bogstaver. Det er den klassiske Arma-på-Linux-fejl.
Afhængigheder først: @CBA_A3 skal stå før de mods, der kræver det.
Signaturer og keys-mappen
Med verifySignatures = 2; kontrollerer serveren, at hver eneste .pbo hos spilleren er signeret med en nøgle, serveren kender.
- Hvert mod har en
keys-mappe med en.bikey-fil. - Kopiér den
.bikeyover i serverens egenkeys/-mappe i rodmappen. - Genstart.
Mangler nøglen, bliver spilleren afvist - også selv om de har præcis det rigtige mod installeret.
basic.cfg
Netværksindstillingerne. Standardværdierne fungerer for de fleste:
MinBandwidth = 131072;
MaxBandwidth = 10000000000;
MaxMsgSend = 128;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
| Nøgle | Standard | Betydning |
|---|---|---|
MaxMsgSend |
128 |
Pakker per simulationscyklus |
MaxSizeGuaranteed |
512 |
Størrelse på garanterede pakker - fx skud |
MaxSizeNonguaranteed |
256 |
Størrelse på ikke-garanterede pakker - fx positioner |
MinBandwidth |
131072 |
Garanteret båndbredde |
MaxCustomFileSize |
0 |
0 betyder at spillere ikke må have egne filer |
MinBandwidthogMaxBandwidthangives i bits per sekund, ikke bytes. Det misforstås konstant.
Admin inde i spillet
Skriv i chatten:
#login dit-admin-kodeord
Står du i admins[], kan du nøjes med #login uden kodeord.
| Kommando | Hvad den gør |
|---|---|
#missions |
Vælg mission fra listen |
#restart |
Genstart missionen |
#reassign |
Start forfra og fordel roller igen |
#lock / #unlock |
Luk og åbn for nye spillere |
#kick <navn> |
Smid en spiller ud |
#exec ban <navn> |
Udeluk en spiller. ID'et skrives i ban.txt |
#init |
Genindlæs server.cfg |
#monitor 5 |
Vis serverens ydelse hvert femte sekund |
#userlist |
Vis alle på serveren |
#shutdown |
Luk serveren ned |
En logget ind admin rangerer over en valgt admin, som spillerne har stemt frem.
Headless client - kort fortalt
En headless client er en ekstra Arma-proces, der forbinder som en spillerløs klient og overtager AI'en, så serveren kan koncentrere sig om spillerne.
I server.cfg:
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};
Den skal køre præcis samme -mod=-liste som serveren, og har serveren et kodeord, skal den også bruge det. Vær opmærksom på, at missionen selv skal være skrevet til at bruge headless clients - ellers gør den ingen forskel.
Fejlfinding
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
| Serveren starter, men uden mine indstillinger | -config= peger på en fil, der ikke findes |
Tjek stien - der er ingen standardfil |
| Serveren afviser at starte | Syntaksfejl: manglende semikolon eller krøllet parentes | Tjek især }; efter hver class |
| Missionslisten er tom | .pbo ligger ikke i mpmissions/, eller template indeholder .pbo |
Ret begge dele |
| Spilleren afvises med signaturfejl | .bikey ligger ikke i serverens keys/-mappe |
Kopiér nøglen over og genstart |
| Spilleren afvises for mod-mismatch | Modet ligger i -serverMod=, men spillerne skal have det |
Flyt det til -mod= |
| Kun det første mod indlæses på Linux | Semikoloner ikke escapet | Brug \; mellem mods |
| Mods virker på Windows, ikke på serveren | Store bogstaver i filnavne | Alt skal være små bogstaver på Linux |
| Spillere sparkes ud ved join | MaxCustomFileSize er 0 |
Det er med vilje - hæv den, hvis du vil tillade egne filer |
| Missionen stopper når sidste spiller går | persistent = 0 |
Sæt den til 1, og brug -autoInit |
| Sværhedsgraden ændrer sig ikke | difficulty peger på en preset, eller profilen indlæses ikke |
Tjek -name= og -profiles= |
| Tilfældige BattlEye-kick | BattlEye ikke opdateret i begge ender | Opdatér BE på server og klient |
Gode råd
- Ret én ting ad gangen, og brug
#inittil at genindlæseserver.cfguden at genstarte hele serveren. - Hold
verifySignatures = 2ogBattlEye = 1slået til på en offentlig server. - Brug
filePatchingExceptions[]med varsomhed - den springer både filpatching- og signaturkontrol over for de nævnte spillere. - Skriv jeres regler i
motd[]. Det er det første, spillerne ser. - Tag en kopi af
server.cfg, før du roder iclass Missions. Én manglende};vælter hele filen.
Kan din server ikke indlæse en mission eller et mod? Send os server_console.log i en ticket - fejlen står som regel tydeligt.