diff --git a/squad-dedicated-server.kvp b/squad-dedicated-server.kvp index 3c4073f..6c7a848 100644 --- a/squad-dedicated-server.kvp +++ b/squad-dedicated-server.kvp @@ -1,17 +1,20 @@ App.AdminMethod=SourceRCON App.ApplicationPort1=7787 App.ApplicationPort2=27165 +App.ApplicationPort3=0 App.ApplicationReadyMode=RegexMatch App.BaseDirectory=./squad-dedicated-server/403240/ -App.CommandLineArgs=-maxplayers {{$MaxUsers}} -multihome {{$ApplicationIPBinding}} -random=always -log -port {{$ApplicationPort1}} -rconport {{$RemoteAdminPort}} -rconpassword "{{$RemoteAdminPassword}}" +App.CommandLineArgs=MULTIHOME={{$ApplicationIPBinding}} Port={{$ApplicationPort1}} QueryPort={{$ApplicationPort2}} RCONPORT={{$RemoteAdminPort}} RCONPASSWORD={{"$RemoteAdminPassword"}} -log -fullcrashdump App.CommandLineParameterDelimiter= -App.CommandLineParameterFormat=-{0} "{1}" +App.CommandLineParameterFormat={0}="{1}" App.DisplayName=Squad Dedicated Server -App.EnvironmentVariables={"LD_LIBRARY_PATH": "./linux64:%LD_LIBRARY_PATH%", "SteamAppId": "403240"} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullRootDir}}403240/linux64:%LD_LIBRARY_PATH%","SteamAppId":"393380"} App.ExecutableLinux=403240/SquadGame/Binaries/Linux/SquadGameServer App.ExecutableWin=403240\SquadGame\Binaries\Win64\SquadGameServer.exe App.ExitMethod=OS_CLOSE App.ExitString=stop +App.RCONConnectDelaySeconds=15 +App.RCONConnectRetrySeconds=45 App.HasReadableConsole=true App.HasWritableConsole=true App.RapidStartup=false @@ -20,17 +23,19 @@ App.RootDir=./squad-dedicated-server/ App.UpdateSource=Multi App.UpdateSources=[{"UpdateStageName": "SteamCMD Download","UpdateSourcePlatform": "All", "UpdateSource": "SteamCMD", "UpdateSourceData": "403240"}] App.WorkingDir=403240 +App.UseRandomAdminPassword=True Console.AppReadyRegex=^(LogInit: Display: Starting Game\.)|(LogOnline: GotoState: NewState: Playing)$ Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$ -Console.UserChatRegex=^\[\d\d:\d\d:\d\d\] \[CHAT\] <(?.+?)> (?.+)$ -Console.UserJoinRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] "(?.+?)" \((?.+?)\) connected from \[(?.+?)\]$ -Console.UserLeaveRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] "(?.+?)" \((?.+?)\) disconnected \(Reason: (?.+?)\)$ -Meta.Author=Shinynecrid +Console.UserChatRegex= +Console.UserJoinRegex= +Console.UserLeaveRegex= +Meta.Author=Shinynecrid,IceOfWraith Meta.ConfigManifest=squad-dedicated-serverconfig.json +Meta.MetaConfigManifest=squad-dedicated-servermetaconfig.json Meta.ConfigRoot=squad-dedicated-server.kvp Meta.Description=Squad Dedicated Server Meta.DisplayImageSource=steam:393380 Meta.DisplayName=Squad Dedicated Server -Meta.EndpointURIFormat= +Meta.EndpointURIFormat=steam://connect/{ip}/{GenericModule.App.ApplicationPort2} Meta.OS=3 -Meta.URL=https://squad.gamepedia.com/Dedicated_server \ No newline at end of file +Meta.URL=https://steamdb.info/app/403240/ \ No newline at end of file diff --git a/squad-dedicated-serverconfig.json b/squad-dedicated-serverconfig.json index 7cb8e79..98d0405 100644 --- a/squad-dedicated-serverconfig.json +++ b/squad-dedicated-serverconfig.json @@ -1,15 +1,394 @@ [ { - "DisplayName": "Max Users", - "Category": "Server Configuration", - "Description": "Sets the maximum ammount of allowed players in a game", - "Keywords": "Players", - "FieldName": "$MaxUsers", + "DisplayName": "RCON Password", + "Category": "Server Config", + "Description": "Password to connect to RCON. Change this after installing the server", + "Keywords": "RCON,password", + "FieldName": "$RemoteAdminPassword", + "InputType": "RandomPassword", + "IsFlagArgument": false, + "ParamFieldName": "$RemoteAdminPassword", + "IncludeInCommandLine": true, + "DefaultValue": "Password123" + }, + { + "DisplayName": "Server Name", + "Category": "Server Config", + "Description": "Set the Name for the server to advertise", + "Keywords": "server name, name", + "FieldName": "ServerName", "InputType": "text", "IsFlagArgument": false, - "ParamFieldName": "-maxplayers", - "IncludeInCommandLine": true, - "DefaultValue": "80", - "EnumValues": {} + "ParamFieldName": "ServerName", + "IncludeInCommandLine": false, + "DefaultValue": "A Squad Server Powered by AMP" + }, + { + "DisplayName": "Max Players", + "Category": "Server Config", + "Description": "Set the max players allowed on the server", + "Keywords": "max players, players", + "FieldName": "$MaxUsers", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "MaxPlayers", + "IncludeInCommandLine": false, + "DefaultValue": "50" + }, + { + "DisplayName": "LAN Mode", + "Category": "Server Config", + "Description": "set the server to LAN mode?", + "Keywords": "Lan,Server", + "FieldName": "IsLANMatch", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "IsLANMatch", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Should Advertise", + "Category": "Server Config", + "Description": "Control visibility in the server browser", + "Keywords": "Visibility,Server", + "FieldName": "ShouldAdvertise", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "ShouldAdvertise", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Number of Reserved Slots", + "Category": "Server Config", + "Description": "Number of reserved slots for admins / members", + "Keywords": "reserved players, players", + "FieldName": "NumReservedSlots", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "NumReservedSlots", + "IncludeInCommandLine": false, + "DefaultValue": "0" + }, + { + "DisplayName": "Public Queue Limit", + "Category": "Server Config", + "Description": "Size of the server queuing, for regular user", + "Keywords": "queue,players", + "FieldName": "PublicQueueLimit", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "PublicQueueLimit", + "IncludeInCommandLine": false, + "DefaultValue": "25" + }, + { + "DisplayName": "Map Rotation Mode", + "Category": "Server Config", + "Description": "Map rotation mode: Can Be, Level ListLevelList(use order in level rotation config file),LayerList (use order in layer rotation config file) or LevelList_Randomized,LayerList_Randomized ", + "Keywords": "Map Rotation,Rotation", + "FieldName": "MapRotationMode", + "InputType": "enum", + "IsFlagArgument": false, + "ParamFieldName": "MapRotationMode", + "IncludeInCommandLine": false, + "DefaultValue": "LayerList", + "EnumValues": { + "LevelList": "LevelList", + "LayerList": "LayerList", + "LevelList_Randomized": "LevelList_Randomized", + "LayerList_Randomized": "LayerList_Randomized" + }, + "SkipIfEmpty": false + }, + { + "DisplayName": "Randomize At Start", + "Category": "Server Config", + "Description": "Should the Map/Layer rotations list be randomized at start?", + "Keywords": "Map Rotation,Rotation", + "FieldName": "RandomizeAtStart", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "RandomizeAtStart", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Use Vote Factions", + "Category": "Server Config", + "Description": "Should Faction be voted for on generic layers? Randomized if false.", + "Keywords": "Factions,Vote", + "FieldName": "UseVoteFactions", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "UseVoteFactions", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Vote for map at end of round", + "Category": "Server Config", + "Description": "Should next Map be voted for at end of round?", + "Keywords": "Map,Vote", + "FieldName": "UseVoteLevel", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "UseVoteLevel", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Vote for layer at end of round", + "Category": "Server Config", + "Description": "Should next Layer be voted for at end of round?", + "Keywords": "Layer,Vote", + "FieldName": "UseVoteLayer", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "UseVoteLayer", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Allow Team Change", + "Category": "Server Config", + "Description": "Completly Allow or Disallow Team change to all players. Only user with Level_Balance access level can bypass this flag", + "Keywords": "Layer,Vote", + "FieldName": "AllowTeamChanges", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "AllowTeamChanges", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Prevent Team Change If Unbalanced", + "Category": "Server Config", + "Description": "If set to false, players can change teams regardless of team balance. Otherwise, the NumPlayersDiffForTeamChanges Value is used", + "Keywords": "Layer,Vote", + "FieldName": "PreventTeamChangeIfUnbalanced", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "PreventTeamChangeIfUnbalanced", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Max Allowed Difference in player count", + "Category": "Server Config", + "Description": "Maximum Allowed difference in player count between teams. This takes into account the team the player leaves and the team the player joins", + "Keywords": "queue,players", + "FieldName": "NumPlayersDiffForTeamChanges", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "NumPlayersDiffForTeamChanges", + "IncludeInCommandLine": false, + "DefaultValue": "3" + }, + { + "DisplayName": "Rejoin Squad Delay After Kick", + "Category": "Server Config", + "Description": "Delay a player is allowed to rejoin a squad after being kicked.", + "Keywords": "delay,players,kick", + "FieldName": "RejoinSquadDelayAfterKick", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "RejoinSquadDelayAfterKick", + "IncludeInCommandLine": false, + "DefaultValue": "180" + }, + { + "DisplayName": "Record Demos", + "Category": "Server Config", + "Description": "Enable Demo Recording", + "Keywords": "Record,Demo", + "FieldName": "RecordDemos", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "RecordDemos", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Allow Public Clients Record Demos", + "Category": "Server Config", + "Description": "Enable Demo Recording", + "Keywords": "Record,Demo", + "FieldName": "AllowPublicClientsToRecord", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "AllowPublicClientsToRecord", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Server Message Interval", + "Category": "Server Config", + "Description": "Maximum Allowed difference in player count between teams. This takes into account the team the player leaves and the team the player joins", + "Keywords": "Interval, Message", + "FieldName": "ServerMessageInterval", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "ServerMessageInterval", + "IncludeInCommandLine": false, + "DefaultValue": "300" + }, + { + "DisplayName": "Force Server Non-Seamless Travel", + "Category": "Server Config", + "Description": "Forces the server to do non-seamless travel (disconnect when changing maps) every X seconds", + "Keywords": "travel", + "FieldName": "ForceNonSeamlessTravelIntervalSeconds", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "ForceNonSeamlessTravelIntervalSeconds", + "IncludeInCommandLine": false, + "DefaultValue": "43200", + "SkipIfEmpty": true + }, + { + "DisplayName": "Team Kill Auto Kick Enabled", + "Category": "Server Config", + "Description": "Enable Auto Kick for teamkilling", + "Keywords": "Kick,Auto,Team,Kill", + "FieldName": "TKAutoKickEnabled", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "TKAutoKickEnabled", + "DefaultValue": "True", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Auto Team Kill Ban Number", + "Category": "Server Config", + "Description": "Maximum allowed team kills before ban", + "Keywords": "Interval, Message", + "FieldName": "AutoTKBanNumberTKs", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "AutoTKBanNumberTKs", + "IncludeInCommandLine": false, + "DefaultValue": "7" + }, + { + "DisplayName": "Auto Team Kill Ban Timer", + "Category": "Server Config", + "Description": "Time a Team Kiling player is banned for before being allowed to rejoin match.", + "Keywords": "Interval,Message,Time", + "FieldName": "AutoTKBanTime", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "AutoTKBanTime", + "IncludeInCommandLine": false, + "DefaultValue": "300" + }, + { + "DisplayName": "Vehicle Kit Requirement Disabled", + "Category": "Server Config", + "Description": "Toggle to disable vehicle kit requirement", + "Keywords": "Vehicle,Kit", + "FieldName": "VehicleKitRequirementDisabled", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "VehicleKitRequirementDisabled", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Allow Community Admin Access", + "Category": "Server Config", + "Description": "Enable Community Admin Access", + "Keywords": "Admin", + "FieldName": "AllowCommunityAdminAccess", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "AllowCommunityAdminAccess", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Offworld Developers only Admin", + "Category": "Server Config", + "Description": "Only Offworld Industries developers are admins", + "Keywords": "Admin", + "FieldName": "AllowDevProfiling", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "AllowDevProfiling", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Allow QA", + "Category": "Server Config", + "Description": "Allow QA", + "Keywords": "QA", + "FieldName": "AllowQA", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "AllowQA", + "DefaultValue": "true", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Vehicle Claiming Disabled", + "Category": "Server Config", + "Description": "Disable Vehicle Claiming", + "Keywords": "Vehicle", + "FieldName": "VehicleClaimingDisabled", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "VehicleClaimingDisabled", + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } } ] \ No newline at end of file diff --git a/squad-dedicated-servermetaconfig.json b/squad-dedicated-servermetaconfig.json new file mode 100644 index 0000000..dc7c95b --- /dev/null +++ b/squad-dedicated-servermetaconfig.json @@ -0,0 +1,13 @@ +[ + { + "ConfigFile": "./SquadGame/ServerConfig/Server.cfg", + "AutoMap": true, + "ConfigType": "kvp", + "ConfigFormat": "{0}=\"{1}\"" + }, + { + "ConfigFile": "./SquadGame/ServerConfig/VoteConfig.cfg", + "AutoMap": true, + "ConfigType": "kvp" + } +] \ No newline at end of file