Add Quake III Arena (#439)

This commit is contained in:
Greelan 2023-08-13 16:21:19 +10:00 committed by GitHub
parent 34fd71a348
commit 2192986408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 975 additions and 0 deletions

101
quake3-arena.kvp Normal file
View File

@ -0,0 +1,101 @@
Meta.DisplayName=Quake III Arena
Meta.Description=Quake III Arena Dedicated Server
Meta.OS=Windows, Linux
Meta.AarchSupport=NotSupported
Meta.Arch=x86_64
Meta.Author=Greelan
Meta.URL=https://www.idsoftware.com/en-gb#section-games
Meta.DisplayImageSource=steam:2200
Meta.EndpointURIFormat=steam://connect/{0}
Meta.ConfigManifest=quake3-arenaconfig.json
Meta.MetaConfigManifest=quake3-arenametaconfig.json
Meta.ConfigRoot=quake3-arena.kvp
Meta.MinAMPVersion=2.4.6.0
Meta.SpecificDockerImage=
Meta.DockerRequired=False
Meta.DockerBaseReadOnly=False
Meta.ContainerPolicy=Supported
Meta.ContainerPolicyReason=
Meta.ExtraSetupStepsURI=
Meta.Prerequsites=[]
Meta.ExtraContainerPackages=[]
Meta.ConfigReleaseState=NotSpecified
Meta.NoCommercialUsage=False
Meta.ConfigVersion=0.0.0.0
Meta.ReleaseNotes=
Meta.BreakingReleaseNotes=
App.DisplayName=Quake III Arena
App.RootDir=./quake3-arena/
App.BaseDirectory=./quake3-arena/server/
App.SteamWorkshopDownloadLocation=
App.ExecutableWin=server\ioq3ded.x86_64.exe
App.ExecutableLinux=server/ioq3ded.x86_64
App.WorkingDir=server
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} +set fs_homepath "{{$FullBaseDir}}" +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +{{map_type}} {{map_name}} +set rconpassword "{{$RemoteAdminPassword}}" {{$FormattedArgs}} +exec base.cfg
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"2200"}
App.CommandLineParameterFormat=+set {0} "{1}"
App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE
App.ExitTimeout=30
App.ExitString=stop
App.ExitFile=lock
App.HasWriteableConsole=True
App.HasReadableConsole=True
App.SupportsLiveSettingsChanges=False
App.LiveSettingChangeCommandFormat=set {0} "{1}"
App.ApplicationIPBinding=0.0.0.0
App.Ports=[{"Protocol":"Both","Port":27960,"Name":"Server Port","Description":"Port for game and RCON traffic","Ref":"ServerPort"}]
App.AdminPortRef=ServerPort
App.PrimaryApplicationPortRef=ServerPort
App.UniversalSleepApplicationUDPPortRef=ServerPort
App.UniversalSleepSteamQueryPortRef=0
App.MaxUsers=8
App.UseRandomAdminPassword=True
App.PersistRandomPassword=True
App.RemoteAdminPassword=
App.AdminMethod=QuakeRCON
App.AdminLoginTransform=None
App.LoginTransformPrefix=
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5
App.RCONHeartbeatMinutes=0
App.RCONHeartbeatCommand=ping
App.TelnetLoginFormat={0}
App.UpdateSources=@IncludeJson[quake3-arenaupdates.json]
App.PreStartStages=[]
App.ForceUpdate=False
App.ForceUpdateReason=
App.Compatibility=None
App.SteamUpdateAnonymousLogin=False
App.SteamForceLoginPrompt=True
App.RapidStartup=False
App.MonitorChildProcess=False
App.DumpFullChildProcessTree=False
App.MonitorChildProcessWaitMs=100
App.MonitorChildProcessName=
App.SupportsUniversalSleep=False
App.WakeupMode=Any
App.ApplicationReadyMode=RegexMatch
App.TemplateMatchRegex={{(\$?[\w]+)}}
Console.FilterMatchRegex=
Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$
Console.AppReadyRegex=^AAS initialized\.$
Console.UserJoinRegex=^$
Console.UserLeaveRegex=^$
Console.UserChatRegex=^$
Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$
Console.MetricsRegex=
Console.SuppressLogAtStart=False
Console.ActivateLogRegex=
Console.UserActions={}
Limits.SleepMode=True
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5
Limits.SleepStartThresholdSeconds=25

