From 89fb00771571f8c9dafc86f4971b0b31277e692c Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Tue, 7 Mar 2023 05:50:50 +1100 Subject: [PATCH] Add Arma 3 (generic) (#203) --- arma3.kvp | 91 ++++ arma3basic.cfg | 17 + arma3config.json | 1144 ++++++++++++++++++++++++++++++++++++++++++ arma3metaconfig.json | 23 + arma3modscript.sh | 6 + arma3server.cfg | 113 +++++ arma3updates.json | 57 +++ 7 files changed, 1451 insertions(+) create mode 100644 arma3.kvp create mode 100644 arma3basic.cfg create mode 100644 arma3config.json create mode 100644 arma3metaconfig.json create mode 100644 arma3modscript.sh create mode 100644 arma3server.cfg create mode 100644 arma3updates.json diff --git a/arma3.kvp b/arma3.kvp new file mode 100644 index 0000000..3e82875 --- /dev/null +++ b/arma3.kvp @@ -0,0 +1,91 @@ +Meta.DisplayName=Arma 3 +Meta.Description=Arma 3 Dedicated Server +Meta.OS=Windows, Linux +Meta.Arch=x86_64 +Meta.Author=Greelan +Meta.URL=https://arma3.com/ +Meta.DisplayImageSource=steam:107410 +Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$QueryPort} +Meta.ConfigManifest=arma3config.json +Meta.MetaConfigManifest=arma3metaconfig.json +Meta.ConfigRoot=arma3.kvp +Meta.MinAMPVersion=2.4.2.0 +Meta.SpecificDockerImage= +Meta.DockerRequired=False +Meta.ContainerPolicy=Supported +Meta.ContainerPolicyReason= +Meta.ExtraSetupStepsURI=https://discourse.cubecoders.com/t/arma-3-generic-guide/3475 +Meta.Prerequsites=[] +Meta.ExtraContainerPackages=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +App.DisplayName=Arma 3 +App.RootDir=./arma3/ +App.BaseDirectory=./arma3/233780/ +App.ExecutableWin=233780\ArmA3Server_x64.exe +App.ExecutableLinux=233780/arma3server_x64 +App.WorkingDir=233780 +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} -name=AMPServer "-profiles={{$FullBaseDir}}A3Master" "-bepath={{$FullBaseDir}}battleye" -port={{$GamePort}} -config=server.cfg -cfg=basic.cfg -world=empty -ip={{$ApplicationIPBinding}} {{autoInit}}{{$FormattedArgs}} {{parfile}}{{CustomServerArgs}} +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"107410"} +App.CommandLineParameterFormat="-{0}={1}" +App.CommandLineParameterDelimiter= +App.ExitMethod=String +App.ExitTimeout=30 +App.ExitString=#shutdown +App.ExitFile=app_exit.lck +App.HasWriteableConsole=True +App.HasReadableConsole=True +App.SupportsLiveSettingsChanges=False +App.LiveSettingChangeCommandFormat=set {0} "{1}" +App.ApplicationIPBinding=0.0.0.0 +App.Ports=[{"Protocol":"UDP","Port":2302,"Ref":"GamePort","Name":"Game Port","Description":"Port for game traffic"},{"Protocol":"UDP","Port":2303,"Ref":"QueryPort","Name":"Query Port","Description":"Port for Steam query traffic"},{"Protocol":"UDP","Port":2304,"Ref":"SteamPort","Name":"Steam Port","Description":"Port for Steam traffic"},{"Protocol":"UDP","Port":2305,"Ref":"ReservedPort","Name":"Reserved Port","Description":"Port reserved for VON traffic"},{"Protocol":"UDP","Port":2306,"Ref":"BattlEyePort","Name":"BattlEye Port","Description":"Port for BattlEye traffic"},{"Protocol":"UDP","Port":2307,"Ref":"RCONPort","Name":"RCON Port","Description":"Port for RCON traffic"}] +App.AdminPortRef=RCONPort +App.PrimaryApplicationPortRef=GamePort +App.UniversalSleepApplicationUDPPortRef=GamePort +App.UniversalSleepSteamQueryPortRef=QueryPort +App.MaxUsers=64 +App.UseRandomAdminPassword=True +App.PersistRandomPassword=True +App.RemoteAdminPassword= +App.AdminMethod=BattlEyeRCON +App.AdminLoginTransform=None +App.RCONConnectDelaySeconds=5 +App.RCONConnectRetrySeconds=5 +App.RCONHeartbeatMinutes=0.5 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=@IncludeJson[arma3updates.json] +App.PreStartStages=[{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'rm -f {{$FullBaseDir}}battleye/beserver_x64_active_*.cfg'"},{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C del /Q /F {{$FullBaseDir}}battleye\\beserver_x64_active_*.cfg"}] +App.Compatibility=None +App.SteamUpdateAnonymousLogin=False +App.SteamForceLoginPrompt=True +App.RapidStartup=False +App.MonitorChildProcess=False +App.MonitorChildProcessWaitMs=100 +App.MonitorChildProcessName= +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RegexMatch +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex=^((WARNING|ERROR): Shader.+|Unknown command)$ +Console.AppReadyRegex=^RCon admin #\d+ \([\d\.:]+\) logged in$ +Console.UserJoinRegex=^[\d:]+ BattlEye Server: Player #(?.+?) (?.+( \(\d+\))?) \((?.+?):(?:\d+)\) connected$ +Console.UserLeaveRegex=^[\d:]+ BattlEye Server: Player #(?.+?) (?.+( \(\d+\))?) disconnected$ +Console.UserChatRegex=^$ +Console.UpdateAvailableRegex= +Console.MetricsRegex= +Console.SuppressLogAtStart=False +Console.ActivateLogRegex= +Console.UserActions={} +Limits.SleepMode=True +Limits.SleepOnStart=False +Limits.SleepDelayMinutes=5 +Limits.DozeDelay=2 +Limits.AutoRetryCount=5 +Limits.SleepStartThresholdSeconds=25 \ No newline at end of file diff --git a/arma3basic.cfg b/arma3basic.cfg new file mode 100644 index 0000000..20deee8 --- /dev/null +++ b/arma3basic.cfg @@ -0,0 +1,17 @@ +// basic.cfg + +// This file is to fine-tune network performance. + +// Full information on relevant settings is available at https://community.bistudio.com/wiki/Arma_3:_Basic_Server_Config_File + +//MinBandwidth = 131072; // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072 +//MaxBandwidth = 10000000000; // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available. + +//MaxMsgSend = 128; // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128 +//MaxSizeGuaranteed = 512; // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512 +//MaxSizeNonguaranteed = 256; // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256 + +//MinErrorToSend = 0.001; // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001 +//MinErrorToSendNear = 0.01; // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01 + +//MaxCustomFileSize = 0; // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect. diff --git a/arma3config.json b/arma3config.json new file mode 100644 index 0000000..08709b4 --- /dev/null +++ b/arma3config.json @@ -0,0 +1,1144 @@ +[ + { + "DisplayName":"Server Name", + "Category":"Arma Server Settings", + "Description":"Sets the server name visible in the game browser", + "Keywords":"server,name,hostname", + "FieldName":"hostname", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"hostname", + "IncludeInCommandLine":false, + "DefaultValue":"Arma 3 Server - Powered by AMP", + "EnumValues":{} + }, + { + "DisplayName":"Server Password", + "Category":"Arma Server Settings", + "Description":"Sets the password required to connect to the server. Default is no password", + "Keywords":"server,password", + "FieldName":"password", + "InputType":"password", + "IsFlagArgument":false, + "ParamFieldName":"password", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Admin Password", + "Category":"Arma Server Settings", + "Description":"Sets the password required for admin access to the server. Default is no password", + "Keywords":"admin,password,passwordadmin", + "FieldName":"passwordAdmin", + "InputType":"password", + "IsFlagArgument":false, + "ParamFieldName":"passwordAdmin", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Command Password", + "Category":"Arma Server Settings", + "Description":"Sets the password required by alternate syntax of \"serverCommand\" server-side scripting. Default is no password", + "Keywords":"command,password,servercommandpassword", + "FieldName":"serverCommandPassword", + "InputType":"password", + "IsFlagArgument":false, + "ParamFieldName":"serverCommandPassword", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"RCON Password", + "Category":"Arma Server Settings", + "Description":"See the Security and Privacy menu for configurable options for the server's RCON", + "Keywords":"rcon,password", + "FieldName":"RCONPassword", + "InputType":"hidden", + "IsFlagArgument":false, + "ParamFieldName":"RCONPassword", + "IncludeInCommandLine":false, + "EnumValues":{} + }, + { + "DisplayName":"Server Admins", + "Category":"Arma Server Settings", + "Description":"Sets the list of [Steam64 IDs](https://steamidfinder.com/) for server admins. Format is \"SteamID\",\"SteamID\"", + "Keywords":"admins", + "FieldName":"admins", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"admins", + "IncludeInCommandLine":false, + "DefaultValue":"", + "Placeholder":"\"12345678901234567\",\"76543210987654321\"", + "EnumValues":{} + }, + { + "DisplayName":"MOTD", + "Category":"Arma Server Settings", + "Description":"Sets the player welcome message (MOTD). Format is \"Line1\",\"Line 2\"", + "Keywords":"motd,welcome,message", + "FieldName":"motd", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"motd", + "IncludeInCommandLine":false, + "DefaultValue":"\"Welcome to Arma 3\",\"Hosted using AMP by CubeCoders\"", + "EnumValues":{} + }, + { + "DisplayName":"MOTD Interval", + "Category":"Arma Server Settings", + "Description":"Sets the time interval between display of each line of the MOTD", + "Keywords":"motd,message,delay,interval,motdinterval", + "FieldName":"motdInterval", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"motdInterval", + "IncludeInCommandLine":false, + "DefaultValue":"5", + "Placeholder":"5", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Player Limit", + "Category":"Arma Server Settings", + "Description":"Sets the maximum number of clients (including headless clients) that may connect to the server at one time", + "Keywords":"maximum,players,clients,limit,maxplayers", + "FieldName":"$MaxUsers", + "InputType":"number", + "MinValue":"1", + "IsFlagArgument":false, + "ParamFieldName":"maxPlayers", + "IncludeInCommandLine":false, + "DefaultValue":"64", + "Placeholder":"64", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Load Mods", + "Category":"Arma Server Settings", + "Description":"Semi-colon separated list (moddir1;moddir2) of mod directories to load (not server-side only mods). Specify simply the mod ID for any mods downloaded under SteamCMD and Updates. Otherwise, use mod directory paths relative to the server base directory or full paths. Alternatively use the Startup Parameters File option", + "Keywords":"mods,addons,mod", + "FieldName":"mod", + "InputType":"Textarea", + "IsFlagArgument":false, + "ParamFieldName":"mod", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Load Server Mods", + "Category":"Arma Server Settings", + "Description":"Semi-colon separated list (moddir1;moddir2) of server-side only mod directories to load (the mods are not broadcast to clients). Specify simply the mod ID for any mods downloaded under SteamCMD and Updates. Otherwise, use mod directory paths relative to the server base directory or full paths. Alternatively use the Startup Parameters File option", + "Keywords":"mods,addons,server,servermod", + "FieldName":"serverMod", + "InputType":"Textarea", + "IsFlagArgument":false, + "ParamFieldName":"serverMod", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Server/RCON IP Binding", + "Category":"Arma Server Settings", + "Description":"If required, you can change the binding of the server and BattlEye RCON by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Stop the instance (not just the server) first", + "Keywords":"ip,binding", + "FieldName":"ip", + "InputType":"hidden", + "IsFlagArgument":false, + "ParamFieldName":"ip", + "IncludeInCommandLine":false, + "EnumValues":{} + }, + { + "DisplayName":"Disallow Duplicate Game IDs", + "Category":"Arma Server Settings", + "Description":"If enabled, players with an ID that is identical to another player will be kicked", + "Keywords":"kick,duplicate,kickduplicate", + "FieldName":"kickDuplicate", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"kickDuplicate", + "IncludeInCommandLine":false, + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Addon Signature Verification", + "Category":"Arma Server Settings", + "Description":"If enabled, players with unknown or unsigned mods will not be allowed to join", + "Keywords":"mods,addons,verify,verifysignatures", + "FieldName":"verifySignatures", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"verifySignatures", + "IncludeInCommandLine":false, + "DefaultValue":"2", + "EnumValues":{ + "False":"0", + "True":"2" + } + }, + { + "DisplayName":"Allow Client File Patching", + "Category":"Arma Server Settings", + "Description":"Specifies whether to prevent or allow file patching for clients", + "Keywords":"file,patching,allowedfilepatching", + "FieldName":"allowedFilePatching", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"allowedFilePatching", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "0":"Do not allow (default)", + "1":"Allow headless clients only", + "2":"Allow all clients" + } + }, + { + "DisplayName":"Client File Patching Exceptions", + "Category":"Arma Server Settings", + "Description":"Sets a whitelist of [Steam64 IDs](https://steamidfinder.com/) for clients allowed to use file patching. Format is \"SteamID\",\"SteamID\"", + "Keywords":"file,patching,exceptions,filepatchingexceptions", + "FieldName":"filePatchingExceptions", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"filePatchingExceptions", + "IncludeInCommandLine":false, + "DefaultValue":"", + "Placeholder":"\"12345678901234567\",\"76543210987654321\"", + "EnumValues":{} + }, + { + "DisplayName":"Minimum Client Version", + "Category":"Arma Server Settings", + "Description":"Sets the minimum client version, below which clients won't be allowed to join. Default of 99999999 equates to the server version", + "Keywords":"required,build,requiredbuild", + "FieldName":"requiredBuild", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"requiredBuild", + "IncludeInCommandLine":false, + "DefaultValue":"99999999", + "Placeholder":"99999999", + "EnumValues":{} + }, + { + "DisplayName":"Force LAN Mode", + "Category":"Arma Server Settings", + "Description":"If enabled, the server will be forced into LAN mode - only local clients can connect", + "Keywords":"lan,loopback", + "FieldName":"loopback", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"loopback", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Headless Client IPs", + "Category":"Arma Server Settings", + "Description":"Sets the IPs of [headless clients](https://community.bistudio.com/wiki/Arma_3:_Headless_Client) able to connect to the server. Multiples connections and IPs are allowed. Format is \"IP1\",\"IP2\"", + "Keywords":"headless,client,ip,headlessclients", + "FieldName":"headlessClients", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"headlessClients", + "IncludeInCommandLine":false, + "DefaultValue":"", + "Placeholder":"\"123.456.789.12\",\"210.987.654.321\"", + "EnumValues":{} + }, + { + "DisplayName":"Local Headless Client IPs", + "Category":"Arma Server Settings", + "Description":"Sets the IPs of those headless clients listed under Headless Client IPs that have unlimited bandwidth and nearly no latency. Format is \"IP1\",\"IP2\"", + "Keywords":"headless,client,local,localclient", + "FieldName":"localClient", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"localClient", + "IncludeInCommandLine":false, + "DefaultValue":"", + "Placeholder":"\"127.0.0.1\",\"192.168.1.2\"", + "EnumValues":{} + }, + { + "DisplayName":"Enable UPnP", + "Category":"Arma Server Settings", + "Description":"If enabled, the server will automatically create port mappings on UPnP/IGD enabled routers", + "Keywords":"upnp", + "FieldName":"upnp", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"upnp", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Additional Server Startup Parameters", + "Category":"Arma Server Settings", + "Description":"Specifies additional startup parameters that are not otherwise set by AMP. Alternatively, use the Startup Parameters File option. Use with care", + "Keywords":"custom,server,arguments,parameters", + "FieldName":"CustomServerArgs", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"CustomServerArgs", + "IncludeInCommandLine":false, + "DefaultValue":"", + "Placeholder":"-debug", + "EnumValues":{} + }, + { + "DisplayName":"Use Startup Parameters File", + "Category":"Arma Server Settings", + "Description":"If enabled, allows the use of a [parameters file](https://community.bistudio.com/wiki/Startup_Parameters_Config_File) for additional startup parameters. File is \"parameters.txt\" in the server base directory. Useful for long startup parameters such as -mods or -servermods. Use with care", + "Keywords":"custom,server,arguments,parameters,file,parfile", + "FieldName":"parfile", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"parfile", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{ + "False":"", + "True":"-par=./parameters.txt " + } + }, + { + "DisplayName":"Skip Lobby", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, joining players will skip role selection", + "Keywords":"skip,lobby,skiplobby", + "FieldName":"skipLobby", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"skipLobby", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Minimum Players For Mission Selection", + "Category":"Arma Gameplay Settings", + "Description":"Sets the minimum number of players required before displaying the mission selection screen", + "Keywords":"voting,minimum,votemissionplayers", + "FieldName":"voteMissionPlayers", + "InputType":"number", + "MinValue":"1", + "IsFlagArgument":false, + "ParamFieldName":"voteMissionPlayers", + "IncludeInCommandLine":false, + "DefaultValue":"1", + "Placeholder":"1", + "EnumValues":{} + }, + { + "DisplayName":"Minimum Voting Threshold", + "Category":"Arma Gameplay Settings", + "Description":"Sets the fraction (0.00 to 1.00) of players needed to vote something into effect", + "Keywords":"voting,threshold,votethreshold", + "FieldName":"voteThreshold", + "InputType":"number", + "MinValue":"0", + "IsFlagArgument":false, + "ParamFieldName":"voteThreshold", + "IncludeInCommandLine":false, + "DefaultValue":"0.33", + "Placeholder":"0.33", + "EnumValues":{} + }, + { + "DisplayName":"Advanced Flight Model", + "Category":"Arma Gameplay Settings", + "Description":"Sets the Advanced Flight Model mode", + "Keywords":"force,advanced,flight,model,forcerotorlibsimulation", + "FieldName":"forceRotorLibSimulation", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"forceRotorLibSimulation", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "0":"Player decides (default)", + "1":"Force Advanced Flight Model", + "2":"Force Simple Flight Model" + } + }, + { + "DisplayName":"Disable Voice Chat", + "Category":"Arma Gameplay Settings", + "Description":"If set, players will not be able to use in-game voice chat", + "Keywords":"voice,chat,disablevon", + "FieldName":"disableVoN", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"disableVoN", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Voice Chat Codec", + "Category":"Arma Gameplay Settings", + "Description":"Sets the voice chat codec type", + "Keywords":"voice,chat,codec,voncodec", + "FieldName":"vonCodec", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"vonCodec", + "IncludeInCommandLine":false, + "DefaultValue":"1", + "EnumValues":{ + "0":"Old SPEEX codec", + "1":"New OPUS codec (default)" + } + }, + { + "DisplayName":"Voice Chat Quality", + "Category":"Arma Gameplay Settings", + "Description":"Sets the voice sound range: 1-10 is 8kHz (narrowband), 11-20 is 16kHz (wideband), 21-30 is 32kHz (SPEEX) or 48kHz (OPUS) (ultrawideband)", + "Keywords":"voice,chat,codec,quality,voncodecquality", + "FieldName":"vonCodecQuality", + "InputType":"number", + "MinValue":"1", + "MaxValue":"30", + "IsFlagArgument":false, + "ParamFieldName":"vonCodecQuality", + "IncludeInCommandLine":false, + "DefaultValue":"3", + "Placeholder":"3", + "EnumValues":{} + }, + { + "DisplayName":"Start Mission Immediately", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, begins the mission immediately instead of waiting for players to join (autoInit). Requires Persistent Mission to be enabled", + "Keywords":"mission,autoinit,immediate", + "FieldName":"autoInit", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"autoInit", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{ + "False":"", + "True":"-autoInit " + } + }, + { + "DisplayName":"Persistent Mission", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, the mission keeps running when all players disconnect. Required for \"autoInit\" (Start Mission Immediately option)", + "Keywords":"mission,persistent", + "FieldName":"persistent", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"persistent", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Enable Automatic Mission Selection", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, the server auto-starts the next mission in the mission cycle and waits for players in the role selection. Requires a [mission cycle](https://community.bistudio.com/wiki/Arma_3:_Server_Config_File#Mission_rotation) to be specified in AMP_server.cfg", + "Keywords":"mission,selection,automatic,autoselectmission", + "FieldName":"autoSelectMission", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"autoSelectMission", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Enable Random Mission Order", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, the server randomly chooses a mission from the mission cycle for starting or auto-starting. Requires a [mission cycle](https://community.bistudio.com/wiki/Arma_3:_Server_Config_File#Mission_rotation) to be specified in AMP_server.cfg", + "Keywords":"mission,random,order,randommissionorder", + "FieldName":"randomMissionOrder", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"randomMissionOrder", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Enable Map Lines/Markers", + "Category":"Arma Gameplay Settings", + "Description":"If enabled, gives the ability to place markers and draw lines in map", + "Keywords":"map,lines,markers,drawinginmap", + "FieldName":"drawingInMap", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"drawingInMap", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Allow Profile Glasses", + "Category":"Arma Gameplay Settings", + "Description":"If disabled, glasses set in a player's profile will be ignored", + "Keywords":"profile,glasses,allowprofileglasses", + "FieldName":"allowProfileGlasses", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"allowProfileGlasses", + "IncludeInCommandLine":false, + "DefaultValue":"true", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Enforce Difficulty", + "Category":"Arma Gameplay Settings", + "Description":"Forces the selected difficulty on the server. To use custom difficulty settings, you must configure them in the profile within the A3Master directory", + "Keywords":"force,difficulty,forceddifficulty", + "FieldName":"forcedDifficulty", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"forcedDifficulty", + "IncludeInCommandLine":false, + "DefaultValue":"Regular", + "EnumValues":{ + "Recruit":"Recruit", + "Regular":"Regular (default)", + "Veteran":"Veteran", + "Custom":"Custom" + } + }, + { + "DisplayName":"AI Level", + "Category":"Arma Gameplay Settings", + "Description":"Sets the AI skill level on the server. To use custom AI level settings, you must configure them in the profile within the A3Master directory", + "Keywords":"ai,level,preset,ailevelpreset", + "FieldName":"aiLevelPreset", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"aiLevelPreset", + "IncludeInCommandLine":false, + "DefaultValue":"1", + "EnumValues":{ + "0":"Low", + "1":"Normal (default)", + "2":"High", + "3":"Custom" + } + }, + { + "DisplayName":"Enable Statistics", + "Category":"Arma Misc Settings", + "Description":"If enabled, the server will opt into [Arma 3 game analytics](https://community.bistudio.com/wiki/Arma_3:_Analytics)", + "Keywords":"arma,game,analytics,statistics,statisticsenabled", + "FieldName":"statisticsEnabled", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"statisticsEnabled", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Allowed File Extensions", + "Category":"Arma Misc Settings", + "Description":"Only allows files with the listed extensions to be loaded via the loadFile command", + "Keywords":"file,extensions,allowedloadfileextensions", + "FieldName":"allowedLoadFileExtensions", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"allowedLoadFileExtensions", + "IncludeInCommandLine":false, + "DefaultValue":"\"hpp\",\"sqs\",\"sqf\",\"fsm\",\"cpp\",\"paa\",\"txt\",\"xml\",\"inc\",\"ext\",\"sqm\",\"ods\",\"fxy\",\"lip\",\"csv\",\"kb\",\"bik\",\"bikb\",\"html\",\"htm\",\"biedi\"", + "Placeholder":"\"hpp\",\"sqs\",\"sqf\",\"fsm\",\"cpp\",\"paa\",\"txt\",\"xml\",\"inc\",\"ext\",\"sqm\",\"ods\",\"fxy\",\"lip\",\"csv\",\"kb\",\"bik\",\"bikb\",\"html\",\"htm\",\"biedi\"", + "EnumValues":{} + }, + { + "DisplayName":"Allowed Preprocess File Extensions", + "Category":"Arma Misc Settings", + "Description":"Only allows files with the listed extensions to be loaded via the preprocessFile / preprocessFileLineNumbers commands", + "Keywords":"file,preprocess,extensions,allowedpreprocessfileextensions", + "FieldName":"allowedPreprocessFileExtensions", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"allowedPreprocessFileExtensions", + "IncludeInCommandLine":false, + "DefaultValue":"\"hpp\",\"sqs\",\"sqf\",\"fsm\",\"cpp\",\"paa\",\"txt\",\"xml\",\"inc\",\"ext\",\"sqm\",\"ods\",\"fxy\",\"lip\",\"csv\",\"kb\",\"bik\",\"bikb\",\"html\",\"htm\",\"biedi\"", + "Placeholder":"\"hpp\",\"sqs\",\"sqf\",\"fsm\",\"cpp\",\"paa\",\"txt\",\"xml\",\"inc\",\"ext\",\"sqm\",\"ods\",\"fxy\",\"lip\",\"csv\",\"kb\",\"bik\",\"bikb\",\"html\",\"htm\",\"biedi\"", + "EnumValues":{} + }, + { + "DisplayName":"Allowed HTML Extensions", + "Category":"Arma Misc Settings", + "Description":"Only allows files and URLs with the listed extensions to be loaded via the htmlLoad command", + "Keywords":"html,extensions,allowedhtmlloadextensions", + "FieldName":"allowedHTMLLoadExtensions", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"allowedHTMLLoadExtensions", + "IncludeInCommandLine":false, + "DefaultValue":"\"htm\",\"html\",\"xml\",\"txt\"", + "Placeholder":"\"htm\",\"html\",\"xml\",\"txt\"", + "EnumValues":{} + }, + { + "DisplayName":"Log Time Stamp Format", + "Category":"Arma Misc Settings", + "Description":"Sets the format of the time stamps used in the log file", + "Keywords":"time,stamp,format,timestampformat", + "FieldName":"timeStampFormat", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"timeStampFormat", + "IncludeInCommandLine":false, + "DefaultValue":"none", + "EnumValues":{ + "none":"None (default)", + "short":"Short", + "full":"Full" + } + }, + { + "DisplayName":"Log Player Info", + "Category":"Arma Misc Settings", + "Description":"If enabled, the server logs players' bandwidth and desync info every 60 seconds, as well as \"network message is pending\" owner identity", + "Keywords":"player,diag,info,enableplayerdiag", + "FieldName":"enablePlayerDiag", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"enablePlayerDiag", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Run Script On User Connected", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a user has connected", + "Keywords":"scripting,user,connected,onuserconnected", + "FieldName":"onUserConnected", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onUserConnected", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On User Disconnected", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a user has disconnected", + "Keywords":"scripting,user,disconnected,onuserdisconnected", + "FieldName":"onUserDisconnected", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onUserDisconnected", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On Double ID Detected", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a second user with the same ID is detected", + "Keywords":"scripting,double,id,detected,doubleiddetected", + "FieldName":"doubleIdDetected", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"doubleIdDetected", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On User Kicked", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a user is kicked", + "Keywords":"scripting,user,kicked,onuserkicked", + "FieldName":"onUserKicked", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onUserKicked", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On Unsigned Data", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when unsigned data is detected", + "Keywords":"scripting,unsigned,data,onunsigneddata", + "FieldName":"onUnsignedData", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onUnsignedData", + "IncludeInCommandLine":false, + "DefaultValue":"kick (_this select 0)", + "Placeholder":"kick (_this select 0)", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On Hacked Data", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a modification of a signed pbo is detected", + "Keywords":"scripting,hacked,data,onhackeddata", + "FieldName":"onHackedData", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onHackedData", + "IncludeInCommandLine":false, + "DefaultValue":"ban (_this select 0)", + "Placeholder":"ban (_this select 0)", + "EnumValues":{} + }, + { + "DisplayName":"Run Script On Different Data", + "Category":"Arma Misc Settings", + "Description":"Sets [server side scripting](https://community.bistudio.com/wiki/ArmA:_Armed_Assault:_Server_Side_Scripting) to run when a signed pbo is detected with a valid signature, but is a different version than a server has. Use with caution", + "Keywords":"scripting,different,data,ondifferentdata", + "FieldName":"onDifferentData", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"onDifferentData", + "IncludeInCommandLine":false, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Composition Script Level", + "Category":"Arma Misc Settings", + "Description":"Sets the composition script permission level", + "Keywords":"script,level,zeuscompositionscriptlevel", + "FieldName":"zeusCompositionScriptLevel", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"zeusCompositionScriptLevel", + "IncludeInCommandLine":false, + "DefaultValue":"1", + "EnumValues":{ + "0":"All scripts forbidden", + "1":"Only attributes allowed (default)", + "2":"All scripts allowed" + } + }, + { + "DisplayName":"Steam Query Packet Size", + "Category":"Arma Misc Settings", + "Description":"Sets the maximum Steam query packet size. Increasing this value can be dangerous", + "Keywords":"query,packet,size,steamprotocolmaxdatasize", + "FieldName":"steamProtocolMaxDataSize", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"steamProtocolMaxDataSize", + "IncludeInCommandLine":false, + "DefaultValue":"1024", + "Placeholder":"1024", + "EnumValues":{} + }, + { + "DisplayName":"Call Extension Report Limit", + "Category":"Arma Misc Settings", + "Description":"If a server-initiated callExtension takes longer than the specified limit, a warning will be logged as well as reflected in the extension return result", + "Keywords":"call,extension,report,limit,callextreportlimit", + "FieldName":"callExtReportLimit", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"callExtReportLimit", + "IncludeInCommandLine":false, + "DefaultValue":"1000", + "Placeholder":"1000", + "Suffix":"milliseconds", + "EnumValues":{} + }, + { + "DisplayName":"Log Object Not Found", + "Category":"Arma Misc Settings", + "Description":"If enabled, \"object not found\" messages will be logged", + "Keywords":"log,object,not,found,logobjectnotfound", + "FieldName":"LogObjectNotFound", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"LogObjectNotFound", + "IncludeInCommandLine":false, + "DefaultValue":"true", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Skip Description Parsing", + "Category":"Arma Misc Settings", + "Description":"If enabled, parsing of description.ext/mission.sqm will be skipped. Will show pbo filename instead of configured missionName", + "Keywords":"skip,description,parsing,skipdescriptionparsing", + "FieldName":"SkipDescriptionParsing", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"SkipDescriptionParsing", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Ignore Mission Load Errors", + "Category":"Arma Misc Settings", + "Description":"If enabled, a mission will load regardless of the number of loading errors", + "Keywords":"ignore,mission,errors,ignoremissionloaderrors", + "FieldName":"ignoreMissionLoadErrors", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"ignoreMissionLoadErrors", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Message Queue Size Threshold", + "Category":"Arma Misc Settings", + "Description":"If enabled, all of a player's message types and sizes are dumped to a logfile if #monitor is running and the player's Guaranteed Message Queue size goes above the set threshold", + "Keywords":"message,queue,size,threshold,queuesizelogg", + "FieldName":"queueSizeLogG", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"queueSizeLogG", + "IncludeInCommandLine":false, + "DefaultValue":"1000000", + "Placeholder":"1000000", + "EnumValues":{} + }, + { + "DisplayName":"Disconnect Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the server wait time before disconnecting a player after loss of an active traffic connection (if Kick On Disconnect Timeout is enabled)", + "Keywords":"disconnect,timeout,disconnecttimeout", + "FieldName":"disconnectTimeout", + "InputType":"number", + "MinValue":"5", + "MaxValue":"90", + "IsFlagArgument":false, + "ParamFieldName":"disconnectTimeout", + "IncludeInCommandLine":false, + "DefaultValue":"90", + "Placeholder":"90", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Kick On Disconnect Timeout", + "Category":"Arma Limit Settings", + "Description":"If enabled, players hitting the disconnect timeout will be kicked, otherwise that will just be logged", + "Keywords":"disconnect,timeout,kick,kickclientsonslownetwork", + "FieldName":"kickTimeout", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"kickTimeout", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Maximum Desync", + "Category":"Arma Limit Settings", + "Description":"Sets the maximum desync value before the server kicks a player (if Kick On Maximum Desync is enabled)", + "Keywords":"maximum,desync,maxdesync", + "FieldName":"maxDesync", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"maxDesync", + "IncludeInCommandLine":false, + "DefaultValue":"150", + "Placeholder":"150", + "EnumValues":{} + }, + { + "DisplayName":"Kick On Maximum Desync", + "Category":"Arma Limit Settings", + "Description":"If enabled, players hitting the maximum desync value will be kicked, otherwise that will just be logged", + "Keywords":"maximum,desync,kick,kickdesync,kickclientsonslownetwork", + "FieldName":"kickDesync", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"kickDesync", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Maximum Ping", + "Category":"Arma Limit Settings", + "Description":"Sets the maximum latency (ping) before the server kicks a player (if Kick On Maximum Ping is enabled)", + "Keywords":"maximum,ping,latency,maxping", + "FieldName":"maxPing", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"maxPing", + "IncludeInCommandLine":false, + "DefaultValue":"200", + "Placeholder":"200", + "Suffix":"milliseconds", + "EnumValues":{} + }, + { + "DisplayName":"Kick On Maximum Ping", + "Category":"Arma Limit Settings", + "Description":"If enabled, players hitting the maximum latency (ping) value will be kicked, otherwise that will just be logged", + "Keywords":"maximum,ping,latency,kick,kickclientsonslownetwork", + "FieldName":"kickPing", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"kickPing", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Maximum Packet Loss", + "Category":"Arma Limit Settings", + "Description":"Sets the maximum packet loss before the server kicks a player (if Kick On Maximum Packet Loss is enabled)", + "Keywords":"maximum,packet,loss,maxpacketloss", + "FieldName":"maxPacketLoss", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"maxPacketLoss", + "IncludeInCommandLine":false, + "DefaultValue":"50", + "Placeholder":"50", + "EnumValues":{} + }, + { + "DisplayName":"Kick On Maximum Packet Loss", + "Category":"Arma Limit Settings", + "Description":"If enabled, players hitting the maximum packet loss value will be kicked, otherwise that will just be logged", + "Keywords":"maximum,packet,loss,kick,kickclientsonslownetwork", + "FieldName":"kickLoss", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"kickLoss", + "IncludeInCommandLine":false, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Manual Kick Waittime", + "Category":"Arma Limit Settings", + "Description":"Sets the time interval before a player can return after a manual kick (such as vote kick, admin kick, bruteforce detection). -1 = until mission end, -2 = until server restart", + "Keywords":"wait,time,manual,kick,kicktimeout", + "FieldName":"kickManual", + "InputType":"number", + "MinValue":"-2", + "IsFlagArgument":false, + "ParamFieldName":"kickManual", + "IncludeInCommandLine":false, + "DefaultValue":"-1", + "Placeholder":"-1", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Connectivity Kick Waittime", + "Category":"Arma Limit Settings", + "Description":"Sets the time interval before a player can return after a connectivity kick (ping, timeout, packetloss, desync). -1 = until mission end, -2 = until server restart", + "Keywords":"wait,time,connectivity,kick,kicktimeout", + "FieldName":"kickConnectivity", + "InputType":"number", + "MinValue":"-2", + "IsFlagArgument":false, + "ParamFieldName":"kickConnectivity", + "IncludeInCommandLine":false, + "DefaultValue":"180", + "Placeholder":"180", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"BattlEye Kick Waittime", + "Category":"Arma Limit Settings", + "Description":"Sets the time interval before a player can return after a BattlEye kick. -1 = until mission end, -2 = until server restart", + "Keywords":"wait,time,battleye,kick,kicktimeout", + "FieldName":"kickBattlEye", + "InputType":"number", + "MinValue":"-2", + "IsFlagArgument":false, + "ParamFieldName":"kickBattlEye", + "IncludeInCommandLine":false, + "DefaultValue":"180", + "Placeholder":"180", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Harmless Kick Waittime", + "Category":"Arma Limit Settings", + "Description":"Sets the time interval before a player can return after a harmless kick (such as wrong addons, Steam timeout or checks, signatures, content, etc). -1 = until mission end, -2 = until server restart", + "Keywords":"wait,time,harmless,kick,kicktimeout", + "FieldName":"kickHarmless", + "InputType":"number", + "MinValue":"-2", + "IsFlagArgument":false, + "ParamFieldName":"kickHarmless", + "IncludeInCommandLine":false, + "DefaultValue":"180", + "Placeholder":"180", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Voting Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the time limit for voting. Format is ,", + "Keywords":"voting,timeout,votingtimeout", + "FieldName":"votingTimeOut", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"votingTimeOut", + "IncludeInCommandLine":false, + "DefaultValue":"60,90", + "Placeholder":"60,90", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Role Selection Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the time limit for role selection. Format is ,", + "Keywords":"role,timeout,roletimeout", + "FieldName":"roleTimeOut", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"roleTimeOut", + "IncludeInCommandLine":false, + "DefaultValue":"90,120", + "Placeholder":"90,120", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Briefing Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the time limit for briefing. Format is ,", + "Keywords":"briefing,timeout,briefingtimeout", + "FieldName":"briefingTimeOut", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"briefingTimeOut", + "IncludeInCommandLine":false, + "DefaultValue":"60,90", + "Placeholder":"60,90", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Debriefing Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the time limit for debriefing. Format is ,", + "Keywords":"debriefing,timeout,debriefingtimeout", + "FieldName":"debriefingTimeOut", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"debriefingTimeOut", + "IncludeInCommandLine":false, + "DefaultValue":"60,60", + "Placeholder":"60,60", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Lobby Idle Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets the time limit for lobby idle", + "Keywords":"lobby,idle,timeout,lobbyidletimeout", + "FieldName":"lobbyIdleTimeout", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"lobbyIdleTimeout", + "IncludeInCommandLine":false, + "DefaultValue":"300", + "Placeholder":"300", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"ArmaUnits Data Timeout", + "Category":"Arma Limit Settings", + "Description":"Sets how long a player will wait for armaUnits data when connecting", + "Keywords":"arma,units,timeout,armaunitstimeout", + "FieldName":"armaUnitsTimeout", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"armaUnitsTimeout", + "IncludeInCommandLine":false, + "DefaultValue":"30", + "Placeholder":"30", + "Suffix":"seconds", + "EnumValues":{} + } +] \ No newline at end of file diff --git a/arma3metaconfig.json b/arma3metaconfig.json new file mode 100644 index 0000000..2b04665 --- /dev/null +++ b/arma3metaconfig.json @@ -0,0 +1,23 @@ +[ + { + "ConfigFile":"server.cfg", + "AutoMap":true, + "ConfigType":"template", + "ConfigFileTemplate":"./arma3/233780/AMP_server.cfg" + }, + { + "ConfigFile":"battleye/beserver_x64.cfg", + "ConfigType":"kvp", + "ConfigFormat":"{0} {1}", + "Subsections":[ + { + "Heading":"$root", + "SettingMappings":{ + "RConPassword":"$RemoteAdminPassword", + "RConPort":"$RCONPort", + "RConIP":"$ApplicationIPBinding" + } + } + ] + } +] diff --git a/arma3modscript.sh b/arma3modscript.sh new file mode 100644 index 0000000..a51b039 --- /dev/null +++ b/arma3modscript.sh @@ -0,0 +1,6 @@ +#!/bin/bash +find ./arma3/233780/steamapps/workshop/content/107410/ -type f -name "*[A-Z]*" -print0 |\ + xargs -0 -I {} bash -c "mv \"{}\" \"\`echo {} | sed 's,\(.*\)\/\(.*\),\1\/\L\2,'\`\"" &&\ + cd ./arma3/233780 &&\ + find ./steamapps/workshop/content/107410 -maxdepth 1 -mindepth 1 -type d -exec ln -sf -t ./ {} + +exit 0 \ No newline at end of file diff --git a/arma3server.cfg b/arma3server.cfg new file mode 100644 index 0000000..8a6c13b --- /dev/null +++ b/arma3server.cfg @@ -0,0 +1,113 @@ +// DO NOT edit server.cfg directly +// AMP_server.cfg controls server.cfg. Edit AMP_server.cfg if you want to add or change certain settings +// NOTE: +// - DO NOT change values in double curly braces, ie {{}}. They are set either via the AMP UI +// or are controlled by AMP itself (in particular, ports) +// - Other settings can be changed or added as needed - see the second section below + +// Full information on settings is available at https://community.bistudio.com/wiki/Arma_3:_Server_Config_File + +// ******* +// SETTINGS CONTROLLED BY AMP - DO NOT TOUCH THESE!!! +// ******* +hostname = "{{hostname}}"; +password = "{{password}}"; +passwordAdmin = "{{passwordAdmin}}"; +serverCommandPassword = "{{serverCommandPassword}}"; +admins[] = { {{admins}} }; +headlessClients[] = { {{headlessClients}} }; +localClient[] = { {{localClient}} }; +logFile = "server_console.log"; +motd[] = { {{motd}} }; +motdInterval = {{motdInterval}}; +maxPlayers = {{maxPlayers}}; +kickDuplicate = {{kickDuplicate}}; +verifySignatures = {{verifySignatures}}; +allowedFilePatching = {{allowedFilePatching}}; +filePatchingExceptions[] = { {{filePatchingExceptions}} }; +requiredBuild = {{requiredBuild}}; +loopback = {{loopback}}; +upnp = {{upnp}}; +skipLobby = {{skipLobby}}; +voteMissionPlayers = {{voteMissionPlayers}}; +voteThreshold = {{voteThreshold}}; +forceRotorLibSimulation = {{forceRotorLibSimulation}}; +disableVoN = {{disableVoN}}; +vonCodec = {{vonCodec}}; +vonCodecQuality = {{vonCodecQuality}}; +persistent = {{persistent}}; +timeStampFormat = "{{timeStampFormat}}"; +BattlEye = 1; +allowedLoadFileExtensions[] = { {{allowedLoadFileExtensions}} }; +allowedPreprocessFileExtensions[] = { {{allowedPreprocessFileExtensions}} }; +allowedHTMLLoadExtensions[] = { {{allowedHTMLLoadExtensions}} }; +enablePlayerDiag = {{enablePlayerDiag}}; +drawingInMap = {{drawingInMap}}; +allowProfileGlasses = {{allowProfileGlasses}}; +forcedDifficulty = "{{forcedDifficulty}}"; +disconnectTimeout = {{disconnectTimeout}}; +maxDesync = {{maxDesync}}; +maxPing = {{maxPing}}; +maxPacketLoss = {{maxPacketLoss}}; +kickClientsOnSlowNetwork[] = { {{kickPing}},{{kickLoss}},{{kickDesync}},{{kickTimeout}} }; +kickTimeout[] = { { 0,{{kickManual}} }, { 1,{{kickConnectivity}} }, { 2,{{kickBattlEye}} }, { 3,{{kickHarmless}} } }; +votingTimeOut[] = { {{votingTimeOut}} }; +roleTimeOut[] = { {{roleTimeOut}} }; +briefingTimeOut[] = { {{briefingTimeOut}} }; +debriefingTimeOut[] = { {{debriefingTimeOut}} }; +lobbyIdleTimeout = {{lobbyIdleTimeout}}; +armaUnitsTimeout = {{armaUnitsTimeout}}; +onUserConnected = "{{onUserConnected}}"; +onUserDisconnected = "{{onUserDisconnected}}"; +doubleIdDetected = "{{doubleIdDetected}}"; +onUserKicked = "{{onUserKicked}}"; +onUnsignedData = "{{onUnsignedData}}"; +onHackedData = "{{onHackedData}}"; +onDifferentData = "{{onDifferentData}}"; +autoSelectMission = {{autoSelectMission}}; +randomMissionOrder = {{randomMissionOrder}}; +statisticsEnabled = {{statisticsEnabled}}; +callExtReportLimit = {{callExtReportLimit}}; +zeusCompositionScriptLevel = {{zeusCompositionScriptLevel}}; +steamProtocolMaxDataSize = {{steamProtocolMaxDataSize}}; +class AdvancedOptions +{ + LogObjectNotFound = {{LogObjectNotFound}}; + SkipDescriptionParsing = {{SkipDescriptionParsing}}; + ignoreMissionLoadErrors = {{ignoreMissionLoadErrors}}; + queueSizeLogG = {{queueSizeLogG}}; +}; + +// ******* +// USER CONFIGURABLE SETTINGS - CHANGE/ADD ADDITIONAL SETTINGS HERE +// ******* + +// VOTING +//allowedVoteCmds[] = { { "kick", false, false, 0.75 } }; +//allowedVotedAdminCmds[] = { { "mission", true, true } }; + +// INGAME SETTINGS +//allowedHTMLLoadURIs[] = {}; + +// MISSIONS CYCLE +//class Missions {}; // An empty Missions class means there will be no mission rotation +// OR +//class Missions // A full list of default missions is at https://community.bistudio.com/wiki/Arma_3:_MP_Mission_Names +//{ +// class Mission01 +// { +// template = MP_Marksmen_01.Altis; +// difficulty = "Veteran"; +// class Params {}; +// }; +// class Mission02 +// { +// template = MP_End_Game_01.Altis; +// difficulty = "Veteran"; +// class Params {}; +// }; +//}; +//missionWhitelist[] = {}; // An empty whitelist means there is no restriction on what missions are available + +// OTHER OPTIONS +//disableChannels[] = {}; diff --git a/arma3updates.json b/arma3updates.json new file mode 100644 index 0000000..e483148 --- /dev/null +++ b/arma3updates.json @@ -0,0 +1,57 @@ +[ + { + "UpdateStageName":"SteamCMD Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"SteamCMD", + "UpdateSourceData":"233780", + "UpdateSourceArgs":"107410" + }, + { + "UpdateStageName":"Server Config Template Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3server.cfg", + "UpdateSourceArgs":"AMP_server.cfg", + "UpdateSourceTarget":"{{$FullBaseDir}}", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Basic Config File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3basic.cfg", + "UpdateSourceArgs":"basic.cfg", + "UpdateSourceTarget":"{{$FullBaseDir}}", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Create Parameters File", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateFile", + "UpdateSourceArgs":"{{$FullBaseDir}}parameters.txt", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Modscript Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3modscript.sh", + "UpdateSourceArgs":"modscript.sh", + "UpdateSourceTarget":"{{$FullInstanceDir}}", + "OverwriteExistingFiles":true + }, + { + "UpdateStageName":"Convert and Symlink Mods", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"./modscript.sh" + }, + { + "UpdateStageName":"Link Mods", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"Executable", + "UpdateSourceData":"cmd.exe", + "UpdateSourceArgs":"/C cd .\\arma3\\233780 && for /D %G in (.\\steamapps\\workshop\\content\\107410\\*) do mklink /J %~nxG %G" + } +] \ No newline at end of file