Add San Andreas Multiplayer (#467)

This commit is contained in:
Greelan 2023-10-11 17:38:24 +11:00 committed by GitHub
parent 0078bbdafa
commit de26edb366
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 538 additions and 0 deletions

101
sa-mp.kvp Normal file
View File

@ -0,0 +1,101 @@
Meta.DisplayName=San Andreas Multiplayer
Meta.Description=San Andreas Multiplayer Mod for Grand Theft Auto: San Andreas
Meta.OS=Windows, Linux
Meta.AarchSupport=Unknown
Meta.Arch=x86_64
Meta.Author=Greelan
Meta.URL=https://samp-sc.com/
Meta.DisplayImageSource=steam:12120
Meta.EndpointURIFormat=
Meta.ConfigManifest=sa-mpconfig.json
Meta.MetaConfigManifest=sa-mpmetaconfig.json
Meta.ConfigRoot=sa-mp.kvp
Meta.MinAMPVersion=2.4.6.4
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=San Andreas Multiplayer
App.RootDir=./sa-mp/
App.BaseDirectory=./sa-mp/
App.SteamWorkshopDownloadLocation=
App.ExecutableWin=samp-server.exe
App.ExecutableLinux=samp03svr
App.WorkingDir=
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} {{$FormattedArgs}}
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullRootDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"12120"}
App.CommandLineParameterFormat=+{0} {1}
App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE
App.ExitTimeout=30
App.ExitString=quit
App.ExitFile=app_exit.lck
App.HasWriteableConsole=True
App.HasReadableConsole=True
App.SupportsLiveSettingsChanges=False
App.LiveSettingChangeCommandFormat=set {0} "{1}"
App.ApplicationIPBinding=0.0.0.0
App.Ports=[{"Protocol":"UDP","Port":7777,"Ref":"ServerPort","Name":"Server Port","Description":"Port for game and RCON traffic"}]
App.AdminPortRef=0
App.PrimaryApplicationPortRef=ServerPort
App.UniversalSleepApplicationUDPPortRef=0
App.UniversalSleepSteamQueryPortRef=0
App.MaxUsers=50
App.UseRandomAdminPassword=False
App.PersistRandomPassword=True
App.RemoteAdminPassword=
App.AdminMethod=STDIO
App.AdminLoginTransform=None
App.LoginTransformPrefix=
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5
App.RCONHeartbeatMinutes=0
App.RCONHeartbeatCommand=ping
App.TelnetLoginFormat={0}
App.UpdateSources=@IncludeJson[sa-mpupdates.json]
App.PreStartStages=[]
App.ForceUpdate=False
App.ForceUpdateReason=
App.Compatibility=LinuxBufferedConsole
App.SteamUpdateAnonymousLogin=True
App.SteamForceLoginPrompt=False
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=
Console.AppReadyRegex=^Number of vehicle models: \d+$
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

355
sa-mpconfig.json Normal file
View File