42
quake3-arenabase.cfg Normal file
View File

@ -0,0 +1,42 @@
// This file is controlled by AMP
// Use server.cfg for any other desired settings
exec server.cfg
seta sv_hostname "AMP Powered Quake III Arena Server"
seta g_motd "Welcome to Quake III Arena!"
seta sv_maxclients "16"
seta g_needpass "0"
seta g_password ""
seta sv_privatePassword ""
seta sv_pure "1"
seta sv_cheats "0"
seta g_gametype "0"
seta sv_maxclients "8"
seta g_maxGameClients "0"
seta sv_privateClients "0"
seta sv_allowDownload "0"
seta sv_fps "20"
seta sv_minRate "0"
seta sv_maxRate "0"
seta sv_minPing "0"
seta sv_maxPing "0"
seta bot_enable "1"
seta g_spskill "4"
seta bot_minplayers "5"
seta bot_nochat "1"
seta g_friendlyFire "1"
seta fraglimit "0"
seta timelimit "0"
seta capturelimit "8"
seta g_teamAutoJoin "0"
seta g_teamForceBalance "0"
seta g_forcerespawn "0"
seta g_allowVote "1"
seta g_quadfactor "3"
seta g_weaponrespawn "5"
seta g_inactivity "0"
seta g_syncronousclients "0"
seta sv_floodProtect "1"
seta logfile "3"
seta g_log "server.log"

657
quake3-arenaconfig.json Normal file
View File

