// ****************************************************************************
//                                                                            *
//     ArmA 3 Server Config File - server.cfg                                 *
//                                                                            *
//     More info about parameters:                                            *
//     https://community.bistudio.com/wiki/server.cfg                         *
//                                                                            *
// ****************************************************************************

// Some settings are not listed here; see link above for extensive list.
// Some settings are disabled (commented out). Remove the // to enable them.

// === GLOBAL SETTINGS ===

// Hostname for server.
hostname = "Arma 3 Server";

// Server password - for private servers.
password = "";

// Admin Password
//passwordAdmin = "ADMINPASSWORD";

// Whitelisted Admins - Clients that do not need a password to login.
//admins[] = { "UID OR steamID64", "0123456789", "9876543210" };

// Server Command Password - for scripting and certain mods.
//serverCommandPassword = "COMMANDPASSWORD";

// Log File
logFile = "server_console.log";
// RPT File Timestamp Format - none | short | full
timeStampFormat = "short";

// Message of the Day (MOTD)
motd[] = {
    "Welcome to My Arma 3 Server",
    "TS3 Server:     teamspeak.somewhere.com",
    "Web:            www.example.com"
};
// MOTD Interval - Seconds between each message.
motdInterval = 5;

// Missions Cycle
class Missions
{
	class Mission1
	{
		template = MP_ZGM_m11.Altis;
		difficulty = "Regular";
		class Params {};
	};
	class Mission2
	{
		template = MP_ZGM_m12.Stratis;
		difficulty = "Recruit";
		class Params {};
	};
};
// Whitelisted Missions - Only these missions can be selected on the mission select screen.
//missionWhitelist[] = { "MP_ZGM_m11.Altis", "MP_ZGM_m12.Stratis" };


// === JOINING RULES ===

// Server Slots
maxPlayers = 32;

// Enable BattlEye
BattlEye = 1;

// Addon Signature Verification - Verifies .pbos against .bisign files - 0 = Disabled | 2 = Enabled (v2)
verifySignatures = 2;

// Kick Duplicate Player IDs - 0 = No | 1 = Yes
kickDuplicate = 1;
// Allow File Patching - 0 = No Clients | 1 = Headless Clients only | 2 = All Clients
allowedFilePatching = 0;
// Minimum Required Client Version
//requiredBuild = 999999999;
// LAN Mode
loopback = 0;
// UPNP Router Mode
upnp = 0;

// Headless Client IP Whitelists
headlessClients[] = { "127.0.0.1" };
localClient[] = { "127.0.0.1" };


// === INGAME SETTINGS ===

// Advanced Flight Model Enforcement - 0 = Up to player | 1 = Advanced model enforced | 2 = Simple model enforced
forceRotorLibSimulation = 0;

// Disable In-Game Voice Chat (Voice over Network)
disableVoN = 0;
// VoN Codec - 0 = older SPEEX codec | 1 = newer IETF standard OPUS codec
vonCodec = 1;
// VoN Codec Quality
//  0-10 = 8kHz (narrowband).
//  11-20 = 16kHz (wideband).
//  21-30 = 32kHz (ultrawideband).
vonCodecQuality = 10;

// Persistent Mission - Keeps mission running when all players disconnect.
persistent = 0;

// Allow Drawing in Map
drawingInMap = 1;

// Enforce Difficulty - Use "Custom" for ServerProfile-defined custom difficulty
forcedDifficulty = "regular";


// === VOTING ===

// Allowed Vote Commands - Un-comment this to prevent voted commands (like vote-kick)
//allowedVoteCmds[] = {};

// Start mission-voting when X number of players connect.
voteMissionPlayers = 1;

// Vote Threshold - Percentage of votes needed to confirm a vote.
voteThreshold = 0.33;


// === CLIENT NETWORK HEALTH ===

// Seconds to wait before disconnecting a user which temporarily lost connection.
disconnectTimeout = 90;
// Max Desync Value
maxdesync = 150;
// Max Ping (ms)
maxping = 200;
// Max Packet Loss
maxpacketloss = 50;

// Action to Take on Slow Network (defined above)
//  Defines if {<MaxPing>, <MaxPacketLoss>, <MaxDesync>, <DisconnectTimeout>} will be logged (0) or kicked (1)
kickClientsOnSlowNetwork[] = { 1, 1, 0, 1 };

// Kick Duration (temp-ban) on Network Kick
//  Options {<manual kick>, <connectivity kick>, <BattlEye kick>, <harmless kick>} -- Timeout {>0 seconds; -1 until missionEnd; -2 until serverRestart}
kickTimeout[] = { {0, -1},{1, 1},{2, 5},{3, 1} };


// === SERVER SIDE SCRIPTING ===
// See https://community.bistudio.com/wiki/ArmA:_Server_Side_Scripting

onUserConnected = "";
onUserDisconnected = "";
doubleIdDetected = "";

onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";
onDifferentData = "";

// Only allow files with these extensions to be loaded via loadFile command
allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"};
// Only allow files with these extensions to be loaded via preprocessFile/preprocessFileLineNumber commands
allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"};
// Only allow files with these extensions to be loaded via HTMLLoad command
allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"};
// Leave commented to let missions/campaigns/addons decide what URIs are supported. Un-comment to define server-level restrictions for URIs
//allowedHTMLLoadURIs = {};