@ -0,0 +1,355 @@
[
{
"DisplayName":"Server Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$ServerPort",
"InputType":"number",
"Hidden":true,
"ParamFieldName":"port",
"EnumValues":{}
},
{
"DisplayName":"Server Name",
"Category":"Server Settings",
"Description":"Sets the name of the server as shown in the server browser and when players connect to the server",
"Keywords":"server,name,hostname",
"FieldName":"hostname",
"InputType":"text",
"ParamFieldName":"hostname",
"DefaultValue":"AMP Powered SA-MP Server",
"Placeholder":"AMP Powered SA-MP Server",
"EnumValues":{}
},
{
"DisplayName":"Map Name",
"Category":"Server Settings",
"Description":"Sets the map name as shown in the server browser. This can be anything",
"Keywords":"map,name,mapname",
"FieldName":"mapname",
"InputType":"text",
"ParamFieldName":"mapname",
"DefaultValue":"My SA-MP Map",
"EnumValues":{}
},
{
"DisplayName":"Web URL",
"Category":"Server Settings",
"Description":"Sets the URL of a website that will be displayed in the server browser and that has more information about the server",
"Keywords":"web,url,weburl",
"FieldName":"weburl",
"InputType":"text",
"ParamFieldName":"weburl",
"DefaultValue":"www.sa-mp.com",
"Placeholder":"www.sa-mp.com",
"EnumValues":{}
},
{
"DisplayName":"Server Password",
"Category":"Server Settings",
"Description":"Sets the password required for players to join the server. Default is no password",
"Keywords":"server,password",
"FieldName":"password",
"InputType":"password",
"ParamFieldName":"password",
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"RCON Password",
"Category":"Server Settings",
"Description":"Sets the password required to connect to the server's RCON. Default is a strong, random password",
"Keywords":"rcon,password,rcon_password",
"FieldName":"rcon_password",
"InputType":"password",
"ParamFieldName":"rcon_password",
"DefaultValue":"{{newguid()}}",
"EnumValues":{}
},
{
"DisplayName":"Initial Gamemode",
"Category":"Server Settings",
"Description":"Sets the gamemode to start the server with. If \"Custom\" is selected, Custom Initial Gamemode must also be specified. Subsequent gamemodes (gamemode1 to gamemode15) can be set under Additional Server Settings",
"Keywords":"initial,gamemode,gamemode0",
"FieldName":"gamemode0",
"InputType":"enum",
"ParamFieldName":"gamemode0",
"DefaultValue":"grandlarc",
"EnumValues":{
"grandlarc":"Grand Larceny",
"rivershell":"Rivershell",
"lvdm":"LVDM (Ventura's DeathMatch) ~ Moneygrub",
"timertest":"Timer Test",
"barron":"RC Barnstorm",
"bare":"Bare Script",
"{{CustomGamemode}}":"--Custom--"
}
},
{
"DisplayName":"Custom Initial Gamemode",
"Category":"Server Settings",
"Description":"Sets a custom gamemode to use for the Initial Gamemode, if \"Custom\" is selected. The custom gamemode files must be included in the gamemodes directory",
"Keywords":"custom,initial,gamemode,gamemode0",
"FieldName":"CustomGamemode",
"InputType":"text",
"ParamFieldName":"CustomGamemode",
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Initial Gamemode Count",
"Category":"Server Settings",
"Description":"Sets how many times the server should run the initial gamemode before switching to the next gamemode",
"Keywords":"initial,gamemode,gamemode0,count",
"FieldName":"gamemode0count",
"InputType":"number",
"ParamFieldName":"gamemode0count",
"DefaultValue":"1",
"Placeholder":"1",
"EnumValues":{}
},
{
"DisplayName":"Filterscripts",
"Category":"Server Settings",
"Description":"Space-separated list of filterscripts (scripts that run in the background of the gamemode and add extras to the server without editing the gamemode). Specify the names of scripts (without the .amx extension) in the filterscripts directory or using a path relative to that directory",
"Keywords":"filterscripts,scripts",
"FieldName":"filterscripts",
"InputType":"text",
"ParamFieldName":"filterscripts",
"DefaultValue":"base gl_actions gl_property gl_realtime",
"Placeholder":"base gl_actions gl_property gl_realtime",
"EnumValues":{}
},
{
"DisplayName":"Plugins",
"Category":"Server Settings",
"Description":"Space-separated list of plugins (scripts designed to enhance gamemodes and filterscripts). Specify the names of scripts (without the .dll or .so extension) in the plugins directory",
"Keywords":"plugins,scripts",
"FieldName":"plugins",
"InputType":"text",
"ParamFieldName":"plugins",
"DefaultValue":"",
"Placeholder":"crashdetect filemanager geoip mysql regex routeconnector sscanf streamer xml",
"EnumValues":{}
},
{
"DisplayName":"Enable LAN Mode",
"Category":"Server Settings",
"Description":"If set, the server will run in LAN mode, allowing higher bandwidth",
"Keywords":"lan,mode,lanmode",
"FieldName":"lanmode",
"InputType":"checkbox",
"ParamFieldName":"lanmode",
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Announce To Master Server List",
"Category":"Server Settings",
"Description":"If set, the server will be announced to the master server list",
"Keywords":"announce,master,server,list",
"FieldName":"announce",
"InputType":"checkbox",
"ParamFieldName":"announce",
"DefaultValue":"0",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Display In Server Browser",
"Category":"Server Settings",
"Description":"If set, information on the server will be displayed in the server browser",
"Keywords":"server,browser,information,query",
"FieldName":"query",
"InputType":"checkbox",
"ParamFieldName":"query",
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Player Limit",
"Category":"Server Settings",
"Description":"Sets the maximum number of players that may connect to the server at one time",
"Keywords":"maximum,players,clients,limit,maxplayers",
"FieldName":"$MaxUsers",
"InputType":"number",
"MinValue":"1",
"MaxValue":"1000",
"ParamFieldName":"maxplayers",
"DefaultValue":"50",
"Placeholder":"50",
"Suffix":"players",
"EnumValues":{}
},
{
"DisplayName":"Language",
"Category":"Server Settings",
"Description":"Sets the language of the server that appears in the server browser",
"Keywords":"language",
"FieldName":"language",
"InputType":"text",
"ParamFieldName":"language",
"DefaultValue":"English",
"Placeholder":"English",
"EnumValues":{}
},
{
"DisplayName":"Maximum NPCs",
"Category":"Server Settings",
"Description":"Sets the maximum number of NPCs (bots) that the server can hold, limiting how many player slots can be taken by NPCs",
"Keywords":"maximum,npcs,bots,maxnpc",
"FieldName":"maxnpc",
"InputType":"number",
"MinValue":"0",
"MaxValue":"1000",
"ParamFieldName":"maxnpc",
"DefaultValue":"0",
"Placeholder":"0",
"Suffix":"NPCs",
"EnumValues":{}
},
{
"DisplayName":"On-Foot Update Rate",
"Category":"Server Settings",
"Description":"Sets the time that a client should update the server with new data while on foot",
"Keywords":"onfoot,foot,rate,onfoot_rate",
"FieldName":"onfoot_rate",
"InputType":"number",
"MinValue":"1",
"ParamFieldName":"onfoot_rate",
"DefaultValue":"40",
"Placeholder":"40",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"In-Vehicle Update Rate",
"Category":"Server Settings",
"Description":"Sets the time that a client should update the server with new data while in a vehicle",
"Keywords":"incar,car,vehicle,rate,incar_rate",
"FieldName":"incar_rate",
"InputType":"number",
"MinValue":"1",
"ParamFieldName":"incar_rate",
"DefaultValue":"40",
"Placeholder":"40",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Weapon Rate",
"Category":"Server Settings",
"Description":"Sets the time that a client should update the server with new data while firing a weapon",
"Keywords":"weapon,rate,weapon_rate",
"FieldName":"weapon_rate",
"InputType":"number",
"MinValue":"1",
"ParamFieldName":"weapon_rate",
"DefaultValue":"40",
"Placeholder":"40",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Stream Distance",
"Category":"Server Settings",
"Description":"Sets the distance on the X,Y plane that players will stream in server entities. Higher values makes players see server entities at a greater distance, but requires more client processing and potentially more bandwidth",
"Keywords":"stream,distance,stream_distance",
"FieldName":"stream_distance",
"InputType":"number",
"MinValue":"50",
"MaxValue":"400",
"ParamFieldName":"stream_distance",
"DefaultValue":"300.0",
"Placeholder":"300.0",
"EnumValues":{}
},
{
"DisplayName":"Stream Rate",
"Category":"Server Settings",
"Description":"Sets the time before the streaming in of server entities is retested for each player. Lower values increases server processing as it has to recheck streaming conditions more frequently for each player",
"Keywords":"stream,rate,stream_rate",
"FieldName":"stream_rate",
"InputType":"number",
"MinValue":"500",
"MaxValue":"5000",
"ParamFieldName":"stream_rate",
"DefaultValue":"1000",
"Placeholder":"1000",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Lag Compensation Mode",
"Category":"Server Settings",
"Description":"Sets the lag compensation mode for the server",
"Keywords":"lag,compensation,mode,lagcompmode",
"FieldName":"lagcompmode",
"InputType":"enum",
"ParamFieldName":"lagcompmode",
"DefaultValue":"1",
"EnumValues":{
"0":"Disabled",
"1":"Full (default)",
"2":"Position only"
}
},
{
"DisplayName":"Show Player Chat In Console",
"Category":"Server Settings",
"Description":"If set, player chat will be shown in the server console",
"Keywords":"log,logging,chat,chatlogging",
"FieldName":"chatlogging",
"InputType":"checkbox",
"ParamFieldName":"chatlogging",
"DefaultValue":"1",
"EnumValues":{
"False":"0",
"True":"1"
}
},
{
"DisplayName":"Log Time Format",
"Category":"Server Settings",
"Description":"Sets the logfile timestamp format that should be used, based on the [strftime format](https://cplusplus.com/reference/ctime/strftime/)",
"Keywords":"log,file,format,timestamp,logtimeformat",
"FieldName":"logtimeformat",
"InputType":"text",
"ParamFieldName":"logtimeformat",
"DefaultValue":"[%H:%M:%S]",
"Placeholder":"[%H:%M:%S]",
"EnumValues":{}
},
{
"DisplayName":"Server/RCON IP Binding",
"Category":"Server Settings",
"Description":"If required, you can change the IP binding of the server and RCON by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Stop the instance (not just the server) first",
"Keywords":"ip,binding,bind",
"FieldName":"$ApplicationIPBinding",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"bind",
"EnumValues":{}
},
{
"DisplayName":"Additional Server Settings",
"Category":"Server Settings",
"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":{}
}
]