@ -0,0 +1,657 @@
[
{
"DisplayName":"Enable Log File",
"Category":"Q3A Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"logfile",
"InputType":"number",
"Hidden":true,
"ParamFieldName":"logfile",
"IncludeInCommandLine":false,
"DefaultValue":"3",
"EnumValues":{}
},
{
"DisplayName":"Log File Name",
"Category":"Q3A Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"g_log",
"InputType":"text",
"Hidden":true,
"ParamFieldName":"g_log",
"IncludeInCommandLine":false,
"DefaultValue":"server.log",
"EnumValues":{}
},
{
"DisplayName":"Server Name",
"Category":"Q3A Server Settings",
"Description":"Sets the name of the server that appears in the server list",
"Keywords":"server,name,sv_hostname",
"FieldName":"sv_hostname",
"InputType":"text",
"ParamFieldName":"sv_hostname",
"IncludeInCommandLine":false,
"DefaultValue":"AMP Powered Quake III Arena Server",
"EnumValues":{}
},
{
"DisplayName":"Message Of The Day",
"Category":"Q3A Server Settings",
"Description":"Sets the message of the day (MOTD) displayed when players join",
"Keywords":"message,motd,g_motd",
"FieldName":"g_motd",
"InputType":"text",
"ParamFieldName":"g_motd",
"IncludeInCommandLine":false,
"DefaultValue":"Welcome to Quake III Arena!",
"EnumValues":{}
},
{
"DisplayName":"Make Server Public",
"Category":"Q3A Server Settings",
"Description":"If enabled, the server will be visible publicly. Otherwise it will only be accessible from the LAN",
"Keywords":"public,visible,dedicated",
"FieldName":"dedicated",
"InputType":"checkbox",
"ParamFieldName":"dedicated",
"IncludeInCommandLine":true,
"DefaultValue":"2",
"EnumValues":{
"False":"1",
"True":"2"
}
},
{
"DisplayName":"Require Server Password",
"Category":"Q3A Server Settings",
"Description":"If enabled, the server will notify clients that it requires a password to connect. The password must be set under Server Password",
"Keywords":"server,password,g_needpass",
"FieldName":"g_needpass",
"InputType":"checkbox",
"ParamFieldName":"g_needpass",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Server Password",
"Category":"Q3A Server Settings",
"Description":"Sets the password required to connect to the server. Default is no password. Require Server Password must also be enabled",
"Keywords":"server,password,g_password",
"FieldName":"g_password",
"InputType":"password",
"ParamFieldName":"g_password",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"RCON Password",
"Category":"Q3A Server Settings",
"Description":"See the Security and Privacy menu for configurable options for the server's RCON",
"Keywords":"rcon,password,rconpassword",
"FieldName":"$RemoteAdminPassword",
"InputType":"hidden",
"ParamFieldName":"rconpassword",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Private Client Password",
"Category":"Q3A Server Settings",
"Description":"Sets the password for private clients, if any, to connect to the server. Specify the required number of private clients under Private Client Number. Server Password should not be set",
"Keywords":"private,client,password,sv_privatepassword",
"FieldName":"sv_privatePassword",
"InputType":"password",
"ParamFieldName":"sv_privatePassword",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Enable Pure Server",
"Category":"Q3A Server Settings",
"Description":"If set, only unmodified pak files that are also installed on the server can be used by clients, as a hacking and cheat protection",
"Keywords":"pure,server,cheat,hack,integrity,sv_pure",
"FieldName":"sv_pure",
"InputType":"checkbox",
"ParamFieldName":"sv_pure",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Allow Cheats",
"Category":"Q3A Server Settings",
"Description":"If set, cheats will be allowed on the server",
"Keywords":"allow,cheat,hack,integrity,sv_cheats",
"FieldName":"sv_cheats",
"InputType":"checkbox",
"ParamFieldName":"sv_cheats",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Initial Game Type",
"Category":"Q3A Server Settings",
"Description":"Sets the game type to start the server with",
"Keywords":"game,type,g_gametype",
"FieldName":"g_gametype",
"InputType":"enum",
"ParamFieldName":"g_gametype",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"0":"Deathmatch / Free For All (default)",
"1":"Tourney / One on One",
"3":"Team Deathmatch",
"4":"Capture The Flag"
}
},
{
"DisplayName":"Initial Map",
"Category":"Q3A Server Settings",
"Description":"Sets the map to start the server with. If \"Custom\" is selected, Custom Initial Map must also be specified. This setting will be overridden if map rotation is configured in baseq3/server.cfg",
"Keywords":"map",
"FieldName":"map_name",
"InputType":"enum",
"ParamFieldName":"map_name",
"IncludeInCommandLine":false,
"DefaultValue":"q3dm0",
"EnumValues":{
"q3dm0":"Introduction (default) (Tier 0)",
"q3dm1":"Arena Gate (Tier 1, Level 1, DM, TDM)",
"q3dm2":"House of Pain (Tier 1, Level 2, DM, TDM)",
"q3dm3":"Arena of Death (Tier 1, Level 3, DM, TDM)",
"q3tourney1":"Powerstation (Tier 1, Tourney)",
"q3dm4":"The Place of Many Deaths (Tier 2, Level 1, DM, TDM)",
"q3dm5":"The Forgotten Place (Tier 2, Level 2, DM, TDM)",
"q3dm6":"The Camping Grounds (Tier 2, Level 3, DM, TDM)",
"q3tourney2":"The Proving Grounds (Tier 2, Tourney)",
"q3dm7":"Temple of Retribution (Tier 3, Level 1, DM, TDM)",
"q3dm8":"Brimstone Abbey (Tier 3, Level 2, DM, TDM)",
"q3dm9":"Hero's Keep (Tier 3, Level 3, DM, TDM)",
"q3tourney3":"Hell's Gate (Tier 3, Tourney)",
"q3dm10":"The Nameless Place (Tier 4, Level 1, DM, TDM)",
"q3dm11":"Deva Statio (Tier 4, Level 2, DM, TDM)",
"q3dm12":"The Dredwerkz (Tier 4, Level 3, DM, TDM)",
"q3tourney4":"Vertical Vengeance (Tier 4, Tourney)",
"q3dm13":"Lost World (Tier 5, Level 1, DM, TDM)",
"q3dm14":"Grim Dungeons (Tier 5, Level 2, DM, TDM)",
"q3dm15":"Demon Keep (Tier 5, Level 3, DM, TDM)",
"q3tourney5":"Fatal Instinct (Tier 5, Tourney)",
"q3dm16":"Bouncy Map (Tier 6, Level 1, DM, TDM)",
"q3dm17":"The Longest Yard (Tier 6, Level 2, DM, TDM)",
"q3dm18":"Space Chamber (Tier 6, Level 3, DM, TDM)",
"q3dm19":"Apocalypse Void (Tier 6, Level 4, DM, TDM)",
"q3tourney6":"The Very End of You (Tier 7, Tourney)",
"q3ctf1":"Dueling Keeps (Level 1, CTF)",
"q3ctf2":"Troubled Waters (Level 2, CTF)",
"q3ctf3":"The Stronghold (Level 3, CTF)",
"q3ctf4":"Space CTF (Level 4, CTF)",
"q3tourney6_ctf":"Across Space (Tier 7, Tourney, Level 5, CTF)",
"pro_q3dm6":"Pro: The Camping Grounds (Tier 2, Level 3, DM, TDM)",
"pro_q3dm13":"Pro: Lost World (Tier 5, Level 1, DM, TDM)",
"pro_q3tourney2":"Pro: The Proving Grounds (Tier 2, Tourney)",
"pro_q3tourney4":"Pro: Vertical Vengeance (Tier 4, Tourney)",
"{{CustomMap}}":"Custom"
}
},
{
"DisplayName":"Custom Initial Map",
"Category":"Q3A Server Settings",
"Description":"Sets a custom map to use for the Initial Map, if \"Custom\" is selected",
"Keywords":"custom,map",
"FieldName":"CustomMap",
"InputType":"text",
"ParamFieldName":"CustomMap",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Initial Map Type",
"Category":"Q3A Server Settings",
"Description":"Sets whether the Initial Map allows cheats or not. Allow Cheats must also be enabled to use cheats",
"Keywords":"initial,map,type,devmap,cheats",
"FieldName":"map_type",
"InputType":"enum",
"ParamFieldName":"map_type",
"IncludeInCommandLine":false,
"DefaultValue":"map",
"EnumValues":{
"map":"No cheats (default)",
"devmap":"Allow cheats"
}
},
{
"DisplayName":"Client Limit",
"Category":"Q3A Server Settings",
"Description":"Sets the maximum number of players and spectators allowed on the server at one time",
"Keywords":"max,maximum,players,spectators,clients,limit,sv_maxclients",
"FieldName":"$MaxUsers",
"InputType":"number",
"MinValue":"1",
"MaxValue":"32",
"ParamFieldName":"sv_maxclients",
"IncludeInCommandLine":false,
"DefaultValue":"8",
"Placeholder":"8",
"Suffix":"clients",
"EnumValues":{}
},
{
"DisplayName":"Game Player Limit",
"Category":"Q3A Server Settings",
"Description":"Sets the maximum number of players (out of the Client Limit) that are able to join the game, while the rest will be spectators. 0 = disabled",
"Keywords":"max,maximum,game,players,limit,g_maxgameclients",
"FieldName":"g_maxGameClients",
"InputType":"number",
"MinValue":"0",
"MaxValue":"32",
"ParamFieldName":"g_maxGameClients",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"players",
"EnumValues":{}
},
{
"DisplayName":"Private Client Number",
"Category":"Q3A Server Settings",
"Description":"Sets the number of slots (out of the Client Limit) reserved for private players on a public server. 0 = disabled. Private Client Password must also be set",
"Keywords":"sv_privateClients",
"FieldName":"sv_privateClients",
"InputType":"number",
"MinValue":"0",
"MaxValue":"32",
"ParamFieldName":"sv_privateClients",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"private players",
"EnumValues":{}
},
{
"DisplayName":"Allow Download From Server",
"Category":"Q3A Server Settings",
"Description":"If set, clients will be allowed to download content (maps, models, etc) from the server",
"Keywords":"allow,download,content,map,model,sv_allowdownload",
"FieldName":"sv_allowDownload",
"InputType":"checkbox",
"ParamFieldName":"sv_allowDownload",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Server FPS",
"Category":"Q3A Server Settings",
"Description":"Sets the maximum frames per second (FPS) that the server sends to clients",
"Keywords":"frames,second,fps,sv_fps",
"FieldName":"sv_fps",
"InputType":"number",
"ParamFieldName":"sv_fps",
"IncludeInCommandLine":false,
"DefaultValue":"20",
"Placeholder":"20",
"Suffix":"frames/second",
"EnumValues":{}
},
{
"DisplayName":"Server Memory Allocation",
"Category":"Q3A Server Settings",
"Description":"Sets the amount of memory allocated for map and item loading",
"Keywords":"ram,memory,com_hunkmegs",
"FieldName":"com_hunkMegs",
"InputType":"number",
"ParamFieldName":"com_hunkMegs",
"IncludeInCommandLine":true,
"DefaultValue":"128",
"Placeholder":"128",
"Suffix":"MB",
"EnumValues":{}
},
{
"DisplayName":"Minimum Client Rate",
"Category":"Q3A Server Settings",
"Description":"Sets the minimum allowable rate a client may have set when connected to the server. 0 = no minimum (default)",
"Keywords":"minimum,bandwidth,rate,sv_minrate",
"FieldName":"sv_minRate",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"sv_minRate",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"bytes/second",
"EnumValues":{}
},
{
"DisplayName":"Maximum Client Rate",
"Category":"Q3A Server Settings",
"Description":"Sets the maximum allowable rate a client may have set when connected to the server. 0 = no limit (default). Otherwise recommended to be 8000 - 10000 if slower clients are having issues",
"Keywords":"maximum,bandwidth,rate,sv_maxrate",
"FieldName":"sv_maxRate",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"sv_maxRate",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"bytes/second",
"EnumValues":{}
},
{
"DisplayName":"Minimum Client Ping",
"Category":"Q3A Server Settings",
"Description":"Sets the minimum ping clients can have on the server. 0 = disabled",
"Keywords":"minimum,ping,sv_minPing",
"FieldName":"sv_minPing",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"sv_minPing",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Maximum Client Ping",
"Category":"Q3A Server Settings",
"Description":"Sets the maximum ping clients can have on the server. 0 = disabled",
"Keywords":"maximum,ping,sv_maxPing",
"FieldName":"sv_maxPing",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"sv_maxPing",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Additional Console Variables",
"Category":"Q3A Server Settings",
"Description":"Additional console variables that are not otherwise set by AMP can be specified in baseq3/server.cfg",
"Keywords":"custom,server,variables,cvars,convars,parameters",
"FieldName":"CustomConVars",
"InputType":"hidden",
"ParamFieldName":"CustomConVars",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Enable Bots",
"Category":"Q3A Gameplay Settings",
"Description":"If set, bots will be enabled on the server",
"Keywords":"enable,bots,bot_enable",
"FieldName":"bot_enable",
"InputType":"checkbox",
"ParamFieldName":"bot_enable",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Difficulty Level",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the default difficulty level (skill level of bots) on the server",
"Keywords":"bot,skill,level,difficulty,g_spskill",
"FieldName":"g_spskill",
"InputType":"enum",
"ParamFieldName":"g_spskill",
"IncludeInCommandLine":false,
"DefaultValue":"4",
"Placeholder":"4",
"EnumValues":{
"1":"I Can Win",
"2":"Bring It On",
"3":"Hurt Me Plenty",
"4":"Hardcore",
"5":"Nightmare"
}
},
{
"DisplayName":"Bot Minimum Players",
"Category":"Q3A Gameplay Settings",
"Description":"Bots will added to or removed from the server to ensure that the number of players on the server meets the minimum set (subject to client/player limits)",
"Keywords":"bot,minimum,players,bot_minplayers",
"FieldName":"bot_minplayers",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"bot_minplayers",
"IncludeInCommandLine":false,
"DefaultValue":"5",
"Placeholder":"5",
"EnumValues":{}
},
{
"DisplayName":"Disable Bot Chat",
"Category":"Q3A Gameplay Settings",
"Description":"If set, bots will be silenced",
"Keywords":"bot,disable,chat,mute,silence,bot_nochat",
"FieldName":"bot_nochat",
"InputType":"checkbox",
"ParamFieldName":"bot_nochat",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Enable Friendly Fire",
"Category":"Q3A Gameplay Settings",
"Description":"If enabled, friendly fire will be allowed, so players can damage their own teammates. Standard defaults: TDM - true, CTF - false. No effect for FFA and Tourney game types",
"Keywords":"friendly,fire,g_friendlyfire",
"FieldName":"g_friendlyFire",
"InputType":"checkbox",
"ParamFieldName":"g_friendlyFire",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Frag Limit",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the number of frags (or kills) that must be reached before a game ends and the next game starts. 0 = no frag limit. Standard defaults: FFA - 15, TDM - 25, CTF - 0",
"Keywords":"frag,limit,fraglimit",
"FieldName":"fraglimit",
"InputType":"number",
"ParamFieldName":"fraglimit",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"frags",
"EnumValues":{}
},
{
"DisplayName":"Time Limit",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the game time limit, after which a game ends and the next game starts. 0 = no time limit. Standard defaults: FFA - 10, TDM - 15, CTF - 30",
"Keywords":"time,limit,timelimit",
"FieldName":"timelimit",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"timelimit",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"minutes",
"EnumValues":{}
},
{
"DisplayName":"Capture Limit",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the number of flags that must be captured for the CTF game type before a game ends and the next game starts",
"Keywords":"capture,limit,ctf,flag,capturelimit",
"FieldName":"capturelimit",
"InputType":"number",
"ParamFieldName":"capturelimit",
"IncludeInCommandLine":false,
"DefaultValue":"8",
"Placeholder":"8",
"Suffix":"flags",
"EnumValues":{}
},
{
"DisplayName":"Enable Auto Team Joining",
"Category":"Q3A Gameplay Settings",
"Description":"If set, a new player will automatically join a team when connecting to the server (TDM or CTF game types). Otherwise they will go into spectator mode",
"Keywords":"team,auto,join,joining,spectator,g_teamautojoin",
"FieldName":"g_teamAutoJoin",
"InputType":"checkbox",
"ParamFieldName":"g_teamAutoJoin",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Enable Forced Team Balancing",
"Category":"Q3A Gameplay Settings",
"Description":"If set, forces a new player onto the smallest or losing team (TDM or CTF game types). Otherwise, the player can select freely which team to join. Standard defaults: TDM - true, CTF - false",
"Keywords":"team,force,balance,balancing,selection,g_teamforcebalance",
"FieldName":"g_teamForceBalance",
"InputType":"checkbox",
"ParamFieldName":"g_teamForceBalance",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Respawn Time Period",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the respawn time period. 0 = no forced respawn",
"Keywords":"force,respawn,time,period,manual,g_forcerespawn",
"FieldName":"g_forcerespawn",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"g_forcerespawn",
"IncludeInCommandLine":false,
"DefaultValue":"10",
"Placeholder":"10",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Allow Voting",
"Category":"Q3A Gameplay Settings",
"Description":"If set, connected players can call for and vote on changes including: map, map restart, kick, and game type",
"Keywords":"vote,voting,g_allowvote",
"FieldName":"g_allowVote",
"InputType":"checkbox",
"ParamFieldName":"g_allowVote",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Quad Damage Powerup Multiple",
"Category":"Q3A Gameplay Settings",
"Description":"Sets multiples of damage caused by the quad damage powerup. 3 = default, 1 = no quad damage powerup. Decimals may be used",
"Keywords":"quad,damage,power,multiple,g_quadfactor",
"FieldName":"g_quadfactor",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"g_quadfactor",
"IncludeInCommandLine":false,
"DefaultValue":"3",
"Placeholder":"3",
"EnumValues":{}
},
{
"DisplayName":"Weapon Respawn Time Period",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the time period between when a weapon is picked up and when it respawns. Only recommended to be changed from default (5) in FFA servers with a large number of players, in which case it can be lowered slightly. Otherwise not recommended to be modified or set to 0 (weapons stay)",
"Keywords":"weapon,respawn,time,available,g_weaponrespawn",
"FieldName":"g_weaponrespawn",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"g_weaponrespawn",
"IncludeInCommandLine":false,
"DefaultValue":"5",
"Placeholder":"5",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Inactivity Kick Time",
"Category":"Q3A Gameplay Settings",
"Description":"Sets the time period after which inactive players will be kicked from the server. 0 = disabled",
"Keywords":"inactive,afk,idle,kick,g_inactivity",
"FieldName":"g_inactivity",
"InputType":"number",
"MinValue":"0",
"ParamFieldName":"g_inactivity",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Enable Synchronous Clients",
"Category":"Q3A Gameplay Settings",
"Description":"If set, all clients movements are synced to allow demo recording. Recommended to keep off to allow smoother play",
"Keywords":"synchronous,clients,demo,recording,g_syncronousclients",
"FieldName":"g_syncronousclients",
"InputType":"checkbox",
"ParamFieldName":"g_syncronousclients",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Enable Flood Protection",
"Category":"Q3A Gameplay Settings",
"Description":"If set, the server will be protected from being flooded by players via chat",
"Keywords":"flood,protect,protection,sv_floodprotect",
"FieldName":"sv_floodProtect",
"InputType":"checkbox",
"ParamFieldName":"sv_floodProtect",
"IncludeInCommandLine":false,
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
}
]

