From ddea198788dca2e6da2c6e89b966b42641e50408 Mon Sep 17 00:00:00 2001 From: Dragoon209 Date: Thu, 29 Sep 2022 00:40:59 -0400 Subject: [PATCH] Just Cause 3 Multiplayer Game Support Draft (#185) * Necesse Game Support * Update necesse.kvp Update necesse.kvp to point the config update path to the CubeCoders repo * jc3mp Game Support Just Cause 3 Multiplayer Mod * jc3mp: fixes and enhhancements added default package automatic installation added server announce fixes fixed some accidental typos and duplicate names * updated per notes in PR 185 * Adjusted spelling. Don't skip sleep, kids! * updated config download path Co-authored-by: DavidAtRoot --- jc3mp.kvp | 87 ++++++++++++++++++++++ jc3mpconfig.json | 165 +++++++++++++++++++++++++++++++++++++++++ jc3mpmetaconfig.json | 8 ++ jc3mpserverconfig.json | 16 ++++ 4 files changed, 276 insertions(+) create mode 100644 jc3mp.kvp create mode 100644 jc3mpconfig.json create mode 100644 jc3mpmetaconfig.json create mode 100644 jc3mpserverconfig.json diff --git a/jc3mp.kvp b/jc3mp.kvp new file mode 100644 index 0000000..23d43d8 --- /dev/null +++ b/jc3mp.kvp @@ -0,0 +1,87 @@ +Meta.DisplayName=Just Cause 3 Multiplayer Mod +Meta.Description=Just Cause 3 Multiplayer Dedicated Server +Meta.OS=Windows, Linux +Meta.Arch=x86_64 +Meta.Author=ThisIslandEarth +Meta.URL=https://just-cause.mp +Meta.DisplayImageSource=steam:619910 +Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$queryPort} +Meta.ConfigManifest=jc3mpconfig.json +Meta.MetaConfigManifest=jc3mpmetaconfig.json +Meta.ConfigRoot=jc3mp.kvp +Meta.MinAMPVersion=2.4.0.2 +Meta.SpecificDockerImage= +Meta.DockerRequired=False +Meta.ContainerPolicy=Supported +Meta.ContainerPolicyReason= +Meta.Prerequsites=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +App.DisplayName=Just Cause 3 Multiplayer Mod +App.RootDir=./jc3mp/ +App.BaseDirectory=./jc3mp/619960/ +App.ExecutableWin=619960\Server.exe +App.ExecutableLinux=619960/Server +App.WorkingDir=619960 +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs= +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"619960"} +App.CommandLineParameterFormat=-{0} "{1}" +App.CommandLineParameterDelimiter= +App.ExitMethod=String +App.ExitTimeout=30 +App.ExitString=quit +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":"TCP","Port":4200,"Ref":"port","Name":"Game Port","Description":"Port for game traffic"}, {"Protocol":"Both","Port":4201,"Ref":"queryPort","Name":"Query Port","Description":"Server query port"}, {"Protocol":"Both","Port":4202,"Ref":"steamPort","Name":"Steam Port","Description":"Steam communication port"}, {"Protocol":"Both","Port":4203,"Ref":"httpPort","Name":"HTTP Port","Description":"Client mod download port"}] +App.AdminPortRef= +App.PrimaryApplicationPortRef=port +App.UniversalSleepApplicationUDPPortRef=port +App.UniversalSleepSteamQueryPortRef=queryPort +App.MaxUsers=20 +App.UseRandomAdminPassword=False +App.RemoteAdminPassword=Password123 +App.AdminMethod=STDIO +App.AdminLoginTransform=None +App.RCONConnectDelaySeconds=5 +App.RCONConnectRetrySeconds=5 +App.RCONHeartbeatMinutes=0 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=[{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"619960"},{"UpdateStageName":"Config Template Download","UpdateSourcePlatform":"All","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/jc3mpserverconfig.json","UpdateSourceTarget":"../","OverwriteExistingFiles":"true"},{"UpdateStageName":"Packages Directory Creation","UpdateSourcePlatform":"All","UpdateSource":"CreateDirectory","UpdateSourceArgs":"{{$FullBaseDir}}packages"},{"UpdateStageName":"Download Default Packages","UpdateSourcePlatform":"All","UpdateSource":"FetchURL","UpdateSourceData":"https://unlimitedjc.files.wordpress.com/2022/09/jc3mp-default-packages.zip","UpdateSourceArgs":"jc3mpdefaultpackages.zip","UpdateSourceTarget":"{{$FullBaseDir}}packages","UnzipUpdateSource":"true","OverwriteExistingFiles":"true","DeleteAfterExtract":"true"},{"UpdateStageName":"chat-master Extract","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'cd jc3mp/619960/packages && unzip -u chat-master.zip'"},{"UpdateStageName":"command-hints-master Extract","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'cd jc3mp/619960/packages && unzip -u command-hints-master.zip'"},{"UpdateStageName":"command-manager-master Extract","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'cd jc3mp/619960/packages && unzip -u command-manager-master.zip'"},{"UpdateStageName":"freeroam-master Extract","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'cd jc3mp/619960/packages && unzip -u freeroam-master.zip'"},{"UpdateStageName":"spawn-menu-master Extract","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'cd jc3mp/619960/packages && unzip -u spawn-menu-master.zip'"},{"UpdateStageName":"chat-master Extract Windows","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C cd jc3mp\\619960\\packages && tar -xf chat-master.zip"},{"UpdateStageName":"command-hints-master Extract Windows","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C cd jc3mp\\619960\\packages && tar -xf command-hints-master.zip"},{"UpdateStageName":"command-manager-master Extract Windows","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C cd jc3mp\\619960\\packages && tar -xf command-manager-master.zip"},{"UpdateStageName":"freeroam-master Extract Windows","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C cd jc3mp\\619960\\packages && tar -xf freeroam-master.zip"},{"UpdateStageName":"spawn-menu-master Extract Windows","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C cd jc3mp\\619960\\packages && tar -xf spawn-menu-master.zip"}] +App.Compatibility=None +App.SteamUpdateAnonymousLogin=True +App.SteamForceLoginPrompt=False +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= +Console.AppReadyRegex=^\[[\d\-]+ [\d:]+\]: Server successfully started up, awaiting connects\.\.\.$ +Console.UserJoinRegex=^(?.+?) has joined\.$ +Console.UserLeaveRegex=^(?.+?) has left\.$ +Console.UserChatRegex=^(?.+?): (?.+)$ +Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$ +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 diff --git a/jc3mpconfig.json b/jc3mpconfig.json new file mode 100644 index 0000000..4fdda3e --- /dev/null +++ b/jc3mpconfig.json @@ -0,0 +1,165 @@ +[ + { + "DisplayName": "Game Port", + "Category": "Server Settings", + "Description": "", + "FieldName": "$port", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "gport", + "IncludeInCommandLine": false, + "Hidden": true, + "DefaultValue": "4200", + "EnumValues": {} + }, + { + "DisplayName": "Host IP", + "Category": "Server Settings", + "Description": "", + "FieldName": "$ApplicationIPBinding", + "InputType": "text", + "IsFlagArgument": false, + "ParamFieldName": "hostip", + "IncludeInCommandLine": false, + "Hidden": true, + "DefaultValue": "0.0.0.0", + "EnumValues": {} + }, + { + "DisplayName": "HTTP Port", + "Category": "Server Settings", + "Description": "HTTP Port", + "FieldName": "$httpPort", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "hport", + "IncludeInCommandLine": false, + "Hidden": true, + "DefaultValue": "4203", + "EnumValues": {} + }, + { + "DisplayName": "Query Port", + "Category": "Server Settings", + "Description": "Query Port", + "FieldName": "$queryPort", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "qport", + "IncludeInCommandLine": false, + "Hidden": true, + "DefaultValue": "4201", + "EnumValues": {} + }, + { + "DisplayName": "Steam Port", + "Category": "Server Settings", + "Description": "Steam Port", + "FieldName": "$steamPort", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "sport", + "IncludeInCommandLine": false, + "Hidden": true, + "DefaultValue": "4202", + "EnumValues": {} + }, + { + "DisplayName": "Players", + "Category": "Server Settings", + "Description": "Number of players allowed to join.", + "Keywords": "players", + "FieldName": "$MaxUsers", + "InputType": "number", + "IsFlagArgument": false, + "Required": true, + "ParamFieldName": "maxPlayers", + "IncludeInCommandLine": false, + "DefaultValue": "20", + "EnumValues": {}, + "Suffix":"players" + }, + { + "DisplayName": "Password", + "Category": "Server Settings", + "Description": "Password to join the server.", + "Keywords": "password", + "FieldName": "password", + "InputType": "password", + "IsFlagArgument": false, + "ParamFieldName": "password", + "IncludeInCommandLine": false, + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "Description", + "Category": "Server Settings", + "Description": "Displayed in the server browser.", + "Keywords": "description", + "FieldName": "description", + "InputType": "text", + "IsFlagArgument": false, + "ParamFieldName": "description", + "IncludeInCommandLine": false, + "DefaultValue": "Powered By Amp", + "EnumValues": {} + }, + { + "DisplayName": "Tick Rate", + "Category": "Server Settings", + "Description": "Maxium FPS for the server (default is 60).", + "Keywords": "tickrate", + "FieldName": "tickrate", + "InputType": "number", + "IsFlagArgument": false, + "ParamFieldName": "maxTickRate", + "IncludeInCommandLine": false, + "DefaultValue": "60", + "Suffix":"ticks per second", + "EnumValues": {} + }, + { + "DisplayName": "Name", + "Category": "Server Settings", + "Description": "Displayed in the server browser.", + "Keywords": "name", + "FieldName": "name", + "InputType": "text", + "IsFlagArgument": false, + "ParamFieldName": "name", + "IncludeInCommandLine": false, + "DefaultValue": "JC3MP-AMP", + "EnumValues": {} + }, + { + "DisplayName": "Server Announce", + "Category": "Server Settings", + "Description": "Add a check here if you want to announce your server on the master server browser list.", + "Keywords": "Server Announce", + "FieldName": "announce", + "InputType": "checkbox", + "IsFlagArgument": false, + "ParamFieldName": "announce", + "IncludeInCommandLine": false, + "DefaultValue": "false", + "EnumValues": { + "False": "false", + "True": "true" + } + }, + { + "DisplayName": "Required DLCs", + "Category": "Server Settings", + "Description": "Comma separated list of owned DLC IDs required to join. [A list is available here](https://just-cause.mp/docs/general/information/Server%20Configuration) Leave this blank to not require any DLCs to join.", + "Keywords": "dlcs", + "FieldName": "requiredDLC", + "InputType": "text", + "IsFlagArgument": false, + "ParamFieldName": "requiredDLC", + "IncludeInCommandLine": false, + "DefaultValue": "", + "Placeholder": "400551,400490,442051,401850,348880,388294,442050,488293,388290,388291,388292,442052", + "EnumValues": {} + } +] \ No newline at end of file diff --git a/jc3mpmetaconfig.json b/jc3mpmetaconfig.json new file mode 100644 index 0000000..7502c8c --- /dev/null +++ b/jc3mpmetaconfig.json @@ -0,0 +1,8 @@ +[ + { + "ConfigFile": "config.json", + "AutoMap": true, + "ConfigType": "template", + "ConfigFileTemplate": "jc3mpserverconfig.json" + } + ] \ No newline at end of file diff --git a/jc3mpserverconfig.json b/jc3mpserverconfig.json new file mode 100644 index 0000000..876a6d8 --- /dev/null +++ b/jc3mpserverconfig.json @@ -0,0 +1,16 @@ +{ + "announce": {{announce}}, + "description": "{{description}}", + "host": {{hostip}}, + "httpPort": {{hport}}, + "logLevel": 7, + "logo": "", + "maxPlayers": {{maxPlayers}}, + "maxTickRate": {{maxTickRate}}, + "name": "{{name}}", + "password": "{{password}}", + "port": {{gport}}, + "queryPort": {{qport}}, + "requiredDLC": [{{requiredDLC}}], + "steamPort": {{sport}} +} \ No newline at end of file