8
sa-mpmetaconfig.json Normal file
View File

@ -0,0 +1,8 @@
[
{
"ConfigFile":"server.cfg",
"AutoMap":true,
"ConfigType":"template",
"ConfigFileTemplate":"AMP_server.cfg"
}
]

28
sa-mpserver.cfg Normal file
View File

@ -0,0 +1,28 @@
echo Executing Server Config...
{{UserSettings}}
lanmode {{lanmode}}
rcon 1
rcon_password {{rcon_password}}
password {{password}}
maxplayers {{maxplayers}}
port {{port}}
bind {{bind}}
hostname {{hostname}}
mapname {{mapname}}
gamemode0 {{gamemode0}} {{gamemode0count}}
filterscripts {{filterscripts}}
plugins {{plugins}}
announce {{announce}}
query {{query}}
weburl {{weburl}}
language {{language}}
maxnpc {{maxnpc}}
onfoot_rate {{onfoot_rate}}
incar_rate {{incar_rate}}
weapon_rate {{weapon_rate}}
stream_distance {{stream_distance}}
stream_rate {{stream_rate}}
output 1
lagcompmode {{lagcompmode}}
chatlogging {{chatlogging}}
logtimeformat {{logtimeformat}}

46
sa-mpupdates.json Normal file
View File

@ -0,0 +1,46 @@
[
{
"UpdateStageName":"Server Download",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://files.samp-sc.com/downloader.php?filename=samp037_svr_R2-1-1_win32.zip",
"UpdateSourceArgs":"samp.zip",
"UpdateSourceTarget":"{{$FullBaseDir}}",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"Server Download",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://files.samp-sc.com/downloader.php?filename=samp037svr_R2-1.tar.gz",
"UpdateSourceArgs":"samp.tar.gz",
"UpdateSourceTarget":"{{$FullBaseDir}}",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"Move Server Files",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c '\\cp -rf ./sa-mp/samp03/* ./sa-mp/ && rm -rf ./sa-mp/samp03'"
},
{
"UpdateStageName":"Create Plugins Directory",
"UpdateSourcePlatform":"All",
"UpdateSource":"CreateDirectory",
"UpdateSourceArgs":"{{$FullBaseDir}}plugins"
},
{
"UpdateStageName":"Server.cfg Template File Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sa-mpserver.cfg",
"UpdateSourceArgs":"AMP_server.cfg",
"UpdateSourceTarget":"{{$FullInstanceDir}}",
"OverwriteExistingFiles":true
}
]