View File

@ -0,0 +1,30 @@
[
{
"ConfigFile":"baseq3/base.cfg",
"AutoMap":true,
"ConfigType":"kvp",
"ConfigFormat":"set {0} \"{1}\"",
"ConfigFormatRegex":"^set (?<key>.+?) \"?(?<value>.*?)\"?$"
},
{
"ConfigFile":"baseq3/base.cfg",
"AutoMap":true,
"ConfigType":"kvp",
"ConfigFormat":"seta {0} \"{1}\"",
"ConfigFormatRegex":"^seta (?<key>.+?) \"?(?<value>.*?)\"?$"
},
{
"ConfigFile":"baseq3/server.cfg",
"AutoMap":true,
"ConfigType":"kvp",
"ConfigFormat":"set {0} \"{1}\"",
"ConfigFormatRegex":"^set (?<key>.+?) \"?(?<value>.*?)\"?$"
},
{
"ConfigFile":"baseq3/server.cfg",
"AutoMap":true,
"ConfigType":"kvp",
"ConfigFormat":"seta {0} \"{1}\"",
"ConfigFormatRegex":"^seta (?<key>.+?) \"?(?<value>.*?)\"?$"
}
]

45
quake3-arenaserver.cfg Normal file
View File

@ -0,0 +1,45 @@
// This file can be used to set desired settings
// not otherwise set by AMP, including map rotation
// Map rotation
// DM/FFA rotation (example)
set m1 "map q3dm1; set nextmap vstr m2"
set m2 "map q3dm2; set nextmap vstr m3"
set m3 "map q3dm3; set nextmap vstr m4"
set m4 "map q3dm4; set nextmap vstr m5"
set m5 "map q3dm5; set nextmap vstr m6"
set m6 "map q3dm6; set nextmap vstr m7"
set m7 "map q3dm7; set nextmap vstr m8"
set m8 "map q3dm8; set nextmap vstr m9"
set m9 "map q3dm9; set nextmap vstr m10"
set m10 "map q3dm10; set nextmap vstr m1"
vstr m1
// CTF rotation (example)
//set m1 "map q3ctf1; set nextmap vstr m2"
//set m2 "map q3ctf2; set nextmap vstr m3"
//set m3 "map q3ctf3; set nextmap vstr m4"
//set m4 "map q3ctf4; set nextmap vstr m1"
//vstr m1
// Manual adding of bots. Syntax:
// addbot name [skill] [team] [delay]
//addbot doom 4 blue 10
//addbot bones 4 blue 10
//addbot slash 4 blue 10
//addbot orbb 4 red 10
//addbot major 4 red 10
//addbot hunter 4 red 10
//addbot bitterman 4 red 10
//addbot keel 4 red 10
// Miscellaneous
set vm_game "2"
set vm_cgame "2"
set vm_ui "2"
seta snaps "40"
seta cl_maxpackets "40"
seta cl_packetdup "1"

