From ed2759dacc693694176c4bf3c0738830c12551ae Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 10:04:25 -0600 Subject: [PATCH 01/15] Add files via upload --- fistful-of-frags-config.json | 839 +++++++++++++++++++++++++++++++ fistful-of-frags-metaconfig.json | 8 + fistful-of-frags-ports.json | 23 + fistful-of-frags-start.json | 30 ++ fistful-of-frags-updates.json | 122 +++++ fistful-of-frags.kvp | 102 ++++ 6 files changed, 1124 insertions(+) create mode 100644 fistful-of-frags-config.json create mode 100644 fistful-of-frags-metaconfig.json create mode 100644 fistful-of-frags-ports.json create mode 100644 fistful-of-frags-start.json create mode 100644 fistful-of-frags-updates.json create mode 100644 fistful-of-frags.kvp diff --git a/fistful-of-frags-config.json b/fistful-of-frags-config.json new file mode 100644 index 000000000..33e35c461 --- /dev/null +++ b/fistful-of-frags-config.json @@ -0,0 +1,839 @@ +[ + { + "DisplayName":"RCON Password", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"", + "Keywords":"", + "FieldName":"$RemoteAdminPassword", + "InputType":"text", + "Hidden":true, + "ParamFieldName":"rcon_password", + "EnumValues":{} + }, + { + "DisplayName":"Server Name", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the name of the server that appears in the server list", + "Keywords":"server,name,hostname", + "FieldName":"hostname", + "InputType":"text", + "ParamFieldName":"hostname", + "DefaultValue":"AMP Powered Fistful of Frags Server", + "EnumValues":{} + }, + { + "DisplayName":"Server Tags", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Comma-separated list of server tags that give additional information about the server in the server browser", + "Keywords":"tags,sv_tags", + "FieldName":"sv_tags", + "InputType":"text", + "ParamFieldName":"sv_tags", + "DefaultValue":"", + "Placeholder":"increased_maxplayers", + "EnumValues":{} + }, + { + "DisplayName":"Server Steam Group", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the ID of the steam group that the server belongs to. You can find your group's ID on the admin profile page in the steam community", + "Keywords":"steam,group,id,sv_steamgroup", + "FieldName":"sv_steamgroup", + "InputType":"text", + "ParamFieldName":"sv_steamgroup", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"LAN Server", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If enabled, the server will operate as a LAN server: no heartbeat, no authentication, and no non-class C addresses", + "Keywords":"lan,local,sv_lan", + "FieldName":"sv_lan", + "InputType":"checkbox", + "ParamFieldName":"sv_lan", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Server Password", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the password required to connect to the server. Default is no password", + "Keywords":"server,password,sv_password", + "FieldName":"sv_password", + "InputType":"password", + "ParamFieldName":"sv_password", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Initial Map", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the map to start the server with. If \"Custom\" is selected, Custom Initial Map must also be specified", + "Keywords":"map", + "FieldName":"map", + "InputType":"enum", + "ParamFieldName":"map", + "DefaultValue":"fof_fistful", + "EnumValues":{ + "cm_forest":"Course Mode: Forest", + "cm_laststand":"Course Mode: Last Stand", + "cm_mobile_cannon":"Course Mode: Mobile Cannon", + "cm_movement_tutorial":"Course Mode: Movement Tutorial", + "cm_river_challenge":"Course Mode: River Challenge", + "cm_weapon_course":"Course Mode: Weapon Course", + "fofhr_coldblood":"Break Bad: Cold Blood", + "fofhr_monumentvalley":"Break Bad: Monument Valley", + "fofhr_tramonto":"Break Bad: Tramonto", + "fof_cripplecreek":"Cripplecreek", + "fof_depot":"Depot", + "fof_desperados":"Desperados", + "fof_fistful":"Fistful (default)", + "fof_impact":"Impact", + "fof_nest":"Nest", + "fof_nest_12":"Nest (maxplayers 12)", + "fof_overtop":"Overtop", + "fof_revenge":"Revenge", + "fof_robertlee":"Robert E. Lee Steamboat", + "fof_robertlee":"Robert E. Lee Steamboat (maxplayers 12)", + "fof_sawmill":"Sawmill", + "fof_sawmill_12":"Sawmill (maxplayers 12)", + "fof_sweetwater":"Sweetwater", + "fof_sweetwater_12":"Sweetwater (maxplayers 12)", + "fof_tortuga":"Tortuga", + "fof_tortuga_12":"Tortuga (maxplayers 12)", + "fof_tramonto":"Tramonto", + "fof_tramonto_12":"Tramonto (maxplayers 12)", + "fof_winterlong":"Winterlong", + "tp_abandonded":"Teamplay: Abandonded", + "tp_assault":"Teamplay: Assault", + "tp_coastal":"Teamplay: Coastal", + "tp_eliminator":"Teamplay: Eliminator", + "tp_forest":"Teamplay: Forest", + "tp_loothill":"Teamplay: Loothill", + "tp_riobravo":"Teamplay: Rio Bravo", + "tp_snowy":"Teamplay: Snowy", + "tp_station":"Teamplay: Station", + "tp_yosemite":"Teamplay: Yosemite", + "vs_desert":"Versus: Desert", + "vs_forest":"Versus: Forest", + "vs_river":"Versus: River", + "gt_creepycreek":"Halloween: Creepy Creek", + "gt_desperados":"Halloween: Desperados", + "gt_nest":"Halloween: Nest", + "gt_overtop":"Halloween: Overtop", + "{{CustomMap}}":"--Custom--" + } + }, + { + "DisplayName":"Custom Initial Map", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets a custom map to use for the Initial Map, if \"Custom\" is selected", + "Keywords":"custom,map", + "FieldName":"CustomMap", + "InputType":"text", + "ParamFieldName":"CustomMap", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Server Region", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the server region shown in the server list", + "Keywords":"server,region,sv_region", + "FieldName":"sv_region", + "InputType":"enum", + "ParamFieldName":"sv_region", + "DefaultValue":"-1", + "EnumValues":{ + "-1":"No region", + "0":"East Coast US", + "1":"West Coast US", + "2":"South America", + "3":"Europe", + "4":"Asia", + "5":"Australia", + "6":"Middle East", + "7":"Africa", + "255":"World" + } + }, + { + "DisplayName":"Player Limit", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the maximum number of players allowed on the server at one time. By default the server does not support more than 8 players", + "Keywords":"max,players,limit,maxplayers", + "FieldName":"$MaxUsers", + "InputType":"number", + "MinValue":"1", + "MaxValue":"64", + "ParamFieldName":"sv_maxplayers", + "DefaultValue":"8", + "Placeholder":"8", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Visible Player Limit", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the maximum players reported to prospective clients, regardless of the Player Limit. -1 = disabled", + "Keywords":"visible,max,players,sv_visiblemaxplayers", + "FieldName":"sv_visiblemaxplayers", + "InputType":"number", + "MinValue":"-1", + "MaxValue":"100", + "ParamFieldName":"sv_visiblemaxplayers", + "DefaultValue":"-1", + "Placeholder":"-1", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Allow Spectators", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, spectator mode will be enabled", + "Keywords":"allow,spectators,mp_allowspectators", + "FieldName":"mp_allowspectators", + "InputType":"checkbox", + "ParamFieldName":"mp_allowspectators", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Pure Server Mode", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets whether clients are only allowed to use certain files", + "Keywords":"pure,server,cheat,hack,integrity,sv_pure", + "FieldName":"sv_pure", + "InputType":"enum", + "ParamFieldName":"sv_pure", + "DefaultValue":"-1", + "EnumValues":{ + "-1":"Do not restrict client files", + "0":"Apply rules in 'pure_server_minimal.txt' only", + "1":"Apply rules in 'pure_server_full.txt' and then 'pure_server_whitelist.txt'", + "2":"Apply rules in 'pure_server_full.txt'" + } + }, + { + "DisplayName":"Kick Clients On Pure Server", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If enabled, the server will kick clients with mismatching files. Otherwise, it will issue a warning to the clients", + "Keywords":"pure,server,cheat,hack,integrity,sv_pure_kick_clients", + "FieldName":"sv_pure_kick_clients", + "InputType":"checkbox", + "ParamFieldName":"sv_pure_kick_clients", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Force Preload", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, server side preloading will be forced", + "Keywords":"force,preload,sv_forcepreload", + "FieldName":"sv_forcepreload", + "InputType":"checkbox", + "ParamFieldName":"sv_forcepreload", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Enable Cheats", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, cheat convars will be allowed to be used on the server", + "Keywords":"allow,cheat,hack,integrity,sv_cheats", + "FieldName":"sv_cheats", + "InputType":"checkbox", + "ParamFieldName":"sv_cheats", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Disable Valve Anti-Cheat", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, Valve Anti-Cheat (VAC) will be disabled", + "Keywords":"valve,anti,cheat,vac,insecure", + "FieldName":"insecure", + "InputType":"checkbox", + "ParamFieldName":"insecure", + "DefaultValue":"", + "EnumValues":{ + "False":"", + "True":"-insecure " + } + }, + { + "DisplayName":"Enable IP Packet Filter", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, enables packet filtering by IP mode. If disabled, everyone will treated as IP-banned, but their IP won't be added to the banlist", + "Keywords":"ip,ban,banning,sv_filterban", + "FieldName":"sv_filterban", + "InputType":"checkbox", + "ParamFieldName":"sv_filterban", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Server Tickrate", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the server tickrate", + "Keywords":"tick,rate,tickrate", + "FieldName":"tickrate", + "InputType":"number", + "MinValue":"1", + "MaxValue":"128", + "ParamFieldName":"tickrate", + "DefaultValue":"64", + "Placeholder":"64", + "Suffix":"tps", + "EnumValues":{} + }, + { + "DisplayName":"Allow Download From Server", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, clients will be allowed to download content from the server (maps, sprays and related)", + "Keywords":"allow,download,content,maps,sv_allowdownload", + "FieldName":"sv_allowdownload", + "InputType":"checkbox", + "ParamFieldName":"sv_allowdownload", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Fast Download URL", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the URL for clients to download custom content from, instead of sourcing the content from the server. This allows for faster downloads", + "Keywords":"fastdl,download,url,sv_downloadurl", + "FieldName":"sv_downloadurl", + "InputType":"text", + "ParamFieldName":"sv_downloadurl", + "DefaultValue":"", + "Placeholder":"http://example.com", + "EnumValues":{} + }, + { + "DisplayName":"Allow Upload To Server", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, clients will be allowed to upload customisation files to the server", + "Keywords":"allow,upload,customisation,files,sv_allowupload", + "FieldName":"sv_allowupload", + "InputType":"checkbox", + "ParamFieldName":"sv_allowupload", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Maximum File Size", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the maximum allowed file size for uploading to the server", + "Keywords":"maximum,upload,file,size,net_maxfilesize", + "FieldName":"net_maxfilesize", + "InputType":"number", + "MinValue":"0", + "MaxValue":"64", + "ParamFieldName":"net_maxfilesize", + "DefaultValue":"16", + "Placeholder":"16", + "Suffix":"MB", + "EnumValues":{} + }, + { + "DisplayName":"Minimum Client Rate", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the minimum allowable bandwidth rate a client may have set when connected to the server. 0 = no minimum", + "Keywords":"minimum,bandwidth,rate,sv_minrate", + "FieldName":"sv_minrate", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"sv_minrate", + "DefaultValue":"3500", + "Placeholder":"3500", + "Suffix":"bytes/second", + "EnumValues":{} + }, + { + "DisplayName":"Maximum Client Rate", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the maximum allowable bandwidth rate a client may have set when connected to the server. 0 = no limit", + "Keywords":"maximum,bandwidth,rate,sv_maxrate", + "FieldName":"sv_maxrate", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"sv_maxrate", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"bytes/second", + "EnumValues":{} + }, + { + "DisplayName":"Minimum Server Update Rate", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the minimum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", + "Keywords":"minimum,update,rate,sv_minupdaterate", + "FieldName":"sv_minupdaterate", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"sv_minupdaterate", + "DefaultValue":"10", + "Placeholder":"10", + "EnumValues":{} + }, + { + "DisplayName":"Maximum Server Update Rate", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Sets the maximum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", + "Keywords":"maximum,update,rate,sv_maxupdaterate", + "FieldName":"sv_maxupdaterate", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"sv_maxupdaterate", + "DefaultValue":"66", + "Placeholder":"66", + "EnumValues":{} + }, + { + "DisplayName":"Ping Boost", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Selects between optimised network code stack. Setting at 2 usually reduces latency toward 1ms without loss of activity input packets", + "Keywords":"ping,boost,latency,network,pingboost", + "FieldName":"pingboost", + "InputType":"enum", + "ParamFieldName":"pingboost", + "DefaultValue":"", + "EnumValues":{ + "":"None", + "-pingboost 1 ":"1", + "-pingboost 2 ":"2", + "-pingboost 3 ":"3" + } + }, + { + "DisplayName":"Enable CPU Stats Collection", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If set, CPU stats will be collected", + "Keywords":"cpu,stats,sv_stats", + "FieldName":"sv_stats", + "InputType":"checkbox", + "ParamFieldName":"sv_stats", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Server/RCON IPv4 IP Binding", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"If required, you can change the IPv4 IP binding of the server and RCON by changing the 'Server IP Address' setting under Security and Privacy. NOTE: AMP requires the server to be bound to a specific IP, rather than 0.0.0.0, for the server to log to AMP's console. The IP must also be reachable by AMP", + "Keywords":"ip,binding", + "FieldName":"ip", + "InputType":"hidden", + "ParamFieldName":"ip", + "EnumValues":{} + }, + { + "DisplayName":"Additional Command Line Parameters", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Specifies additional [command line parameters](https://developer.valvesoftware.com/wiki/Command_line_options#Source_Dedicated_Server) (anything that begins with a -) that are not otherwise set by AMP. Use with care", + "Keywords":"custom,server,arguments,variables,cvars,convars,parameters", + "FieldName":"CustomParameters", + "InputType":"text", + "ParamFieldName":"CustomParameters", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Additional Console Variables", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Specifies additional [console variables] (anything that begins with a +) that are not otherwise set by AMP. Use with care. Preferably, specify the equivalent under \"Additional Server Settings\"", + "Keywords":"custom,server,arguments,variables,cvars,convars,parameters", + "FieldName":"CustomConVars", + "InputType":"text", + "ParamFieldName":"CustomConVars", + "DefaultValue":"", + "Placeholder":"+sv_gravity \"500\"", + "EnumValues":{} + }, + { + "DisplayName":"Additional Server Settings", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Server:dns:1", + "Description":"Specifies additional [settings] to include in 'server.cfg' that are not otherwise set by AMP. One setting per line", + "Keywords":"additional,settings,custom", + "FieldName":"UserSettings", + "InputType":"Textarea", + "IsFlagArgument":false, + "ParamFieldName":"UserSettings", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Enable Friendly Fire", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, friendly fire will be enabled (teammates can cause damage to other teammates)", + "Keywords":"friendly,fire,mp_friendlyfire", + "FieldName":"mp_friendlyfire", + "InputType":"checkbox", + "ParamFieldName":"mp_friendlyfire", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Enable Footsteps", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, the server will always play footstep sounds", + "Keywords":"footstep,sounds,mp_footsteps", + "FieldName":"mp_footsteps", + "InputType":"checkbox", + "ParamFieldName":"mp_footsteps", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Enable Teamplay", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If enabled, teamplay game rules will apply", + "Keywords":"team,play,teamplay,mp_teamplay", + "FieldName":"mp_teamplay", + "InputType":"checkbox", + "ParamFieldName":"mp_teamplay", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Allow Players To Pause Server", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, players will be able to pause the server. Not recommended", + "Keywords":"pause,pausable,sv_pausable", + "FieldName":"sv_pausable", + "InputType":"checkbox", + "ParamFieldName":"sv_pausable", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Allow Wait Command", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If enabled, the wait command will be allowed on clients connected to the server. Recommended to keep disabled to prevent server crash exploits", + "Keywords":"wait,command,sv_allow_wait_command", + "FieldName":"sv_allow_wait_command", + "InputType":"checkbox", + "ParamFieldName":"sv_allow_wait_command", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Enable Voice Communication", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, voice communication will be enabled on the server", + "Keywords":"voice,communication,sv_voiceenable", + "FieldName":"sv_voiceenable", + "InputType":"checkbox", + "ParamFieldName":"sv_voiceenable", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Allow All Talk", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If enabled, players can communicate with all other players, with no team restrictions", + "Keywords":"all,talk,sv_alltalk", + "FieldName":"sv_alltalk", + "InputType":"checkbox", + "ParamFieldName":"sv_alltalk", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Force Respawn", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If enabled, players will be forced to respawn after death", + "Keywords":"force,respawn,death,mp_forcerespawn", + "FieldName":"mp_forcerespawn", + "InputType":"checkbox", + "ParamFieldName":"mp_forcerespawn", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Map Rotation Time Limit", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Sets the game time per map. 0 = disabled", + "Keywords":"time,limit,rotation,mp_timelimit", + "FieldName":"mp_timelimit", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"mp_timelimit", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"seconds", + "EnumValues":{} + }, + { + "DisplayName":"Round Kill Limit", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Sets the number of kills at which the map ends. 0 = disabled", + "Keywords":"kill,frag,limit,rotation,mp_fraglimit", + "FieldName":"mp_fraglimit", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"mp_fraglimit", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"kills", + "EnumValues":{} + }, + { + "DisplayName":"Restrict Spectator Mode", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, the spectator mode for dead players will be restricted", + "Keywords":"spectator,camera,first,person,mp_forcecamera", + "FieldName":"mp_forcecamera", + "InputType":"checkbox", + "ParamFieldName":"mp_forcecamera", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Alternate Ticks", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, the server only simulates entities on even numbered ticks", + "Keywords":"alternate,ticks,sv_alternateticks", + "FieldName":"sv_alternateticks", + "InputType":"checkbox", + "ParamFieldName":"sv_alternateticks", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Disable SourceTV", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"SourceTV:tv:3", + "Description":"If set, SourceTV will be disabled on the server", + "Keywords":"sourcetv,source,nohltv", + "FieldName":"nohltv", + "InputType":"checkbox", + "ParamFieldName":"nohltv", + "DefaultValue":"-nohltv ", + "EnumValues":{ + "False":"", + "True":"-nohltv " + } + }, + { + "DisplayName":"Enable Automatic Demo Recording", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"SourceTV:tv:3", + "Description":"If set, all games will be recorded as SourceTV demos", + "Keywords":"sourcetv,tv,tv_autorecord", + "FieldName":"tv_autorecord", + "InputType":"checkbox", + "ParamFieldName":"tv_autorecord", + "DefaultValue":"0", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"SourceTV Viewer Limit", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"SourceTV:tv:3", + "Description":"Sets the maximum number of clients allowed to connect to the server's SourceTV. 0 = no SourceTV viewers are allowed, the game will only be recorded locally", + "Keywords":"max,spectators,clients,viewers,sourcetv,tv,tv_maxclients", + "FieldName":"tv_maxclients", + "InputType":"number", + "MinValue":"0", + "MaxValue":"255", + "ParamFieldName":"tv_maxclients", + "DefaultValue":"128", + "Placeholder":"128", + "Suffix":"viewers", + "EnumValues":{} + }, + { + "DisplayName":"Maximum SourceTV Bandwidth", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"SourceTV:tv:3", + "Description":"Sets the maximum SourceTV spectator bandwidth rate allowed. 0 = unlimited", + "Keywords":"maximum,bandwidth,rate,sourcetv,tv,tv_maxrate", + "FieldName":"tv_maxrate", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"tv_maxrate", + "DefaultValue":"8000", + "Placeholder":"8000", + "EnumValues":{} + }, + { + "DisplayName":"Metamod and SourceMod Management", + "Category":"Updates", + "Subcategory":"Metamod and SourceMod:build:3", + "Description":"Sets how to manage Metamod and SourceMod on the server. Branch and Build Versions must be set accordingly for installation. Update the server after changing this setting (unless \"Do nothing\" is selected)", + "Keywords":"install,metamod,sourcemod", + "FieldName":"InstallMod", + "InputType":"enum", + "ParamFieldName":"InstallMod", + "DefaultValue":"none", + "EnumValues":{ + "none":"Do nothing (default)", + "false":"Deactivate mods", + "true":"Install and activate mods" + } + }, + { + "DisplayName":"Metamod Branch", + "Category":"Updates", + "Subcategory":"Metamod and SourceMod:build:3", + "Description":"Specifies the [Metamod](https://www.sourcemm.net/downloads.php) branch to install", + "Keywords":"metamod,branch", + "FieldName":"MetamodBranch", + "InputType":"enum", + "ParamFieldName":"MetamodBranch", + "DefaultValue":"1.11", + "EnumValues":{ + "1.11":"Stable (1.11) (default)", + "1.12":"Development (1.12)" + } + }, + { + "DisplayName":"Metamod Build Version", + "Category":"Updates", + "Subcategory":"Metamod and SourceMod:build:3", + "Description":"Specifies the [Metamod build version](https://www.sourcemm.net/downloads.php) to install", + "Keywords":"metamod,build,version", + "FieldName":"MetamodBuild", + "InputType":"number", + "ParamFieldName":"MetamodBuild", + "DefaultValue":"1156", + "Placeholder":"1156", + "EnumValues":{} + }, + { + "DisplayName":"SourceMod Branch", + "Category":"Updates", + "Subcategory":"Metamod and SourceMod:build:3", + "Description":"Specifies the [SourceMod](https://www.sourcemod.net/downloads.php) branch to install", + "Keywords":"sourcemod,branch", + "FieldName":"SourceModBranch", + "InputType":"enum", + "ParamFieldName":"SourceModBranch", + "DefaultValue":"1.12", + "EnumValues":{ + "1.11":"Old stable (1.11)", + "1.12":"Stable (1.12) (default)", + "1.13":"Development (1.13)" + } + }, + { + "DisplayName":"SourceMod Build Version", + "Category":"Updates", + "Subcategory":"Metamod and SourceMod:build:3", + "Description":"Specifies the [SourceMod build version](https://www.sourcemod.net/downloads.php) to install", + "Keywords":"sourcemod,build,version", + "FieldName":"SourceModBuild", + "InputType":"number", + "ParamFieldName":"SourceModBuild", + "DefaultValue":"7169", + "Placeholder":"7169", + "EnumValues":{} + } +] diff --git a/fistful-of-frags-metaconfig.json b/fistful-of-frags-metaconfig.json new file mode 100644 index 000000000..f27a011cd --- /dev/null +++ b/fistful-of-frags-metaconfig.json @@ -0,0 +1,8 @@ +[ + { + "ConfigFile":"fof/cfg/server.cfg", + "AutoMap":true, + "ConfigType":"template", + "ConfigFileTemplate":"srcds/AMP_server.cfg" + } +] diff --git a/fistful-of-frags-ports.json b/fistful-of-frags-ports.json new file mode 100644 index 000000000..ed33eac29 --- /dev/null +++ b/fistful-of-frags-ports.json @@ -0,0 +1,23 @@ +[ + { + "Protocol": "Both", + "Port": 27015, + "Ref": "ServerPort", + "Name": "Game and RCON Port", + "Description": "Port for game and RCON traffic" + }, + { + "Protocol": "UDP", + "Port": 27020, + "Ref": "SourceTVPort", + "Name": "SourceTV Port", + "Description": "Port for SourceTV traffic" + }, + { + "Protocol": "UDP", + "Port": 27005, + "Ref": "ClientPort", + "Name": "Client Port", + "Description": "Port for client traffic" + } +] diff --git a/fistful-of-frags-start.json b/fistful-of-frags-start.json new file mode 100644 index 000000000..0f9a379cc --- /dev/null +++ b/fistful-of-frags-start.json @@ -0,0 +1,30 @@ +[ + { + "UpdateStageName":"Activate Metamod and SourceMod", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateFile", + "UpdateSourceData":"\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", + "UpdateSourceArgs":"{{$FullBaseDir}}fof/addons/metamod.vdf", + "OverwriteExistingFiles":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"Disable Metamod and SourceMod", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"Executable", + "UpdateSourceData":"cmd.exe", + "UpdateSourceArgs":"/C cd srcds\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"false" + }, + { + "UpdateStageName":"Disable Metamod and SourceMod", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c \"cd srcds/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"false" + } +] diff --git a/fistful-of-frags-updates.json b/fistful-of-frags-updates.json new file mode 100644 index 000000000..949b79d15 --- /dev/null +++ b/fistful-of-frags-updates.json @@ -0,0 +1,122 @@ +[ + { + "UpdateStageName":"SteamCMD Server Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"SteamCMD", + "UpdateSourceData":"295230", + "UpdateSourceArgs":"265630" + }, + { + "UpdateStageName":"Server.cfg Template File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/fistful-of-frags-server.cfg", + "UpdateSourceArgs":"AMP_server.cfg", + "UpdateSourceTarget":"{{$FullRootDir}}", + "OverwriteExistingFiles":true + }, + { + "UpdateStageName":"Metamod Download", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-windows.zip", + "UpdateSourceTarget":"{{$FullBaseDir}}srcds", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"Metamod Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-linux.tar.gz", + "UpdateSourceTarget":"{{$FullBaseDir}}srcds", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"SourceMod Download Directory Creation", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateDirectory", + "UpdateSourceArgs":"{{$FullBaseDir}}sm", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"SourceMod Download", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-windows.zip", + "UpdateSourceTarget":"{{$FullBaseDir}}sm", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"SourceMod Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-linux.tar.gz", + "UpdateSourceTarget":"{{$FullBaseDir}}sm", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"SourceMod Installation", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"Executable", + "UpdateSourceData":"powershell.exe", + "UpdateSourceArgs":"-NoProfile -Command \"Set-Location -Path 'srcds/295230'; if (Test-Path 'fof/cfg/sourcemod') { Remove-Item -Path 'sm/cfg/sourcemod' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/configs') { Remove-Item -Path 'sm/addons/sourcemod/configs' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/plugins') { Remove-Item -Path 'sm/addons/sourcemod/plugins' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; Copy-Item -Path 'sm/*' -Destination 'fof' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null; Remove-Item -Path 'sm' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null\"", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true", + "SkipOnFailure":true + }, + { + "UpdateStageName":"SourceMod Installation", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c \"cd srcds/295230 && [ -d fof/cfg/sourcemod ] && rm -rf sm/cfg/sourcemod >/dev/null 2>&1; [ -d fof/addons/sourcemod/configs ] && rm -rf sm/addons/sourcemod/configs >/dev/null 2>&1; [ -d fof/addons/sourcemod/plugins ] && rm -rf sm/addons/sourcemod/plugins >/dev/null 2>&1; \\cp -rf sm/* fof/ >/dev/null 2>&1; rm -rf sm >/dev/null 2>&1\"", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true", + "SkipOnFailure":true + }, + { + "UpdateStageName":"Activate Metamod and SourceMod", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateFile", + "UpdateSourceData":"\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", + "UpdateSourceArgs":"{{$FullBaseDir}}fof/addons/metamod.vdf", + "OverwriteExistingFiles":true, + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"true" + }, + { + "UpdateStageName":"Disable Metamod and SourceMod", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"Executable", + "UpdateSourceData":"cmd.exe", + "UpdateSourceArgs":"/C cd srcds\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"false" + }, + { + "UpdateStageName":"Disable Metamod and SourceMod", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c \"cd srcds/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceConditionSetting":"InstallMod", + "UpdateSourceConditionValue":"false" + } +] diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp new file mode 100644 index 000000000..1dc7ead4e --- /dev/null +++ b/fistful-of-frags.kvp @@ -0,0 +1,102 @@ +Meta.DisplayName=Fistful of Frags +Meta.Description=Fistful of Frags Dedicated Server +Meta.OS=Windows, Linux +Meta.AarchSupport=NotSupported +Meta.Arch=x86_64 +Meta.Author=Greelan & richlen99 +Meta.URL=https://fistful-of-frags.com/ +Meta.DisplayImageSource=steam:295230 +Meta.EndpointURIFormat=steam://connect/{0} +Meta.ConfigManifest=fistful-of-frags-config.json +Meta.MetaConfigManifest=fistful-of-frags-metaconfig.json +Meta.ConfigRoot=fistful-of-frags.kvp +Meta.MinAMPVersion=2.6.0.4 +Meta.SpecificDockerImage= +Meta.DockerRequired=False +Meta.DockerBaseReadOnly=False +Meta.ContainerPolicy=Supported +Meta.ContainerPolicyReason= +Meta.ExtraSetupStepsURI= +Meta.Prerequisites=[] +Meta.ExtraContainerPackages=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +Meta.AppConfigId= +Meta.ConfigVersion=1.0 +Meta.ReleaseNotes= +Meta.BreakingReleaseNotes= +App.DisplayName=Fistful of Frags +App.RootDir=./srcds/ +App.BaseDirectory=./srcds/295230/ +App.SteamWorkshopDownloadLocation= +App.ExecutableWin=295230\srcds.exe +App.ExecutableLinux=295230/srcds_linux +App.WorkingDir=295230 +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} -game fof -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}:{{$FullBaseDir}}bin:%LD_LIBRARY_PATH%","SteamAppId":"295230"} +App.CommandLineParameterFormat=+{0} {1} +App.CommandLineParameterDelimiter= +App.ExitMethod=String +App.ExitTimeout=30 +App.ExitString=quit +App.ExitFile=lock +App.HasWriteableConsole=True +App.HasReadableConsole=True +App.UDPLogger=True +App.SupportsLiveSettingsChanges=False +App.LiveSettingChangeCommandFormat=set {0} "{1}" +App.ForceIPBinding=True +App.SupportsIPv6=False +App.ApplicationIPBinding=0.0.0.0 +App.Ports=@IncludeJson[fistful-of-frags-ports.json] +App.AdminPortRef=ServerPort +App.PrimaryApplicationPortRef=ServerPort +App.UniversalSleepApplicationUDPPortRef=0 +App.UniversalSleepSteamQueryPortRef=0 +App.MaxUsers=8 +App.UseRandomAdminPassword=True +App.PersistRandomPassword=True +App.RemoteAdminPassword= +App.AdminMethod=SourceRCON +App.AdminLoginTransform=None +App.LoginTransformPrefix= +App.RCONConnectDelaySeconds=5 +App.RCONConnectRetrySeconds=5 +App.RCONHeartbeatMinutes=0 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=@IncludeJson[fistful-of-frags-updates.json] +App.PreStartStages=@IncludeJson[fistful-of-frags-updates.json] +App.ForceUpdate=False +App.ForceUpdateReason= +App.Compatibility=None +App.SteamUpdateAnonymousLogin=True +App.SteamForceLoginPrompt=False +App.RapidStartup=False +App.DumpFullChildProcessTree=False +App.MonitorChildProcessName= +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RCONConnected +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$ +Console.AppReadyRegex=^$ +Console.UserJoinRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><(BOT|(?(?!BOT).+?))><>" entered the game$ +Console.UserLeaveRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><(BOT|(?(?!BOT).+?))><.*>" disconnected \(reason ".*"\)$ +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=2 +Limits.SleepStartThresholdSeconds=25 From 5290ad643443f1fe0981f05cc55ad974206dc870 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 10:08:49 -0600 Subject: [PATCH 02/15] Update fistful-of-frags.kvp crediting --- fistful-of-frags.kvp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp index 1dc7ead4e..3642a5339 100644 --- a/fistful-of-frags.kvp +++ b/fistful-of-frags.kvp @@ -3,7 +3,7 @@ Meta.Description=Fistful of Frags Dedicated Server Meta.OS=Windows, Linux Meta.AarchSupport=NotSupported Meta.Arch=x86_64 -Meta.Author=Greelan & richlen99 +Meta.Author=Greelan & connorrichlen (richlen99) Meta.URL=https://fistful-of-frags.com/ Meta.DisplayImageSource=steam:295230 Meta.EndpointURIFormat=steam://connect/{0} From 1c6e175291c1139db6150e97ccdb56c58d95e161 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 10:14:38 -0600 Subject: [PATCH 03/15] Add files via upload --- fistful-of-frags-server.cfg | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 fistful-of-frags-server.cfg diff --git a/fistful-of-frags-server.cfg b/fistful-of-frags-server.cfg new file mode 100644 index 000000000..15219427d --- /dev/null +++ b/fistful-of-frags-server.cfg @@ -0,0 +1,55 @@ +// This file is controlled by AMP +// Configure any additional required settings via the AMP UI + +{{UserSettings}} +hostname "{{hostname}}" +sv_tags "{{sv_tags}}" +sv_steamgroup {{sv_steamgroup}} +sv_lan {{sv_lan}} +sv_password "{{sv_password}}" +rcon_password "{{rcon_password}}" +sv_region {{sv_region}} +sv_visiblemaxplayers {{sv_visiblemaxplayers}} +mp_allowspectators {{mp_allowspectators}} +sv_pure {{sv_pure}} +sv_pure_kick_clients {{sv_pure_kick_clients}} +sv_forcepreload {{sv_forcepreload}} +sv_cheats {{sv_cheats}} +sv_filterban {{sv_filterban}} +sv_allowdownload {{sv_allowdownload}} +sv_downloadurl "{{sv_downloadurl}}" +sv_allowupload {{sv_allowupload}} +net_maxfilesize {{net_maxfilesize}} +sv_minrate {{sv_minrate}} +sv_maxrate {{sv_maxrate}} +sv_minupdaterate {{sv_minupdaterate}} +sv_maxupdaterate {{sv_maxupdaterate}} +sv_stats {{sv_stats}} +mp_friendlyfire {{mp_friendlyfire}} +mp_footsteps {{mp_footsteps}} +mp_teamplay {{mp_teamplay}} +sv_pausable {{sv_pausable}} +sv_allow_wait_command {{sv_allow_wait_command}} +sv_voiceenable {{sv_voiceenable}} +sv_alltalk {{sv_alltalk}} +mp_forcerespawn {{mp_forcerespawn}} +mp_timelimit {{mp_timelimit}} +mp_fraglimit {{mp_fraglimit}} +mp_forcecamera {{mp_forcecamera}} +fof_sv_currentmode {{fof_sv_currentmode}} +fof_sv_maxteams {{fof_sv_maxteams}} +fof_sv_bot_dynamicjoin {{fof_sv_bot_dynamicjoin}} +fof_sv_bot_slotpct {{fof_sv_bot_slotpct}} +fof_sv_motd_countdown {{fof_sv_motd_countdown}} +fof_sv_maxidle_secs {{fof_sv_maxidle_secs}} +fof_sv_obj_warmuptime {{fof_sv_obj_warmuptime}} +fof_sv_dm_comp {{fof_sv_dm_comp}} +fof_sv_dm_comp_points {{fof_sv_dm_comp_points}} +fof_sv_shootout_custom {{fof_sv_shootout_custom}} +fof_bot_skill {{fof_bot_skill}} +sv_alternateticks {{sv_alternateticks}} +tv_autorecord {{tv_autorecord}} +tv_maxclients {{tv_maxclients}} +tv_maxrate {{tv_maxrate}} +exec banned_ip.cfg +exec banned_user.cfg From 67e0cdfaaafceec5a18bf40580b35101759fd651 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:06:32 -0600 Subject: [PATCH 04/15] Update fistful-of-frags-start.json --- fistful-of-frags-start.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fistful-of-frags-start.json b/fistful-of-frags-start.json index 0f9a379cc..cb062abea 100644 --- a/fistful-of-frags-start.json +++ b/fistful-of-frags-start.json @@ -14,7 +14,7 @@ "UpdateSourcePlatform":"Windows", "UpdateSource":"Executable", "UpdateSourceData":"cmd.exe", - "UpdateSourceArgs":"/C cd srcds\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceArgs":"/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"false" }, @@ -23,7 +23,7 @@ "UpdateSourcePlatform":"Linux", "UpdateSource":"Executable", "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd srcds/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceArgs":"-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"false" } From 84efbd2d5679710c183f19b915f55bdf6b148222 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:07:33 -0600 Subject: [PATCH 05/15] Update fistful-of-frags-updates.json --- fistful-of-frags-updates.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fistful-of-frags-updates.json b/fistful-of-frags-updates.json index 949b79d15..a9792c00a 100644 --- a/fistful-of-frags-updates.json +++ b/fistful-of-frags-updates.json @@ -20,7 +20,7 @@ "UpdateSourcePlatform":"Windows", "UpdateSource":"FetchURL", "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-windows.zip", - "UpdateSourceTarget":"{{$FullBaseDir}}srcds", + "UpdateSourceTarget":"{{$FullBaseDir}}fof", "UnzipUpdateSource":true, "OverwriteExistingFiles":true, "DeleteAfterExtract":true, @@ -32,7 +32,7 @@ "UpdateSourcePlatform":"Linux", "UpdateSource":"FetchURL", "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-linux.tar.gz", - "UpdateSourceTarget":"{{$FullBaseDir}}srcds", + "UpdateSourceTarget":"{{$FullBaseDir}}fof", "UnzipUpdateSource":true, "OverwriteExistingFiles":true, "DeleteAfterExtract":true, @@ -76,7 +76,7 @@ "UpdateSourcePlatform":"Windows", "UpdateSource":"Executable", "UpdateSourceData":"powershell.exe", - "UpdateSourceArgs":"-NoProfile -Command \"Set-Location -Path 'srcds/295230'; if (Test-Path 'fof/cfg/sourcemod') { Remove-Item -Path 'sm/cfg/sourcemod' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/configs') { Remove-Item -Path 'sm/addons/sourcemod/configs' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/plugins') { Remove-Item -Path 'sm/addons/sourcemod/plugins' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; Copy-Item -Path 'sm/*' -Destination 'fof' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null; Remove-Item -Path 'sm' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null\"", + "UpdateSourceArgs":"-NoProfile -Command \"Set-Location -Path 'fof/295230'; if (Test-Path 'fof/cfg/sourcemod') { Remove-Item -Path 'sm/cfg/sourcemod' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/configs') { Remove-Item -Path 'sm/addons/sourcemod/configs' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/plugins') { Remove-Item -Path 'sm/addons/sourcemod/plugins' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; Copy-Item -Path 'sm/*' -Destination 'fof' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null; Remove-Item -Path 'sm' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null\"", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"true", "SkipOnFailure":true @@ -86,7 +86,7 @@ "UpdateSourcePlatform":"Linux", "UpdateSource":"Executable", "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd srcds/295230 && [ -d fof/cfg/sourcemod ] && rm -rf sm/cfg/sourcemod >/dev/null 2>&1; [ -d fof/addons/sourcemod/configs ] && rm -rf sm/addons/sourcemod/configs >/dev/null 2>&1; [ -d fof/addons/sourcemod/plugins ] && rm -rf sm/addons/sourcemod/plugins >/dev/null 2>&1; \\cp -rf sm/* fof/ >/dev/null 2>&1; rm -rf sm >/dev/null 2>&1\"", + "UpdateSourceArgs":"-c \"cd fof/295230 && [ -d fof/cfg/sourcemod ] && rm -rf sm/cfg/sourcemod >/dev/null 2>&1; [ -d fof/addons/sourcemod/configs ] && rm -rf sm/addons/sourcemod/configs >/dev/null 2>&1; [ -d fof/addons/sourcemod/plugins ] && rm -rf sm/addons/sourcemod/plugins >/dev/null 2>&1; \\cp -rf sm/* fof/ >/dev/null 2>&1; rm -rf sm >/dev/null 2>&1\"", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"true", "SkipOnFailure":true @@ -106,7 +106,7 @@ "UpdateSourcePlatform":"Windows", "UpdateSource":"Executable", "UpdateSourceData":"cmd.exe", - "UpdateSourceArgs":"/C cd srcds\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceArgs":"/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"false" }, @@ -115,7 +115,7 @@ "UpdateSourcePlatform":"Linux", "UpdateSource":"Executable", "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd srcds/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceArgs":"-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", "UpdateSourceConditionSetting":"InstallMod", "UpdateSourceConditionValue":"false" } From 559c937cbc1e615e4b1502413ad71416a67ea9cf Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:08:06 -0600 Subject: [PATCH 06/15] Update fistful-of-frags.kvp --- fistful-of-frags.kvp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp index 3642a5339..193c0ced1 100644 --- a/fistful-of-frags.kvp +++ b/fistful-of-frags.kvp @@ -26,8 +26,8 @@ Meta.ConfigVersion=1.0 Meta.ReleaseNotes= Meta.BreakingReleaseNotes= App.DisplayName=Fistful of Frags -App.RootDir=./srcds/ -App.BaseDirectory=./srcds/295230/ +App.RootDir=./fof/ +App.BaseDirectory=./fof/295230/ App.SteamWorkshopDownloadLocation= App.ExecutableWin=295230\srcds.exe App.ExecutableLinux=295230/srcds_linux From 662d225fe41db1d0bd90ae1dc341e6bb2906cb6b Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:08:32 -0600 Subject: [PATCH 07/15] Update fistful-of-frags-metaconfig.json --- fistful-of-frags-metaconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fistful-of-frags-metaconfig.json b/fistful-of-frags-metaconfig.json index f27a011cd..5bdefc1fb 100644 --- a/fistful-of-frags-metaconfig.json +++ b/fistful-of-frags-metaconfig.json @@ -3,6 +3,6 @@ "ConfigFile":"fof/cfg/server.cfg", "AutoMap":true, "ConfigType":"template", - "ConfigFileTemplate":"srcds/AMP_server.cfg" + "ConfigFileTemplate":"fof/AMP_server.cfg" } ] From 7a48820040541b30648caec29cba80a20f55dc71 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:33:56 -0600 Subject: [PATCH 08/15] Update fistful-of-frags-config.json --- fistful-of-frags-config.json | 159 +++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/fistful-of-frags-config.json b/fistful-of-frags-config.json index 33e35c461..ac1e638c7 100644 --- a/fistful-of-frags-config.json +++ b/fistful-of-frags-config.json @@ -688,6 +688,165 @@ "True":"1" } }, + { + "DisplayName":"Game Mode", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Set the gamemode for this server", + "Keywords":"currentmode,gamemode,fof_sv_currentmode", + "FieldName":"fof_sv_currentmode", + "InputType":"enum", + "ParamFieldName":"fof_sv_currentmode", + "DefaultValue":"1", + "EnumValues":{ + "1":"Shootout", + "2":"Teamplay/Objectives", + "3":"Break Bad", + "4":"Elimination", + "5":"Versus", + "6":"Co-op" + } + }, + { + "DisplayName":"Max Teams", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Set the maximum amount of teams for this server", + "Keywords":"maxteams,teams,fof_sv_maxteams", + "FieldName":"fof_sv_maxteams", + "InputType":"enum", + "ParamFieldName":"fof_sv_maxteams", + "DefaultValue":"2", + "EnumValues":{ + "2":"2", + "3":"3", + "4":"4" + } + }, + { + "DisplayName":"Bots: Dynamic Join", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"If set, the server will have bots join or leave automatically to fill slots", + "Keywords":"bots,dynamic,fof_sv_bot_dynamicjoin", + "FieldName":"fof_sv_bot_dynamicjoin", + "InputType":"checkbox", + "ParamFieldName":"fof_sv_bot_dynamicjoin", + "DefaultValue":"1", + "EnumValues":{ + "False":"0", + "True":"1" + } + }, + { + "DisplayName":"Bots: Slot Fill Percentage", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Slots percentage filled by bots", + "Keywords":"bots,slot,fof_sv_bot_slotpct", + "FieldName":"fof_sv_bot_slotpct", + "InputType":"enum", + "ParamFieldName":"fof_sv_bot_slotpct", + "DefaultValue":"0.2", + "EnumValues":{ + "0":"0%", + "0.2":"20%", + "0.4":"40%", + "0.6":"60%", + "0.8":"80%", + "1":"100%" + } + }, + { + "DisplayName":"Bots: Skill Level", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Set skill level of bots", + "Keywords":"bots,skill,fof_bot_skill", + "FieldName":"fof_bot_skill", + "InputType":"enum", + "ParamFieldName":"fof_bot_skill", + "DefaultValue":"5", + "EnumValues":{ + "0":"Easy", + "1":"Medium", + "2":"Hard", + "3":"Expert", + "4":"Veteran", + "5":"Randomized" + } + }, + { + "DisplayName":"MOTD Countdown", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"How many seconds last the MOTD screen before it can be closed by clients", + "Keywords":"motd,fof_sv_motd_countdown", + "FieldName":"fof_sv_motd_countdown", + "InputType":"number", + "MinValue":"0", + "MaxValue":"20", + "ParamFieldName":"fof_sv_motd_countdown", + "DefaultValue":"5", + "Placeholder":"5" + }, + { + "DisplayName":"AFK to Spectator Timer", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"How long in seconds players can be inactive before they are sent to spectator", + "Keywords":"afk,idle,spectator,fof_sv_maxidle_secs", + "FieldName":"fof_sv_maxidle_secs", + "InputType":"number", + "MinValue":"15", + "MaxValue":"120", + "ParamFieldName":"fof_sv_maxidle_secs", + "DefaultValue":"45", + "Placeholder":"45" + }, + { + "DisplayName":"Warmup Timer", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Warm-up duration", + "Keywords":"warmup,fof_sv_obj_warmuptime", + "FieldName":"fof_sv_obj_warmuptime", + "InputType":"number", + "MinValue":"0", + "MaxValue":"60", + "ParamFieldName":"fof_sv_obj_warmuptime", + "DefaultValue":"30", + "Placeholder":"30" + }, + { + "DisplayName":"Competitive: Enable/Disable", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"Match ends when a players reaches an specified amount of notoriety points", + "Keywords":"competitive,notoriety,fof_sv_dm_comp", + "FieldName":"fof_sv_dm_comp", + "InputType":"checkbox", + "ParamFieldName":"fof_sv_dm_comp", + "DefaultValue":"0", + "EnumValues":{ + "True":"1", + "False":"0" + } + }, + { + "DisplayName":"Competitive: Notoriety Points to Win", + "Category":"Fistful of Frags:stadia_controller", + "Subcategory":"Gameplay:joystick:2", + "Description":"How much notoriety a player must have to win", + "Keywords":"competitive,notoriety,fof_sv_dm_comp_points", + "FieldName":"fof_sv_dm_comp_points", + "InputType":"number", + "MinValue":"100", + "MaxValue":"2000", + "ParamFieldName":"fof_sv_dm_comp_points", + "DefaultValue":"1000", + "Placeholder":"1000" + }, { "DisplayName":"Alternate Ticks", "Category":"Fistful of Frags:stadia_controller", From c0ee3b18bb81fe2e00fbd87e37c0353da445906a Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Mon, 2 Dec 2024 22:40:13 -0600 Subject: [PATCH 09/15] Update fistful-of-frags.kvp --- fistful-of-frags.kvp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp index 193c0ced1..ef9d795b6 100644 --- a/fistful-of-frags.kvp +++ b/fistful-of-frags.kvp @@ -1,4 +1,4 @@ -Meta.DisplayName=Fistful of Frags +Meta.DisplayName=Fistful of Frags [Experimental] Meta.Description=Fistful of Frags Dedicated Server Meta.OS=Windows, Linux Meta.AarchSupport=NotSupported From c095bea63376753c866c24e0e79e179865cdaa13 Mon Sep 17 00:00:00 2001 From: Connor Richlen Date: Fri, 6 Dec 2024 06:44:19 -0600 Subject: [PATCH 10/15] Update fistful-of-frags.kvp Remove experimental --- fistful-of-frags.kvp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp index ef9d795b6..193c0ced1 100644 --- a/fistful-of-frags.kvp +++ b/fistful-of-frags.kvp @@ -1,4 +1,4 @@ -Meta.DisplayName=Fistful of Frags [Experimental] +Meta.DisplayName=Fistful of Frags Meta.Description=Fistful of Frags Dedicated Server Meta.OS=Windows, Linux Meta.AarchSupport=NotSupported From 5ec277f97ab892a0d3b6fc1ee66874831743b01c Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Sat, 7 Dec 2024 19:06:54 +1100 Subject: [PATCH 11/15] Updates --- fistful-of-frags-config.json | 998 -------------- fistful-of-frags-metaconfig.json | 8 - fistful-of-frags-start.json | 30 - fistful-of-frags-updates.json | 122 -- fistful-of-frags.kvp | 22 +- fistful-of-fragsconfig.json | 1180 +++++++++++++++++ fistful-of-fragsmetaconfig.json | 8 + ...s-ports.json => fistful-of-fragsports.json | 2 +- ...s-server.cfg => fistful-of-fragsserver.cfg | 18 +- fistful-of-fragsstart.json | 30 + fistful-of-fragsupdates.json | 122 ++ 11 files changed, 1367 insertions(+), 1173 deletions(-) delete mode 100644 fistful-of-frags-config.json delete mode 100644 fistful-of-frags-metaconfig.json delete mode 100644 fistful-of-frags-start.json delete mode 100644 fistful-of-frags-updates.json create mode 100644 fistful-of-fragsconfig.json create mode 100644 fistful-of-fragsmetaconfig.json rename fistful-of-frags-ports.json => fistful-of-fragsports.json (99%) rename fistful-of-frags-server.cfg => fistful-of-fragsserver.cfg (82%) create mode 100644 fistful-of-fragsstart.json create mode 100644 fistful-of-fragsupdates.json diff --git a/fistful-of-frags-config.json b/fistful-of-frags-config.json deleted file mode 100644 index ac1e638c7..000000000 --- a/fistful-of-frags-config.json +++ /dev/null @@ -1,998 +0,0 @@ -[ - { - "DisplayName":"RCON Password", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"", - "Keywords":"", - "FieldName":"$RemoteAdminPassword", - "InputType":"text", - "Hidden":true, - "ParamFieldName":"rcon_password", - "EnumValues":{} - }, - { - "DisplayName":"Server Name", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the name of the server that appears in the server list", - "Keywords":"server,name,hostname", - "FieldName":"hostname", - "InputType":"text", - "ParamFieldName":"hostname", - "DefaultValue":"AMP Powered Fistful of Frags Server", - "EnumValues":{} - }, - { - "DisplayName":"Server Tags", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Comma-separated list of server tags that give additional information about the server in the server browser", - "Keywords":"tags,sv_tags", - "FieldName":"sv_tags", - "InputType":"text", - "ParamFieldName":"sv_tags", - "DefaultValue":"", - "Placeholder":"increased_maxplayers", - "EnumValues":{} - }, - { - "DisplayName":"Server Steam Group", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the ID of the steam group that the server belongs to. You can find your group's ID on the admin profile page in the steam community", - "Keywords":"steam,group,id,sv_steamgroup", - "FieldName":"sv_steamgroup", - "InputType":"text", - "ParamFieldName":"sv_steamgroup", - "DefaultValue":"", - "EnumValues":{} - }, - { - "DisplayName":"LAN Server", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If enabled, the server will operate as a LAN server: no heartbeat, no authentication, and no non-class C addresses", - "Keywords":"lan,local,sv_lan", - "FieldName":"sv_lan", - "InputType":"checkbox", - "ParamFieldName":"sv_lan", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Server Password", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the password required to connect to the server. Default is no password", - "Keywords":"server,password,sv_password", - "FieldName":"sv_password", - "InputType":"password", - "ParamFieldName":"sv_password", - "DefaultValue":"", - "EnumValues":{} - }, - { - "DisplayName":"Initial Map", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the map to start the server with. If \"Custom\" is selected, Custom Initial Map must also be specified", - "Keywords":"map", - "FieldName":"map", - "InputType":"enum", - "ParamFieldName":"map", - "DefaultValue":"fof_fistful", - "EnumValues":{ - "cm_forest":"Course Mode: Forest", - "cm_laststand":"Course Mode: Last Stand", - "cm_mobile_cannon":"Course Mode: Mobile Cannon", - "cm_movement_tutorial":"Course Mode: Movement Tutorial", - "cm_river_challenge":"Course Mode: River Challenge", - "cm_weapon_course":"Course Mode: Weapon Course", - "fofhr_coldblood":"Break Bad: Cold Blood", - "fofhr_monumentvalley":"Break Bad: Monument Valley", - "fofhr_tramonto":"Break Bad: Tramonto", - "fof_cripplecreek":"Cripplecreek", - "fof_depot":"Depot", - "fof_desperados":"Desperados", - "fof_fistful":"Fistful (default)", - "fof_impact":"Impact", - "fof_nest":"Nest", - "fof_nest_12":"Nest (maxplayers 12)", - "fof_overtop":"Overtop", - "fof_revenge":"Revenge", - "fof_robertlee":"Robert E. Lee Steamboat", - "fof_robertlee":"Robert E. Lee Steamboat (maxplayers 12)", - "fof_sawmill":"Sawmill", - "fof_sawmill_12":"Sawmill (maxplayers 12)", - "fof_sweetwater":"Sweetwater", - "fof_sweetwater_12":"Sweetwater (maxplayers 12)", - "fof_tortuga":"Tortuga", - "fof_tortuga_12":"Tortuga (maxplayers 12)", - "fof_tramonto":"Tramonto", - "fof_tramonto_12":"Tramonto (maxplayers 12)", - "fof_winterlong":"Winterlong", - "tp_abandonded":"Teamplay: Abandonded", - "tp_assault":"Teamplay: Assault", - "tp_coastal":"Teamplay: Coastal", - "tp_eliminator":"Teamplay: Eliminator", - "tp_forest":"Teamplay: Forest", - "tp_loothill":"Teamplay: Loothill", - "tp_riobravo":"Teamplay: Rio Bravo", - "tp_snowy":"Teamplay: Snowy", - "tp_station":"Teamplay: Station", - "tp_yosemite":"Teamplay: Yosemite", - "vs_desert":"Versus: Desert", - "vs_forest":"Versus: Forest", - "vs_river":"Versus: River", - "gt_creepycreek":"Halloween: Creepy Creek", - "gt_desperados":"Halloween: Desperados", - "gt_nest":"Halloween: Nest", - "gt_overtop":"Halloween: Overtop", - "{{CustomMap}}":"--Custom--" - } - }, - { - "DisplayName":"Custom Initial Map", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets a custom map to use for the Initial Map, if \"Custom\" is selected", - "Keywords":"custom,map", - "FieldName":"CustomMap", - "InputType":"text", - "ParamFieldName":"CustomMap", - "DefaultValue":"", - "EnumValues":{} - }, - { - "DisplayName":"Server Region", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the server region shown in the server list", - "Keywords":"server,region,sv_region", - "FieldName":"sv_region", - "InputType":"enum", - "ParamFieldName":"sv_region", - "DefaultValue":"-1", - "EnumValues":{ - "-1":"No region", - "0":"East Coast US", - "1":"West Coast US", - "2":"South America", - "3":"Europe", - "4":"Asia", - "5":"Australia", - "6":"Middle East", - "7":"Africa", - "255":"World" - } - }, - { - "DisplayName":"Player Limit", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the maximum number of players allowed on the server at one time. By default the server does not support more than 8 players", - "Keywords":"max,players,limit,maxplayers", - "FieldName":"$MaxUsers", - "InputType":"number", - "MinValue":"1", - "MaxValue":"64", - "ParamFieldName":"sv_maxplayers", - "DefaultValue":"8", - "Placeholder":"8", - "Suffix":"players", - "EnumValues":{} - }, - { - "DisplayName":"Visible Player Limit", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the maximum players reported to prospective clients, regardless of the Player Limit. -1 = disabled", - "Keywords":"visible,max,players,sv_visiblemaxplayers", - "FieldName":"sv_visiblemaxplayers", - "InputType":"number", - "MinValue":"-1", - "MaxValue":"100", - "ParamFieldName":"sv_visiblemaxplayers", - "DefaultValue":"-1", - "Placeholder":"-1", - "Suffix":"players", - "EnumValues":{} - }, - { - "DisplayName":"Allow Spectators", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, spectator mode will be enabled", - "Keywords":"allow,spectators,mp_allowspectators", - "FieldName":"mp_allowspectators", - "InputType":"checkbox", - "ParamFieldName":"mp_allowspectators", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Pure Server Mode", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets whether clients are only allowed to use certain files", - "Keywords":"pure,server,cheat,hack,integrity,sv_pure", - "FieldName":"sv_pure", - "InputType":"enum", - "ParamFieldName":"sv_pure", - "DefaultValue":"-1", - "EnumValues":{ - "-1":"Do not restrict client files", - "0":"Apply rules in 'pure_server_minimal.txt' only", - "1":"Apply rules in 'pure_server_full.txt' and then 'pure_server_whitelist.txt'", - "2":"Apply rules in 'pure_server_full.txt'" - } - }, - { - "DisplayName":"Kick Clients On Pure Server", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If enabled, the server will kick clients with mismatching files. Otherwise, it will issue a warning to the clients", - "Keywords":"pure,server,cheat,hack,integrity,sv_pure_kick_clients", - "FieldName":"sv_pure_kick_clients", - "InputType":"checkbox", - "ParamFieldName":"sv_pure_kick_clients", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Force Preload", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, server side preloading will be forced", - "Keywords":"force,preload,sv_forcepreload", - "FieldName":"sv_forcepreload", - "InputType":"checkbox", - "ParamFieldName":"sv_forcepreload", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Enable Cheats", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, cheat convars will be allowed to be used on the server", - "Keywords":"allow,cheat,hack,integrity,sv_cheats", - "FieldName":"sv_cheats", - "InputType":"checkbox", - "ParamFieldName":"sv_cheats", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Disable Valve Anti-Cheat", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, Valve Anti-Cheat (VAC) will be disabled", - "Keywords":"valve,anti,cheat,vac,insecure", - "FieldName":"insecure", - "InputType":"checkbox", - "ParamFieldName":"insecure", - "DefaultValue":"", - "EnumValues":{ - "False":"", - "True":"-insecure " - } - }, - { - "DisplayName":"Enable IP Packet Filter", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, enables packet filtering by IP mode. If disabled, everyone will treated as IP-banned, but their IP won't be added to the banlist", - "Keywords":"ip,ban,banning,sv_filterban", - "FieldName":"sv_filterban", - "InputType":"checkbox", - "ParamFieldName":"sv_filterban", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Server Tickrate", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the server tickrate", - "Keywords":"tick,rate,tickrate", - "FieldName":"tickrate", - "InputType":"number", - "MinValue":"1", - "MaxValue":"128", - "ParamFieldName":"tickrate", - "DefaultValue":"64", - "Placeholder":"64", - "Suffix":"tps", - "EnumValues":{} - }, - { - "DisplayName":"Allow Download From Server", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, clients will be allowed to download content from the server (maps, sprays and related)", - "Keywords":"allow,download,content,maps,sv_allowdownload", - "FieldName":"sv_allowdownload", - "InputType":"checkbox", - "ParamFieldName":"sv_allowdownload", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Fast Download URL", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the URL for clients to download custom content from, instead of sourcing the content from the server. This allows for faster downloads", - "Keywords":"fastdl,download,url,sv_downloadurl", - "FieldName":"sv_downloadurl", - "InputType":"text", - "ParamFieldName":"sv_downloadurl", - "DefaultValue":"", - "Placeholder":"http://example.com", - "EnumValues":{} - }, - { - "DisplayName":"Allow Upload To Server", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, clients will be allowed to upload customisation files to the server", - "Keywords":"allow,upload,customisation,files,sv_allowupload", - "FieldName":"sv_allowupload", - "InputType":"checkbox", - "ParamFieldName":"sv_allowupload", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Maximum File Size", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the maximum allowed file size for uploading to the server", - "Keywords":"maximum,upload,file,size,net_maxfilesize", - "FieldName":"net_maxfilesize", - "InputType":"number", - "MinValue":"0", - "MaxValue":"64", - "ParamFieldName":"net_maxfilesize", - "DefaultValue":"16", - "Placeholder":"16", - "Suffix":"MB", - "EnumValues":{} - }, - { - "DisplayName":"Minimum Client Rate", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the minimum allowable bandwidth rate a client may have set when connected to the server. 0 = no minimum", - "Keywords":"minimum,bandwidth,rate,sv_minrate", - "FieldName":"sv_minrate", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"sv_minrate", - "DefaultValue":"3500", - "Placeholder":"3500", - "Suffix":"bytes/second", - "EnumValues":{} - }, - { - "DisplayName":"Maximum Client Rate", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the maximum allowable bandwidth rate a client may have set when connected to the server. 0 = no limit", - "Keywords":"maximum,bandwidth,rate,sv_maxrate", - "FieldName":"sv_maxrate", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"sv_maxrate", - "DefaultValue":"0", - "Placeholder":"0", - "Suffix":"bytes/second", - "EnumValues":{} - }, - { - "DisplayName":"Minimum Server Update Rate", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the minimum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", - "Keywords":"minimum,update,rate,sv_minupdaterate", - "FieldName":"sv_minupdaterate", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"sv_minupdaterate", - "DefaultValue":"10", - "Placeholder":"10", - "EnumValues":{} - }, - { - "DisplayName":"Maximum Server Update Rate", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Sets the maximum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", - "Keywords":"maximum,update,rate,sv_maxupdaterate", - "FieldName":"sv_maxupdaterate", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"sv_maxupdaterate", - "DefaultValue":"66", - "Placeholder":"66", - "EnumValues":{} - }, - { - "DisplayName":"Ping Boost", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Selects between optimised network code stack. Setting at 2 usually reduces latency toward 1ms without loss of activity input packets", - "Keywords":"ping,boost,latency,network,pingboost", - "FieldName":"pingboost", - "InputType":"enum", - "ParamFieldName":"pingboost", - "DefaultValue":"", - "EnumValues":{ - "":"None", - "-pingboost 1 ":"1", - "-pingboost 2 ":"2", - "-pingboost 3 ":"3" - } - }, - { - "DisplayName":"Enable CPU Stats Collection", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If set, CPU stats will be collected", - "Keywords":"cpu,stats,sv_stats", - "FieldName":"sv_stats", - "InputType":"checkbox", - "ParamFieldName":"sv_stats", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Server/RCON IPv4 IP Binding", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"If required, you can change the IPv4 IP binding of the server and RCON by changing the 'Server IP Address' setting under Security and Privacy. NOTE: AMP requires the server to be bound to a specific IP, rather than 0.0.0.0, for the server to log to AMP's console. The IP must also be reachable by AMP", - "Keywords":"ip,binding", - "FieldName":"ip", - "InputType":"hidden", - "ParamFieldName":"ip", - "EnumValues":{} - }, - { - "DisplayName":"Additional Command Line Parameters", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Specifies additional [command line parameters](https://developer.valvesoftware.com/wiki/Command_line_options#Source_Dedicated_Server) (anything that begins with a -) that are not otherwise set by AMP. Use with care", - "Keywords":"custom,server,arguments,variables,cvars,convars,parameters", - "FieldName":"CustomParameters", - "InputType":"text", - "ParamFieldName":"CustomParameters", - "DefaultValue":"", - "EnumValues":{} - }, - { - "DisplayName":"Additional Console Variables", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Specifies additional [console variables] (anything that begins with a +) that are not otherwise set by AMP. Use with care. Preferably, specify the equivalent under \"Additional Server Settings\"", - "Keywords":"custom,server,arguments,variables,cvars,convars,parameters", - "FieldName":"CustomConVars", - "InputType":"text", - "ParamFieldName":"CustomConVars", - "DefaultValue":"", - "Placeholder":"+sv_gravity \"500\"", - "EnumValues":{} - }, - { - "DisplayName":"Additional Server Settings", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Server:dns:1", - "Description":"Specifies additional [settings] to include in 'server.cfg' that are not otherwise set by AMP. One setting per line", - "Keywords":"additional,settings,custom", - "FieldName":"UserSettings", - "InputType":"Textarea", - "IsFlagArgument":false, - "ParamFieldName":"UserSettings", - "DefaultValue":"", - "EnumValues":{} - }, - { - "DisplayName":"Enable Friendly Fire", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, friendly fire will be enabled (teammates can cause damage to other teammates)", - "Keywords":"friendly,fire,mp_friendlyfire", - "FieldName":"mp_friendlyfire", - "InputType":"checkbox", - "ParamFieldName":"mp_friendlyfire", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Enable Footsteps", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, the server will always play footstep sounds", - "Keywords":"footstep,sounds,mp_footsteps", - "FieldName":"mp_footsteps", - "InputType":"checkbox", - "ParamFieldName":"mp_footsteps", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Enable Teamplay", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If enabled, teamplay game rules will apply", - "Keywords":"team,play,teamplay,mp_teamplay", - "FieldName":"mp_teamplay", - "InputType":"checkbox", - "ParamFieldName":"mp_teamplay", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Allow Players To Pause Server", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, players will be able to pause the server. Not recommended", - "Keywords":"pause,pausable,sv_pausable", - "FieldName":"sv_pausable", - "InputType":"checkbox", - "ParamFieldName":"sv_pausable", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Allow Wait Command", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If enabled, the wait command will be allowed on clients connected to the server. Recommended to keep disabled to prevent server crash exploits", - "Keywords":"wait,command,sv_allow_wait_command", - "FieldName":"sv_allow_wait_command", - "InputType":"checkbox", - "ParamFieldName":"sv_allow_wait_command", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Enable Voice Communication", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, voice communication will be enabled on the server", - "Keywords":"voice,communication,sv_voiceenable", - "FieldName":"sv_voiceenable", - "InputType":"checkbox", - "ParamFieldName":"sv_voiceenable", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Allow All Talk", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If enabled, players can communicate with all other players, with no team restrictions", - "Keywords":"all,talk,sv_alltalk", - "FieldName":"sv_alltalk", - "InputType":"checkbox", - "ParamFieldName":"sv_alltalk", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Force Respawn", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If enabled, players will be forced to respawn after death", - "Keywords":"force,respawn,death,mp_forcerespawn", - "FieldName":"mp_forcerespawn", - "InputType":"checkbox", - "ParamFieldName":"mp_forcerespawn", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Map Rotation Time Limit", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Sets the game time per map. 0 = disabled", - "Keywords":"time,limit,rotation,mp_timelimit", - "FieldName":"mp_timelimit", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"mp_timelimit", - "DefaultValue":"0", - "Placeholder":"0", - "Suffix":"seconds", - "EnumValues":{} - }, - { - "DisplayName":"Round Kill Limit", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Sets the number of kills at which the map ends. 0 = disabled", - "Keywords":"kill,frag,limit,rotation,mp_fraglimit", - "FieldName":"mp_fraglimit", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"mp_fraglimit", - "DefaultValue":"0", - "Placeholder":"0", - "Suffix":"kills", - "EnumValues":{} - }, - { - "DisplayName":"Restrict Spectator Mode", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, the spectator mode for dead players will be restricted", - "Keywords":"spectator,camera,first,person,mp_forcecamera", - "FieldName":"mp_forcecamera", - "InputType":"checkbox", - "ParamFieldName":"mp_forcecamera", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Game Mode", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Set the gamemode for this server", - "Keywords":"currentmode,gamemode,fof_sv_currentmode", - "FieldName":"fof_sv_currentmode", - "InputType":"enum", - "ParamFieldName":"fof_sv_currentmode", - "DefaultValue":"1", - "EnumValues":{ - "1":"Shootout", - "2":"Teamplay/Objectives", - "3":"Break Bad", - "4":"Elimination", - "5":"Versus", - "6":"Co-op" - } - }, - { - "DisplayName":"Max Teams", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Set the maximum amount of teams for this server", - "Keywords":"maxteams,teams,fof_sv_maxteams", - "FieldName":"fof_sv_maxteams", - "InputType":"enum", - "ParamFieldName":"fof_sv_maxteams", - "DefaultValue":"2", - "EnumValues":{ - "2":"2", - "3":"3", - "4":"4" - } - }, - { - "DisplayName":"Bots: Dynamic Join", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, the server will have bots join or leave automatically to fill slots", - "Keywords":"bots,dynamic,fof_sv_bot_dynamicjoin", - "FieldName":"fof_sv_bot_dynamicjoin", - "InputType":"checkbox", - "ParamFieldName":"fof_sv_bot_dynamicjoin", - "DefaultValue":"1", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Bots: Slot Fill Percentage", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Slots percentage filled by bots", - "Keywords":"bots,slot,fof_sv_bot_slotpct", - "FieldName":"fof_sv_bot_slotpct", - "InputType":"enum", - "ParamFieldName":"fof_sv_bot_slotpct", - "DefaultValue":"0.2", - "EnumValues":{ - "0":"0%", - "0.2":"20%", - "0.4":"40%", - "0.6":"60%", - "0.8":"80%", - "1":"100%" - } - }, - { - "DisplayName":"Bots: Skill Level", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Set skill level of bots", - "Keywords":"bots,skill,fof_bot_skill", - "FieldName":"fof_bot_skill", - "InputType":"enum", - "ParamFieldName":"fof_bot_skill", - "DefaultValue":"5", - "EnumValues":{ - "0":"Easy", - "1":"Medium", - "2":"Hard", - "3":"Expert", - "4":"Veteran", - "5":"Randomized" - } - }, - { - "DisplayName":"MOTD Countdown", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"How many seconds last the MOTD screen before it can be closed by clients", - "Keywords":"motd,fof_sv_motd_countdown", - "FieldName":"fof_sv_motd_countdown", - "InputType":"number", - "MinValue":"0", - "MaxValue":"20", - "ParamFieldName":"fof_sv_motd_countdown", - "DefaultValue":"5", - "Placeholder":"5" - }, - { - "DisplayName":"AFK to Spectator Timer", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"How long in seconds players can be inactive before they are sent to spectator", - "Keywords":"afk,idle,spectator,fof_sv_maxidle_secs", - "FieldName":"fof_sv_maxidle_secs", - "InputType":"number", - "MinValue":"15", - "MaxValue":"120", - "ParamFieldName":"fof_sv_maxidle_secs", - "DefaultValue":"45", - "Placeholder":"45" - }, - { - "DisplayName":"Warmup Timer", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Warm-up duration", - "Keywords":"warmup,fof_sv_obj_warmuptime", - "FieldName":"fof_sv_obj_warmuptime", - "InputType":"number", - "MinValue":"0", - "MaxValue":"60", - "ParamFieldName":"fof_sv_obj_warmuptime", - "DefaultValue":"30", - "Placeholder":"30" - }, - { - "DisplayName":"Competitive: Enable/Disable", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"Match ends when a players reaches an specified amount of notoriety points", - "Keywords":"competitive,notoriety,fof_sv_dm_comp", - "FieldName":"fof_sv_dm_comp", - "InputType":"checkbox", - "ParamFieldName":"fof_sv_dm_comp", - "DefaultValue":"0", - "EnumValues":{ - "True":"1", - "False":"0" - } - }, - { - "DisplayName":"Competitive: Notoriety Points to Win", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"How much notoriety a player must have to win", - "Keywords":"competitive,notoriety,fof_sv_dm_comp_points", - "FieldName":"fof_sv_dm_comp_points", - "InputType":"number", - "MinValue":"100", - "MaxValue":"2000", - "ParamFieldName":"fof_sv_dm_comp_points", - "DefaultValue":"1000", - "Placeholder":"1000" - }, - { - "DisplayName":"Alternate Ticks", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"Gameplay:joystick:2", - "Description":"If set, the server only simulates entities on even numbered ticks", - "Keywords":"alternate,ticks,sv_alternateticks", - "FieldName":"sv_alternateticks", - "InputType":"checkbox", - "ParamFieldName":"sv_alternateticks", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"Disable SourceTV", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"SourceTV:tv:3", - "Description":"If set, SourceTV will be disabled on the server", - "Keywords":"sourcetv,source,nohltv", - "FieldName":"nohltv", - "InputType":"checkbox", - "ParamFieldName":"nohltv", - "DefaultValue":"-nohltv ", - "EnumValues":{ - "False":"", - "True":"-nohltv " - } - }, - { - "DisplayName":"Enable Automatic Demo Recording", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"SourceTV:tv:3", - "Description":"If set, all games will be recorded as SourceTV demos", - "Keywords":"sourcetv,tv,tv_autorecord", - "FieldName":"tv_autorecord", - "InputType":"checkbox", - "ParamFieldName":"tv_autorecord", - "DefaultValue":"0", - "EnumValues":{ - "False":"0", - "True":"1" - } - }, - { - "DisplayName":"SourceTV Viewer Limit", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"SourceTV:tv:3", - "Description":"Sets the maximum number of clients allowed to connect to the server's SourceTV. 0 = no SourceTV viewers are allowed, the game will only be recorded locally", - "Keywords":"max,spectators,clients,viewers,sourcetv,tv,tv_maxclients", - "FieldName":"tv_maxclients", - "InputType":"number", - "MinValue":"0", - "MaxValue":"255", - "ParamFieldName":"tv_maxclients", - "DefaultValue":"128", - "Placeholder":"128", - "Suffix":"viewers", - "EnumValues":{} - }, - { - "DisplayName":"Maximum SourceTV Bandwidth", - "Category":"Fistful of Frags:stadia_controller", - "Subcategory":"SourceTV:tv:3", - "Description":"Sets the maximum SourceTV spectator bandwidth rate allowed. 0 = unlimited", - "Keywords":"maximum,bandwidth,rate,sourcetv,tv,tv_maxrate", - "FieldName":"tv_maxrate", - "InputType":"number", - "MinValue":"0", - "ParamFieldName":"tv_maxrate", - "DefaultValue":"8000", - "Placeholder":"8000", - "EnumValues":{} - }, - { - "DisplayName":"Metamod and SourceMod Management", - "Category":"Updates", - "Subcategory":"Metamod and SourceMod:build:3", - "Description":"Sets how to manage Metamod and SourceMod on the server. Branch and Build Versions must be set accordingly for installation. Update the server after changing this setting (unless \"Do nothing\" is selected)", - "Keywords":"install,metamod,sourcemod", - "FieldName":"InstallMod", - "InputType":"enum", - "ParamFieldName":"InstallMod", - "DefaultValue":"none", - "EnumValues":{ - "none":"Do nothing (default)", - "false":"Deactivate mods", - "true":"Install and activate mods" - } - }, - { - "DisplayName":"Metamod Branch", - "Category":"Updates", - "Subcategory":"Metamod and SourceMod:build:3", - "Description":"Specifies the [Metamod](https://www.sourcemm.net/downloads.php) branch to install", - "Keywords":"metamod,branch", - "FieldName":"MetamodBranch", - "InputType":"enum", - "ParamFieldName":"MetamodBranch", - "DefaultValue":"1.11", - "EnumValues":{ - "1.11":"Stable (1.11) (default)", - "1.12":"Development (1.12)" - } - }, - { - "DisplayName":"Metamod Build Version", - "Category":"Updates", - "Subcategory":"Metamod and SourceMod:build:3", - "Description":"Specifies the [Metamod build version](https://www.sourcemm.net/downloads.php) to install", - "Keywords":"metamod,build,version", - "FieldName":"MetamodBuild", - "InputType":"number", - "ParamFieldName":"MetamodBuild", - "DefaultValue":"1156", - "Placeholder":"1156", - "EnumValues":{} - }, - { - "DisplayName":"SourceMod Branch", - "Category":"Updates", - "Subcategory":"Metamod and SourceMod:build:3", - "Description":"Specifies the [SourceMod](https://www.sourcemod.net/downloads.php) branch to install", - "Keywords":"sourcemod,branch", - "FieldName":"SourceModBranch", - "InputType":"enum", - "ParamFieldName":"SourceModBranch", - "DefaultValue":"1.12", - "EnumValues":{ - "1.11":"Old stable (1.11)", - "1.12":"Stable (1.12) (default)", - "1.13":"Development (1.13)" - } - }, - { - "DisplayName":"SourceMod Build Version", - "Category":"Updates", - "Subcategory":"Metamod and SourceMod:build:3", - "Description":"Specifies the [SourceMod build version](https://www.sourcemod.net/downloads.php) to install", - "Keywords":"sourcemod,build,version", - "FieldName":"SourceModBuild", - "InputType":"number", - "ParamFieldName":"SourceModBuild", - "DefaultValue":"7169", - "Placeholder":"7169", - "EnumValues":{} - } -] diff --git a/fistful-of-frags-metaconfig.json b/fistful-of-frags-metaconfig.json deleted file mode 100644 index 5bdefc1fb..000000000 --- a/fistful-of-frags-metaconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "ConfigFile":"fof/cfg/server.cfg", - "AutoMap":true, - "ConfigType":"template", - "ConfigFileTemplate":"fof/AMP_server.cfg" - } -] diff --git a/fistful-of-frags-start.json b/fistful-of-frags-start.json deleted file mode 100644 index cb062abea..000000000 --- a/fistful-of-frags-start.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "UpdateStageName":"Activate Metamod and SourceMod", - "UpdateSourcePlatform":"All", - "UpdateSource":"CreateFile", - "UpdateSourceData":"\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", - "UpdateSourceArgs":"{{$FullBaseDir}}fof/addons/metamod.vdf", - "OverwriteExistingFiles":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"Disable Metamod and SourceMod", - "UpdateSourcePlatform":"Windows", - "UpdateSource":"Executable", - "UpdateSourceData":"cmd.exe", - "UpdateSourceArgs":"/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"false" - }, - { - "UpdateStageName":"Disable Metamod and SourceMod", - "UpdateSourcePlatform":"Linux", - "UpdateSource":"Executable", - "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"false" - } -] diff --git a/fistful-of-frags-updates.json b/fistful-of-frags-updates.json deleted file mode 100644 index a9792c00a..000000000 --- a/fistful-of-frags-updates.json +++ /dev/null @@ -1,122 +0,0 @@ -[ - { - "UpdateStageName":"SteamCMD Server Download", - "UpdateSourcePlatform":"All", - "UpdateSource":"SteamCMD", - "UpdateSourceData":"295230", - "UpdateSourceArgs":"265630" - }, - { - "UpdateStageName":"Server.cfg Template File Download", - "UpdateSourcePlatform":"All", - "UpdateSource":"FetchURL", - "UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/fistful-of-frags-server.cfg", - "UpdateSourceArgs":"AMP_server.cfg", - "UpdateSourceTarget":"{{$FullRootDir}}", - "OverwriteExistingFiles":true - }, - { - "UpdateStageName":"Metamod Download", - "UpdateSourcePlatform":"Windows", - "UpdateSource":"FetchURL", - "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-windows.zip", - "UpdateSourceTarget":"{{$FullBaseDir}}fof", - "UnzipUpdateSource":true, - "OverwriteExistingFiles":true, - "DeleteAfterExtract":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"Metamod Download", - "UpdateSourcePlatform":"Linux", - "UpdateSource":"FetchURL", - "UpdateSourceData":"https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-linux.tar.gz", - "UpdateSourceTarget":"{{$FullBaseDir}}fof", - "UnzipUpdateSource":true, - "OverwriteExistingFiles":true, - "DeleteAfterExtract":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"SourceMod Download Directory Creation", - "UpdateSourcePlatform":"All", - "UpdateSource":"CreateDirectory", - "UpdateSourceArgs":"{{$FullBaseDir}}sm", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"SourceMod Download", - "UpdateSourcePlatform":"Windows", - "UpdateSource":"FetchURL", - "UpdateSourceData":"https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-windows.zip", - "UpdateSourceTarget":"{{$FullBaseDir}}sm", - "UnzipUpdateSource":true, - "OverwriteExistingFiles":true, - "DeleteAfterExtract":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"SourceMod Download", - "UpdateSourcePlatform":"Linux", - "UpdateSource":"FetchURL", - "UpdateSourceData":"https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-linux.tar.gz", - "UpdateSourceTarget":"{{$FullBaseDir}}sm", - "UnzipUpdateSource":true, - "OverwriteExistingFiles":true, - "DeleteAfterExtract":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"SourceMod Installation", - "UpdateSourcePlatform":"Windows", - "UpdateSource":"Executable", - "UpdateSourceData":"powershell.exe", - "UpdateSourceArgs":"-NoProfile -Command \"Set-Location -Path 'fof/295230'; if (Test-Path 'fof/cfg/sourcemod') { Remove-Item -Path 'sm/cfg/sourcemod' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/configs') { Remove-Item -Path 'sm/addons/sourcemod/configs' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/plugins') { Remove-Item -Path 'sm/addons/sourcemod/plugins' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; Copy-Item -Path 'sm/*' -Destination 'fof' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null; Remove-Item -Path 'sm' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null\"", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true", - "SkipOnFailure":true - }, - { - "UpdateStageName":"SourceMod Installation", - "UpdateSourcePlatform":"Linux", - "UpdateSource":"Executable", - "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd fof/295230 && [ -d fof/cfg/sourcemod ] && rm -rf sm/cfg/sourcemod >/dev/null 2>&1; [ -d fof/addons/sourcemod/configs ] && rm -rf sm/addons/sourcemod/configs >/dev/null 2>&1; [ -d fof/addons/sourcemod/plugins ] && rm -rf sm/addons/sourcemod/plugins >/dev/null 2>&1; \\cp -rf sm/* fof/ >/dev/null 2>&1; rm -rf sm >/dev/null 2>&1\"", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true", - "SkipOnFailure":true - }, - { - "UpdateStageName":"Activate Metamod and SourceMod", - "UpdateSourcePlatform":"All", - "UpdateSource":"CreateFile", - "UpdateSourceData":"\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", - "UpdateSourceArgs":"{{$FullBaseDir}}fof/addons/metamod.vdf", - "OverwriteExistingFiles":true, - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"true" - }, - { - "UpdateStageName":"Disable Metamod and SourceMod", - "UpdateSourcePlatform":"Windows", - "UpdateSource":"Executable", - "UpdateSourceData":"cmd.exe", - "UpdateSourceArgs":"/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"false" - }, - { - "UpdateStageName":"Disable Metamod and SourceMod", - "UpdateSourcePlatform":"Linux", - "UpdateSource":"Executable", - "UpdateSourceData":"/bin/bash", - "UpdateSourceArgs":"-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", - "UpdateSourceConditionSetting":"InstallMod", - "UpdateSourceConditionValue":"false" - } -] diff --git a/fistful-of-frags.kvp b/fistful-of-frags.kvp index 193c0ced1..f709529c5 100644 --- a/fistful-of-frags.kvp +++ b/fistful-of-frags.kvp @@ -3,12 +3,12 @@ Meta.Description=Fistful of Frags Dedicated Server Meta.OS=Windows, Linux Meta.AarchSupport=NotSupported Meta.Arch=x86_64 -Meta.Author=Greelan & connorrichlen (richlen99) +Meta.Author=Greelan, connorrichlen (richlen99) Meta.URL=https://fistful-of-frags.com/ -Meta.DisplayImageSource=steam:295230 +Meta.DisplayImageSource=steam:265630 Meta.EndpointURIFormat=steam://connect/{0} -Meta.ConfigManifest=fistful-of-frags-config.json -Meta.MetaConfigManifest=fistful-of-frags-metaconfig.json +Meta.ConfigManifest=fistful-of-fragsconfig.json +Meta.MetaConfigManifest=fistful-of-fragsmetaconfig.json Meta.ConfigRoot=fistful-of-frags.kvp Meta.MinAMPVersion=2.6.0.4 Meta.SpecificDockerImage= @@ -21,7 +21,7 @@ Meta.Prerequisites=[] Meta.ExtraContainerPackages=[] Meta.ConfigReleaseState=NotSpecified Meta.NoCommercialUsage=False -Meta.AppConfigId= +Meta.AppConfigId=8ad0565c-2fb9-4303-b43d-479c0b915030 Meta.ConfigVersion=1.0 Meta.ReleaseNotes= Meta.BreakingReleaseNotes= @@ -37,7 +37,7 @@ App.WindowsCommandLineArgs= App.CommandLineArgs={{$PlatformArgs}} -game fof -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on App.UseLinuxIOREDIR=False App.AppSettings={} -App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}:{{$FullBaseDir}}bin:%LD_LIBRARY_PATH%","SteamAppId":"295230"} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}:{{$FullBaseDir}}bin:%LD_LIBRARY_PATH%","SteamAppId":"265630"} App.CommandLineParameterFormat=+{0} {1} App.CommandLineParameterDelimiter= App.ExitMethod=String @@ -52,7 +52,7 @@ App.LiveSettingChangeCommandFormat=set {0} "{1}" App.ForceIPBinding=True App.SupportsIPv6=False App.ApplicationIPBinding=0.0.0.0 -App.Ports=@IncludeJson[fistful-of-frags-ports.json] +App.Ports=@IncludeJson[fistful-of-fragsports.json] App.AdminPortRef=ServerPort App.PrimaryApplicationPortRef=ServerPort App.UniversalSleepApplicationUDPPortRef=0 @@ -69,8 +69,8 @@ App.RCONConnectRetrySeconds=5 App.RCONHeartbeatMinutes=0 App.RCONHeartbeatCommand=ping App.TelnetLoginFormat={0} -App.UpdateSources=@IncludeJson[fistful-of-frags-updates.json] -App.PreStartStages=@IncludeJson[fistful-of-frags-updates.json] +App.UpdateSources=@IncludeJson[fistful-of-fragsupdates.json] +App.PreStartStages=@IncludeJson[fistful-of-fragsstart.json] App.ForceUpdate=False App.ForceUpdateReason= App.Compatibility=None @@ -86,8 +86,8 @@ Console.FilterMatchRegex= Console.FilterMatchReplacement= Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$ Console.AppReadyRegex=^$ -Console.UserJoinRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><(BOT|(?(?!BOT).+?))><>" entered the game$ -Console.UserLeaveRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><(BOT|(?(?!BOT).+?))><.*>" disconnected \(reason ".*"\)$ +Console.UserJoinRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><{{UserIDRegex}}><>" entered the game$ +Console.UserLeaveRegex=^L [\d\/]+ - [\d:]+: "(?.+?)<\d+><{{UserIDRegex}}><.*>" disconnected \(reason ".*"\)$ Console.UserChatRegex=^$ Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$ Console.MetricsRegex= diff --git a/fistful-of-fragsconfig.json b/fistful-of-fragsconfig.json new file mode 100644 index 000000000..b02b58d41 --- /dev/null +++ b/fistful-of-fragsconfig.json @@ -0,0 +1,1180 @@ +[ + { + "DisplayName": "RCON Password", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "", + "Keywords": "", + "FieldName": "$RemoteAdminPassword", + "InputType": "text", + "Hidden": true, + "ParamFieldName": "rcon_password", + "EnumValues": {} + }, + { + "DisplayName": "Server Name", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the name of the server that appears in the server list", + "Keywords": "server,name,hostname", + "FieldName": "hostname", + "InputType": "text", + "ParamFieldName": "hostname", + "DefaultValue": "AMP Powered Fistful of Frags Server", + "EnumValues": {} + }, + { + "DisplayName": "Server Tags", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Comma-separated list of server tags that give additional information about the server in the server browser", + "Keywords": "tags,sv_tags", + "FieldName": "sv_tags", + "InputType": "text", + "ParamFieldName": "sv_tags", + "DefaultValue": "", + "Placeholder": "increased_maxplayers", + "EnumValues": {} + }, + { + "DisplayName": "Server Steam Group", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the ID of the steam group that the server belongs to. You can find your group's ID on the admin profile page in the steam community", + "Keywords": "steam,group,id,sv_steamgroup", + "FieldName": "sv_steamgroup", + "InputType": "text", + "ParamFieldName": "sv_steamgroup", + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "MOTD Countdown", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets how long the MOTD panel lasts before it can be closed by clients", + "Keywords": "motd,fof_sv_motd_countdown", + "FieldName": "fof_sv_motd_countdown", + "InputType": "number", + "MinValue": "0", + "MaxValue": "10", + "ParamFieldName": "fof_sv_motd_countdown", + "DefaultValue": "1", + "Placeholder": "1", + "Suffix": "seconds", + "EnumValues": {} + }, + { + "DisplayName": "LAN Server", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If enabled, the server will operate as a LAN server: no heartbeat, no authentication, and no non-class C addresses", + "Keywords": "lan,local,sv_lan", + "FieldName": "sv_lan", + "InputType": "checkbox", + "ParamFieldName": "sv_lan", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Server Password", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the password required to connect to the server. Default is no password", + "Keywords": "server,password,sv_password", + "FieldName": "sv_password", + "InputType": "password", + "ParamFieldName": "sv_password", + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "Initial Map", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the map to start the server with. If \"Custom\" is selected, Custom Initial Map must also be specified", + "Keywords": "map", + "FieldName": "map", + "InputType": "enum", + "ParamFieldName": "map", + "DefaultValue": "fof_fistful", + "EnumValues": { + "cm_forest": "Course Mode: Forest", + "cm_laststand": "Course Mode: Last Stand", + "cm_mobile_cannon": "Course Mode: Mobile Cannon", + "cm_movement_tutorial": "Course Mode: Movement Tutorial", + "cm_river_challenge": "Course Mode: River Challenge", + "cm_weapon_course": "Course Mode: Weapon Course", + "fofhr_coldblood": "Break Bad: Cold Blood", + "fofhr_monumentvalley": "Break Bad: Monument Valley", + "fofhr_tramonto": "Break Bad: Tramonto", + "fof_cripplecreek": "Cripplecreek", + "fof_depot": "Depot", + "fof_desperados": "Desperados", + "fof_fistful": "Fistful (default)", + "fof_impact": "Impact", + "fof_nest": "Nest", + "fof_nest_12": "Nest (maxplayers 12)", + "fof_overtop": "Overtop", + "fof_revenge": "Revenge", + "fof_robertlee": "Robert E. Lee Steamboat (maxplayers 12)", + "fof_sawmill": "Sawmill", + "fof_sawmill_12": "Sawmill (maxplayers 12)", + "fof_sweetwater": "Sweetwater", + "fof_sweetwater_12": "Sweetwater (maxplayers 12)", + "fof_tortuga": "Tortuga", + "fof_tortuga_12": "Tortuga (maxplayers 12)", + "fof_tramonto": "Tramonto", + "fof_tramonto_12": "Tramonto (maxplayers 12)", + "fof_winterlong": "Winterlong", + "tp_abandonded": "Teamplay: Abandonded", + "tp_assault": "Teamplay: Assault", + "tp_coastal": "Teamplay: Coastal", + "tp_eliminator": "Teamplay: Eliminator", + "tp_forest": "Teamplay: Forest", + "tp_loothill": "Teamplay: Loothill", + "tp_riobravo": "Teamplay: Rio Bravo", + "tp_snowy": "Teamplay: Snowy", + "tp_station": "Teamplay: Station", + "tp_yosemite": "Teamplay: Yosemite", + "vs_desert": "Versus: Desert", + "vs_forest": "Versus: Forest", + "vs_river": "Versus: River", + "gt_creepycreek": "Halloween: Creepy Creek", + "gt_desperados": "Halloween: Desperados", + "gt_nest": "Halloween: Nest", + "gt_overtop": "Halloween: Overtop", + "{{CustomMap}}": "--Custom--" + } + }, + { + "DisplayName": "Custom Initial Map", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets a custom map to use for the Initial Map, if \"Custom\" is selected", + "Keywords": "custom,map", + "FieldName": "CustomMap", + "InputType": "text", + "ParamFieldName": "CustomMap", + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "Initial Game Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Set the initial game mode for the server", + "Keywords": "currentmode,game,mode,fof_sv_currentmode", + "FieldName": "fof_sv_currentmode", + "InputType": "enum", + "ParamFieldName": "fof_sv_currentmode", + "DefaultValue": "1", + "EnumValues": { + "1": "Shootout", + "2": "Teamplay/Objectives", + "3": "Break Bad", + "4": "Elimination", + "5": "Versus", + "6": "Co-op" + } + }, + { + "DisplayName": "Server Region", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the server region shown in the server list", + "Keywords": "server,region,sv_region", + "FieldName": "sv_region", + "InputType": "enum", + "ParamFieldName": "sv_region", + "DefaultValue": "-1", + "EnumValues": { + "-1": "No region", + "0": "East Coast US", + "1": "West Coast US", + "2": "South America", + "3": "Europe", + "4": "Asia", + "5": "Australia", + "6": "Middle East", + "7": "Africa", + "255": "World" + } + }, + { + "DisplayName": "Player Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the maximum number of players allowed on the server at one time", + "Keywords": "max,players,limit,maxplayers", + "FieldName": "$MaxUsers", + "InputType": "number", + "MinValue": "1", + "MaxValue": "24", + "ParamFieldName": "sv_maxplayers", + "DefaultValue": "8", + "Placeholder": "8", + "Suffix": "players", + "EnumValues": {} + }, + { + "DisplayName": "Bot Player Count Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets whether to count bots as players for the player count in AMP. This AMP instance must be restarted for changes to this setting to take effect", + "Keywords": "bot,count,players", + "FieldName": "UserIDRegex", + "InputType": "enum", + "ParamFieldName": "UserIDRegex", + "DefaultValue": "(BOT|(?(?!BOT).+?))", + "EnumValues": { + "(BOT|(?(?!BOT).+?))": "Count bots as players (default)", + "(?(?!BOT).+?)": "Don't count bots as players" + } + }, + { + "DisplayName": "Visible Player Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the maximum players reported to prospective clients, regardless of the Player Limit. -1 = do not override", + "Keywords": "visible,max,players,sv_visiblemaxplayers", + "FieldName": "sv_visiblemaxplayers", + "InputType": "number", + "MinValue": "-1", + "MaxValue": "100", + "ParamFieldName": "sv_visiblemaxplayers", + "DefaultValue": "-1", + "Placeholder": "-1", + "Suffix": "players", + "EnumValues": {} + }, + { + "DisplayName": "Allow Spectators", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, spectator mode will be enabled", + "Keywords": "allow,spectators,mp_allowspectators", + "FieldName": "mp_allowspectators", + "InputType": "checkbox", + "ParamFieldName": "mp_allowspectators", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Pure Server Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets whether clients are only allowed to use certain files", + "Keywords": "pure,server,cheat,hack,integrity,sv_pure", + "FieldName": "sv_pure", + "InputType": "enum", + "ParamFieldName": "sv_pure", + "DefaultValue": "-1", + "EnumValues": { + "-1": "Do not restrict client files", + "0": "Apply rules in 'pure_server_minimal.txt' only", + "1": "Apply rules in 'pure_server_full.txt' and then 'pure_server_whitelist.txt'", + "2": "Apply rules in 'pure_server_full.txt'" + } + }, + { + "DisplayName": "Kick Clients On Pure Server", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If enabled, the server will kick clients with mismatching files. Otherwise, it will issue a warning to the clients", + "Keywords": "pure,server,cheat,hack,integrity,sv_pure_kick_clients", + "FieldName": "sv_pure_kick_clients", + "InputType": "checkbox", + "ParamFieldName": "sv_pure_kick_clients", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Force Preload", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, server side preloading will be forced", + "Keywords": "force,preload,sv_forcepreload", + "FieldName": "sv_forcepreload", + "InputType": "checkbox", + "ParamFieldName": "sv_forcepreload", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Cheats", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, cheat convars will be allowed to be used on the server", + "Keywords": "allow,cheat,hack,integrity,sv_cheats", + "FieldName": "sv_cheats", + "InputType": "checkbox", + "ParamFieldName": "sv_cheats", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Disable Valve Anti-Cheat", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, Valve Anti-Cheat (VAC) will be disabled", + "Keywords": "valve,anti,cheat,vac,insecure", + "FieldName": "insecure", + "InputType": "checkbox", + "ParamFieldName": "insecure", + "DefaultValue": "", + "EnumValues": { + "False": "", + "True": "-insecure " + } + }, + { + "DisplayName": "Enable IP Packet Filter", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, enables packet filtering by IP mode. If disabled, everyone will treated as IP-banned, but their IP won't be added to the banlist", + "Keywords": "ip,ban,banning,sv_filterban", + "FieldName": "sv_filterban", + "InputType": "checkbox", + "ParamFieldName": "sv_filterban", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Server Tickrate", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the server tickrate", + "Keywords": "tick,rate,tickrate", + "FieldName": "tickrate", + "InputType": "number", + "MinValue": "1", + "MaxValue": "128", + "ParamFieldName": "tickrate", + "DefaultValue": "64", + "Placeholder": "64", + "Suffix": "tps", + "EnumValues": {} + }, + { + "DisplayName": "Allow Download From Server", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, clients will be allowed to download content from the server (maps, sprays and related)", + "Keywords": "allow,download,content,maps,sv_allowdownload", + "FieldName": "sv_allowdownload", + "InputType": "checkbox", + "ParamFieldName": "sv_allowdownload", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Fast Download URL", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the URL for clients to download custom content from, instead of sourcing the content from the server. This allows for faster downloads", + "Keywords": "fastdl,download,url,sv_downloadurl", + "FieldName": "sv_downloadurl", + "InputType": "text", + "ParamFieldName": "sv_downloadurl", + "DefaultValue": "", + "Placeholder": "http://example.com", + "EnumValues": {} + }, + { + "DisplayName": "Allow Upload To Server", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, clients will be allowed to upload customisation files to the server", + "Keywords": "allow,upload,customisation,files,sv_allowupload", + "FieldName": "sv_allowupload", + "InputType": "checkbox", + "ParamFieldName": "sv_allowupload", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Maximum File Size", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the maximum allowed file size for uploading to the server", + "Keywords": "maximum,upload,file,size,net_maxfilesize", + "FieldName": "net_maxfilesize", + "InputType": "number", + "MinValue": "0", + "MaxValue": "64", + "ParamFieldName": "net_maxfilesize", + "DefaultValue": "16", + "Placeholder": "16", + "Suffix": "MB", + "EnumValues": {} + }, + { + "DisplayName": "Minimum Client Rate", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the minimum allowable bandwidth rate a client may have set when connected to the server. 0 = no minimum", + "Keywords": "minimum,bandwidth,rate,sv_minrate", + "FieldName": "sv_minrate", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "sv_minrate", + "DefaultValue": "3500", + "Placeholder": "3500", + "Suffix": "bytes/second", + "EnumValues": {} + }, + { + "DisplayName": "Maximum Client Rate", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the maximum allowable bandwidth rate a client may have set when connected to the server. 0 = no limit", + "Keywords": "maximum,bandwidth,rate,sv_maxrate", + "FieldName": "sv_maxrate", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "sv_maxrate", + "DefaultValue": "0", + "Placeholder": "0", + "Suffix": "bytes/second", + "EnumValues": {} + }, + { + "DisplayName": "Minimum Server Update Rate", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the minimum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", + "Keywords": "minimum,update,rate,sv_minupdaterate", + "FieldName": "sv_minupdaterate", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "sv_minupdaterate", + "DefaultValue": "10", + "Placeholder": "10", + "EnumValues": {} + }, + { + "DisplayName": "Maximum Server Update Rate", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the maximum number of updates per second of the positions of the server's models (players, guns, etc) that server sends to clients", + "Keywords": "maximum,update,rate,sv_maxupdaterate", + "FieldName": "sv_maxupdaterate", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "sv_maxupdaterate", + "DefaultValue": "66", + "Placeholder": "66", + "EnumValues": {} + }, + { + "DisplayName": "Decal Frequency", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the time between decal sprays", + "Keywords": "decalfrequency", + "FieldName": "decalfrequency", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "decalfrequency", + "DefaultValue": "10", + "Placeholder": "10", + "Suffix": "seconds", + "EnumValues": {} + }, + { + "DisplayName": "Ping Boost", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Selects between optimised network code stack. Setting at 2 usually reduces latency toward 1ms without loss of activity input packets", + "Keywords": "ping,boost,latency,network,pingboost", + "FieldName": "pingboost", + "InputType": "enum", + "ParamFieldName": "pingboost", + "DefaultValue": "", + "EnumValues": { + "": "None", + "-pingboost 1 ": "1", + "-pingboost 2 ": "2", + "-pingboost 3 ": "3" + } + }, + { + "DisplayName": "Enable CPU Stats Collection", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If set, CPU stats will be collected", + "Keywords": "cpu,stats,sv_stats", + "FieldName": "sv_stats", + "InputType": "checkbox", + "ParamFieldName": "sv_stats", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Server/RCON IPv4 IP Binding", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "If required, you can change the IPv4 IP binding of the server and RCON by changing the 'Server IP Address' setting under Security and Privacy. NOTE: AMP requires the server to be bound to a specific IP, rather than 0.0.0.0, for the server to log to AMP's console. The IP must also be reachable by AMP", + "Keywords": "ip,binding", + "FieldName": "ip", + "InputType": "hidden", + "ParamFieldName": "ip", + "EnumValues": {} + }, + { + "DisplayName": "Additional Command Line Parameters", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Specifies additional [command line parameters](https://developer.valvesoftware.com/wiki/Command_line_options#Source_Dedicated_Server) (anything that begins with a -) that are not otherwise set by AMP. Use with care", + "Keywords": "custom,server,arguments,parameters", + "FieldName": "CustomParameters", + "InputType": "text", + "ParamFieldName": "CustomParameters", + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "Additional Console Variables", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Specifies additional [console variables](https://fistfuloffrags.blogspot.com/2014/10/cvarlist-autosave-cmd-autosave.html) (anything that begins with a +) that are not otherwise set by AMP. Use with care. Preferably, specify the equivalent under \"Additional Server Settings\"", + "Keywords": "custom,server,arguments,variables,cvars,convars,parameters", + "FieldName": "CustomConVars", + "InputType": "text", + "ParamFieldName": "CustomConVars", + "DefaultValue": "", + "Placeholder": "+sv_gravity \"500\"", + "EnumValues": {} + }, + { + "DisplayName": "Additional Server Settings", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Specifies additional [settings](https://fistfuloffrags.blogspot.com/2014/10/cvarlist-autosave-cmd-autosave.html) to include in 'server.cfg' that are not otherwise set by AMP. One setting per line", + "Keywords": "additional,settings,custom", + "FieldName": "UserSettings", + "InputType": "Textarea", + "IsFlagArgument": false, + "ParamFieldName": "UserSettings", + "DefaultValue": "", + "EnumValues": {} + }, + { + "DisplayName": "Enable Friendly Fire", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, friendly fire will be enabled (teammates can cause damage to other teammates)", + "Keywords": "friendly,fire,mp_friendlyfire", + "FieldName": "mp_friendlyfire", + "InputType": "checkbox", + "ParamFieldName": "mp_friendlyfire", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Flashlight", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If sets, allows the use of the flashlight by pressing the F button", + "Keywords": "flashlight,mp_flashlight", + "FieldName": "mp_flashlight", + "InputType": "checkbox", + "ParamFieldName": "mp_flashlight", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Footsteps", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the server will always play footstep sounds", + "Keywords": "footstep,sounds,mp_footsteps", + "FieldName": "mp_footsteps", + "InputType": "checkbox", + "ParamFieldName": "mp_footsteps", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Auto Crosshair", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the auto crosshair will be enabled", + "Keywords": "auto,crosshair,mp_autocrosshair", + "FieldName": "mp_autocrosshair", + "InputType": "checkbox", + "ParamFieldName": "mp_autocrosshair", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Teamplay", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If enabled, teamplay game rules will apply", + "Keywords": "team,play,teamplay,mp_teamplay", + "FieldName": "mp_teamplay", + "InputType": "checkbox", + "ParamFieldName": "mp_teamplay", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Allow Players To Pause Server", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, players will be able to pause the server. Not recommended", + "Keywords": "pause,pausable,sv_pausable", + "FieldName": "sv_pausable", + "InputType": "checkbox", + "ParamFieldName": "sv_pausable", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Allow Wait Command", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If enabled, the wait command will be allowed on clients connected to the server. Recommended to keep disabled to prevent server crash exploits", + "Keywords": "wait,command,sv_allow_wait_command", + "FieldName": "sv_allow_wait_command", + "InputType": "checkbox", + "ParamFieldName": "sv_allow_wait_command", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Voice Communication", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, voice communication will be enabled on the server", + "Keywords": "voice,communication,sv_voiceenable", + "FieldName": "sv_voiceenable", + "InputType": "checkbox", + "ParamFieldName": "sv_voiceenable", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Allow All Talk", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If enabled, players can communicate with all other players, with no team restrictions", + "Keywords": "all,talk,sv_alltalk", + "FieldName": "sv_alltalk", + "InputType": "checkbox", + "ParamFieldName": "sv_alltalk", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Enable Fade To Black", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If enabled, a player's screen fades to black for the remainder of the round after death (HUD and chat still works)", + "Keywords": "fade,black,spectator,death,mp_fadetoblack", + "FieldName": "mp_fadetoblack", + "InputType": "checkbox", + "ParamFieldName": "mp_fadetoblack", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Force Respawn", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If enabled, players will be forced to respawn after death", + "Keywords": "force,respawn,death,mp_forcerespawn", + "FieldName": "mp_forcerespawn", + "InputType": "checkbox", + "ParamFieldName": "mp_forcerespawn", + "DefaultValue": "1", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Automatic Team Balancing", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets whether to automatically balance teams based on the Teams Unbalance Limit", + "Keywords": "team,automatic,balance,balancing,mp_autoteambalance", + "FieldName": "mp_autoteambalance", + "InputType": "enum", + "ParamFieldName": "mp_autoteambalance", + "DefaultValue": "1", + "EnumValues": { + "0": "Off", + "1": "Forcibly switch (default)", + "2": "Ask for volunteers" + } + }, + { + "DisplayName": "Teams Unbalance Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Teams will be considered unbalanced for the purpose of Automatic Team Balancing when one team has this many more players than the other team. 0 = check disabled", + "Keywords": "team,automatic,balance,balancing,limit,mp_teams_unbalance_limit", + "FieldName": "mp_teams_unbalance_limit", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_teams_unbalance_limit", + "DefaultValue": "1", + "Placeholder": "1", + "EnumValues": {} + }, + { + "DisplayName": "Enable Stalemate Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the stalemate mode will be enabled", + "Keywords": "stalemate,mode,mp_stalemate_enable", + "FieldName": "mp_stalemate_enable", + "InputType": "checkbox", + "ParamFieldName": "mp_stalemate_enable", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Stalemate Mode Time Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the time limit of the stalemate round", + "Keywords": "stalemate,round,time,limit,mp_stalemate_timelimit", + "FieldName": "mp_stalemate_timelimit", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_stalemate_timelimit", + "DefaultValue": "240", + "Placeholder": "240", + "Suffix": "seconds", + "EnumValues": {} + }, + { + "DisplayName": "Map Rotation Time Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the game time per map. 0 = disabled", + "Keywords": "time,limit,rotation,mp_timelimit", + "FieldName": "mp_timelimit", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_timelimit", + "DefaultValue": "0", + "Placeholder": "0", + "Suffix": "minutes", + "EnumValues": {} + }, + { + "DisplayName": "Round Kill Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the number of kills at which the map ends. 0 = disabled", + "Keywords": "kill,frag,limit,rotation,mp_fraglimit", + "FieldName": "mp_fraglimit", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_fraglimit", + "DefaultValue": "0", + "Placeholder": "0", + "Suffix": "kills", + "EnumValues": {} + }, + { + "DisplayName": "Map Rotation Round Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the maximum number of rounds to play before the map rotates. 0 = disabled", + "Keywords": "round,limit,rotation,mp_maxrounds", + "FieldName": "mp_maxrounds", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_maxrounds", + "DefaultValue": "0", + "Placeholder": "0", + "Suffix": "rounds", + "EnumValues": {} + }, + { + "DisplayName": "Map Rotation Win Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the maximum score one team can reach before the map rotates. 0 = disabled", + "Keywords": "win,limit,rotation,mp_winlimit", + "FieldName": "mp_winlimit", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "mp_winlimit", + "DefaultValue": "0", + "Placeholder": "0", + "EnumValues": {} + }, + { + "DisplayName": "Restrict Spectator Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the spectator mode for dead players will be restricted", + "Keywords": "spectator,camera,first,person,mp_forcecamera", + "FieldName": "mp_forcecamera", + "InputType": "checkbox", + "ParamFieldName": "mp_forcecamera", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Maximum Teams", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the maximum number of teams for the server", + "Keywords": "maxteams,max,maximum,teams,fof_sv_maxteams", + "FieldName": "fof_sv_maxteams", + "InputType": "enum", + "ParamFieldName": "fof_sv_maxteams", + "DefaultValue": "4", + "EnumValues": { + "2": "2", + "3": "3", + "4": "4" + } + }, + { + "DisplayName": "Bots Dynamic Join", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the server will have bots join or leave automatically to fill slots", + "Keywords": "bots,dynamic,fof_sv_bot_dynamicjoin", + "FieldName": "fof_sv_bot_dynamicjoin", + "InputType": "checkbox", + "ParamFieldName": "fof_sv_bot_dynamicjoin", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Bots Slot Fill Percentage", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the slots percentage (expressed as a number between 0 and 1) filled by bots", + "Keywords": "bots,slot,fof_sv_bot_slotpct", + "FieldName": "fof_sv_bot_slotpct", + "InputType": "number", + "MinValue": "0", + "MaxValue": "1", + "ParamFieldName": "fof_sv_bot_slotpct", + "DefaultValue": "0", + "Placeholder": "0", + "EnumValues": {} + }, + { + "DisplayName": "Bots Skill Level", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the skill level of bots", + "Keywords": "bots,skill,level,fof_bot_skill", + "FieldName": "fof_bot_skill", + "InputType": "enum", + "ParamFieldName": "fof_bot_skill", + "DefaultValue": "2", + "EnumValues": { + "0": "Easy", + "1": "Medium", + "2": "Hard", + "3": "Expert", + "4": "Veteran", + "5": "Randomized", + "6": "Defined in script" + } + }, + { + "DisplayName": "AFK To Spectator Timer", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets how long players can be inactive before they are sent to spectator", + "Keywords": "afk,idle,spectator,fof_sv_maxidle_secs", + "FieldName": "fof_sv_maxidle_secs", + "InputType": "number", + "MinValue": "35", + "MaxValue": "120", + "ParamFieldName": "fof_sv_maxidle_secs", + "DefaultValue": "90", + "Placeholder": "90", + "Suffix": "seconds", + "EnumValues": {} + }, + { + "DisplayName": "Warmup Duration", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the warm-up duration", + "Keywords": "warmup,timer,duration,fof_sv_obj_warmuptime", + "FieldName": "fof_sv_obj_warmuptime", + "InputType": "number", + "MinValue": "0", + "MaxValue": "60", + "ParamFieldName": "fof_sv_obj_warmuptime", + "DefaultValue": "25", + "Placeholder": "25", + "Suffix": "seconds", + "EnumValues": {} + }, + { + "DisplayName": "Enable Competitive Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the competitive variant mode will be enabled: there is no time limit and the first player reaching the specified Notoriety Points To Win wins the game. The leader loses notoriety points when killed (same amount that their killer gets)", + "Keywords": "competitive,notoriety,fof_sv_dm_comp", + "FieldName": "fof_sv_dm_comp", + "InputType": "checkbox", + "ParamFieldName": "fof_sv_dm_comp", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Competitive Mode Notoriety Points To Win", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "Sets the number of notoriety points required to win the game in competitive mode", + "Keywords": "competitive,notoriety,fof_sv_dm_comp_points", + "FieldName": "fof_sv_dm_comp_points", + "InputType": "number", + "MinValue": "500", + "MaxValue": "1000", + "ParamFieldName": "fof_sv_dm_comp_points", + "DefaultValue": "500", + "Placeholder": "500", + "EnumValues": {} + }, + { + "DisplayName": "Enable Custom Shootout Mode", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, a custom Shootout mode will be enabled: weapon crates, whiskey and physic items are placed by following a script instead of their default positions. Create a script using the bot editor", + "Keywords": "custom,shootout,,fof_sv_shootout_custom", + "FieldName": "fof_sv_shootout_custom", + "InputType": "checkbox", + "ParamFieldName": "fof_sv_shootout_custom", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Alternate Ticks", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Gameplay:joystick:2", + "Description": "If set, the server only simulates entities on even numbered ticks", + "Keywords": "alternate,ticks,sv_alternateticks", + "FieldName": "sv_alternateticks", + "InputType": "checkbox", + "ParamFieldName": "sv_alternateticks", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "Disable SourceTV", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "SourceTV:tv:3", + "Description": "If set, SourceTV will be disabled on the server", + "Keywords": "sourcetv,source,nohltv", + "FieldName": "nohltv", + "InputType": "checkbox", + "ParamFieldName": "nohltv", + "DefaultValue": "-nohltv ", + "EnumValues": { + "False": "", + "True": "-nohltv " + } + }, + { + "DisplayName": "Enable Automatic Demo Recording", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "SourceTV:tv:3", + "Description": "If set, all games will be recorded as SourceTV demos", + "Keywords": "sourcetv,tv,tv_autorecord", + "FieldName": "tv_autorecord", + "InputType": "checkbox", + "ParamFieldName": "tv_autorecord", + "DefaultValue": "0", + "EnumValues": { + "False": "0", + "True": "1" + } + }, + { + "DisplayName": "SourceTV Viewer Limit", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "SourceTV:tv:3", + "Description": "Sets the maximum number of clients allowed to connect to the server's SourceTV. 0 = no SourceTV viewers are allowed, the game will only be recorded locally", + "Keywords": "max,spectators,clients,viewers,sourcetv,tv,tv_maxclients", + "FieldName": "tv_maxclients", + "InputType": "number", + "MinValue": "0", + "MaxValue": "255", + "ParamFieldName": "tv_maxclients", + "DefaultValue": "128", + "Placeholder": "128", + "Suffix": "viewers", + "EnumValues": {} + }, + { + "DisplayName": "Maximum SourceTV Bandwidth", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "SourceTV:tv:3", + "Description": "Sets the maximum SourceTV spectator bandwidth rate allowed. 0 = unlimited", + "Keywords": "maximum,bandwidth,rate,sourcetv,tv,tv_maxrate", + "FieldName": "tv_maxrate", + "InputType": "number", + "MinValue": "0", + "ParamFieldName": "tv_maxrate", + "DefaultValue": "8000", + "Placeholder": "8000", + "EnumValues": {} + }, + { + "DisplayName": "Metamod and SourceMod Management", + "Category": "Updates", + "Subcategory": "Metamod and SourceMod:build:3", + "Description": "Sets how to manage Metamod and SourceMod on the server. Branch and Build Versions must be set accordingly for installation. Update the server after changing this setting (unless \"Do nothing\" is selected)", + "Keywords": "install,metamod,sourcemod", + "FieldName": "InstallMod", + "InputType": "enum", + "ParamFieldName": "InstallMod", + "DefaultValue": "none", + "EnumValues": { + "none": "Do nothing (default)", + "false": "Deactivate mods", + "true": "Install and activate mods" + } + }, + { + "DisplayName": "Metamod Branch", + "Category": "Updates", + "Subcategory": "Metamod and SourceMod:build:3", + "Description": "Specifies the [Metamod](https://www.sourcemm.net/downloads.php) branch to install", + "Keywords": "metamod,branch", + "FieldName": "MetamodBranch", + "InputType": "enum", + "ParamFieldName": "MetamodBranch", + "DefaultValue": "1.11", + "EnumValues": { + "1.11": "Stable (1.11) (default)", + "1.12": "Development (1.12)" + } + }, + { + "DisplayName": "Metamod Build Version", + "Category": "Updates", + "Subcategory": "Metamod and SourceMod:build:3", + "Description": "Specifies the [Metamod build version](https://www.sourcemm.net/downloads.php) to install", + "Keywords": "metamod,build,version", + "FieldName": "MetamodBuild", + "InputType": "number", + "ParamFieldName": "MetamodBuild", + "DefaultValue": "1156", + "Placeholder": "1156", + "EnumValues": {} + }, + { + "DisplayName": "SourceMod Branch", + "Category": "Updates", + "Subcategory": "Metamod and SourceMod:build:3", + "Description": "Specifies the [SourceMod](https://www.sourcemod.net/downloads.php) branch to install", + "Keywords": "sourcemod,branch", + "FieldName": "SourceModBranch", + "InputType": "enum", + "ParamFieldName": "SourceModBranch", + "DefaultValue": "1.12", + "EnumValues": { + "1.11": "Old stable (1.11)", + "1.12": "Stable (1.12) (default)", + "1.13": "Development (1.13)" + } + }, + { + "DisplayName": "SourceMod Build Version", + "Category": "Updates", + "Subcategory": "Metamod and SourceMod:build:3", + "Description": "Specifies the [SourceMod build version](https://www.sourcemod.net/downloads.php) to install", + "Keywords": "sourcemod,build,version", + "FieldName": "SourceModBuild", + "InputType": "number", + "ParamFieldName": "SourceModBuild", + "DefaultValue": "7169", + "Placeholder": "7169", + "EnumValues": {} + } +] \ No newline at end of file diff --git a/fistful-of-fragsmetaconfig.json b/fistful-of-fragsmetaconfig.json new file mode 100644 index 000000000..2da709f3d --- /dev/null +++ b/fistful-of-fragsmetaconfig.json @@ -0,0 +1,8 @@ +[ + { + "ConfigFile": "fof/cfg/server.cfg", + "AutoMap": true, + "ConfigType": "template", + "ConfigFileTemplate": "fof/AMP_server.cfg" + } +] \ No newline at end of file diff --git a/fistful-of-frags-ports.json b/fistful-of-fragsports.json similarity index 99% rename from fistful-of-frags-ports.json rename to fistful-of-fragsports.json index ed33eac29..6e58d51d0 100644 --- a/fistful-of-frags-ports.json +++ b/fistful-of-fragsports.json @@ -20,4 +20,4 @@ "Name": "Client Port", "Description": "Port for client traffic" } -] +] \ No newline at end of file diff --git a/fistful-of-frags-server.cfg b/fistful-of-fragsserver.cfg similarity index 82% rename from fistful-of-frags-server.cfg rename to fistful-of-fragsserver.cfg index 15219427d..5362caa6b 100644 --- a/fistful-of-frags-server.cfg +++ b/fistful-of-fragsserver.cfg @@ -5,9 +5,11 @@ hostname "{{hostname}}" sv_tags "{{sv_tags}}" sv_steamgroup {{sv_steamgroup}} +fof_sv_motd_countdown {{fof_sv_motd_countdown}} sv_lan {{sv_lan}} sv_password "{{sv_password}}" rcon_password "{{rcon_password}}" +fof_sv_currentmode {{fof_sv_currentmode}} sv_region {{sv_region}} sv_visiblemaxplayers {{sv_visiblemaxplayers}} mp_allowspectators {{mp_allowspectators}} @@ -24,32 +26,42 @@ sv_minrate {{sv_minrate}} sv_maxrate {{sv_maxrate}} sv_minupdaterate {{sv_minupdaterate}} sv_maxupdaterate {{sv_maxupdaterate}} +decalfrequency {{decalfrequency}} sv_stats {{sv_stats}} mp_friendlyfire {{mp_friendlyfire}} +mp_flashlight {{mp_flashlight}} mp_footsteps {{mp_footsteps}} +mp_autocrosshair {{mp_autocrosshair}} mp_teamplay {{mp_teamplay}} sv_pausable {{sv_pausable}} sv_allow_wait_command {{sv_allow_wait_command}} sv_voiceenable {{sv_voiceenable}} sv_alltalk {{sv_alltalk}} +mp_fadetoblack {{mp_fadetoblack}} mp_forcerespawn {{mp_forcerespawn}} +mp_autoteambalance {{mp_autoteambalance}} +mp_teams_unbalance_limit {{mp_teams_unbalance_limit}} +mp_stalemate_enable {{mp_stalemate_enable}} +mp_stalemate_timelimit {{mp_stalemate_timelimit}} mp_timelimit {{mp_timelimit}} mp_fraglimit {{mp_fraglimit}} +mp_maxrounds {{mp_maxrounds}} +mp_winlimit {{mp_winlimit}} mp_forcecamera {{mp_forcecamera}} -fof_sv_currentmode {{fof_sv_currentmode}} fof_sv_maxteams {{fof_sv_maxteams}} fof_sv_bot_dynamicjoin {{fof_sv_bot_dynamicjoin}} fof_sv_bot_slotpct {{fof_sv_bot_slotpct}} -fof_sv_motd_countdown {{fof_sv_motd_countdown}} +fof_bot_skill {{fof_bot_skill}} fof_sv_maxidle_secs {{fof_sv_maxidle_secs}} fof_sv_obj_warmuptime {{fof_sv_obj_warmuptime}} fof_sv_dm_comp {{fof_sv_dm_comp}} fof_sv_dm_comp_points {{fof_sv_dm_comp_points}} fof_sv_shootout_custom {{fof_sv_shootout_custom}} -fof_bot_skill {{fof_bot_skill}} sv_alternateticks {{sv_alternateticks}} tv_autorecord {{tv_autorecord}} tv_maxclients {{tv_maxclients}} tv_maxrate {{tv_maxrate}} exec banned_ip.cfg exec banned_user.cfg +writeip +writeid diff --git a/fistful-of-fragsstart.json b/fistful-of-fragsstart.json new file mode 100644 index 000000000..270dfcef1 --- /dev/null +++ b/fistful-of-fragsstart.json @@ -0,0 +1,30 @@ +[ + { + "UpdateStageName": "Activate Metamod and SourceMod", + "UpdateSourcePlatform": "All", + "UpdateSource": "CreateFile", + "UpdateSourceData": "\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", + "UpdateSourceArgs": "{{$FullBaseDir}}fof/addons/metamod.vdf", + "OverwriteExistingFiles": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "Disable Metamod and SourceMod", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "Executable", + "UpdateSourceData": "cmd.exe", + "UpdateSourceArgs": "/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "false" + }, + { + "UpdateStageName": "Disable Metamod and SourceMod", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "Executable", + "UpdateSourceData": "/bin/bash", + "UpdateSourceArgs": "-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "false" + } +] \ No newline at end of file diff --git a/fistful-of-fragsupdates.json b/fistful-of-fragsupdates.json new file mode 100644 index 000000000..1696afc2a --- /dev/null +++ b/fistful-of-fragsupdates.json @@ -0,0 +1,122 @@ +[ + { + "UpdateStageName": "SteamCMD Server Download", + "UpdateSourcePlatform": "All", + "UpdateSource": "SteamCMD", + "UpdateSourceData": "295230", + "UpdateSourceArgs": "265630" + }, + { + "UpdateStageName": "Server.cfg Template File Download", + "UpdateSourcePlatform": "All", + "UpdateSource": "FetchURL", + "UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/fistful-of-fragsserver.cfg", + "UpdateSourceArgs": "AMP_server.cfg", + "UpdateSourceTarget": "{{$FullRootDir}}", + "OverwriteExistingFiles": true + }, + { + "UpdateStageName": "Metamod Download", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "FetchURL", + "UpdateSourceData": "https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-windows.zip", + "UpdateSourceTarget": "{{$FullBaseDir}}fof", + "UnzipUpdateSource": true, + "OverwriteExistingFiles": true, + "DeleteAfterExtract": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "Metamod Download", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "FetchURL", + "UpdateSourceData": "https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-linux.tar.gz", + "UpdateSourceTarget": "{{$FullBaseDir}}fof", + "UnzipUpdateSource": true, + "OverwriteExistingFiles": true, + "DeleteAfterExtract": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "SourceMod Download Directory Creation", + "UpdateSourcePlatform": "All", + "UpdateSource": "CreateDirectory", + "UpdateSourceArgs": "{{$FullBaseDir}}sm", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "SourceMod Download", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "FetchURL", + "UpdateSourceData": "https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-windows.zip", + "UpdateSourceTarget": "{{$FullBaseDir}}sm", + "UnzipUpdateSource": true, + "OverwriteExistingFiles": true, + "DeleteAfterExtract": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "SourceMod Download", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "FetchURL", + "UpdateSourceData": "https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-linux.tar.gz", + "UpdateSourceTarget": "{{$FullBaseDir}}sm", + "UnzipUpdateSource": true, + "OverwriteExistingFiles": true, + "DeleteAfterExtract": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "SourceMod Installation", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "Executable", + "UpdateSourceData": "powershell.exe", + "UpdateSourceArgs": "-NoProfile -Command \"Set-Location -Path 'fof/295230'; if (Test-Path 'fof/cfg/sourcemod') { Remove-Item -Path 'sm/cfg/sourcemod' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/configs') { Remove-Item -Path 'sm/addons/sourcemod/configs' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; if (Test-Path 'fof/addons/sourcemod/plugins') { Remove-Item -Path 'sm/addons/sourcemod/plugins' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null }; Copy-Item -Path 'sm/*' -Destination 'fof' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null; Remove-Item -Path 'sm' -Recurse -Force -ErrorAction SilentlyContinue | Out-Null\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": true + }, + { + "UpdateStageName": "SourceMod Installation", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "Executable", + "UpdateSourceData": "/bin/bash", + "UpdateSourceArgs": "-c \"cd fof/295230 && [ -d fof/cfg/sourcemod ] && rm -rf sm/cfg/sourcemod >/dev/null 2>&1; [ -d fof/addons/sourcemod/configs ] && rm -rf sm/addons/sourcemod/configs >/dev/null 2>&1; [ -d fof/addons/sourcemod/plugins ] && rm -rf sm/addons/sourcemod/plugins >/dev/null 2>&1; \\cp -rf sm/* fof/ >/dev/null 2>&1; rm -rf sm >/dev/null 2>&1\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": true + }, + { + "UpdateStageName": "Activate Metamod and SourceMod", + "UpdateSourcePlatform": "All", + "UpdateSource": "CreateFile", + "UpdateSourceData": "\"Plugin\"\n{\n\t\"file\"\t\"../fof/addons/metamod/bin/server\"\n}", + "UpdateSourceArgs": "{{$FullBaseDir}}fof/addons/metamod.vdf", + "OverwriteExistingFiles": true, + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true" + }, + { + "UpdateStageName": "Disable Metamod and SourceMod", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "Executable", + "UpdateSourceData": "cmd.exe", + "UpdateSourceArgs": "/C cd fof\\295230\\fof\\addons > NUL 2>&1 && del /Q /F metamod.vdf > NUL 2>&1 & exit /b 0", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "false" + }, + { + "UpdateStageName": "Disable Metamod and SourceMod", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "Executable", + "UpdateSourceData": "/bin/bash", + "UpdateSourceArgs": "-c \"cd fof/295230/fof/addons >/dev/null 2>&1 && rm -rf metamod.vdf >/dev/null 2>&1; exit 0\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "false" + } +] \ No newline at end of file From 37472571c11b1463314d342a27894492731e360e Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Sun, 8 Dec 2024 07:19:33 +1100 Subject: [PATCH 12/15] Update fistful-of-fragsconfig.json --- fistful-of-fragsconfig.json | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/fistful-of-fragsconfig.json b/fistful-of-fragsconfig.json index b02b58d41..81de9fad3 100644 --- a/fistful-of-fragsconfig.json +++ b/fistful-of-fragsconfig.json @@ -79,6 +79,21 @@ "True": "1" } }, + { + "DisplayName": "Game Server Login Token (GSLT)", + "Category": "Fistful of Frags:stadia_controller", + "Subcategory": "Server:dns:1", + "Description": "Sets the [Steam Game Server Login Token](https://steamcommunity.com/dev/managegameservers) for the server, to allow it to be listed in the server browser. Use app ID 265630 when generating the token", + "Keywords": "steam,server,login,token,gslt,sv_setsteamaccount", + "FieldName": "sv_setsteamaccount", + "InputType": "password", + "ParamFieldName": "sv_setsteamaccount", + "IncludeInCommandLine": true, + "SkipIfEmpty": true, + "DefaultValue": "", + "Placeholder": "6544F7E034119F113526E96474F559AH", + "EnumValues": {} + }, { "DisplayName": "Server Password", "Category": "Fistful of Frags:stadia_controller", @@ -903,7 +918,7 @@ } }, { - "DisplayName": "Bots Dynamic Join", + "DisplayName": "Enable Bots Dynamic Join", "Category": "Fistful of Frags:stadia_controller", "Subcategory": "Gameplay:joystick:2", "Description": "If set, the server will have bots join or leave automatically to fill slots", @@ -1177,4 +1192,4 @@ "Placeholder": "7169", "EnumValues": {} } -] \ No newline at end of file +] From 117832acb2690831e8b0a1b5d26287b8fb16c42c Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Fri, 20 Dec 2024 22:41:29 +1100 Subject: [PATCH 13/15] Update MM URL --- fistful-of-fragsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fistful-of-fragsconfig.json b/fistful-of-fragsconfig.json index 81de9fad3..6619c8fe0 100644 --- a/fistful-of-fragsconfig.json +++ b/fistful-of-fragsconfig.json @@ -1139,7 +1139,7 @@ "DisplayName": "Metamod Branch", "Category": "Updates", "Subcategory": "Metamod and SourceMod:build:3", - "Description": "Specifies the [Metamod](https://www.sourcemm.net/downloads.php) branch to install", + "Description": "Specifies the [Metamod](https://www.metamodsource.net/downloads.php) branch to install", "Keywords": "metamod,branch", "FieldName": "MetamodBranch", "InputType": "enum", @@ -1154,7 +1154,7 @@ "DisplayName": "Metamod Build Version", "Category": "Updates", "Subcategory": "Metamod and SourceMod:build:3", - "Description": "Specifies the [Metamod build version](https://www.sourcemm.net/downloads.php) to install", + "Description": "Specifies the [Metamod build version](https://www.metamodsource.net/downloads.php) to install", "Keywords": "metamod,build,version", "FieldName": "MetamodBuild", "InputType": "number", From 6435161a536bedfa34203aff177c60ea952fa8a2 Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Thu, 9 Jan 2025 11:10:32 +1100 Subject: [PATCH 14/15] MM & SM updates --- fistful-of-fragsupdates.json | 82 +++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/fistful-of-fragsupdates.json b/fistful-of-fragsupdates.json index 1696afc2a..d60a44999 100644 --- a/fistful-of-fragsupdates.json +++ b/fistful-of-fragsupdates.json @@ -15,29 +15,49 @@ "UpdateSourceTarget": "{{$FullRootDir}}", "OverwriteExistingFiles": true }, + { + "UpdateStageName": "Metamod Download", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "Executable", + "UpdateSourceData": "/bin/bash", + "UpdateSourceArgs": "-c \"MetamodBuild=\\\"{{MetamodBuild}}\\\" && MetamodBranch=\\\"{{MetamodBranch}}\\\" && if [[ -z \\\"$MetamodBuild\\\" ]]; then LatestMetamodFile=$(wget -qO- https://mms.alliedmods.net/mmsdrop/$MetamodBranch/mmsource-latest-linux) && wget -qO metamod.tar.gz https://mms.alliedmods.net/mmsdrop/$MetamodBranch/$LatestMetamodFile && echo \\\"Latest Metamod $MetamodBranch build downloaded\\\"; elif [[ ! \\\"$MetamodBuild\\\" =~ ^[0-9]+$ ]]; then echo \\\"Invalid Metamod build version format specified\\\" && exit 1; else wget -qO metamod.tar.gz https://mms.alliedmods.net/mmsdrop/$MetamodBranch/mmsource-$MetamodBranch.0-git$MetamodBuild-linux.tar.gz && echo \\\"Metamod $MetamodBranch build $MetamodBuild downloaded\\\"; fi\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false + }, { "UpdateStageName": "Metamod Download", "UpdateSourcePlatform": "Windows", - "UpdateSource": "FetchURL", - "UpdateSourceData": "https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-windows.zip", + "UpdateSource": "Executable", + "UpdateSourceData": "powershell.exe", + "UpdateSourceArgs": "-NoProfile -Command \"$ProgressPreference='SilentlyContinue'; $MetamodBuild='{{MetamodBuild}}'; $MetamodBranch='{{MetamodBranch}}'; if ([string]::IsNullOrWhiteSpace($MetamodBuild)) { $LatestMetamodFile=(Invoke-RestMethod -UseBasicParsing -Uri https://mms.alliedmods.net/mmsdrop/$MetamodBranch/mmsource-latest-windows); Invoke-WebRequest -UseBasicParsing -Uri https://mms.alliedmods.net/mmsdrop/$MetamodBranch/$LatestMetamodFile -OutFile 'metamod.zip'; if ($?) { Write-Output \\\"Latest Metamod $MetamodBranch build downloaded\\\"; } } elseif ($MetamodBuild -notmatch '^\\d+$') { Write-Output \\\"Invalid Metamod build version format specified\\\"; exit 1; } else { Invoke-WebRequest -UseBasicParsing -Uri https://mms.alliedmods.net/mmsdrop/$MetamodBranch/mmsource-$MetamodBranch.0-git$MetamodBuild-windows.zip -OutFile 'metamod.zip'; if ($?) { Write-Output \\\"Metamod $MetamodBranch build $MetamodBuild downloaded\\\"; } }\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false + }, + { + "UpdateStageName": "Metamod Extract", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "ExtractArchive", + "UpdateSourceData": "metamod.tar.gz", "UpdateSourceTarget": "{{$FullBaseDir}}fof", - "UnzipUpdateSource": true, "OverwriteExistingFiles": true, "DeleteAfterExtract": true, "UpdateSourceConditionSetting": "InstallMod", - "UpdateSourceConditionValue": "true" + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false }, { - "UpdateStageName": "Metamod Download", - "UpdateSourcePlatform": "Linux", - "UpdateSource": "FetchURL", - "UpdateSourceData": "https://mms.alliedmods.net/mmsdrop/{{MetamodBranch}}/mmsource-{{MetamodBranch}}.0-git{{MetamodBuild}}-linux.tar.gz", + "UpdateStageName": "Metamod Extract", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "ExtractArchive", + "UpdateSourceData": "metamod.zip", "UpdateSourceTarget": "{{$FullBaseDir}}fof", - "UnzipUpdateSource": true, "OverwriteExistingFiles": true, "DeleteAfterExtract": true, "UpdateSourceConditionSetting": "InstallMod", - "UpdateSourceConditionValue": "true" + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false }, { "UpdateStageName": "SourceMod Download Directory Creation", @@ -47,29 +67,49 @@ "UpdateSourceConditionSetting": "InstallMod", "UpdateSourceConditionValue": "true" }, + { + "UpdateStageName": "SourceMod Download", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "Executable", + "UpdateSourceData": "/bin/bash", + "UpdateSourceArgs": "-c \"SourceModBuild=\\\"{{SourceModBuild}}\\\" && SourceModBranch=\\\"{{SourceModBranch}}\\\" && if [[ -z \\\"$SourceModBuild\\\" ]]; then LatestSourceModFile=$(wget -qO- https://sm.alliedmods.net/smdrop/$SourceModBranch/sourcemod-latest-linux) && wget -qO sourcemod.tar.gz https://sm.alliedmods.net/smdrop/$SourceModBranch/$LatestSourceModFile && echo \\\"Latest SourceMod $SourceModBranch build downloaded\\\"; elif [[ ! \\\"$SourceModBuild\\\" =~ ^[0-9]+$ ]]; then echo \\\"Invalid SourceMod build version format specified\\\" && exit 1; else wget -qO sourcemod.tar.gz https://sm.alliedmods.net/smdrop/$SourceModBranch/sourcemod-$SourceModBranch.0-git$SourceModBuild-linux.tar.gz && echo \\\"SourceMod $SourceModBranch build $SourceModBuild downloaded\\\"; fi\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false + }, { "UpdateStageName": "SourceMod Download", "UpdateSourcePlatform": "Windows", - "UpdateSource": "FetchURL", - "UpdateSourceData": "https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-windows.zip", + "UpdateSource": "Executable", + "UpdateSourceData": "powershell.exe", + "UpdateSourceArgs": "-NoProfile -Command \"$ProgressPreference='SilentlyContinue'; $SourceModBuild='{{SourceModBuild}}'; $SourceModBranch='{{SourceModBranch}}'; if ([string]::IsNullOrWhiteSpace($SourceModBuild)) { $LatestSourceModFile=(Invoke-RestMethod -UseBasicParsing -Uri https://sm.alliedmods.net/smdrop/$SourceModBranch/sourcemod-latest-windows); Invoke-WebRequest -UseBasicParsing -Uri https://sm.alliedmods.net/smdrop/$SourceModBranch/$LatestSourceModFile -OutFile 'sourcemod.zip'; if ($?) { Write-Output \\\"Latest SourceMod $SourceModBranch build downloaded\\\"; } } elseif ($SourceModBuild -notmatch '^\\d+$') { Write-Output \\\"Invalid SourceMod build version format specified\\\"; exit 1; } else { Invoke-WebRequest -UseBasicParsing -Uri https://sm.alliedmods.net/smdrop/$SourceModBranch/sourcemod-$SourceModBranch.0-git$SourceModBuild-windows.zip -OutFile 'sourcemod.zip'; if ($?) { Write-Output \\\"SourceMod $SourceModBranch build $SourceModBuild downloaded\\\"; } }\"", + "UpdateSourceConditionSetting": "InstallMod", + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false + }, + { + "UpdateStageName": "SourceMod Extract", + "UpdateSourcePlatform": "Linux", + "UpdateSource": "ExtractArchive", + "UpdateSourceData": "sourcemod.tar.gz", "UpdateSourceTarget": "{{$FullBaseDir}}sm", - "UnzipUpdateSource": true, "OverwriteExistingFiles": true, "DeleteAfterExtract": true, "UpdateSourceConditionSetting": "InstallMod", - "UpdateSourceConditionValue": "true" + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false }, { - "UpdateStageName": "SourceMod Download", - "UpdateSourcePlatform": "Linux", - "UpdateSource": "FetchURL", - "UpdateSourceData": "https://sm.alliedmods.net/smdrop/{{SourceModBranch}}/sourcemod-{{SourceModBranch}}.0-git{{SourceModBuild}}-linux.tar.gz", + "UpdateStageName": "SourceMod Extract", + "UpdateSourcePlatform": "Windows", + "UpdateSource": "ExtractArchive", + "UpdateSourceData": "sourcemod.zip", "UpdateSourceTarget": "{{$FullBaseDir}}sm", - "UnzipUpdateSource": true, "OverwriteExistingFiles": true, "DeleteAfterExtract": true, "UpdateSourceConditionSetting": "InstallMod", - "UpdateSourceConditionValue": "true" + "UpdateSourceConditionValue": "true", + "SkipOnFailure": false }, { "UpdateStageName": "SourceMod Installation", @@ -119,4 +159,4 @@ "UpdateSourceConditionSetting": "InstallMod", "UpdateSourceConditionValue": "false" } -] \ No newline at end of file +] From c27aab5254a2daa22fcc3366a795c2b2d788be6e Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Thu, 9 Jan 2025 11:13:26 +1100 Subject: [PATCH 15/15] MM & SM updates --- fistful-of-fragsconfig.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fistful-of-fragsconfig.json b/fistful-of-fragsconfig.json index 6619c8fe0..ad70b91a2 100644 --- a/fistful-of-fragsconfig.json +++ b/fistful-of-fragsconfig.json @@ -1147,19 +1147,20 @@ "DefaultValue": "1.11", "EnumValues": { "1.11": "Stable (1.11) (default)", - "1.12": "Development (1.12)" + "1.12": "Development (1.12)", + "2.0": "Development (2.0)" } }, { "DisplayName": "Metamod Build Version", "Category": "Updates", "Subcategory": "Metamod and SourceMod:build:3", - "Description": "Specifies the [Metamod build version](https://www.metamodsource.net/downloads.php) to install", + "Description": "Specifies the [Metamod build version](https://www.metamodsource.net/downloads.php) to install. Blank = latest build for the branch specified under Metamod Branch", "Keywords": "metamod,build,version", "FieldName": "MetamodBuild", "InputType": "number", "ParamFieldName": "MetamodBuild", - "DefaultValue": "1156", + "DefaultValue": "", "Placeholder": "1156", "EnumValues": {} }, @@ -1183,13 +1184,13 @@ "DisplayName": "SourceMod Build Version", "Category": "Updates", "Subcategory": "Metamod and SourceMod:build:3", - "Description": "Specifies the [SourceMod build version](https://www.sourcemod.net/downloads.php) to install", + "Description": "Specifies the [SourceMod build version](https://www.sourcemod.net/downloads.php) to install. Blank = latest build for the branch specified under SourceMod Branch", "Keywords": "sourcemod,build,version", "FieldName": "SourceModBuild", "InputType": "number", "ParamFieldName": "SourceModBuild", - "DefaultValue": "7169", - "Placeholder": "7169", + "DefaultValue": "", + "Placeholder": "7176", "EnumValues": {} } ]