From ed34adccfe18c664e7b562cf96877071e9b9945d Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Sat, 28 May 2022 09:01:02 +1000 Subject: [PATCH] Add Hurtworld (#114) * Initial commit * Initial commit * Final updates Remove structurecomplexitylimit and spawncooldown settings as they throw errors. No idea why Remove enablesharedenvironment (deprecated setting) Update for new ports system --- hurtworld.kvp | 59 ++++++ hurtworldconfig.json | 381 +++++++++++++++++++++++++++++++++++++++ hurtworldmetaconfig.json | 9 + 3 files changed, 449 insertions(+) create mode 100644 hurtworld.kvp create mode 100755 hurtworldconfig.json create mode 100644 hurtworldmetaconfig.json diff --git a/hurtworld.kvp b/hurtworld.kvp new file mode 100644 index 0000000..2cce111 --- /dev/null +++ b/hurtworld.kvp @@ -0,0 +1,59 @@ +Meta.DisplayName=Hurtworld +Meta.Description=Hurtworld Dedicated Server +Meta.OS=Windows, Linux +Meta.Author=Greelan +Meta.URL=http://hurtworld.com +Meta.DisplayImageSource=steam:405100 +Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$QueryPort} +Meta.ConfigManifest=hurtworldconfig.json +Meta.MetaConfigManifest=hurtworldmetaconfig.json +Meta.ConfigRoot=hurtworld.kvp +Meta.MinAMPVersion=2.3.3 +Meta.SpecificDockerImage= +Meta.Prerequsites=[] +App.DisplayName=Hurtworld +App.RootDir=./hurtworld/ +App.BaseDirectory=./hurtworld/405100/ +App.ExecutableWin=405100\Hurtworld.exe +App.ExecutableLinux=405100/Hurtworld.x86_64 +App.WorkingDir=405100 +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} -batchmode -nographics -exec "host {{$GamePort}} {{map}};queryport {{$QueryPort}};{{$FormattedArgs}}" -logfile "serverlog.txt" +App.AppSettings={} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"393420"} +App.CommandLineParameterFormat={0} {1} +App.CommandLineParameterDelimiter=; +App.ExitMethod=OS_CLOSE +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":"Both","Name":"Game Port","Description":"Port for game traffic","Port":12871,"Ref":"GamePort"},{"Protocol":"Both","Name":"Query Port","Description":"Port for server query traffic","Port":12881,"Ref":"QueryPort"}] +App.PrimaryApplicationPortRef=GamePort +App.MaxUsers=20 +App.UseRandomAdminPassword=False +App.RemoteAdminPassword=Password123 +App.AdminMethod=STDIO +App.UpdateSources=[{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"405100"},{"UpdateStageName":"uMod Windows","UpdateSourcePlatform":"Windows","UpdateSource":"FetchURLFromJQ","UpdateSourceData":"https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest","UpdateSourceArgs":"$.assets[1].browser_download_url","UpdateSourceTarget":"{{$FullBaseDir}}","UnzipUpdateSource":true,"OverwriteExistingFiles":true,"UpdateSourceConditionSetting":"uMod","UpdateSourceConditionValue":"true","DeleteAfterExtract":true},{"UpdateStageName":"uMod Linux","UpdateSourcePlatform":"Linux","UpdateSource":"FetchURLFromJQ","UpdateSourceData":"https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest","UpdateSourceArgs":"$.assets[0].browser_download_url","UpdateSourceTarget":"{{$FullBaseDir}}","UnzipUpdateSource":true,"OverwriteExistingFiles":true,"UpdateSourceConditionSetting":"uMod","UpdateSourceConditionValue":"true","DeleteAfterExtract":true}] +App.Compatibility=None +App.SteamUpdateAnonymousLogin=True +App.SteamForceLoginPrompt=False +App.RapidStartup=False +App.ApplicationReadyMode=Immediate +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$ +Console.AppReadyRegex= +Console.UserJoinRegex= +Console.UserLeaveRegex= +Console.UserChatRegex= +Console.UpdateAvailableRegex= +Console.SuppressLogAtStart=False +Console.ActivateLogRegex= +Console.UserActions={} diff --git a/hurtworldconfig.json b/hurtworldconfig.json new file mode 100755 index 0000000..664e3f6 --- /dev/null +++ b/hurtworldconfig.json @@ -0,0 +1,381 @@ +[ + { + "DisplayName":"Game Port", + "Category":"Server Settings", + "Description":"", + "Keywords":"", + "FieldName":"$GamePort", + "InputType":"number", + "IsFlagArgument":false, + "Hidden":true, + "ParamFieldName":"host", + "IncludeInCommandLine":false, + "DefaultValue":"12871", + "EnumValues":{} + },{ + "DisplayName":"Query Port", + "Category":"Server Settings", + "Description":"", + "Keywords":"", + "FieldName":"$QueryPort", + "InputType":"number", + "IsFlagArgument":false, + "Hidden":true, + "ParamFieldName":"queryport", + "IncludeInCommandLine":false, + "DefaultValue":"12881", + "EnumValues":{} + },{ + "DisplayName":"Server Name", + "Category":"Server Settings", + "Description":"Server name as shown in the server browser", + "Keywords":"name", + "FieldName":"servername", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"servername", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"My Hurtworld Server", + "EnumValues":{} + },{ + "DisplayName":"Player Limit", + "Category":"Server Settings", + "Description":"Maximum number of players that may connect to the server", + "Keywords":"maximum,players", + "FieldName":"$MaxUsers", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"maxplayers", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"20", + "Suffix":"players", + "EnumValues":{} + },{ + "DisplayName":"Map", + "Category":"Server Settings", + "Description":"Sets the map to load on the server", + "Keywords":"map", + "FieldName":"map", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"map", + "IncludeInCommandLine":false, + "DefaultValue":"nullius", + "Placeholder":"nullius", + "EnumValues":{} + },{ + "DisplayName":"Enable Creative Mode", + "Category":"Server Settings", + "Description":"If enabled, creative mode will apply (free build)", + "Keywords":"creative,mode", + "FieldName":"creativemode", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"creativemode", + "IncludeInCommandLine":true, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Add Admin", + "Category":"Server Settings", + "Description":"Steam64 ID of server admin. [Find Steam64 IDs](https://steamidfinder.com/)", + "Keywords":"admin", + "FieldName":"addadmin", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"addadmin", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "Placeholder":"58673958674589375", + "EnumValues":{} + },{ + "DisplayName":"Install uMod", + "Category":"Server Settings", + "Description":"If enabled, auto-installs uMod when the server is updated", + "Keywords":"install,umod", + "FieldName":"uMod", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"uMod", + "IncludeInCommandLine":false, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + },{ + "DisplayName":"Load Steam Workshop Mods", + "Category":"Server Settings", + "Description":"Space-separated list of Steam Workshop mod IDs to load on the server", + "Keywords":"mods", + "FieldName":"loadmod", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"loadmod", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "Placeholder":"714026119 704019543", + "EnumValues":{} + },{ + "DisplayName":"Enable Autowipe", + "Category":"Server Settings", + "Description":"If enabled, server wipe will be enabled", + "Keywords":"autowipe,wipe", + "FieldName":"autowipe", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"autowipe", + "IncludeInCommandLine":true, + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Wipe Interval", + "Category":"Server Settings", + "Description":"Sets the server wipe schedule, as shown in the server browser. A negative number will show no wipe. Needs wipe enabled to work", + "Keywords":"wipe,interval,schedule", + "FieldName":"wipeinterval", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"wipeinterval", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"1209600", + "Suffix":"seconds", + "Placeholder":"1209600", + "EnumValues":{} + },{ + "DisplayName":"Player Loot Mode", + "Category":"Server Settings", + "Description":"Sets the player loot mode. Note: Alternate loot modes are experimental and may not work properly", + "Keywords":"player,loot", + "FieldName":"playerlootmode", + "InputType":"enum", + "IsFlagArgument":false, + "ParamFieldName":"playerlootmode", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{ + "":"Drop everything (default)", + "1":"Drop backpack contents only", + "2":"Drop backpack and one random item", + "3":"Drop backpack and two random items", + "4":"Drop backpack and three random items", + "5":"Drop nothing", + "6":"Destroy everything" + } + },{ + "DisplayName":"Enable Autosave", + "Category":"Server Settings", + "Description":"If enabled, server will be autosaved", + "Keywords":"autosave", + "FieldName":"autosaveenabled", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"autosaveenabled", + "IncludeInCommandLine":true, + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Auto Backup Interval", + "Category":"Server Settings", + "Description":"Sets how often the autosave should be backed up. Specify -1 to disable backup", + "Keywords":"backup,interval", + "FieldName":"autobackupinterval", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"autobackupinterval", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"7200", + "Suffix":"seconds", + "Placeholder":"7200", + "EnumValues":{} + },{ + "DisplayName":"Enable Structure Decay", + "Category":"Server Settings", + "Description":"If enabled, structures will decay", + "Keywords":"structure,decay", + "FieldName":"structuredecayenabled", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"structuredecayenabled", + "IncludeInCommandLine":true, + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Structure Decay Frequency", + "Category":"Server Settings", + "Description":"Sets how often a structure will be damaged by decay. Low values may have a performance impact", + "Keywords":"structure,decay,frequency", + "FieldName":"structuredecayfrequency", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"structuredecayfrequency", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"600", + "Placeholder":"600", + "EnumValues":{} + },{ + "DisplayName":"Structure Decay Damage", + "Category":"Server Settings", + "Description":"Sets how much damage occurs when a structure decays. Specify one value for a set damage amount, or specify two values for a range", + "Keywords":"structure,decay,damage", + "FieldName":"structuredecaydamage", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"structuredecaydamage", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"5 10", + "Placeholder":"5 10", + "EnumValues":{} + },{ + "DisplayName":"Structure Decay Start Time", + "Category":"Server Settings", + "Description":"Sets how long a structure must be both unclaimed and unmodified, before it begins to decay", + "Keywords":"structure,decay,modify,time", + "FieldName":"structuredecaymodifytime", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"structuredecaymodifytime", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"86400", + "Placeholder":"86400", + "EnumValues":{} + },{ + "DisplayName":"Display Connection/Disconnection Messages", + "Category":"Server Settings", + "Description":"If enabled, connection and disconnection messages will be displayed", + "Keywords":"connection,disconnection,message", + "FieldName":"chatconnectionmessagesenabled", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"chatconnectionmessagesenabled", + "IncludeInCommandLine":true, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Display Death Messages", + "Category":"Server Settings", + "Description":"If enabled, death messages will be displayed", + "Keywords":"death,message", + "FieldName":"chatdeathmessagesenabled", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"chatdeathmessagesenabled", + "IncludeInCommandLine":true, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + },{ + "DisplayName":"Chat Spam Filter Threshold", + "Category":"Server Settings", + "Description":"Sets the chat spam filter threshold. Lower values mean players will be muted sooner", + "Keywords":"chat,spam,filter", + "FieldName":"chatspambudget", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"chatspambudget", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"200", + "Placeholder":"200", + "EnumValues":{} + },{ + "DisplayName":"Spawner Time", + "Category":"Server Settings", + "Description":"Sets how much time spawners can take", + "Keywords":"spawner,time", + "FieldName":"spawnercellupdatesperframe", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"spawnercellupdatesperframe", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"20", + "Placeholder":"20", + "EnumValues":{} + },{ + "DisplayName":"Stake Deauthorise Time", + "Category":"Server Settings", + "Description":"Sets the time a full ownership stake will take to deauthorise", + "Keywords":"stake,deauthorise", + "FieldName":"stakedeauthtime", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"stakedeauthtime", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"7200", + "Suffix":"seconds", + "Placeholder":"7200", + "EnumValues":{} + },{ + "DisplayName":"Target FPS", + "Category":"Server Settings", + "Description":"Sets the target FPS for the server. Specify -1 for unlimited (not recommended)", + "Keywords":"target,fps", + "FieldName":"targetfps", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"targetfps", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"100", + "Placeholder":"100", + "EnumValues":{} + },{ + "DisplayName":"Load Balancer Resources", + "Category":"Server Settings", + "Description":"Sets how many resources the Load Balancer can use per frame", + "Keywords":"load,balancer,resources", + "FieldName":"loadbalancerframebudget", + "InputType":"number", + "IsFlagArgument":false, + "ParamFieldName":"loadbalancerframebudget", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"100", + "Placeholder":"100", + "EnumValues":{} + },{ + "DisplayName":"Enable Load Balancer Monitoring", + "Category":"Server Settings", + "Description":"If enabled, allows monitoring of the Load Balancer (view using \"dumploadbalancer\" command). Do not leave this enabled, as it has significant overhead", + "Keywords":"monitor,load,balancer", + "FieldName":"monitorloadbalancer", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"monitorloadbalancer", + "IncludeInCommandLine":true, + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + } +] diff --git a/hurtworldmetaconfig.json b/hurtworldmetaconfig.json new file mode 100644 index 0000000..af8bedd --- /dev/null +++ b/hurtworldmetaconfig.json @@ -0,0 +1,9 @@ +[ + { + "ConfigFile":"autoexec.cfg", + "AutoMap":true, + "ConfigType":"kvp", + "ConfigFormat":"{0} {1}", + "ConfigFormatRegex":"^(?.+?) (?.*?)$" + } +] \ No newline at end of file