100
quake3-arenaupdates.json Normal file
View File

@ -0,0 +1,100 @@
[
{
"UpdateStageName":"Server Download",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://files.ioquake3.org/Windows.zip",
"UpdateSourceTarget":"{{$FullBaseDir}}",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"Server Download",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://files.ioquake3.org/Linux.zip",
"UpdateSourceTarget":"{{$FullBaseDir}}",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"Server Files Extract",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"Executable",
"UpdateSourceData":"cmd.exe",
"UpdateSourceArgs":"/C cd quake3-arena\\server\\ && tar -xf release-mingw64-x86_64.zip && rm release-mingw64-x86_64.zip"
},
{
"UpdateStageName":"Server Files Extract",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c 'cd ./quake3-arena/server/ && unzip -ao release-linux-x86_64.zip && rm -f release-linux-x86_64.zip && chmod +x ioq3ded.x86_64'"
},
{
"UpdateStageName":"SteamCMD Game Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"2200",
"UpdateSourceTarget":"{{$FullRootDir}}client",
"ForceDownloadPlatform":"Windows"
},
{
"UpdateStageName":"Client File Copy",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"Executable",
"UpdateSourceData":"cmd.exe",
"UpdateSourceArgs":"/C xcopy /E /Y /I quake3-arena\\client\\baseq3\\pak0.pk3 quake3-arena\\server\\baseq3\\ && rmdir /Q /S quake3-arena\\client\\"
},
{
"UpdateStageName":"Client File Copy",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c '\\cp -rf ./quake3-arena/client/baseq3/pak0.pk3 ./quake3-arena/server/baseq3/ && rm -rf ./quake3-arena/client/'"
},
{
"UpdateStageName":"Patch Files Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://files.ioquake3.org/quake3-latest-pk3s.zip",
"UpdateSourceTarget":"{{$FullRootDir}}",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"Patch Files Copy",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"Executable",
"UpdateSourceData":"cmd.exe",
"UpdateSourceArgs":"/C xcopy /E /Y /I quake3-arena\\quake3-latest-pk3s\\baseq3\\*.pk3 quake3-arena\\server\\baseq3\\ && xcopy /E /Y /I quake3-arena\\quake3-latest-pk3s\\missionpack\\*.pk3 quake3-arena\\server\\missionpack\\ && rmdir /Q /S quake3-arena\\quake3-latest-pk3s\\"
},
{
"UpdateStageName":"Patch Files Copy",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c '\\cp -rf ./quake3-arena/quake3-latest-pk3s//baseq3/*.pk3 ./quake3-arena/server/baseq3/ && \\cp -rf ./quake3-arena/quake3-latest-pk3s/missionpack/*.pk3 ./quake3-arena/server/missionpack/ && rm -rf ./quake3-arena/quake3-latest-pk3s/'"
},
{
"UpdateStageName":"Base.cfg Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/quake3-arenabase.cfg",
"UpdateSourceArgs":"base.cfg",
"UpdateSourceTarget":"{{$FullBaseDir}}baseq3",
"OverwriteExistingFiles":true
},
{
"UpdateStageName":"Server.cfg Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/quake3-arenaserver.cfg",
"UpdateSourceArgs":"server.cfg",
"UpdateSourceTarget":"{{$FullBaseDir}}baseq3",
"OverwriteExistingFiles":false
}
]