Compare commits
10 Commits
e86026e691
...
93920d8a8b
Author | SHA1 | Date | |
---|---|---|---|
93920d8a8b | |||
f6f76e5984 | |||
d901143559 | |||
236bbc89b7 | |||
1d85691653 | |||
278a0fee32 | |||
d018a8d9dd | |||
586aa9a1dc | |||
be9dc63a00 | |||
92bf222868 |
21
README.md
21
README.md
@ -0,0 +1,21 @@
|
|||||||
|
SmileyFace UT Server Tool
|
||||||
|
=========================
|
||||||
|
See official website, [https://zavage-software.com/projects/smileyface](https://zavage-software.com/projects/smileyface) for instructions.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
* [app_skellington](https;//zavage-software.com/projects/app_skellington)
|
||||||
|
* [appdirs](https://pypi.org/project/appdirs)
|
||||||
|
* [colorlog](https://pypi.org/project/colorlog)
|
||||||
|
* [configobj](https://pypi.org/project/configob)
|
||||||
|
* [selenium](https://selenium-python.readthedocs.io)
|
||||||
|
* [sqlparse](https://pypi.org/project/sqlparse)
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
Activate your desired python environment or install system-wide with admin privileges.
|
||||||
|
python setup.py install
|
||||||
|
|
||||||
|
Usage
|
||||||
|
======
|
||||||
|
(more to come, see the website for some instruction)
|
38
edit-config-windows.ps1
Normal file
38
edit-config-windows.ps1
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Opens hie_parser configuration file in the default editor, creating file
|
||||||
|
# if necessary.
|
||||||
|
|
||||||
|
$config_filepath = Join-Path -Path "$env:USERPROFILE" -ChildPath "\AppData\Local\smileyface-ut4\hub_config.ini"
|
||||||
|
|
||||||
|
$dir_path = Split-Path -Path "$config_filepath"
|
||||||
|
|
||||||
|
|
||||||
|
# Create config directory if necessary:
|
||||||
|
if (!(Test-Path "$dir_path" -Type Container))
|
||||||
|
{
|
||||||
|
Write-Host "Creating config directory: $dir_path"
|
||||||
|
New-Item -ItemType "directory" -Path "$dir_path" > $null
|
||||||
|
Write-Host
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create config.ini if necessary:
|
||||||
|
if (!(Test-Path "$config_filepath" -Type Leaf))
|
||||||
|
{
|
||||||
|
Write-Host "Creating new config.ini: $config_filepath"
|
||||||
|
New-Item -Path "$config_filepath" > $null
|
||||||
|
Set-Content "$config_filepath" @"
|
||||||
|
|
||||||
|
|
||||||
|
"@
|
||||||
|
}
|
||||||
|
|
||||||
|
# Open config.ini in favorite text editor:
|
||||||
|
Write-Host "Opening covid_parser configuration in your system-default editor"
|
||||||
|
Write-Host "Configuration file: $config_filepath"
|
||||||
|
Invoke-Item "$config_filepath"
|
||||||
|
|
||||||
|
# Leave terminal open after done:
|
||||||
|
if ($Host.Name -eq "ConsoleHost")
|
||||||
|
{
|
||||||
|
Write-Host "Done."
|
||||||
|
$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
[Core.System]
|
|
||||||
Paths=../../../Engine/Content
|
|
||||||
Paths=%GAMEDIR%Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/SampleGameMode/Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/ContentOnly/Content
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameEngine]
|
|
||||||
bFirstRun=False
|
|
||||||
RconPassword=<hidden>
|
|
||||||
|
|
||||||
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
|
||||||
NetServerMaxTickRate=96
|
|
||||||
LanServerMaxTickRate=96
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
[/Script/UnrealTournament.UTLobbyGameMode]
|
|
||||||
LobbyPassword = ""
|
|
||||||
AutoLaunchGameMode = ""
|
|
||||||
AutoLaunchGameOptions = ""
|
|
||||||
AutoLaunchMap = ""
|
|
||||||
MaxPlayersInLobby = 75
|
|
||||||
StartingInstancePort = 8001
|
|
||||||
InstancePortStep = 1
|
|
||||||
MaxInstances = 6
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTBaseGameMode]
|
|
||||||
ServerInstanceID = 01648766060A091700250157183F1418
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameMode]
|
|
||||||
MapVoteTime = 60
|
|
||||||
bRecordReplays = true
|
|
||||||
bHandleDedicatedServerReplays = true
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameState]
|
|
||||||
ServerName = Warehouse Party (Dallas)
|
|
||||||
ServerMOTD = <UT.Font.NormalText.Medium>Elimination, Instagib, BunnyTrack, and Duel</>\n<UT.Font.NormalText.Small.Bold>Big THANK YOU to all the UT4 content creators!!</>\n<UT.Font.NormalText.Small.Bold>ProWeapons, UT+, Instagib mods, and more!</>\n\nHosted in Dallas, Texas (Provider=Linode.com)\nAdmin: zavage.ut4@gmail.com\n\nConsole Commands:\nmutate hitsounds\nmutate teamskins\nmutate weaponskins\n\nDIY simple, self-hosted UT4 Server @ zavage.net/ut4
|
|
||||||
ServerDescription = Silky-smooth Unreal Tournament
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "BIGCTF",
|
|
||||||
"categories": [
|
|
||||||
"Classic"
|
|
||||||
],
|
|
||||||
"title": "Big CTF",
|
|
||||||
"toolTip": "Capture the Flag with large teams.",
|
|
||||||
"description": "Capture the Flag with large teams.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes with halftime</>\n<UT.Hub.RulesText_Small>Mercy Rule : On</>\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": ",/Game/RestrictedAssets/Maps/CTF-Face,/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Dam",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/CTF-Face",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 20,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 10,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_LargeCTF.GB_LargeCTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=20?GoalScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "FlagRunVSAI",
|
|
||||||
"categories": [
|
|
||||||
"Featured"
|
|
||||||
],
|
|
||||||
"title": "Blitz vs AI",
|
|
||||||
"toolTip": "Co-op vs AI. Attackers must deliver their flag to the enemy base.",
|
|
||||||
"description": "Blitz Coop vs AI.\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh",
|
|
||||||
"defaultMap": "",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 5,
|
|
||||||
"maxTeamCount": 0,
|
|
||||||
"maxTeamSize": 0,
|
|
||||||
"maxPartySize": 0,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTFlagRunGame",
|
|
||||||
"gameOptions": "?VSAI=1",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 4,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "CTF",
|
|
||||||
"categories": [
|
|
||||||
"Classic"
|
|
||||||
],
|
|
||||||
"title": "Capture the Flag",
|
|
||||||
"toolTip": "Capture the Flag.",
|
|
||||||
"description": "Capture the Flag, with guns.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes with halftime</>\n<UT.Hub.RulesText_Small>Mercy Rule : On</>\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=20?GoalScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "CompCTF",
|
|
||||||
"categories": [
|
|
||||||
"Competitive"
|
|
||||||
],
|
|
||||||
"title": "Competitive CTF",
|
|
||||||
"toolTip": "Capture the Flag with competition rules.",
|
|
||||||
"description": "Capture the Flag, with guns.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes with halftime</>\n<UT.Hub.RulesText_Small>Mercy Rule : Off</>\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=20?GoalScore=0?MercyScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": true,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "DEATHMATCH",
|
|
||||||
"categories": [
|
|
||||||
"Featured"
|
|
||||||
],
|
|
||||||
"title": "Deathmatch",
|
|
||||||
"toolTip": "Standard free-for-all Deathmatch.",
|
|
||||||
"description": "Standard free-for-all deathmatch.\n\n<UT.Hub.RulesText_Small>TimeLimit : %TimeLimit% minutes</>\n<UT.Hub.RulesText_Small>Maximum players : %MaxPlayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 6,
|
|
||||||
"maxTeamCount": -1,
|
|
||||||
"maxTeamSize": -1,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTDMGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": false,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "DUEL",
|
|
||||||
"categories": [
|
|
||||||
"Competitive"
|
|
||||||
],
|
|
||||||
"title": "Duel",
|
|
||||||
"toolTip": "One vs one test of deathmatch skill.",
|
|
||||||
"description": "One vs one test of deathmatch skill.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes</>\n<UT.Hub.RulesText_Small>Maximum players: %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": true,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "FlagRun",
|
|
||||||
"categories": [
|
|
||||||
"Featured"
|
|
||||||
],
|
|
||||||
"title": "Blitz",
|
|
||||||
"toolTip": "Attackers must deliver their flag to the enemy base.",
|
|
||||||
"description": "Blitz.\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh",
|
|
||||||
"defaultMap": "",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 0,
|
|
||||||
"maxTeamSize": 0,
|
|
||||||
"maxPartySize": 0,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTFlagRunGame",
|
|
||||||
"gameOptions": "",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "iCTF",
|
|
||||||
"categories": [
|
|
||||||
"Instagib"
|
|
||||||
],
|
|
||||||
"title": "Instagib CTF",
|
|
||||||
"toolTip": "Instagib CTF",
|
|
||||||
"description": "Capture the Flag with Instagib rifles.\n\n<UT.Hub.RulesText_Small>Mutators : Instagib</>\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes with halftime</>\n<UT.Hub.RulesText_Small>Mercy Rule : On</>\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/RestrictedAssets/Maps/CTF-Face,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-BigRock,/Game/RestrictedAssets/Maps/WIP/CTF-Volcano,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 20,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=20?GoalScore=0?Mutator=Instagib",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "TEAMSHOWDOWN",
|
|
||||||
"categories": [
|
|
||||||
"Competitive"
|
|
||||||
],
|
|
||||||
"title": "Showdown",
|
|
||||||
"toolTip": "Red versus blue team showdown.",
|
|
||||||
"description": "Red versus blue team showdown.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minute rounds</>\n<UT.Hub.RulesText_Small>Scoring : First to %goalscore% wins</>\n<UT.Hub.RulesText_Small>Maximum players: %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/RestrictedAssets/Maps/WIP/DM-Solo",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 6,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 3,
|
|
||||||
"maxPartySize": 3,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTTeamShowdownGame",
|
|
||||||
"gameOptions": "?TimeLimit=2?GoalScore=5",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "Siege",
|
|
||||||
"categories": [
|
|
||||||
"MyCustom"
|
|
||||||
],
|
|
||||||
"title": "Siege",
|
|
||||||
"toolTip": "Prototype PVE mode. Defend your base against hordes of incoming enemies trying to deliver their flag.",
|
|
||||||
"description": "PROTOTYPE PVE mode. Defend your base against hordes of incoming enemies trying to deliver their flag..\n<UT.Hub.RulesText_Small>Maximum players : %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/FR-Fort,/Game/RestrictedAssets/Maps/WIP/FR-MeltDown,/Game/RestrictedAssets/Maps/WIP/FR-Loh",
|
|
||||||
"defaultMap": "",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 5,
|
|
||||||
"maxTeamCount": 0,
|
|
||||||
"maxTeamSize": 0,
|
|
||||||
"maxPartySize": 0,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTFlagRunPvEGame",
|
|
||||||
"gameOptions": "",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 5,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "TDM",
|
|
||||||
"categories": [
|
|
||||||
"Classic"
|
|
||||||
],
|
|
||||||
"title": "Team Deathmatch",
|
|
||||||
"toolTip": "Red versus blue team deathmatch.",
|
|
||||||
"description": "Red versus blue team deathmatch.\n\n<UT.Hub.RulesText_Small>TimeLimit : %timelimit% minutes</>\n<UT.Hub.RulesText_Small>Maximum players: %maxplayers%</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 16,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Underland,/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Unsaved/DM-Unsaved,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Batrankus/DM-Batrankus,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTTeamDMGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=20?GoalScore=0",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": true,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Elim10",
|
|
||||||
"categories" : [
|
|
||||||
"Elim"
|
|
||||||
],
|
|
||||||
"title" : "Elim 5v5 noGL",
|
|
||||||
"toolTip" : "ProMode, GL replaced by Bio",
|
|
||||||
"description": "Absolute Elimination, with grenade launchers DISABLED (DEFAULT)\n\n<UT.Hub.RulesText_Small>Mutators: </><UT.Hub.RulesText_Small>ProMode, TeamSkins, WeaponSkins, HitSounds, Kickvoting</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, FriendlyFire=OFF</>\n<UT.Hub.RulesText_Small>Grenade Launcher: OFF</>",
|
|
||||||
"mapPrefixes" : [],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Hack01",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Over",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A"
|
|
||||||
],
|
|
||||||
"maxPlayers" : 10,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C",
|
|
||||||
"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?Difficulty=8?botfill=2?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:None?mutator=ProMode,MutTeamskins,MutHitsounds,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor",
|
|
||||||
"MutHitsounds",
|
|
||||||
"ProMode",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"MutKickVoting",
|
|
||||||
"WeaponSkins",
|
|
||||||
"MutTeamskins"
|
|
||||||
],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Elim10ProOFF",
|
|
||||||
"categories" : [
|
|
||||||
"Elim"
|
|
||||||
],
|
|
||||||
"title" : "Elim 5v5 Vanilla",
|
|
||||||
"toolTip" : "Absolute Elimination w/ unmodified guns and movement",
|
|
||||||
"description": "Absolute Elimination, slow weapon switch\n\n<UT.Hub.RulesText_Small>Mutators: TeamSkins, WeaponSkins, HitSounds, Kickvoting</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, FriendlyFire=OFF</>\n<UT.Hub.RulesText_Small>Grenade Launcher: ON</>",
|
|
||||||
"mapPrefixes" : [],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Hack01",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Over",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A"
|
|
||||||
],
|
|
||||||
"maxPlayers" : 10,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode" : "/Game/ALTS/Elimination_113.Elimination_113_C",
|
|
||||||
"gameOptions" : "?MaxPlayers=10?TimeLimit=99?GoalScore=10?BalanceTeams=true?ignoreidle=1?Difficulty=8?botfill=2?mutator=MutTeamskins,MutHitsounds,WeaponSkins,MutKickVoting?ForceNoBots=1?WTR=/Game/RestrictedAssets/Weapons/GrenadeLauncher/BP_GrenadeLauncher.BP_GrenadeLauncher_C:/Game/RestrictedAssets/Weapons/BioRifle/BP_BioRifle.BP_BioRifle_C",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor",
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutKickVoting",
|
|
||||||
"WeaponSkins",
|
|
||||||
"MutTeamskins"
|
|
||||||
],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Elim10UTP",
|
|
||||||
"categories" : [
|
|
||||||
"Elim"
|
|
||||||
],
|
|
||||||
"title" : "Elim 5v5 UT+",
|
|
||||||
"toolTip" : "Absolute Elimination w/ UTPlus and GL replaced by Bio",
|
|
||||||
"description": "Absolute Elimination, UT+ and disabled GL\n\n<UT.Hub.RulesText_Small>Mutators: </><UT.Hub.RulesText_Small>UT+, TeamSkins, WeaponSkins, HitSounds, Kickvoting</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, FriendlyFire=OFF</>\n<UT.Hub.RulesText_Small>Grenade Launcher: OFF</>",
|
|
||||||
"mapPrefixes" : [],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Hack01",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Over",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A"
|
|
||||||
],
|
|
||||||
"maxPlayers" : 10,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C",
|
|
||||||
"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?Difficulty=8?botfill=2?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:None?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutKickVoting",
|
|
||||||
"WeaponSkins",
|
|
||||||
"MutTeamskins"
|
|
||||||
],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Elim10rFF",
|
|
||||||
"categories" : [
|
|
||||||
"Elim"
|
|
||||||
],
|
|
||||||
"title" : "Elim 5v5 rFF",
|
|
||||||
"toolTip" : "Absolute Elimination, with Reverse-Friendly Fire",
|
|
||||||
"description": "Absolute Elimination, with Reverse Friendly-Fire\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, Kickvoting, Reverse-FriendlyFire</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, FriendlyFire=ON</>\n<UT.Hub.RulesText_Small>Grenade Launcher: OFF</>",
|
|
||||||
"mapPrefixes" : [],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Hack01",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Over",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A"
|
|
||||||
],
|
|
||||||
"maxPlayers" : 10,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Game/ALTS/Elimination_113.Elimination_113_C",
|
|
||||||
"gameOptions": "?MaxPlayers=10?TimeLimit=99?GoalScore=10?ignoreidle=1?botfill=2?Difficulty=8?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:None?mutator=UTPlus,UTPlusMovement,MutTeamskins,ReverseFF,MutHitsounds,WeaponReplacement,WeaponSkins,Global_StatSQL-v2,MutKickVoting",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor",
|
|
||||||
"MutTeamskins",
|
|
||||||
"MutHitsounds",
|
|
||||||
"ReverseFF",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement"
|
|
||||||
],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Elim10NoGL",
|
|
||||||
"categories" : [
|
|
||||||
"Elim"
|
|
||||||
],
|
|
||||||
"title" : "Elim 5v5 GL",
|
|
||||||
"toolTip" : "Absolute Elimination, ProMode w/ GL",
|
|
||||||
"description": "Absolute Elimination, with grenade launchers ENABLED\n\n<UT.Hub.RulesText_Small>Mutators: ProMode, TeamSkins, WeaponSkins, HitSounds, Kickvoting</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, FriendlyFire=OFF</>\n<UT.Hub.RulesText_Small>Grenade Launcher: ON</>",
|
|
||||||
"mapPrefixes" : [],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [],
|
|
||||||
"maxPlayers": 10,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Hack01",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/Cr4zy/DM-Edge_03",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Over",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A"
|
|
||||||
],
|
|
||||||
"maxPlayers" : 10,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode" : "/Game/ALTS/Elimination_113.Elimination_113_C",
|
|
||||||
"gameOptions" : "?MaxPlayers=10?TimeLimit=99?GoalScore=10?botfill=2?Difficulty=8?BalanceTeams=true?ignoreidle=1?mutator=MutHitsounds,ProMode,MutKickVoting,WeaponSkins,MutTeamskins",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"/Game/ALTS/Elimination_113.Elimination_113_C-WindowsNoEditor",
|
|
||||||
"MutHitsounds",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"MutKickVoting",
|
|
||||||
"WeaponSkins",
|
|
||||||
"MutTeamskins"
|
|
||||||
],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "DuelPlus10",
|
|
||||||
"categories": [
|
|
||||||
"Comp"
|
|
||||||
],
|
|
||||||
"title": "Duel+ 10min",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "Same ruleset, unofficial server.\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD, HiddenWeaponsUTPL</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Game/dc/FuckDuelSpawns/DuelPlus.DuelPlus_C",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?MaxSpecators=10?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"minPlayersToStart": 2,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "DuelPlus5",
|
|
||||||
"categories": [
|
|
||||||
"Comp"
|
|
||||||
],
|
|
||||||
"title": "Duel+ 5min",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "Same ruleset, unofficial server.\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD, HiddenWeaponsUTPL</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Game/dc/FuckDuelSpawns/DuelPlus.DuelPlus_C",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=5?ignoreidle=1?GoalScore=0?MaxSpecators=10?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"minPlayersToStart": 2,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,75 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "myiCTF",
|
|
||||||
"categories": [
|
|
||||||
"Gib"
|
|
||||||
],
|
|
||||||
"title": "Instagib CTF",
|
|
||||||
"toolTip": "Instagib CTF",
|
|
||||||
"description": "One-click kills, Capture the Flag\n\n<UT.Hub.RulesText_Small>Mutators: Instagib, TeamSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: Translocator=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza",
|
|
||||||
"defaultMap": "/Game/Maps/CTF-w00tabulousFixed-UT99/CTF-W00t-R3M2",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/CTF-Joust/CTF-Joust-v18",
|
|
||||||
"/Game/Deaod/CTF-FP-Anfractous2-PRO",
|
|
||||||
"/Game/Laambo/Maps/CTF-AW-CastleCourtYard-v7",
|
|
||||||
"/Game/Laambo/Maps/CTFMaps/CTF-AW-IDKyetMap-v6",
|
|
||||||
"/Game/Laambo/Maps/CTFMaps/CTF-AW-StonedFace-v1",
|
|
||||||
"/Game/Laambo/Maps/CTFMaps/CTF-AW-WTFisThis-v2",
|
|
||||||
"/Game/Laambo/Maps/TestMaps/CTF-AW-MeshingAround2-v4",
|
|
||||||
"/Game/Laambo/Maps/thePit/CTF-AW-thePit-v9",
|
|
||||||
"/Game/Maps/CTF-Dynex/CTF-Dynex-WIP6c",
|
|
||||||
"/Game/Maps/CTF-Dynex/CTF-Dynex-vb",
|
|
||||||
"/Game/Maps/CTF-w00tabulousFixed-UT99/CTF-W00t-R3M2",
|
|
||||||
"/Game/Maps/iCTF-SprintaLE14-UT99/CTF-Sprinta-R3M2",
|
|
||||||
"/Game/RestrictedAssets/Maps/CTF-Command-R3M2",
|
|
||||||
"/Game/RestrictedAssets/Maps/CTF-Klondike-R3M2",
|
|
||||||
"/Game/RestrictedAssets/Maps/Test/CTF-PryXon-by-WK-G",
|
|
||||||
"/Game/RestrictedAssets/Maps/Test/CTF-Revenge-v2-UT99-by-WK",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-1on1-Hourglass/CTF-1on1-Hourglass",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Access-R3",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Acrony-R3M/CTF-Acrony-R3M",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Anfractuous2-UT2004/CTF-Anfractuous-v3",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Bleak-CE100-UT99/CTF-Bleak-v4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-BleakLE14-UT99/CTF-Bleak-R3M2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-BrokenLimitsCB6-UT99/CTF-BrokenLimits-R3M2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-CheckMate-R2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Dam",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Drunklet-PRO2-UT2004/CTF-Drunklet-PRO2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Fragtion",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Fragtion-R9",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-GrudgeLE14-UT99/CTF-Grudge-R3M",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Lavafury",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-OverFlow/CTF-OverFlow-R3M6",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Rankin-PRO-UT2004/CTF-Rankin-PRO2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Switchback-PRO",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Switchback-v2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Turbo-UT3/CTF-Turbo-v3",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-UCMP4-Talya-UT2004/CTF-Talya-v6",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Ultra-UT3/CTF-Ultra-v1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Zest-R5",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/iCTF-Duku-R3M-v1/CTF-Duku-R3M4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/iCTF-MesmerizeLE14-UT99/CTF-Mesmerize-R3M",
|
|
||||||
"/Game/Supsun/CTF-FD",
|
|
||||||
"/Game/UT99/Maps/CTF-Denise",
|
|
||||||
"/Game/UT99/Maps/CTF-RGI-EliteArenaV2",
|
|
||||||
"/Game/UT99/Maps/CTF-RGI-Romra",
|
|
||||||
"/Game/UT99/Maps/CTF-RGI-ThornsV2",
|
|
||||||
"/Game/UTzoneContent/Maps/Donzi/CTF-Bloxeh",
|
|
||||||
"/Game/UnrealPUGs/UnrealPUGs/Maps/CTF-LiandriDocks-UPUGs"
|
|
||||||
],
|
|
||||||
"maxPlayers": 20,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Game/Instagib/iCTF_GameMode_OT.iCTF_GameMode_OT_C",
|
|
||||||
"gameOptions": "?TimeLimit=15?GoalScore=0?botfill=2?ignoreidle=1?Mutator=MutTeamskins,MutHitsounds",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYINSTAGIBDEATHMATCH1.3",
|
|
||||||
"categories": [
|
|
||||||
"Gib"
|
|
||||||
],
|
|
||||||
"title": "Hi-Speed Arena",
|
|
||||||
"toolTip": "130% Speed One-Click Kills",
|
|
||||||
"description": "One-click kills, insanely fast.\n\n<UT.Hub.RulesText_Small>Mutators: {AW}Zoom Instagib, {AW}Translocator, ProMovement, TeamSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: GameSpeed=1.3x, Translocator=ON</>\n<UT.Hub.RulesText_Small> > Shoutout to {AW} Clan for creating much of this content!</>\n<UT.Hub.RulesText_Small> > See the official Aggressive Warriors hub.</>\n<UT.Hub.RulesText_Small> > And their website: AggressiveWarriors.com</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Campgrounds-PRO-UNG",
|
|
||||||
"/Game/Laambo/Maps/CampThunder/DM-AW-CampThunderArena-v16",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-CraterLakeArena-v7",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-IDKyet-v14",
|
|
||||||
"/Game/Laambo/Maps/FightArena/DM-AW-FightArena-v14",
|
|
||||||
"/Game/Laambo/Maps/HayRide/DM-AW-HayRideNights-v12",
|
|
||||||
"/Game/Laambo/Maps/HolyShit/DM-AW-HolyShit-v3",
|
|
||||||
"/Game/Laambo/Maps/KnockOut/DM-AW-SkyArenaTest-v1",
|
|
||||||
"/Game/Laambo/Maps/ToonCastle/DM-AW-ToonCastleArena-v11",
|
|
||||||
"/Game/Laambo/Maps/UnrealBall/DM-AW-ClanArena-v7",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-GiantTreeTest-v8",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-RockScapeTestMap-v4",
|
|
||||||
"/Game/Laambo/Maps/thePit/DM-AW-thePit-v6",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a03",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/halfblocked/halloweenarena/DM-AW-HalloweenArena-Redux12",
|
|
||||||
"/Game/maps/DM-Erase_Beta/DM-Erase_B9"
|
|
||||||
],
|
|
||||||
"maxPlayers": 12,
|
|
||||||
"maxTeamCount": -1,
|
|
||||||
"maxTeamSize": -1,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTDMGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=0?ignoreidle=1?botfill=2?GameSpeed=1.300000?Mutator=AW_Instagib-v4,AW_Translocator-v6,GameSpeed,ProMovement,MutHitsounds,NoSpawnProtectionMutator,MutTeamskins",
|
|
||||||
"requiredPackages": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"bTeamGame": false,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYINSTAGIBDEATHMATCH",
|
|
||||||
"categories": [
|
|
||||||
"Gib"
|
|
||||||
],
|
|
||||||
"title": "Instagib Arena",
|
|
||||||
"toolTip": "Die lots!!",
|
|
||||||
"description": "One-click kills.\n\n<UT.Hub.RulesText_Small>Mutators: {AW}Zoom Instagib, {AW}Translocator, ProMovement, TeamSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: Translocator=ON</>\n<UT.Hub.RulesText_Small> > Shoutout to {AW} Clan for creating much of this content!</>\n<UT.Hub.RulesText_Small> > See the official Aggressive Warriors hub.</>\n<UT.Hub.RulesText_Small> > And their website: AggressiveWarriors.com</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Campgrounds-PRO-UNG",
|
|
||||||
"/Game/Laambo/Maps/CampThunder/DM-AW-CampThunderArena-v16",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-CraterLakeArena-v7",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-IDKyet-v14",
|
|
||||||
"/Game/Laambo/Maps/FightArena/DM-AW-FightArena-v14",
|
|
||||||
"/Game/Laambo/Maps/HayRide/DM-AW-HayRideNights-v12",
|
|
||||||
"/Game/Laambo/Maps/HolyShit/DM-AW-HolyShit-v3",
|
|
||||||
"/Game/Laambo/Maps/KnockOut/DM-AW-SkyArenaTest-v1",
|
|
||||||
"/Game/Laambo/Maps/ToonCastle/DM-AW-ToonCastleArena-v11",
|
|
||||||
"/Game/Laambo/Maps/UnrealBall/DM-AW-ClanArena-v7",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-GiantTreeTest-v8",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-RockScapeTestMap-v4",
|
|
||||||
"/Game/Laambo/Maps/thePit/DM-AW-thePit-v6",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a03",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/halfblocked/halloweenarena/DM-AW-HalloweenArena-Redux12",
|
|
||||||
"/Game/maps/DM-Erase_Beta/DM-Erase_B9"
|
|
||||||
],
|
|
||||||
"maxPlayers": 6,
|
|
||||||
"maxTeamCount": -1,
|
|
||||||
"maxTeamSize": -1,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTDMGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=0?botfill=2?ignoreidle=1?Mutator=AW_Instagib-v4,AW_Translocator-v6,ProMovement,MutTeamskins,MutHitsounds,NoSpawnProtectionMutator",
|
|
||||||
"requiredPackages": [
|
|
||||||
"MutTeamskins",
|
|
||||||
"MutHitsounds",
|
|
||||||
"NoSpawnProtectionMutator"
|
|
||||||
|
|
||||||
],
|
|
||||||
"bTeamGame": false,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "xTDM Instagib",
|
|
||||||
"categories": [
|
|
||||||
"Gib"
|
|
||||||
],
|
|
||||||
"title": "Instagib xTDM",
|
|
||||||
"toolTip": "Instagib 4x Team Deathmatch",
|
|
||||||
"description": "Four-Team Instagib Deathmatch (xTDM)\n\n<UT.Hub.RulesText_Small>Mutators: Instagib, ProMovement, TeamSkins</>\n<UT.Hub.RulesText_Small>Options: Translocator=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Campgrounds-PRO-UNG",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Laambo/Maps/CampThunder/DM-AW-CampThunderArena-v16",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-CraterLakeArena-v7",
|
|
||||||
"/Game/Laambo/Maps/DM-AW-IDKyet-v14",
|
|
||||||
"/Game/Laambo/Maps/FightArena/DM-AW-FightArena-v14",
|
|
||||||
"/Game/Laambo/Maps/HayRide/DM-AW-HayRideNights-v12",
|
|
||||||
"/Game/Laambo/Maps/HolyShit/DM-AW-HolyShit-v3",
|
|
||||||
"/Game/Laambo/Maps/KnockOut/DM-AW-SkyArenaTest-v1",
|
|
||||||
"/Game/Laambo/Maps/ToonCastle/DM-AW-ToonCastleArena-v11",
|
|
||||||
"/Game/Laambo/Maps/UnrealBall/DM-AW-ClanArena-v7",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-GiantTreeTest-v8",
|
|
||||||
"/Game/Laambo/Maps/ZarkMaps/DM-AW-RockScapeTestMap-v4",
|
|
||||||
"/Game/Laambo/Maps/thePit/DM-AW-thePit-v6",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a03",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/Maps/DM-Corrugation-UT2004",
|
|
||||||
"/Game/Maps/DM-DE-Grendelkeep-UT2004",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/halfblocked/halloweenarena/DM-AW-HalloweenArena-Redux12",
|
|
||||||
"/Game/maps/DM-Erase_Beta/DM-Erase_B9",
|
|
||||||
],
|
|
||||||
"maxPlayers": 16,
|
|
||||||
"maxTeamCount": -1,
|
|
||||||
"maxTeamSize": -1,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
"gameMode": "/Game/xTDM/v014/xTDM_v014_GameMode.xTDM_v014_GameMode_C",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=100?ignoreidle=1?Mutator=Instagib,ProMovement,MutTeamskins",
|
|
||||||
"requiredPackages": [],
|
|
||||||
"bTeamGame": false,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Bunnytrack-All",
|
|
||||||
"categories" : [
|
|
||||||
"BunnyTrack"
|
|
||||||
],
|
|
||||||
"title" : "BunnyTrack (All)",
|
|
||||||
"toolTip" : "Competitive BT - complete maplist",
|
|
||||||
"description" : "Competitive BunnyTrack\n\n<UT.Hub.RulesText_Small>*Under Construction*</>\n\n<UT.Hub.RulesText_Small>Note: Times don't save in the upstream server (yet?)</>",
|
|
||||||
"mapPrefixes" : [ ],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/BT-Planets_V3",
|
|
||||||
"/Game/BT-Rumble_V4",
|
|
||||||
"/Game/BT/BT-HOPLite",
|
|
||||||
"/Game/BT/BT-HOPfinal",
|
|
||||||
"/Game/BTmap/BT-Oneshot",
|
|
||||||
"/Game/Maps/BT-2019/BT-Happy2019_v2",
|
|
||||||
"/Game/Maps/BT-2P-DualRun/BT-2P-DualRun",
|
|
||||||
"/Game/Maps/BT-Airrace/BT-AirRace_V5",
|
|
||||||
"/Game/Maps/BT-ChatoKeK/BT-ChatoKeK",
|
|
||||||
"/Game/Maps/BT-CouilleNoire/BT-CN",
|
|
||||||
"/Game/Maps/BT-Crack/BT-Crack_v1",
|
|
||||||
"/Game/Maps/BT-GBR/BT-GBR_V2",
|
|
||||||
"/Game/Maps/BT-Indus/BT-Indus_v6",
|
|
||||||
"/Game/Maps/BT-Joust/BT-Joust_v2",
|
|
||||||
"/Game/Maps/BT-LTTT/BT-LTTT",
|
|
||||||
"/Game/Maps/BT-LavaKEK/BT-LavaKEK_v1",
|
|
||||||
"/Game/Maps/BT-RadicalTrials1_v5",
|
|
||||||
"/Game/Maps/BT-RadicalTrials2_v4",
|
|
||||||
"/Game/Maps/BT-Radioactive/BT-Radioactive_v1",
|
|
||||||
"/Game/Maps/BT-Scoobmap/BT-ScoobTest-V3",
|
|
||||||
"/Game/Maps/BT-StarLab/BT-StarLab_v1",
|
|
||||||
"/Game/Maps/BT-Swampruins/BT-SwampRuins_v2",
|
|
||||||
"/Game/Maps/BT-TUTORIAL/BT-Welcome_v5",
|
|
||||||
"/Game/Maps/BT-youarelol/BT-youarelol_v2",
|
|
||||||
"/Game/MyContent/Maps/BT-TheEscape",
|
|
||||||
"/Game/My_Projects/BT_Maps/BT-Roaster/BT-Roaster",
|
|
||||||
"/Game/My_Projects/Maps/BT/BT_Osiris/BT-Osiris",
|
|
||||||
"/Game/RestrictedAssets/Maps/BT-Ancient_Halls",
|
|
||||||
"/Game/_Ransom/Maps/BT-Plinko/BT-Plinko",
|
|
||||||
],
|
|
||||||
"maxPlayers" : 16,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'",
|
|
||||||
"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C",
|
|
||||||
"gameOptions" : "?ForceNoBots=1?ignoreidle?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1",
|
|
||||||
"requiredPackages" : [ ],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Bunnytrack-Easy",
|
|
||||||
"categories" : [
|
|
||||||
"BunnyTrack"
|
|
||||||
],
|
|
||||||
"title" : "BunnyTrack (I)",
|
|
||||||
"toolTip" : "Competitive BT - easier maplist",
|
|
||||||
"description" : "Competitive BunnyTrack\n\n<UT.Hub.RulesText_Small>*Under Construction*</>\n\n<UT.Hub.RulesText_Small>Note: Difficulty categorization is unofficial and only affects the map rotation.</>\n<UT.Hub.RulesText_Small>Note: Times don't save in the upstream server (yet?)</>",
|
|
||||||
"mapPrefixes" : [ ],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/Maps/BT-2P-DualRun/BT-2P-DualRun",
|
|
||||||
"/Game/Maps/BT-Airrace/BT-AirRace_V5",
|
|
||||||
"/Game/Maps/BT-GBR/BT-GBR_V2",
|
|
||||||
"/Game/Maps/BT-Radioactive/BT-Radioactive_v1",
|
|
||||||
"/Game/Maps/BT-StarLab/BT-StarLab_v1",
|
|
||||||
"/Game/Maps/BT-Swampruins/BT-SwampRuins_v2",
|
|
||||||
"/Game/Maps/BT-TUTORIAL/BT-Welcome_v5",
|
|
||||||
"/Game/MyContent/Maps/BT-TheEscape",
|
|
||||||
],
|
|
||||||
"maxPlayers" : 16,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'",
|
|
||||||
"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C",
|
|
||||||
"gameOptions" : "?ForceNoBots=1?ignoreidle?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1",
|
|
||||||
"requiredPackages" : [ ],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Bunnytrack-Medium",
|
|
||||||
"categories" : [
|
|
||||||
"BunnyTrack"
|
|
||||||
],
|
|
||||||
"title" : "BunnyTrack (II)",
|
|
||||||
"toolTip" : "Competitive BT - mediumer maplist",
|
|
||||||
"description" : "Competitive BunnyTrack\n\n<UT.Hub.RulesText_Small>*Under Construction*</>\n\n<UT.Hub.RulesText_Small>Note: Difficulty categorization is unofficial and only affects the map rotation.</>\n<UT.Hub.RulesText_Small>Note: Times don't save in the upstream server (yet?)</>",
|
|
||||||
"mapPrefixes" : [ ],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/BT-Rumble_V4",
|
|
||||||
"/Game/Maps/BT-LavaKEK/BT-LavaKEK_v1",
|
|
||||||
"/Game/Maps/BT-RadicalTrials1_v5",
|
|
||||||
"/Game/Maps/BT-RadicalTrials2_v4",
|
|
||||||
"/Game/MyContent/Maps/BT-TheEscape",
|
|
||||||
],
|
|
||||||
"maxPlayers" : 16,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'",
|
|
||||||
"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C",
|
|
||||||
"gameOptions" : "?ForceNoBots=1?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1",
|
|
||||||
"requiredPackages" : [ ],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag" : "Bunnytrack-Hard",
|
|
||||||
"categories" : [
|
|
||||||
"BunnyTrack"
|
|
||||||
],
|
|
||||||
"title" : "BunnyTrack (III)",
|
|
||||||
"toolTip" : "Competitive BT - hardish maplist",
|
|
||||||
"description" : "Competitive BunnyTrack\n\n<UT.Hub.RulesText_Small>*Under Construction*</>\n\n<UT.Hub.RulesText_Small>Note: Difficulty categorization is unofficial and only affects the map rotation.</>\n<UT.Hub.RulesText_Small>Note: Times don't save in the upstream server (yet?)</>",
|
|
||||||
"mapPrefixes" : [ ],
|
|
||||||
"maxMapsInList" : 0,
|
|
||||||
"quickPlayMaps" : [ ],
|
|
||||||
"customMapList" : [
|
|
||||||
"/Game/Maps/BT-Crack/BT-Crack_v1",
|
|
||||||
"/Game/Maps/BT-RadicalTrials1_v5",
|
|
||||||
"/Game/Maps/BT-RadicalTrials2_v4",
|
|
||||||
],
|
|
||||||
"maxPlayers" : 16,
|
|
||||||
"displayTexture" : "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_InstagibCTF.GB_InstagibCTF'",
|
|
||||||
"gameMode" : "/Game/BT/Gamemode/BT_Game.BT_Game_C",
|
|
||||||
"gameOptions" : "?ForceNoBots=1?BalanceTeams=0?MustBeReady=0?ignoreidle=1?MapVoteTime=300?TimeLimit=0?GoalScore=1",
|
|
||||||
"requiredPackages" : [ ],
|
|
||||||
"bTeamGame" : false,
|
|
||||||
"bCompetitiveMatch" : false,
|
|
||||||
"bHideFromUI" : false
|
|
||||||
},
|
|
@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUELBeginner",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "Duel (Beginners)",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel with shield timers\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=ON</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYDUELnogl",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "ProMode Duel noGL",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:/Game/Proctf/Weapons/Proctf/Weapons/bp2_Orig_BioRifle.bp2_Orig_BioRifle_C?mutator=ProMode,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYDUEL",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "ProMode Duel",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=ProMovement,ProWeapons,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUELnogl",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "UT+ Duel noGL",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?MaxSpecators=10?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"minPlayersToStart": 2,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUEL",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "UT+ Duel",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUELnogl",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "UT+ Duel noGL",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?MaxSpecators=10?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"minPlayersToStart": 2,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUEL",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "UT+ Duel",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with UT+ Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,NoPickupTimerMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYDUELnogl",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "ProMode Duel noGL",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?WTR=/Game/ProMode/Weapons/Pro_GrenadeLauncher.Pro_GrenadeLauncher_C:/Game/Proctf/Weapons/Proctf/Weapons/bp2_Orig_BioRifle.bp2_Orig_BioRifle_C?mutator=ProMode,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator,WeaponReplacement",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYDUEL",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "ProMode Duel",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel (with ProMode Movement and Weapon Stats)\n\n<UT.Hub.RulesText_Small>Mutators: ProMode, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF*, PickupTimers=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=ProMovement,ProWeapons,MutHitsounds,MutTeamSkins,WeaponSkins,CustomHUD,NoPickupTimerMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"ProMovement",
|
|
||||||
"ProWeapons",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "UTPlusDUELBeginner",
|
|
||||||
"categories": [
|
|
||||||
"Duel"
|
|
||||||
],
|
|
||||||
"title": "Duel (Beginners)",
|
|
||||||
"toolTip": "Ultimate 1v1 test of deathmatch skill",
|
|
||||||
"description": "1v1 Duel with shield timers\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds, CustomHUD</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=2, TimeLimit=10, WeaponStay=OFF, Amp=OFF, PickupTimers=ON</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/WIP/DM-ASDF,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-BoneBone_Textured",
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Coma/Maps/DM-Coma_A015",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-Deep-03g",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04",
|
|
||||||
"/Game/Maps/DM-Fervor/DM-Fervor_V8",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/dc/Ironic/DM-Alanis"
|
|
||||||
],
|
|
||||||
"maxPlayers": 2,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 1,
|
|
||||||
"maxPartySize": 1,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'",
|
|
||||||
"gameMode" : "/Script/UnrealTournament.UTDuelGame",
|
|
||||||
"gameOptions" : "?MaxPlayers=2?TimeLimit=10?ignoreidle=1?GoalScore=0?ForceNoBots=1?ForceRespawn=1?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,CustomHUD,WeaponReplacement?WTR=/Game/UT+/UTPlus/UT+GrenadeLauncher.UT+GrenadeLauncher_C:/Game/UT+/UTPlus/UT+BioRifle.UT+BioRifle_C?",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"CustomHUD",
|
|
||||||
"MutHitSounds",
|
|
||||||
"MutTeamSkins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYBLITZ",
|
|
||||||
"categories": [
|
|
||||||
"Weapons"
|
|
||||||
],
|
|
||||||
"title": "Blitz",
|
|
||||||
"toolTip": "Blitz Mode",
|
|
||||||
"description": "Blitz",
|
|
||||||
"description": "Blitz\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=12, TimeLimit=20, WeaponStay=OFF, Translocator=ON</>\n\n<UT.Hub.RulesText_Small>*Under Construction*</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "",
|
|
||||||
"defaultMap": "",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/FR-Farage",
|
|
||||||
"/Game/FR-Ozone",
|
|
||||||
"/Game/FR-Quarry",
|
|
||||||
"/Game/GSC/Maps/FR-Scrapyard",
|
|
||||||
"/Game/Maps/FR-Canyon/FR-CanyonWIP4",
|
|
||||||
"/Game/Maps/FR-CastleTest03",
|
|
||||||
"/Game/Maps/FR-ChocolateFactory/FR-ChocolateFactory",
|
|
||||||
"/Game/Maps/FR-ChocolateFactory/FR-FudgeFactory",
|
|
||||||
"/Game/Maps/FR-Foundry/FR-Foundry-WIP6",
|
|
||||||
"/Game/Maps/FR-Horus/FR-Horus_WIP02",
|
|
||||||
"/Game/Maps/FR-Nova/FR-Nova_CUP",
|
|
||||||
"/Game/Maps/FR-Nova/FR-Nova_WIP2",
|
|
||||||
"/Game/Maps/H27/FR-Morphine-Beta005",
|
|
||||||
"/Game/Maps/Sprint/FR-Sprint-Beta002",
|
|
||||||
"/Game/Mogno/FR-Chill/FR-Chill_V2",
|
|
||||||
"/Game/RestrictedAssets/Maps/FR-DormantCoast",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/FR-Blackstone-UC",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/FR-HighRoad-UC",
|
|
||||||
"/Game/dmshaft/FR-MeltDownpdv2019superior",
|
|
||||||
"/Game/fr_crescendo/FR-Crescendo",
|
|
||||||
"/Game/tidu/Maps/FR-Spacecadet_01"
|
|
||||||
],
|
|
||||||
"maxPlayers": 12,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?BalanceTeams=false?TimeLimit=20?GoalScore=0?botfill=2?ignoreidle=1?mutator=MutHitsounds,UTPlus,UTPlusMovement,WeaponSkins,MutTeamskins,NoPickupTimerMutator,NoSpawnProtectionMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator",
|
|
||||||
"NoSpawnProtectionMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "CTF",
|
|
||||||
"categories": [
|
|
||||||
"Weapons"
|
|
||||||
],
|
|
||||||
"title": "CTF",
|
|
||||||
"toolTip": "Capture the Flag",
|
|
||||||
"description": "CTF: UT+",
|
|
||||||
"description": "Capture the Flag\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=12, TimeLimit=20, WeaponStay=OFF, Translocator=ON</>\n\n<UT.Hub.RulesText_Small>*Under Construction*</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/WIP/CTF-Blank,/Game/RestrictedAssets/Maps/WIP/CTF-Quick,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/WIP/CTF-Quick",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/Anfractuous2/CTF-Anfractuous2_scaled",
|
|
||||||
"/Game/AreaN23/CTF-AreaN23",
|
|
||||||
"/Game/Azcanize/CTF-Azcanize",
|
|
||||||
"/Game/CTF-Shadow-Textured",
|
|
||||||
"/Game/Cynosure/CTF-Cynosure2",
|
|
||||||
"/Game/EpicInternal/Pistola/CTF-Pistola-Shell",
|
|
||||||
"/Game/GrendelKeep/CTF-Grendelkeep_shell",
|
|
||||||
"/Game/Maps/CTF-Archanastre-v5",
|
|
||||||
"/Game/Maps/CTF-VaultCity_FPS",
|
|
||||||
"/Game/Ranel/CTF-Ranel",
|
|
||||||
"/Game/RestrictedAssets/Maps/CTF-Polaris_Shellv2",
|
|
||||||
"/Game/RestrictedAssets/Maps/Pater/CTF-BollWerK_UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/Vengeance99/CTF-Vengeance_v06",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Bleak-CE100-UT99/CTF-Bleak-v4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-BleakLE14-UT99/CTF-Bleak-R3",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Gataka-SE/CTF-Gataka-SE-UT99",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/CTF-Orbital-UT99/CTF-Orbital-SE-UT99_metal-4",
|
|
||||||
"/Game/Terra/CTF-Terra-v1",
|
|
||||||
"/Game/UTzoneContent/Maps/Donzi/CTF-Sprinta",
|
|
||||||
"/Game/Virility/CTF-Virility_CE"
|
|
||||||
],
|
|
||||||
"maxPlayers": 12,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTCTFGameMode",
|
|
||||||
"gameOptions": "?MercyScore=5?TimeLimit=20?GoalScore=0?botfil=2?ignoreidle=1?mutator=MutHitsounds,UTPlus,UTPlusMovement,MutTeamSkins,WeaponSkins,NoPickupTimerMutator,NoSpawnProtectionMutator,MutCaptureTime",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"WeaponSkins",
|
|
||||||
"NoPickupTimerMutator",
|
|
||||||
"NoSpawnProtectionMutator",
|
|
||||||
"MutCaptureTime"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYDEATHMATCH",
|
|
||||||
"categories": [
|
|
||||||
"Weapons"
|
|
||||||
],
|
|
||||||
"title": "DM",
|
|
||||||
"toolTip": "Free-for-all Deathmatch",
|
|
||||||
"description": "Free for All Deathmatch, WeaponStay is ON\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=10, TimeLimit=10, WeaponStay=ON</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Chill,/Game/RestrictedAssets/Maps/DM-Underland,/Game/EpicInternal/Lea/DM-Lea,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Campgrounds-PRO-UNG",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-BoneCrusher_MC2",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04"
|
|
||||||
],
|
|
||||||
"maxPlayers": 12,
|
|
||||||
"maxTeamCount": -1,
|
|
||||||
"maxTeamSize": -1,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'",
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTDMGameMode",
|
|
||||||
"gameOptions": "?TimeLimit=10?GoalScore=0?ignoreidle=1?botfill=2?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,NoPickupTimerMutator,WeaponSkins,NoSpawnProtectionMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator",
|
|
||||||
"NoSpawnProtectionMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": false,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,64 +0,0 @@
|
|||||||
{
|
|
||||||
"uniqueTag": "MYTDM",
|
|
||||||
"categories": [
|
|
||||||
"Weapons"
|
|
||||||
],
|
|
||||||
"title": "TDM",
|
|
||||||
"toolTip": "Red-vs-blue team deathmatch",
|
|
||||||
"description": "Team Deathmatch, WeaponStay is OFF\n\n<UT.Hub.RulesText_Small>Mutators: UT+, TeamSkins, WeaponSkins, HitSounds</>\n<UT.Hub.RulesText_Small>Options: MaxPlayers=12, TimeLimit=15, WeaponStay=OFF</>",
|
|
||||||
"mapPrefixes": [],
|
|
||||||
"maxMapsInList": 0,
|
|
||||||
"epicMaps": "/Game/RestrictedAssets/Maps/DM-Outpost23,/Game/RestrictedAssets/Maps/DM-Underland,/Game/RestrictedAssets/Maps/DM-Chill,/Game/EpicInternal/Backspace/DM-Backspace,/Game/EpicInternal/Salt/DM-Salt,/Game/EpicInternal/Lea/DM-Lea,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Temple,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"defaultMap": "/Game/RestrictedAssets/Maps/DM-Chill",
|
|
||||||
"customMapList": [
|
|
||||||
"/Game/DM-Campgrounds-G1E/DM-Campgrounds-G1E",
|
|
||||||
"/Game/DM-Campgrounds-PRO-UNG",
|
|
||||||
"/Game/Domination/Maps/DM-Seraphim",
|
|
||||||
"/Game/GrendelKeep/DM-Grendelkeep_Shell",
|
|
||||||
"/Game/Maps/DM-1/DM-Pure_vrc_3",
|
|
||||||
"/Game/Maps/DM-3/DM-AncientLost_v2i",
|
|
||||||
"/Game/Maps/DM-Antalus",
|
|
||||||
"/Game/Maps/DM-Blaster-v16",
|
|
||||||
"/Game/Maps/DM-Campgrounds/DM-Campgrounds-03a",
|
|
||||||
"/Game/Maps/DM-Protracted/DM-Protracted-WIP16",
|
|
||||||
"/Game/Maps/DM-SuperFantasmic/DM-SuperFantasmic-02c",
|
|
||||||
"/Game/Rankin/DM-Rankin-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-1on1-Roughinery",
|
|
||||||
"/Game/RestrictedAssets/Maps/DM-Cheops-UT4",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-ASDF",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal12k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-AkBal2k4-UT2004/DM-AkBal",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Echo_b7",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Focus-LE",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Goose-b1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-HyperBlast-UT99/DM-HyperBlast-UT99_metal-1",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-Idoma-UT3/DM-Idoma",
|
|
||||||
"/Game/RestrictedAssets/Maps/WIP/DM-StalwartXL-UT99/DM-StalwartXL-UT99_metal-1",
|
|
||||||
"/Game/Signify/DM-Signify",
|
|
||||||
"/Game/Under/DM-Under-LE",
|
|
||||||
"/Game/_Ransom/Maps/DM-ChillShell-Abs-A/DM-ChillShell-Abs-A",
|
|
||||||
"/Game/Maps/DM-Erase/DM-EraseV2_a04"
|
|
||||||
],
|
|
||||||
"maxPlayers": 12,
|
|
||||||
"maxTeamCount": 2,
|
|
||||||
"maxTeamSize": 5,
|
|
||||||
"maxPartySize": 5,
|
|
||||||
"displayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_TDM.GB_TDM'",
|
|
||||||
|
|
||||||
"gameMode": "/Script/UnrealTournament.UTTeamDMGameMode",
|
|
||||||
"gameOptions" : "?BalanceTeams=false?MaxPlayers=12?TimeLimit=15?ignoreidle=1?GoalScore=0?botfill=2?balanceTeams=true?mutator=UTPlus,UTPlusMovement,MutHitsounds,MutTeamskins,WeaponSkins,NoPickupTimerMutator,NoSpawnProtectionMutator",
|
|
||||||
"requiredPackages" : [
|
|
||||||
"MutHitsounds",
|
|
||||||
"MutTeamskins",
|
|
||||||
"WeaponSkins",
|
|
||||||
"UTPlus",
|
|
||||||
"UTPlusMovement",
|
|
||||||
"NoPickupTimerMutator",
|
|
||||||
"NoSpawnProtectionMutator"
|
|
||||||
],
|
|
||||||
"bTeamGame": true,
|
|
||||||
"bCompetitiveMatch": false,
|
|
||||||
"optionFlags": 65535,
|
|
||||||
"bHideFromUI": false,
|
|
||||||
"epicForceUIVisibility": 0
|
|
||||||
},
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
PROJECT_DIR="/home/ut4/serv"
|
|
||||||
|
|
||||||
cd "$PROJECT_DIR"/LinuxServer/Engine/Binaries/Linux
|
|
||||||
while true ; do
|
|
||||||
cd "$PROJECT_DIR"/LinuxServer/Engine/Binaries/Linux
|
|
||||||
./UE4Server-Linux-Shipping UnrealTournament UT-Entry?Game=Lobby -log |& tee /home/ut4/serv/ut4-server.log
|
|
||||||
done
|
|
||||||
cd - >/dev/null
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
pkill -SIGINT -f UE4Server-Linux-Shipping
|
|
||||||
pkill start-server.sh
|
|
||||||
pkill -SIGINT -f UE4Server-Linux-Shipping
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
UT4_DIR="/home/ut4/serv"
|
|
||||||
|
|
||||||
cd "$UT4_DIR"/LinuxServer/Engine/Binaries/Linux
|
|
||||||
chmod 770 UE4Server-Linux-Shipping
|
|
||||||
# chmod 770 UE4Server-Linux-Test
|
|
||||||
while true ; do
|
|
||||||
cd "$UT4_DIR"/LinuxServer/Engine/Binaries/Linux
|
|
||||||
chmod 770 UE4Server-Linux-Shipping
|
|
||||||
nohup ./UE4Server-Linux-Shipping UnrealTournament UT-Entry?Game=Lobby -log | tee /home/ut4/ut4-server.log
|
|
||||||
done
|
|
||||||
cd - >/dev/null
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
pkill -SIGINT -f UE4Server-Linux-Shipping
|
|
||||||
pkill start-server.sh
|
|
||||||
pkill -SIGINT -f UE4Server-Linux-Shipping
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Unreal Tournament 4 Server
|
|
||||||
After=syslog.target network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/home/ut4/serv/start-server.sh
|
|
||||||
ExecReload=/home/ut4/serv/stop-server.sh && sleep 10 && /home/ut4/serv/start-server.sh
|
|
||||||
ExecStop=/home/ut4/serv/stop-server.sh
|
|
||||||
Restart=no
|
|
||||||
RuntimeDirectory=/home/ut4/serv
|
|
||||||
User=ut4
|
|
||||||
Group=ut4
|
|
||||||
KillSignal=SIGQUIT
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
[Core.System]
|
|
||||||
Paths=../../../Engine/Content
|
|
||||||
Paths=%GAMEDIR%Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/SampleGameMode/Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/ContentOnly/Content
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameEngine]
|
|
||||||
bFirstRun=False
|
|
||||||
RconPassword=DivideByZero
|
|
||||||
|
|
||||||
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
|
||||||
NetServerMaxTickRate=96
|
|
||||||
LanServerMaxTickRate=96
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
[/Script/UnrealTournament.UTLobbyGameMode]
|
|
||||||
LobbyPassword=
|
|
||||||
AutoLaunchGameMode=
|
|
||||||
AutoLaunchGameOptions=
|
|
||||||
AutoLaunchMap=
|
|
||||||
MaxPlayersInLobby=75
|
|
||||||
StartingInstancePort=8001
|
|
||||||
InstancePortStep=1
|
|
||||||
MaxInstances=6
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTBaseGameMode]
|
|
||||||
ServerInstanceID=01648766060A091700250157183F1418
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameMode]
|
|
||||||
MapVoteTime=60
|
|
||||||
bRecordReplays=true
|
|
||||||
bHandleDedicatedServerReplays=true
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameState]
|
|
||||||
ServerName=Warehouse Party (Dallas)
|
|
||||||
ServerMOTD=<UT.Font.NormalText.Medium>Elimination, Instagib, BunnyTrack, and Duel</>\n<UT.Font.NormalText.Small.Bold>Big THANK YOU to all the UT4 content creators!!</>\n<UT.Font.NormalText.Small.Bold>ProWeapons, UT+, Instagib mods, and more!</>\n\nHosted in Dallas, Texas (Provider=Linode.com)\nAdmin: zavage.ut4@gmail.com\n\nConsole Commands:\nmutate hitsounds\nmutate teamskins\nmutate weaponskins\n\nDIY simple, self-hosted UT4 Server @ zavage.net/ut4
|
|
||||||
ServerDescription=Silky-smooth Unreal Tournament
|
|
@ -1,14 +0,0 @@
|
|||||||
[Core.System]
|
|
||||||
Paths=../../../Engine/Content
|
|
||||||
Paths=%GAMEDIR%Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/SampleGameMode/Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/ContentOnly/Content
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameEngine]
|
|
||||||
bFirstRun=False
|
|
||||||
RconPassword=<hidden>
|
|
||||||
|
|
||||||
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
|
||||||
NetServerMaxTickRate=96
|
|
||||||
LanServerMaxTickRate=96
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
[/Script/UnrealTournament.UTLobbyGameMode]
|
|
||||||
LobbyPassword=
|
|
||||||
AutoLaunchGameMode=
|
|
||||||
AutoLaunchGameOptions=
|
|
||||||
AutoLaunchMap=
|
|
||||||
MaxPlayersInLobby=75
|
|
||||||
StartingInstancePort=8001
|
|
||||||
InstancePortStep=1
|
|
||||||
MaxInstances=6
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTBaseGameMode]
|
|
||||||
ServerInstanceID=0162010804030B08002A00F9058B4E93
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameMode]
|
|
||||||
MapVoteTime=60
|
|
||||||
bRecordReplays=true
|
|
||||||
bHandleDedicatedServerReplays=true
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameState]
|
|
||||||
ServerName=Warehouse Party (Fremont)
|
|
||||||
ServerMOTD=<UT.Font.NormalText.Medium>Elimination, Instagib, BunnyTrack, and Duel</>\n<UT.Font.NormalText.Small.Bold>Big THANK YOU to all the UT4 content creators!!</>\n<UT.Font.NormalText.Small.Bold>ProWeapons, UT+, Instagib mods, and more!</>\n\nHosted in Fremont, CA (Provider=Linode.com)\nAdmin: zavage.ut4@gmail.com\n\nConsole Commands:\nmutate hitsounds\nmutate teamskins\nmutate weaponskins\n\nDIY simple, self-hosted UT4 Server @ zavage.net/ut4
|
|
||||||
ServerDescription=Silky-smooth Unreal Tournament
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
[Core.System]
|
|
||||||
Paths=../../../Engine/Content
|
|
||||||
Paths=%GAMEDIR%Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/SampleGameMode/Content
|
|
||||||
Paths=../../../UnrealTournament/Plugins/ContentOnly/Content
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameEngine]
|
|
||||||
bFirstRun=False
|
|
||||||
RconPassword=<hidden>
|
|
||||||
|
|
||||||
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
|
||||||
NetServerMaxTickRate=96
|
|
||||||
LanServerMaxTickRate=96
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
[/Script/UnrealTournament.UTLobbyGameMode]
|
|
||||||
LobbyPassword=
|
|
||||||
AutoLaunchGameMode=
|
|
||||||
AutoLaunchGameOptions=
|
|
||||||
AutoLaunchMap=
|
|
||||||
MaxPlayersInLobby=75
|
|
||||||
StartingInstancePort=8001
|
|
||||||
InstancePortStep=1
|
|
||||||
MaxInstances=6
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTBaseGameMode]
|
|
||||||
ServerInstanceID=016273D90C031407001A020B3A2A7C79
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameMode]
|
|
||||||
MapVoteTime=60
|
|
||||||
bRecordReplays=true
|
|
||||||
bHandleDedicatedServerReplays=true
|
|
||||||
|
|
||||||
[/Script/UnrealTournament.UTGameState]
|
|
||||||
ServerName=Warehouse Party (Newark)
|
|
||||||
ServerMOTD=<UT.Font.NormalText.Medium>Elimination, Instagib, BunnyTrack, and Duel</>\n<UT.Font.NormalText.Small.Bold>Big THANK YOU to all the UT4 content creators!!</>\n<UT.Font.NormalText.Small.Bold>~-.-* Which to keep: Newark, NJ or Fremont, CA? *-.-~</>\n\nHosted in Newark, New Jersey (Provider=Linode.com)\nAdmin: zavage.ut4@gmail.com\n\nConsole Commands:\nmutate hitsounds\nmutate teamskins\nmutate weaponskins\n\nDIY simple, self-hosted UT4 Server @ zavage.net/ut4
|
|
||||||
ServerDescription=Email zavage.ut4@gmail.com with requests
|
|
||||||
|
|
3
setup.py
3
setup.py
@ -22,6 +22,9 @@ setup(
|
|||||||
# Third-party dependencies; will be automatically installed
|
# Third-party dependencies; will be automatically installed
|
||||||
install_requires = (
|
install_requires = (
|
||||||
'rdiff-backup',
|
'rdiff-backup',
|
||||||
|
'app_skellington',
|
||||||
|
'appdirs',
|
||||||
|
'sqlparse'
|
||||||
) + app_skellington_requirements,
|
) + app_skellington_requirements,
|
||||||
|
|
||||||
packages = find_packages(),
|
packages = find_packages(),
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
from . import hub_machine
|
from . import hub_machine
|
||||||
|
from . import datalayer
|
||||||
|
from . import scrape_latest
|
||||||
|
|
||||||
import app_skellington
|
import app_skellington
|
||||||
from app_skellington import _util
|
from app_skellington import _util
|
||||||
|
|
||||||
|
|
||||||
class SmileyFace(app_skellington.ApplicationContainer):
|
class SmileyFace(app_skellington.ApplicationContainer):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
filename = 'config.spec'
|
filename = 'config.spec'
|
||||||
@ -10,13 +13,13 @@ class SmileyFace(app_skellington.ApplicationContainer):
|
|||||||
|
|
||||||
config_filepath = self._get_config_filepath(
|
config_filepath = self._get_config_filepath(
|
||||||
'smileyface-ut4',
|
'smileyface-ut4',
|
||||||
'app_author',
|
'',
|
||||||
'hub-config.ini'
|
'hub-config.ini'
|
||||||
)
|
)
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
configspec_filepath=self.configspec_filepath,
|
configspec_filepath=self.configspec_filepath,
|
||||||
config_filepath=config_filepath,
|
configini_filepath=config_filepath,
|
||||||
app_name = 'SmileyFace UT4 Server Panel',
|
app_name = 'SmileyFace UT4 Server Panel',
|
||||||
app_author = 'Mathew Guest',
|
app_author = 'Mathew Guest',
|
||||||
app_version = '0.1',
|
app_version = '0.1',
|
||||||
@ -34,8 +37,29 @@ class SmileyFace(app_skellington.ApplicationContainer):
|
|||||||
hub_machine.UT4ServerMachine
|
hub_machine.UT4ServerMachine
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sm_scrape = sm_root.create_submenu('scrape')
|
||||||
|
_util.register_class_as_commands(
|
||||||
|
self, sm_scrape,
|
||||||
|
scrape_latest.ScrapeUt4Pugs
|
||||||
|
)
|
||||||
|
|
||||||
|
_util.register_class_as_commands(
|
||||||
|
self, sm_scrape,
|
||||||
|
scrape_latest.ScrapeUtcc
|
||||||
|
)
|
||||||
|
|
||||||
|
_util.register_class_as_commands(
|
||||||
|
self, sm_scrape,
|
||||||
|
scrape_latest.LocalFs
|
||||||
|
)
|
||||||
|
|
||||||
def _services(self):
|
def _services(self):
|
||||||
self['model'] = lambda: hub_machine.UTServerMachine(self.ctx)
|
self['model'] = lambda: hub_machine.UTServerMachine(self.ctx)
|
||||||
|
self.dal = datalayer.DataLayer(self.ctx)
|
||||||
|
self['dal'] = lambda: self.dal
|
||||||
|
self['datalayer'] = lambda: datalayer.DbFuncs(self.ctx, self.dal)
|
||||||
|
|
||||||
|
# self['localfs'] = lambda: datalayer.LocalFs(self.ctx, datalayer)
|
||||||
|
|
||||||
def interactive_shell(self):
|
def interactive_shell(self):
|
||||||
pass
|
pass
|
||||||
@ -114,6 +138,7 @@ Typical Usage:
|
|||||||
"""
|
"""
|
||||||
print(s)
|
print(s)
|
||||||
|
|
||||||
|
|
||||||
def start_app():
|
def start_app():
|
||||||
app = SmileyFace()
|
app = SmileyFace()
|
||||||
app.invoke_from_cli()
|
app.invoke_from_cli()
|
||||||
|
@ -1,24 +1,62 @@
|
|||||||
[app]
|
[app]
|
||||||
project_dir = string(max=255, default='')
|
project_dir = string(max=255, default='')
|
||||||
|
config_dir = string(max=255, default='')
|
||||||
|
download_url = string(max=255, default='https://s3.amazonaws.com/unrealtournament/ShippedBuilds/%2B%2BUT%2BRelease-Next-CL-3525360/UnrealTournament-Server-XAN-3525360-Linux.zip')
|
||||||
|
download_filename = string(max=255, default='UnrealTournament-Server-XAN-3525360-Linux.zip')
|
||||||
|
download_md5 = string(max=255, default='cad730ad6793ba6261f9a341ad7396eb')
|
||||||
|
skip_validate = boolean(default=False)
|
||||||
|
redirect_protocol = string(max=255, default='')
|
||||||
|
redirect_url = string(max=255, default='')
|
||||||
|
remote_game_host = string(max=255, default='')
|
||||||
|
remote_game_dir = string(max=255, default='')
|
||||||
|
remote_redirect_host = string(max=255, default='')
|
||||||
|
|
||||||
config_dir = string(max=255, default='')
|
sqlite_filename = string(max=255, default='smiles.db')
|
||||||
|
|
||||||
download_url = string(max=255, default='https://s3.amazonaws.com/unrealtournament/ShippedBuilds/%2B%2BUT%2BRelease-Next-CL-3525360/UnrealTournament-Server-XAN-3525360-Linux.zip')
|
|
||||||
|
|
||||||
download_filename = string(max=255, default='UnrealTournament-Server-XAN-3525360-Linux.zip')
|
|
||||||
|
|
||||||
download_md5 = string(max=255, default='cad730ad6793ba6261f9a341ad7396eb')
|
|
||||||
|
|
||||||
skip_validate = boolean(default=False)
|
|
||||||
|
|
||||||
redirect_protocol = string(max=255, default='')
|
|
||||||
|
|
||||||
redirect_url = string(max=255, default='')
|
|
||||||
|
|
||||||
remote_game_host = string(max=255, default='')
|
|
||||||
|
|
||||||
remote_game_dir = string(max=255, default='')
|
|
||||||
|
|
||||||
remote_redirect_host = string(max=255, default='')
|
|
||||||
|
|
||||||
[logging]
|
[logging]
|
||||||
|
log_file = string(max=255, default='')
|
||||||
|
log_level = option('critical', 'error', 'warning', 'info', 'debug', default='info')
|
||||||
|
log_fmt = string(max=255, default='')
|
||||||
|
disable_existing_loggers = boolean(default=False)
|
||||||
|
|
||||||
|
[[formatters]]
|
||||||
|
[[[colored]]]
|
||||||
|
() = string(default='colorlog.ColoredFormatter')
|
||||||
|
format = string(max=255, default='%(log_color)s%(levelname)-8s%(reset)s:%(log_color)s%(name)-5s%(reset)s:%(white)s%(message)s')
|
||||||
|
|
||||||
|
[[[basic]]]
|
||||||
|
() = string(max=255, default='logging.Formatter')
|
||||||
|
format = string(max=255, default='%(levelname)s:%(name)s:%(asctime)s:%(message)s')
|
||||||
|
|
||||||
|
[[[forstorage]]]
|
||||||
|
() = string(max=255, default='logging.Formatter')
|
||||||
|
format = string(max=255, default='%(levelname)s:%(name)s:%(asctime)s:%(message)s')
|
||||||
|
|
||||||
|
[[handlers]]
|
||||||
|
[[[stderr]]]
|
||||||
|
class = string(max=255, default='logging.StreamHandler')
|
||||||
|
level = option('critical', 'error', 'warning', 'info', 'debug', default='debug')
|
||||||
|
formatter = string(max=255, default='colored')
|
||||||
|
|
||||||
|
[[[file]]]
|
||||||
|
class = string(max=255, default='logging.handlers.RotatingFileHandler')
|
||||||
|
level = option('critical', 'error', 'warning', 'info', 'debug', default='warning')
|
||||||
|
formatter = string(max=255, default='forstorage')
|
||||||
|
filename = string(max=255, default='cas_admin.log')
|
||||||
|
maxBytes = integer(min=0, max=33554432, default=33554432)
|
||||||
|
backupCount = integer(min=0, max=3, default=1)
|
||||||
|
|
||||||
|
[[loggers]]
|
||||||
|
[[[root]]]
|
||||||
|
level = option('critical', 'error', 'warning', 'info', 'debug', default='debug')
|
||||||
|
handlers = string_list(max=8, default=list('file',))
|
||||||
|
|
||||||
|
[[[ut4]]]
|
||||||
|
level = option('critical', 'error', 'warning', 'info', 'debug', default='debug')
|
||||||
|
handlers = string_list(max=8, default=list('stderr',))
|
||||||
|
propagate = boolean(default=True)
|
||||||
|
|
||||||
|
[[[db]]]
|
||||||
|
level = option('critical', 'error', 'warning', 'info', 'debug', default='debug')
|
||||||
|
handlers = string_list(max=8, default=list('stderr',))
|
||||||
|
propagate = boolean(default=True)
|
||||||
|
4
smileyface/datalayer/README.md
Normal file
4
smileyface/datalayer/README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
datalayer
|
||||||
|
=========
|
||||||
|
datalayer module is for a local sqlite3.db file which contains application
|
||||||
|
state. It stores local file list and md5sums.
|
2
smileyface/datalayer/__init__.py
Normal file
2
smileyface/datalayer/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
from .datalayer import *
|
||||||
|
from .db_ops import *
|
18
smileyface/datalayer/create_schema.sql
Normal file
18
smileyface/datalayer/create_schema.sql
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
drop table if exists file_paks;
|
||||||
|
create table file_paks (
|
||||||
|
file_pak_id integer primary key,
|
||||||
|
fullpath varchar(255),
|
||||||
|
filename varchar(255),
|
||||||
|
md5sum varchar(255),
|
||||||
|
filesize int,
|
||||||
|
validated_state varchar(31),
|
||||||
|
validated_at datetime,
|
||||||
|
validated_against varchar(255),
|
||||||
|
remote_src_md5 varchar(255),
|
||||||
|
record_created_at datetime,
|
||||||
|
record_updated_at datetime,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unique(filename)
|
||||||
|
);
|
36
smileyface/datalayer/datalayer.py
Normal file
36
smileyface/datalayer/datalayer.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from smileyface import myutil
|
||||||
|
|
||||||
|
import appdirs
|
||||||
|
import sqlite3
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class DataLayer:
|
||||||
|
def __init__(self, ctx):
|
||||||
|
self.ctx = ctx
|
||||||
|
self._db_conn = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def db_conn(self):
|
||||||
|
if self._db_conn is None:
|
||||||
|
self._db_conn = self._create_db_connection()
|
||||||
|
return self._db_conn
|
||||||
|
|
||||||
|
def _create_db_connection(self):
|
||||||
|
local_db_filename = self.ctx.config['app']['sqlite_filename']
|
||||||
|
appdir = appdirs.user_data_dir('smileyface')
|
||||||
|
fullpath = os.path.join(appdir, local_db_filename)
|
||||||
|
self.ctx.log['ut4'].info('sqlite3 filename: %s', fullpath)
|
||||||
|
|
||||||
|
myutil.ensure_dir_exists(fullpath)
|
||||||
|
|
||||||
|
db = sqlite3.connect(fullpath)
|
||||||
|
return db
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
self.ctx.log['db'].info('commit()')
|
||||||
|
self.db_conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
166
smileyface/datalayer/db_ops.py
Normal file
166
smileyface/datalayer/db_ops.py
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
from smileyface import myutil
|
||||||
|
from smileyface import structs
|
||||||
|
|
||||||
|
import app_skellington._util as apputil
|
||||||
|
import appdirs
|
||||||
|
import datetime
|
||||||
|
import os
|
||||||
|
import sqlparse
|
||||||
|
|
||||||
|
|
||||||
|
class DbFuncs:
|
||||||
|
def __init__(self, ctx, dal):
|
||||||
|
self.ctx = ctx
|
||||||
|
self.dal = dal
|
||||||
|
|
||||||
|
def create_tables(self):
|
||||||
|
sql_filename = apputil.get_asset(__name__, 'create_schema.sql')
|
||||||
|
with open(sql_filename) as fp:
|
||||||
|
contents_sql = fp.read()
|
||||||
|
stmts = sqlparse.split(contents_sql)
|
||||||
|
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
for stmt in stmts:
|
||||||
|
print('----')
|
||||||
|
print(stmt)
|
||||||
|
curs.execute(stmt)
|
||||||
|
|
||||||
|
self.dal.commit()
|
||||||
|
|
||||||
|
def truncate_tables(self):
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
sql = '''
|
||||||
|
truncate file_paks;
|
||||||
|
'''
|
||||||
|
for stmt in sqlparse.split(sql):
|
||||||
|
curs.execute(stmt)
|
||||||
|
self.dal.commit()
|
||||||
|
|
||||||
|
def insert_filepak_record(self, record):
|
||||||
|
|
||||||
|
# NOTE(MG) datetime parameter logic could be improved and more complete
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
sql = '''
|
||||||
|
insert into file_paks (
|
||||||
|
file_pak_id,
|
||||||
|
fullpath,
|
||||||
|
filename,
|
||||||
|
md5sum,
|
||||||
|
record_created_at,
|
||||||
|
record_updated_at
|
||||||
|
) values (
|
||||||
|
?, ?, ?, ?,
|
||||||
|
datetime('now', 'localtime'),
|
||||||
|
datetime('now', 'localtime')
|
||||||
|
)
|
||||||
|
on conflict(filename) do update set
|
||||||
|
file_pak_id = excluded.file_pak_id,
|
||||||
|
fullpath = excluded.fullpath,
|
||||||
|
filename = excluded.filename, -- unique key
|
||||||
|
md5sum = excluded.md5sum,
|
||||||
|
--created at does not update
|
||||||
|
record_updated_at = datetime('now', 'localtime')
|
||||||
|
'''
|
||||||
|
args = (
|
||||||
|
record.file_pak_id,
|
||||||
|
record.fullpath,
|
||||||
|
record.filename,
|
||||||
|
record.md5sum
|
||||||
|
# record.record_created_at,
|
||||||
|
# record.record_updated_at
|
||||||
|
)
|
||||||
|
# print(sql)
|
||||||
|
curs.execute(sql, args)
|
||||||
|
self.dal.commit()
|
||||||
|
|
||||||
|
def mark_filepak_validated_state(self, rec_id, validate_state, src, remote_src_md5):
|
||||||
|
# validation data src
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
sql = '''
|
||||||
|
update file_paks
|
||||||
|
set
|
||||||
|
validated_state = ?,
|
||||||
|
validated_at = datetime('now', 'localtime'),
|
||||||
|
validated_against = ?,
|
||||||
|
remote_src_md5 = ?
|
||||||
|
where
|
||||||
|
file_pak_id = ?
|
||||||
|
|
||||||
|
'''
|
||||||
|
args = (validate_state, src, remote_src_md5, rec_id)
|
||||||
|
curs.execute(sql, args)
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
def query_filepak(self, filename):
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
sql = '''
|
||||||
|
select
|
||||||
|
file_pak_id, fullpath, filename,
|
||||||
|
md5sum, record_created_at, record_updated_at
|
||||||
|
from
|
||||||
|
file_paks
|
||||||
|
where
|
||||||
|
lower(filename) = lower(?)'''
|
||||||
|
args = (filename,)
|
||||||
|
# print(sql)
|
||||||
|
curs.execute(sql, args)
|
||||||
|
rows = curs.fetchall()
|
||||||
|
output = []
|
||||||
|
for r in rows:
|
||||||
|
filepak = structs.FilePak()
|
||||||
|
print(r)
|
||||||
|
filepak.file_pak_id = r[0]
|
||||||
|
filepak.fullpath = r[1]
|
||||||
|
filepak.filename = r[2]
|
||||||
|
filepak.md5sum = r[3]
|
||||||
|
filepak.record_created_at = r[4]
|
||||||
|
filepak.record_updated_at = r[5]
|
||||||
|
output.append(filepak)
|
||||||
|
if len(output) == 0:
|
||||||
|
return
|
||||||
|
elif len(output) == 1:
|
||||||
|
return output[0]
|
||||||
|
elif len(output) > 1:
|
||||||
|
input('<breakpoint> unexpected two rows returned from db when expecting to be unique')
|
||||||
|
return output
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
def query_invalid_filepaks(self):
|
||||||
|
conn = self.dal.db_conn
|
||||||
|
curs = conn.cursor()
|
||||||
|
sql = '''
|
||||||
|
select
|
||||||
|
file_pak_id, fullpath, filename,
|
||||||
|
md5sum,
|
||||||
|
validated_state, validated_at, validated_against,
|
||||||
|
record_created_at, record_updated_at
|
||||||
|
from
|
||||||
|
file_paks
|
||||||
|
where
|
||||||
|
lower(filename) = lower(?)'''
|
||||||
|
args = (filename,)
|
||||||
|
# print(sql)
|
||||||
|
curs.execute(sql, args)
|
||||||
|
rows = curs.fetchall()
|
||||||
|
output = []
|
||||||
|
for r in rows:
|
||||||
|
filepak = structs.FilePak()
|
||||||
|
print(r)
|
||||||
|
filepak.file_pak_id = r[0]
|
||||||
|
filepak.fullpath = r[1]
|
||||||
|
filepak.filename = r[2]
|
||||||
|
filepak.md5sum = r[3]
|
||||||
|
filepak.record_created_at = r[7]
|
||||||
|
filepak.record_updated_at = r[8]
|
||||||
|
output.append(filepak)
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
|||||||
from .config_editor import UnrealIniFile, GameIniSpecial
|
from .gameconfig_edit import UnrealIniFile, GameIniSpecial
|
||||||
from ._util import md5sum_file
|
from ._util import md5sum_file
|
||||||
|
from . import myutil
|
||||||
|
from . import structs
|
||||||
|
|
||||||
from app_skellington import _util
|
|
||||||
import collections
|
import collections
|
||||||
import configobj
|
import configobj
|
||||||
import configparser
|
import configparser
|
||||||
|
import datetime
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import pathlib
|
import pathlib
|
||||||
@ -12,13 +14,17 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
class UT4ServerMachine:
|
class UT4ServerMachine:
|
||||||
def __init__(self, ctx):
|
def __init__(self, ctx, datalayer):
|
||||||
self.ctx = ctx
|
self.ctx = ctx
|
||||||
|
self.datalayer = datalayer
|
||||||
|
|
||||||
if not self._validate_env_vars():
|
if not self._validate_env_vars():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def oneclickdeploy(self):
|
def oneclickdeploy(self):
|
||||||
self.generate_instance()
|
self.generate_instance()
|
||||||
self.upload_redirects()
|
self.upload_redirects()
|
||||||
@ -172,7 +178,7 @@ ssh {remote_game_host} {remote_game_dir}/stop-server.sh
|
|||||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||||
cwd = project_dir
|
cwd = project_dir
|
||||||
cmd = '''
|
cmd = '''
|
||||||
rsync -rvz \
|
rsync -rivz \
|
||||||
--delete \
|
--delete \
|
||||||
--exclude "*.md5" \
|
--exclude "*.md5" \
|
||||||
--exclude 'unused' \
|
--exclude 'unused' \
|
||||||
@ -200,12 +206,14 @@ rsync -rvz \
|
|||||||
engineini="/srv/ut4-redirect.zavage.net/config/Engine.ini"
|
engineini="/srv/ut4-redirect.zavage.net/config/Engine.ini"
|
||||||
|
|
||||||
cmd = '''
|
cmd = '''
|
||||||
ssh mathewguest.com sed -i /ServerInstanceID=/c\ServerInstanceID=Hidden {gameini}
|
ssh mathewguest.com \
|
||||||
|
sed -i /ServerInstanceID=/c\ServerInstanceID=Hidden {gameini}
|
||||||
'''.format(gameini=gameini)
|
'''.format(gameini=gameini)
|
||||||
self._invoke_command(cmd)
|
self._invoke_command(cmd)
|
||||||
|
|
||||||
cmd = '''
|
cmd = '''
|
||||||
ssh mathewguest.com sed -i /RconPassword=/c\RconPassword=Hidden {engineini}
|
ssh mathewguest.com \
|
||||||
|
sed -i /RconPassword=/c\RconPassword=Hidden {engineini}
|
||||||
'''.format(engineini=engineini)
|
'''.format(engineini=engineini)
|
||||||
self._invoke_command(cmd)
|
self._invoke_command(cmd)
|
||||||
|
|
||||||
@ -213,7 +221,9 @@ ssh mathewguest.com sed -i /RconPassword=/c\RconPassword=Hidden {engineini}
|
|||||||
project_dir = self.ctx.config['app']['project_dir']
|
project_dir = self.ctx.config['app']['project_dir']
|
||||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||||
cmd = '''
|
cmd = '''
|
||||||
rsync -vz {project_dir}/ut4-server-ctl.sh {remote_redirect_host}
|
rsync -vz \
|
||||||
|
{project_dir}/ut4-server-ctl.sh \
|
||||||
|
{remote_redirect_host}
|
||||||
'''\
|
'''\
|
||||||
.format(**{
|
.format(**{
|
||||||
'project_dir': project_dir,
|
'project_dir': project_dir,
|
||||||
@ -227,7 +237,8 @@ rsync -vz {project_dir}/ut4-server-ctl.sh {remote_redirect_host}
|
|||||||
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
remote_redirect_host = self.ctx.config['app']['remote_redirect_host']
|
||||||
|
|
||||||
cmd = '''
|
cmd = '''
|
||||||
ssh mathewguest.com 'chown http.http /srv/ut4-redirect.zavage.net -R'
|
ssh mathewguest.com \
|
||||||
|
chown http:http /srv/ut4-redirect.zavage.net -R
|
||||||
'''
|
'''
|
||||||
self._invoke_command(cmd)
|
self._invoke_command(cmd)
|
||||||
|
|
||||||
@ -243,7 +254,7 @@ ssh mathewguest.com 'chown http.http /srv/ut4-redirect.zavage.net -R'
|
|||||||
|
|
||||||
# transfer #1
|
# transfer #1
|
||||||
cmd = '''
|
cmd = '''
|
||||||
rsync -ravzp \
|
rsync -raivzp \
|
||||||
--delete \
|
--delete \
|
||||||
--exclude ".KEEP" \
|
--exclude ".KEEP" \
|
||||||
--exclude "Mods.db" \
|
--exclude "Mods.db" \
|
||||||
@ -268,7 +279,9 @@ rsync -ravzp \
|
|||||||
|
|
||||||
# transfer #2
|
# transfer #2
|
||||||
cmd = '''
|
cmd = '''
|
||||||
rsync -avzp {project_dir}/ut4-server-ctl.sh {remote_game_host}:{remote_game_dir}
|
rsync -avzp \
|
||||||
|
{project_dir}/ut4-server-ctl.sh \
|
||||||
|
{remote_game_host}:{remote_game_dir}
|
||||||
'''\
|
'''\
|
||||||
.format(**{
|
.format(**{
|
||||||
'project_dir': project_dir,
|
'project_dir': project_dir,
|
||||||
@ -280,7 +293,9 @@ rsync -avzp {project_dir}/ut4-server-ctl.sh {remote_game_host}:{remote_game_dir}
|
|||||||
|
|
||||||
# transfer #3
|
# transfer #3
|
||||||
cmd = '''
|
cmd = '''
|
||||||
scp {project_dir}/instance/ut4-server.service {remote_game_host}:/etc/systemd/system/
|
scp \
|
||||||
|
{project_dir}/instance/ut4-server.service \
|
||||||
|
{remote_game_host}:/etc/systemd/system/
|
||||||
'''\
|
'''\
|
||||||
.format(**{
|
.format(**{
|
||||||
'project_dir': project_dir,
|
'project_dir': project_dir,
|
||||||
@ -292,7 +307,24 @@ scp {project_dir}/instance/ut4-server.service {remote_game_host}:/etc/systemd/sy
|
|||||||
|
|
||||||
# transfer #4
|
# transfer #4
|
||||||
cmd = '''
|
cmd = '''
|
||||||
ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
ssh {remote_game_host} \
|
||||||
|
chown ut4:ut4 {remote_game_dir} -R
|
||||||
|
'''.format(**{
|
||||||
|
'remote_game_host': remote_game_host,
|
||||||
|
'remote_game_dir': remote_game_dir
|
||||||
|
|
||||||
|
})
|
||||||
|
# subprocess.run(cmd, cwd=cwd)
|
||||||
|
self._invoke_command(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Fix +x permissions on bash scripts
|
||||||
|
cmd = '''
|
||||||
|
ssh {remote_game_host} \
|
||||||
|
chmod +x \
|
||||||
|
{remote_game_dir}/start-server.sh \
|
||||||
|
{remote_game_dir}/stop-server.sh
|
||||||
'''.format(**{
|
'''.format(**{
|
||||||
'remote_game_host': remote_game_host,
|
'remote_game_host': remote_game_host,
|
||||||
'remote_game_dir': remote_game_dir
|
'remote_game_dir': remote_game_dir
|
||||||
@ -395,6 +427,14 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
|||||||
relative_path = p.relative_to(mod_dir)
|
relative_path = p.relative_to(mod_dir)
|
||||||
pkg_basename = p.name
|
pkg_basename = p.name
|
||||||
|
|
||||||
|
# TODO(MG) Handle filenames w/o extension
|
||||||
|
try:
|
||||||
|
split = os.path.splitext(pkg_basename)
|
||||||
|
pkg_basename = split[0]
|
||||||
|
except Exception as ex:
|
||||||
|
print(ex)
|
||||||
|
continue
|
||||||
|
|
||||||
line = game_ini.add_redirect_reference(**{
|
line = game_ini.add_redirect_reference(**{
|
||||||
'pkg_basename': pkg_basename,
|
'pkg_basename': pkg_basename,
|
||||||
'redirect_protocol': redirect_protocol,
|
'redirect_protocol': redirect_protocol,
|
||||||
@ -412,7 +452,7 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
|||||||
project_dir = self.ctx.config['app']['project_dir']
|
project_dir = self.ctx.config['app']['project_dir']
|
||||||
|
|
||||||
src_dir = '/'.join([project_dir, 'files/rulesets'])
|
src_dir = '/'.join([project_dir, 'files/rulesets'])
|
||||||
out_dir = '/'.join([project_dir, '/instance/LinuxServer/UnrealTournament/Saved/Rulesets'])
|
out_dir = '/'.join([project_dir, '/instance/LinuxServer/UnrealTournament/Saved/Config/Rulesets'])
|
||||||
out_filename='/'.join([out_dir, 'ruleset.json'])
|
out_filename='/'.join([out_dir, 'ruleset.json'])
|
||||||
|
|
||||||
cmd = 'mkdir -pv {out_dir}'.format(**{
|
cmd = 'mkdir -pv {out_dir}'.format(**{
|
||||||
@ -423,7 +463,7 @@ ssh {remote_game_host} chown ut4.ut4 {remote_game_dir} -R
|
|||||||
self.ctx.log['ut4'].info('out filename=%s', out_filename)
|
self.ctx.log['ut4'].info('out filename=%s', out_filename)
|
||||||
|
|
||||||
# echo {\"rules\":[ > "$OUT_FILENAME"
|
# echo {\"rules\":[ > "$OUT_FILENAME"
|
||||||
cmd = 'echo {{\"rules\":[ > "{out_filename}"'.format(out_filename=out_filename)
|
cmd = "echo '{{\"rules\":[' > \"{out_filename}\"".format(out_filename=out_filename)
|
||||||
self._invoke_command(cmd)
|
self._invoke_command(cmd)
|
||||||
|
|
||||||
cmd = 'for f in "{src_dir}"/*.json ; do cat "$f" >> "{out_filename}" ; done'.format(
|
cmd = 'for f in "{src_dir}"/*.json ; do cat "$f" >> "{out_filename}" ; done'.format(
|
||||||
|
18
smileyface/myutil.py
Normal file
18
smileyface/myutil.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import hashlib
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_dir_exists(dirpath):
|
||||||
|
if dirpath is None:
|
||||||
|
return
|
||||||
|
if dirpath == '':
|
||||||
|
return
|
||||||
|
dirpath = os.path.dirname(dirpath)
|
||||||
|
os.makedirs(dirpath, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
def md5_file(filename):
|
||||||
|
with open(filename, 'rb') as fp:
|
||||||
|
data = fp.read()
|
||||||
|
h = hashlib.md5(data).hexdigest()
|
||||||
|
return h
|
4
smileyface/scrape_latest/README.md
Normal file
4
smileyface/scrape_latest/README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
scrape_latest
|
||||||
|
=============
|
||||||
|
Module is for checking against ut4pugs and utcc.unrealpugs.com to check for latest/updated
|
||||||
|
pak files.
|
3
smileyface/scrape_latest/__init__.py
Normal file
3
smileyface/scrape_latest/__init__.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from .local_fs import *
|
||||||
|
from .scrape_utcc import *
|
||||||
|
from .scrape_ut4pugs import *
|
45
smileyface/scrape_latest/local_fs.py
Normal file
45
smileyface/scrape_latest/local_fs.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
from smileyface import myutil
|
||||||
|
from smileyface import structs
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class LocalFs:
|
||||||
|
def __init__(self, ctx, datalayer):
|
||||||
|
self.ctx = ctx
|
||||||
|
self.datalayer = datalayer
|
||||||
|
|
||||||
|
def create_db_table(self):
|
||||||
|
self.datalayer.create_tables()
|
||||||
|
|
||||||
|
def load_md5s(self):
|
||||||
|
paks_dir = self.ctx.config['app']['project_dir']
|
||||||
|
maps_dir = os.path.join(paks_dir, 'files', 'maps')
|
||||||
|
print(maps_dir)
|
||||||
|
self._load_md5_one_dir(maps_dir)
|
||||||
|
|
||||||
|
muts_dir = os.path.join(paks_dir, 'files', 'mutators')
|
||||||
|
print(muts_dir)
|
||||||
|
self._load_md5_one_dir(muts_dir)
|
||||||
|
|
||||||
|
def _load_md5_one_dir(self, dirname):
|
||||||
|
for fn in os.listdir(dirname):
|
||||||
|
fullpath = os.path.join(dirname, fn)
|
||||||
|
print(fn)
|
||||||
|
md5sum = myutil.md5_file(fullpath)
|
||||||
|
print(md5sum)
|
||||||
|
|
||||||
|
record = structs.FilePak()
|
||||||
|
record.fullpath = fullpath
|
||||||
|
record.filename = fn
|
||||||
|
record.md5sum = md5sum
|
||||||
|
record.record_created_at = datetime.datetime.now()
|
||||||
|
record.record_updated_at = datetime.datetime.now()
|
||||||
|
|
||||||
|
self.datalayer.insert_filepak_record(record)
|
||||||
|
|
||||||
|
def print_invalid_filepaks(self):
|
||||||
|
filepaks = self.datalayer.query_invalid_filepaks()
|
||||||
|
for pak in filepaks:
|
||||||
|
print(pak)
|
65
smileyface/scrape_latest/scrape_ut4pugs.py
Normal file
65
smileyface/scrape_latest/scrape_ut4pugs.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import selenium
|
||||||
|
import selenium.webdriver
|
||||||
|
|
||||||
|
URL_MUTATORS = 'https://ut4pugs.us/redirect-mutators'
|
||||||
|
URL_MAPS = 'https://ut4pugs.us/redirect-mutators'
|
||||||
|
|
||||||
|
|
||||||
|
class ScrapeUt4Pugs:
|
||||||
|
def __init__(self, ctx, datalayer):
|
||||||
|
self.ctx = ctx
|
||||||
|
self.datalayer = datalayer
|
||||||
|
self._browser = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def browser(self):
|
||||||
|
if not self._browser:
|
||||||
|
self._browser = selenium.webdriver.Firefox()
|
||||||
|
return self._browser
|
||||||
|
|
||||||
|
def check_ut4pugs_for_latest(self):
|
||||||
|
self.browser.get(URL_MUTATORS)
|
||||||
|
self._check_pak_md5sums()
|
||||||
|
|
||||||
|
self.browser.get(URL_MAPS)
|
||||||
|
self._check_pak_md5sums()
|
||||||
|
|
||||||
|
def _check_pak_md5sums(self):
|
||||||
|
tbl_of_mutators = self.browser.find_element_by_id('myTable')
|
||||||
|
print(tbl_of_mutators)
|
||||||
|
|
||||||
|
mut_rows = tbl_of_mutators.find_elements_by_xpath('tbody/tr')
|
||||||
|
for r in mut_rows:
|
||||||
|
mut_cols = r.find_elements_by_xpath('td')
|
||||||
|
if len(mut_cols) != 3:
|
||||||
|
input('<breakpoint> at unexpected columns for mutator. received {}'.format(len(mut_cols)))
|
||||||
|
mut_file = mut_cols[0]
|
||||||
|
mut_md5 = mut_cols[1]
|
||||||
|
mut_ini_line = mut_cols[2]
|
||||||
|
|
||||||
|
print(mut_file.text)
|
||||||
|
print(mut_md5.text)
|
||||||
|
# print(mut_ini_line.text)
|
||||||
|
|
||||||
|
local_file = self.datalayer.query_filepak(mut_file.text)
|
||||||
|
print(local_file)
|
||||||
|
if not local_file:
|
||||||
|
self.ctx.log['ut4'].warn('pak not found locally: %s', mut_file.text)
|
||||||
|
continue
|
||||||
|
|
||||||
|
local_md5 = local_file.md5sum
|
||||||
|
remote_md5 = mut_md5.text
|
||||||
|
|
||||||
|
if local_md5 != remote_md5:
|
||||||
|
input('<breakpoint> as mismatching md5!')
|
||||||
|
print('local: ', local_md5)
|
||||||
|
print('remote: ', remote_md5)
|
||||||
|
self.datalayer.mark_filepak_validated_state(local_file.file_pak_id, 'mismatch', 'ut4pugs', remote_md5)
|
||||||
|
else:
|
||||||
|
input('<breakpoint> as matching md5! good job')
|
||||||
|
self.datalayer.mark_filepak_validated_state(local_file.file_pak_id, 'valid', 'ut4pugs', None)
|
||||||
|
|
||||||
|
# print(r)
|
||||||
|
print('xxx')
|
||||||
|
pass
|
||||||
|
pass
|
24
smileyface/scrape_latest/scrape_utcc.py
Normal file
24
smileyface/scrape_latest/scrape_utcc.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import selenium
|
||||||
|
import selenium.webdriver
|
||||||
|
|
||||||
|
URL_CARDS_LIST = 'https://utcc.unrealpugs.com/content'
|
||||||
|
|
||||||
|
|
||||||
|
class ScrapeUtcc:
|
||||||
|
def __init__(self, ctx, datalayer):
|
||||||
|
self.ctx = ctx
|
||||||
|
self.datalayer = datalayer
|
||||||
|
self._browser = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def browser(self):
|
||||||
|
if not self._browser:
|
||||||
|
self._browser = selenium.webdriver.Firefox()
|
||||||
|
return self._browser
|
||||||
|
|
||||||
|
def check_ut4cc_for_latest(self):
|
||||||
|
self._scrape_list_of_content_cards()
|
||||||
|
|
||||||
|
def _scrape_list_of_content_cards(self):
|
||||||
|
self.browser.get(URL_CARDS_LIST)
|
||||||
|
|
11
smileyface/structs.py
Normal file
11
smileyface/structs.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
|
class FilePak:
|
||||||
|
def __init__(self):
|
||||||
|
self.file_pak_id = None
|
||||||
|
self.fullpath = None
|
||||||
|
self.filename = None
|
||||||
|
self.md5sum = None
|
||||||
|
self.record_created_at = None
|
||||||
|
self.record_updated_at = None
|
@ -1,733 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# The 'All You Need' Unreal Tournament 4 Server (HUB) Script
|
|
||||||
# ==========================================================
|
|
||||||
# This script is everything you need for hosting your own UT4
|
|
||||||
# server! The way this works is you have a root server directory with this
|
|
||||||
# script inside it. There's separate directories for config files, maps,
|
|
||||||
# mutators, and rulesets for the provided game types. You always edit the files
|
|
||||||
# in those directories and then run this script to deploy the server. This
|
|
||||||
# includes:
|
|
||||||
#
|
|
||||||
# (*) Automatic downloading of the latest <server.zip> from Epic
|
|
||||||
# (*) Installing the game configuration files, the mutators, the maps into the
|
|
||||||
# instance
|
|
||||||
# (*) Uploading all .pak package files to the redirect and automatic
|
|
||||||
# generation of the required hashes for Game.ini
|
|
||||||
# (*) The only thing that's left is for you to configure your gametypes,
|
|
||||||
# add some maps, mutators, and get to fraggin'!!!
|
|
||||||
#
|
|
||||||
# Remote and Multiple Instances
|
|
||||||
# -----------------------------
|
|
||||||
# This script is designed to take files (maps, mutators, config) from
|
|
||||||
# a project directory and deploy them to two remote servers, the game
|
|
||||||
# instance and the redirect. Alternatively, these could be the same
|
|
||||||
# computer but the redirect should be distinct from the game server
|
|
||||||
# or downloads will make everyone lag. There is no restriction on
|
|
||||||
# where you put the project directory but you need a place for
|
|
||||||
# this script, all the maps, mutators to reside. You put maps,
|
|
||||||
# rulesets, and configuration in this project directory and then run
|
|
||||||
# this script to generate the instance, deploy to the server instance,
|
|
||||||
# and deploy to the redirect. This is also used to manage multiple
|
|
||||||
# server instances without as much duplication of effort. You need
|
|
||||||
# enough hard drive space to store all the files for the server which
|
|
||||||
# could be 10-20GB if you put lots of stuff on your HUB.
|
|
||||||
|
|
||||||
# Rulesets:
|
|
||||||
# ---------
|
|
||||||
# Management of the rulesets (which provide the pre-populated gametypes, including
|
|
||||||
# all the selected mutators, the map rotation, game options, and mutator
|
|
||||||
# options) is greatly improved. There's some provided rulesets and some Disable.json
|
|
||||||
# files which remove the pre-populated ones. You manage each rule as a .json configuration
|
|
||||||
# file in the ./files/rulesets directory. The main part that is not automated
|
|
||||||
# is the Resource Path for maps to put them in the rotation. You can get these from
|
|
||||||
# UTCC, or from hosting a lan game with that map on your local game client,
|
|
||||||
#
|
|
||||||
# After you start a map, <alt>+<tab> to go to the UT4 console window and copy/paste
|
|
||||||
# the name from the logs. It will be the big line and look like:
|
|
||||||
#
|
|
||||||
# ...Game=/?
|
|
||||||
#
|
|
||||||
# It will make sense when you see the files.
|
|
||||||
#
|
|
||||||
# UPDATE: or better yet there is a script on the forums that will extract the required resource names
|
|
||||||
# from a directory of paks.
|
|
||||||
#
|
|
||||||
# What You Need:
|
|
||||||
# -------------
|
|
||||||
# (1) A Server
|
|
||||||
# What you need to actually host this somewhere is a server to run the hub.
|
|
||||||
# Ideally this is a machine with it's own internet line else it may slow
|
|
||||||
# down when you watch NetFlix. Cloud hosting providers will provide you
|
|
||||||
# a perfect machine for a fee/month.
|
|
||||||
#
|
|
||||||
# (2) A Redirect
|
|
||||||
# On the same note as giving the server it's own internet line, content
|
|
||||||
# from the server is sent to gamers from a third-party server. You additionally
|
|
||||||
# need a 'redirect' server to host the files. This can be another server or I've
|
|
||||||
# seen many public redirects which would be happy to spread some of that
|
|
||||||
# Unreal Tournament Love. In case, we use a second cloud server.
|
|
||||||
#
|
|
||||||
# (3) A good attitude. You're almost done. There's just a few commands to learn
|
|
||||||
# that this script provides. You need to put this script in the right directory
|
|
||||||
# and then edit that directory path to the right place. After that, you can
|
|
||||||
# invoke the script to install and configure your instance.
|
|
||||||
#
|
|
||||||
# Usage and Directions:
|
|
||||||
# ---------------------
|
|
||||||
#
|
|
||||||
# Edit the exported parameters at the top of this file. You
|
|
||||||
# certainly need to point this to your relevant servers or
|
|
||||||
# be prepared to perform the file transfer manually. All
|
|
||||||
# work is done in the PROJECT_DIR variable so you can see the files
|
|
||||||
# in there. Use the source code as reference.
|
|
||||||
#
|
|
||||||
# Relevant directories (starting from PROJECT_DIR as base):
|
|
||||||
#
|
|
||||||
# - base Vanilla UT4 server as downloaded
|
|
||||||
#
|
|
||||||
# - files Custom Maps, mutators, rulesets, and config
|
|
||||||
#
|
|
||||||
# - instance Generated UT4 server application
|
|
||||||
# (for transfer if moving to a remot eserver)
|
|
||||||
# (YOU shouldn't need to edit this folder as
|
|
||||||
# it gets updated by the script)
|
|
||||||
#
|
|
||||||
# Requirements: Linux server with installed dependencies, including wget,
|
|
||||||
# scp, unzip, and sed. These utilities are used for the various file transfers
|
|
||||||
# and operations, and will be installed on almost every Linux distribution by
|
|
||||||
# default.
|
|
||||||
#
|
|
||||||
# Credits: Script modeled after the code in the unrelated easy-rsa
|
|
||||||
# script which I found to be helpful in writing this script.
|
|
||||||
#
|
|
||||||
# Last tested with UT4 server: <version number>
|
|
||||||
# Last updated: 2019-05-05
|
|
||||||
|
|
||||||
# Configurable parameters (EDIT THESE):
|
|
||||||
# -------------------------------------
|
|
||||||
# Local directory to do everything in -- Point to a directory on the server
|
|
||||||
# to be the base directory, storing all the UT4 files. If you don't care,
|
|
||||||
# then just use /home/ut4/serv like provided.
|
|
||||||
# Some good places that make sense, though technically anywhere will work:
|
|
||||||
# * /home/ut4
|
|
||||||
# * /opt/ut4
|
|
||||||
# * /srv/ut4
|
|
||||||
|
|
||||||
####
|
|
||||||
####
|
|
||||||
# BELOW has been moved to vars-dallas
|
|
||||||
# ----------------------------------------
|
|
||||||
#
|
|
||||||
export PROJECT_DIR="/home/mathew/dev/zavage/ut4-server-ctl"
|
|
||||||
#
|
|
||||||
# # For creating RedirectReferences= Lines
|
|
||||||
# export REDIRECT_PROTOCOL="https"
|
|
||||||
# export REDIRECT_URL="ut4-redirect.zavage.net"
|
|
||||||
#
|
|
||||||
# # Remote server, if applicable, to upload instance and paks
|
|
||||||
# # Only used for upload-redirects and upload-server commands.
|
|
||||||
# # Format: username@host:/directory/on/remote/server
|
|
||||||
# export REMOTE_GAME_HOST="ut4-linode:/home/ut4/serv"
|
|
||||||
# export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect"
|
|
||||||
|
|
||||||
# BELOW HERE, DEFAULTS SHOULD BE FINE. FEEL FREE TO EDIT IF YOU
|
|
||||||
# KNOW WHAT YOU'RE DOING
|
|
||||||
# Latest Linux Server.zip:
|
|
||||||
export DOWNLOAD_URL="https://s3.amazonaws.com/unrealtournament/ShippedBuilds/%2B%2BUT%2BRelease-Next-CL-3525360/UnrealTournament-Server-XAN-3525360-Linux.zip"
|
|
||||||
export DOWNLOAD_FILENAME="UnrealTournament-Server-XAN-3525360-Linux.zip"
|
|
||||||
# If MD5 hash is provided, will verify the download:
|
|
||||||
export DOWNLOAD_MD5="cad730ad6793ba6261f9a341ad7396eb"
|
|
||||||
|
|
||||||
export SKIP_VALIDATE="false" # anything but 'true' will interactively ask
|
|
||||||
# the user for variables.
|
|
||||||
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
cat <<"EOF"
|
|
||||||
Unreal Tournament 4 Server Build and Deploy Script
|
|
||||||
|
|
||||||
A list of commands is shown below.
|
|
||||||
|
|
||||||
List commands and usage:
|
|
||||||
./ut4-server-ctl.sh
|
|
||||||
|
|
||||||
Show help for a specific command:
|
|
||||||
./ut4-server-ctl.sh --help <COMMAND>
|
|
||||||
|
|
||||||
Here is the list of sub-commands with short syntax reminder:
|
|
||||||
./ut4-server-ctl.sh 1click-deploy
|
|
||||||
./ut4-server-ctl.sh clean-instance
|
|
||||||
./ut4-server-ctl.sh create-directories
|
|
||||||
./ut4-server-ctl.sh download-linux-server
|
|
||||||
./ut4-server-ctl.sh download-logs
|
|
||||||
./ut4-server-ctl.sh generate-instance
|
|
||||||
./ut4-server-ctl.sh start-server
|
|
||||||
./ut4-server-ctl.sh stop-server
|
|
||||||
./ut4-server-ctl.sh upload-redirects
|
|
||||||
./ut4-server-ctl.sh upload-server
|
|
||||||
|
|
||||||
Typical Usage:
|
|
||||||
1) You need to either configure the remote server hostnames (both game server and remote redirect server)
|
|
||||||
in the vars files. Edit vars with a text editor, or edit the defaults in this file, or manually type
|
|
||||||
them interactively when prompted* (coming soon).
|
|
||||||
|
|
||||||
e.g.:
|
|
||||||
PROJECT_DIR="/path/to/this/script/directory/on/local/machine"
|
|
||||||
REMOTE_GAME_HOST="54.123.456.10"
|
|
||||||
REMOTE_GAME_DIR="/home/ut4/hub-instance"
|
|
||||||
|
|
||||||
REMOTE_REDIRECT_HOST="45.321.654.10"
|
|
||||||
REMOTE_REDIRECT_DIR="/srv/ut4-redirect/"
|
|
||||||
|
|
||||||
2) You need to download the latest Linux Server release from Epic. Do
|
|
||||||
this with the 'download-server' command.
|
|
||||||
|
|
||||||
e.g.:
|
|
||||||
./ut4-server-ctl.sh download-server
|
|
||||||
|
|
||||||
3) Add and configure custom maps, mutators, rulesets, and hub configuration to your *local* project folder.
|
|
||||||
This is done by modifying the files in the project directory. With the current environment variables,
|
|
||||||
this is set to be:
|
|
||||||
|
|
||||||
"$PROJECT_DIR"
|
|
||||||
|
|
||||||
This is the fun part! Connect with UTCC or UTZONE.DE (unaffiliated) to find custom content to put on
|
|
||||||
your hub.
|
|
||||||
|
|
||||||
4) 1click-deploy to update the remote hub and redirect with your latest content. You're done! Rinse and repeat.
|
|
||||||
|
|
||||||
e.g.:
|
|
||||||
./ut4-server-ctl.sh 1click-deploy
|
|
||||||
|
|
||||||
Alternatively, this command is equivalent to running the separate commands. If you'd like more fine-grained
|
|
||||||
control, you can run them individually.
|
|
||||||
./ut4-server-ctl.sh generate-instance
|
|
||||||
./ut4-server-ctl.sh upload-redirects
|
|
||||||
./ut4-server-ctl.sh upload-server
|
|
||||||
./ut4-server-ctl.sh restart-server
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd_help()
|
|
||||||
{
|
|
||||||
cmd="$1"
|
|
||||||
case "$cmd" in
|
|
||||||
1click-deploy)
|
|
||||||
cat <<"EOF"
|
|
||||||
1click-deploy)
|
|
||||||
Executes all the commands needed to update a remote game server. This is
|
|
||||||
equivalent to running these 3 commands:
|
|
||||||
1 - generate-instance (installing config, maps, and mutators)
|
|
||||||
2 - upload-server (copying hub instance to remote game server)
|
|
||||||
3 - upload-redirects (copying customized content to remote redirect server)
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
|
|
||||||
clean-instance)
|
|
||||||
cat <<"EOF"
|
|
||||||
clean-instance)
|
|
||||||
This command will delete all files on the generated instance on the LOCAL machine.
|
|
||||||
|
|
||||||
Useful for if you ever delete a map or mutator and wan't it off the server. To do that,
|
|
||||||
modify the files you need, clean-instance, and then generate-instance from scratch.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
create-directories)
|
|
||||||
cat <<"EOF"
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
download-linux-server)
|
|
||||||
cat <<"EOF"
|
|
||||||
download-linux-server)
|
|
||||||
Downloads the latest Linux server release from Epic.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
download-logs)
|
|
||||||
cat <<"EOF"
|
|
||||||
download-logs)
|
|
||||||
Downloads the instance logs from the remote game server while clearing
|
|
||||||
them on the server.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
generata-instance)
|
|
||||||
cat <<"EOF"
|
|
||||||
generate-instance)
|
|
||||||
Installs the game configuration, maps, and mutators into the *local*
|
|
||||||
instance directory. The next step after this has been done is to
|
|
||||||
upload-server to copy the instance directory to the remote game server.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
restart-server)
|
|
||||||
cat <<"EOF"
|
|
||||||
restart-server)
|
|
||||||
Equivalent to stop-server + start-server.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
start-server)
|
|
||||||
cat <<"EOF"
|
|
||||||
start-server)
|
|
||||||
Turns on the remote game server Unreal Tournament 4 Linux Hub instance. Will run in
|
|
||||||
an infinite loop until stopped.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
stop-server)
|
|
||||||
cat <<"EOF"
|
|
||||||
stop-server)
|
|
||||||
Turns off and kills all remote game server instances.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
upload-redirects)
|
|
||||||
cat <<"EOF"
|
|
||||||
upload-redirects)
|
|
||||||
Uploads customized content and sanitized server configuration to remote
|
|
||||||
redirect server.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
upload-server)
|
|
||||||
cat <<"EOF"
|
|
||||||
upload-server)
|
|
||||||
Installs the generated UT4 Hub instance to the configured remote game
|
|
||||||
server.
|
|
||||||
EOF
|
|
||||||
;;
|
|
||||||
""|help|-h|--help|--usage)
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown command '$cmd'. Invoke script for usage help."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
oneclick_deploy()
|
|
||||||
{
|
|
||||||
generate_instance
|
|
||||||
upload_redirects
|
|
||||||
upload_server
|
|
||||||
}
|
|
||||||
|
|
||||||
clean_instance()
|
|
||||||
{
|
|
||||||
_UT4_print Clearing .pak folder...
|
|
||||||
(set -x # NOTE(MG) set -x echoes all commands that the script does.
|
|
||||||
# The user will be able to see the computed commands as the
|
|
||||||
# script runs them.
|
|
||||||
|
|
||||||
rm -rv "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/*
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
create_directories()
|
|
||||||
{
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
mkdir -p "$PROJECT_DIR"/base
|
|
||||||
mkdir -p "$PROJECT_DIR"/files/config
|
|
||||||
mkdir -p "$PROJECT_DIR"/files/maps
|
|
||||||
mkdir -p "$PROJECT_DIR"/files/mutators
|
|
||||||
mkdir -p "$PROJECT_DIR"/files/rulesets
|
|
||||||
mkdir -p "$PROJECT_DIR"/files/unused
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
download_linux_server()
|
|
||||||
{
|
|
||||||
cd "$PROJECT_DIR"/base
|
|
||||||
|
|
||||||
# Only download server when hasn't already been downloaded
|
|
||||||
if [ ! -f "$PROJECT_DIR"/base/"$DOWNLOAD_FILENAME" ] ; then
|
|
||||||
_UT4_print "Downloading Linux Server Archive..."
|
|
||||||
(set -x
|
|
||||||
wget "$DOWNLOAD_URL" --show-progress
|
|
||||||
)
|
|
||||||
|
|
||||||
_UT4_print "Verifying archive is the file we're expecting"
|
|
||||||
md5=$(md5sum "$DOWNLOAD_FILENAME" | cut -d' ' -f1)
|
|
||||||
if [ "$md5" != "$DOWNLOAD_MD5" ] ; then
|
|
||||||
server.zip echo Downloaded '"$DOWNLOAD_FILENAME"' checksum FAILED.
|
|
||||||
echo The downloaded zip was not the exact file we\'re expecting.
|
|
||||||
echo Refusing to continue.
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
echo The downloaded zip checksum matched what we expected: "$DOWNLOAD_MD5"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
_UT4_print "UT4 Server .zip already downloaded"
|
|
||||||
_UT4_print "You need to invoke this command manually if you want to delete these files. (Being extra safe)"
|
|
||||||
_UT4_print "DELETE COMMAND (manual): cd "$PROJECT_DIR"/base && rm -rv *" && cd -
|
|
||||||
cd - >/dev/null
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract ut4 linux server into ./base (with overwrite)
|
|
||||||
_UT4_print "Extracting archive..."
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
unzip -o "$DOWNLOAD_FILENAME"
|
|
||||||
# rm "$DOWNLOAD_FILENAME"
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
cd - >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
download_logs()
|
|
||||||
{
|
|
||||||
_UT4_print "Downloading the game logs from the server (clearing them also)"
|
|
||||||
# Transfer log directory files from remote game server to local:
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -ravzp "$REMOTE_GAME_HOST":"$REMOTE_GAME_DIR"/LinuxServer/UnrealTournament/Saved/Logs/ "$CONFIG_DIR"/downloaded-logs/
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
# Delete logs on remote game server if successfully transferred to local:
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
:
|
|
||||||
# ssh "$REMOTE_GAME_HOST" rm "$REMOTE_GAME_DIR"'/LinuxServer/UnrealTournament/Saved/Logs/* -r'
|
|
||||||
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_instance()
|
|
||||||
{
|
|
||||||
_UT4_print "Generating server instance from custom files..."
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -ravzp "$PROJECT_DIR"/base/LinuxServer "$PROJECT_DIR"/instance/
|
|
||||||
cp "$PROJECT_DIR"/start-server.sh "$PROJECT_DIR"/instance/
|
|
||||||
cp "$PROJECT_DIR"/stop-server.sh "$PROJECT_DIR"/instance/
|
|
||||||
|
|
||||||
)
|
|
||||||
# _first_run
|
|
||||||
_install_config
|
|
||||||
_install_paks
|
|
||||||
_install_redirect_lines
|
|
||||||
_install_rulesets
|
|
||||||
}
|
|
||||||
|
|
||||||
restart_server()
|
|
||||||
{
|
|
||||||
stop_server
|
|
||||||
start_server
|
|
||||||
}
|
|
||||||
|
|
||||||
start_server()
|
|
||||||
{
|
|
||||||
_UT4_print "Starting server!!"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
nohup ssh "$REMOTE_GAME_HOST" "$REMOTE_GAME_DIR"/start-server.sh &
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_server()
|
|
||||||
{
|
|
||||||
_UT4_print "Stopping all servers!"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
ssh "$REMOTE_GAME_HOST" "$REMOTE_GAME_DIR"/stop-server.sh
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
upload_redirects()
|
|
||||||
{
|
|
||||||
PAKS_DIR="$PROJECT_DIR"/files
|
|
||||||
|
|
||||||
_UT4_print "Uploading redirects (maps, mutators, etc.) to download server"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -rvz --delete --exclude "*.md5" --exclude 'unused' --exclude ".KEEP" --exclude Mods.db "$PAKS_DIR"/ "$REMOTE_REDIRECT_HOST"
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
# _UT4_print "Uploading md5sum files to redirect"
|
|
||||||
# mkdir /tmp/ut4-md5sums
|
|
||||||
# for f in $(ls "$PAKS_DIR"); do
|
|
||||||
# md5sum "$PAKS_DIR"/"$f" | cut -d' ' -f1 > /tmp/ut4-md5sums/"$f".md5
|
|
||||||
# done
|
|
||||||
|
|
||||||
# rsync -rvz --exclude ".KEEP" /tmp/ut4-md5sums/ "$REMOTE_REDIRECT_HOST"
|
|
||||||
|
|
||||||
|
|
||||||
# Hide admin password from redirect:
|
|
||||||
# TODO(MG) hardcoded paths and hostname >.<
|
|
||||||
|
|
||||||
# (on the server)
|
|
||||||
gameini="/srv/ut4-redirect.zavage.net/config/Game.ini"
|
|
||||||
engineini="/srv/ut4-redirect.zavage.net/config/Engine.ini"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
ssh mathewguest.com sed -i /ServerInstanceID=/c\ServerInstanceID=Hidden "$gameini"
|
|
||||||
|
|
||||||
ssh mathewguest.com sed -i /RconPassword=/c\RconPassword=Hidden "$engineini"
|
|
||||||
|
|
||||||
rsync -vz "$PROJECT_DIR"/ut4-server-ctl.sh "$REMOTE_REDIRECT_HOST"
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
# Fix permissions for redirect:
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
ssh mathewguest.com 'chown http.http /srv/ut4-redirect.zavage.net -R'
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
upload_server()
|
|
||||||
{
|
|
||||||
_UT4_print "Uploading customized server"
|
|
||||||
# Exclude everything we don't want to be
|
|
||||||
# overwritten on the server instance.
|
|
||||||
# (Hint: uncomment --dry-run to safely verify command works as intended)
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -ravzp \
|
|
||||||
--delete \
|
|
||||||
--exclude ".KEEP" \
|
|
||||||
--exclude "Mods.db" \
|
|
||||||
--exclude "Mod.ini" \
|
|
||||||
--exclude "Logs" \
|
|
||||||
--exclude "ut4-server.log" \
|
|
||||||
--exclude "Saved/*.ai" \
|
|
||||||
--exclude "Saved/Crashes/*" \
|
|
||||||
--exclude "Saved/Logs/*" \
|
|
||||||
"$PROJECT_DIR"/instance/ \
|
|
||||||
"$REMOTE_GAME_HOST":"$REMOTE_GAME_DIR"
|
|
||||||
|
|
||||||
rsync -avzp "$PROJECT_DIR"/ut4-server-ctl.sh "$REMOTE_GAME_HOST":"$REMOTE_GAME_DIR"
|
|
||||||
|
|
||||||
scp "$PROJECT_DIR"/instance/ut4-server.service "$REMOTE_GAME_HOST":/etc/systemd/system/
|
|
||||||
|
|
||||||
ssh "$REMOTE_GAME_HOST" chown ut4.ut4 "$REMOTE_GAME_DIR" -R
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
_first_run()
|
|
||||||
{
|
|
||||||
_UT4_print "Starting instance once to get UID."
|
|
||||||
_UT4_print "Unfortunately, this takes 20 seconds. Just wait."
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
cd "$PROJECT_DIR"/instance/LinuxServer/Engine/Binaries/Linux
|
|
||||||
chmod 770 UE4Server-Linux-Shipping
|
|
||||||
./UE4Server-Linux-Shipping UnrealTournament UT-Entry?Game=Lobby -log &>/dev/null &
|
|
||||||
cd - >/dev/null
|
|
||||||
|
|
||||||
)
|
|
||||||
_UT4_print "sleeping 20 seconds and then we'll kill the server we started just now."
|
|
||||||
sleep 20
|
|
||||||
stop_server
|
|
||||||
# TODO(MG) get uid and export
|
|
||||||
}
|
|
||||||
|
|
||||||
_install_config()
|
|
||||||
{
|
|
||||||
f="Game.ini"
|
|
||||||
_UT4_print Installing file: "$f"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
cp "$CONFIG_DIR"/"$f" "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
f="Engine.ini"
|
|
||||||
_UT4_print Installing file: "$f"
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
cp "$CONFIG_DIR"/"$f" "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
_install_paks()
|
|
||||||
{
|
|
||||||
_UT4_print Installing maps...
|
|
||||||
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -ravzp "$PROJECT_DIR"/files/maps/ "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_UT4_print Installing mutators...
|
|
||||||
(set -x
|
|
||||||
|
|
||||||
rsync -ravzp "$PROJECT_DIR"/files/mutators/ "$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Content/Paks/
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
_install_redirect_lines()
|
|
||||||
{
|
|
||||||
_UT4_print Generating redirect references...
|
|
||||||
MOD_DIR="$PROJECT_DIR"/files
|
|
||||||
shopt -s nocaseglob
|
|
||||||
echo > /tmp/ut4-server-ctl-references
|
|
||||||
for f in "$MOD_DIR"/**/*.pak ; do
|
|
||||||
# f = full path
|
|
||||||
RELATIVE_PATH=${f#"$MOD_DIR"/} # <- Trims /root/path/up/until/$MOD_DIR
|
|
||||||
# example output: maps/DM-Rankin.pak
|
|
||||||
# mutators/GodMode.pak
|
|
||||||
BASENAME=$(basename "$f") # DM-Rankin.pak
|
|
||||||
|
|
||||||
# Exclusions:
|
|
||||||
# - exclude the UnrealTournament pak
|
|
||||||
if [ "$BASENAME" = "UnrealTournament-LinuxServer.pak" ] ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Exclude any files in the 'unused' directory:
|
|
||||||
FIRSTDIR=$(echo "$RELATIVE_PATH" | cut -d'/' -f1)
|
|
||||||
if [ "$FIRSTDIR" = "unused" ] ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
MD5=$(md5sum "$f"| cut -d' ' -f1)
|
|
||||||
EXTENSION="${BASENAME##*.}" # .pak
|
|
||||||
FILENAME="${BASENAME%.*}" # DM-Rankin
|
|
||||||
# line continues that way --> --> -->
|
|
||||||
LINE="RedirectReferences=(PackageName=\""$FILENAME"\",PackageURLProtocol=\"$REDIRECT_PROTOCOL\",PackageURL=\""$REDIRECT_URL"/"$RELATIVE_PATH"\",PackageChecksum=\""$MD5"\")"
|
|
||||||
echo "$LINE"
|
|
||||||
echo "$LINE" >> /tmp/ut4-server-ctl-references
|
|
||||||
done
|
|
||||||
|
|
||||||
_UT4_print Installing redirect references into Game.ini...
|
|
||||||
FILENAME="$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/LinuxServer/Game.ini
|
|
||||||
LINE_NUMBER=17 # TODO(MG) Not hard-coded
|
|
||||||
|
|
||||||
# Delete
|
|
||||||
sed -i '/RedirectReferences/d' "$FILENAME"
|
|
||||||
|
|
||||||
# Insert into Game.ini
|
|
||||||
awk '1; NR==11 {system("cat /tmp/ut4-server-ctl-references")}' "$FILENAME" > /tmp/ut4-server-ctl-game.ini
|
|
||||||
cp /tmp/ut4-server-ctl-game.ini "$FILENAME"
|
|
||||||
cat "$FILENAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
_install_rulesets()
|
|
||||||
{
|
|
||||||
_UT4_print Concatenating rulesets for game modes...
|
|
||||||
SRC_DIR="$PROJECT_DIR"/files/rulesets
|
|
||||||
OUT_DIR="$PROJECT_DIR"/instance/LinuxServer/UnrealTournament/Saved/Config/Rulesets
|
|
||||||
OUT_FILENAME="$OUT_DIR"/ruleset.json
|
|
||||||
|
|
||||||
mkdir -pv "$OUT_DIR"
|
|
||||||
|
|
||||||
echo OUT_FILENAME="$OUT_FILENAME"
|
|
||||||
|
|
||||||
echo {\"rules\":[ > "$OUT_FILENAME"
|
|
||||||
|
|
||||||
for f in "$SRC_DIR"/*.json ; do
|
|
||||||
cat "$f" >> $OUT_FILENAME
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "]}" >> "$OUT_FILENAME"
|
|
||||||
echo output ruleset is at "$OUT_FILENAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
_validate_env_vars()
|
|
||||||
{
|
|
||||||
# TODO(MG) Add which user we are running this under
|
|
||||||
_UT4_print Are these environment variables correct?
|
|
||||||
echo 'PROJECT_DIR: '"$PROJECT_DIR"
|
|
||||||
echo
|
|
||||||
echo 'DOWNLOAD_URL: '"$DOWNLOAD_URL"
|
|
||||||
echo 'DOWNLOAD_FILENAME: '"$DOWNLOAD_FILENAME"
|
|
||||||
echo 'DOWNLOAD_MD5: '"$DOWNLOAD_MD5"
|
|
||||||
echo 'REDIRECT_PROTOCOL: '"$REDIRECT_PROTOCOL"
|
|
||||||
echo 'REDIRECT_URL: '"$REDIRECT_URL"
|
|
||||||
echo 'REMOTE_GAME_HOST: '"$REMOTE_GAME_HOST"
|
|
||||||
echo 'REMOTE_GAME_DIRECTORY: '"$REMOTE_GAME_DIR"
|
|
||||||
echo 'REMOTE_REDIRECT_HOST: '"$REMOTE_REDIRECT_HOST"
|
|
||||||
echo
|
|
||||||
|
|
||||||
|
|
||||||
read -p "Continue with above configuration? " -n 1 -r
|
|
||||||
echo
|
|
||||||
if [[ ! $REPLY =~ ^[Yy]$ ]] ; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Wrapper prints colored log messages which stand out to communicate what
|
|
||||||
# the script is doing to the user.
|
|
||||||
_UT4_print()
|
|
||||||
{
|
|
||||||
RED='\033[0;31m'
|
|
||||||
NC='\033[0m'
|
|
||||||
echo -e "UT4>${RED} "$@" ${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
cmd="$1"
|
|
||||||
_validate_env_vars
|
|
||||||
|
|
||||||
case "$cmd" in
|
|
||||||
1click-instance)
|
|
||||||
shift
|
|
||||||
oneclick_deploy "$@"
|
|
||||||
exit "$?";;
|
|
||||||
clean-instance)
|
|
||||||
shift
|
|
||||||
clean_instance "$@"
|
|
||||||
exit "$?";;
|
|
||||||
create-directories)
|
|
||||||
shift
|
|
||||||
create_directories "$@"
|
|
||||||
exit "$?";;
|
|
||||||
download-linux-server)
|
|
||||||
shift
|
|
||||||
download_linux_server "$@"
|
|
||||||
exit "$?";;
|
|
||||||
download-logs)
|
|
||||||
shift
|
|
||||||
download_logs "$@"
|
|
||||||
exit "$?";;
|
|
||||||
generate-instance)
|
|
||||||
shift
|
|
||||||
generate_instance "$@"
|
|
||||||
exit "$?";;
|
|
||||||
restart-server)
|
|
||||||
shift
|
|
||||||
restart_server "$@"
|
|
||||||
exit "$?";;
|
|
||||||
start-server)
|
|
||||||
shift
|
|
||||||
start_server "$@"
|
|
||||||
exit "$?";;
|
|
||||||
stop-server)
|
|
||||||
shift
|
|
||||||
stop_server "$@"
|
|
||||||
exit "$?";;
|
|
||||||
upload-redirects)
|
|
||||||
shift
|
|
||||||
upload_redirects "$@"
|
|
||||||
exit "$?";;
|
|
||||||
upload-server)
|
|
||||||
shift
|
|
||||||
upload_server "$@"
|
|
||||||
exit "$?";;
|
|
||||||
""|help|-h|--help|--usage)
|
|
||||||
shift
|
|
||||||
cmd_help "$@"
|
|
||||||
exit 0;;
|
|
||||||
*)
|
|
||||||
cmd_help "$@"
|
|
||||||
exit 1;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
|||||||
export PROJECT_DIR="/home/mathew/dev/zavage/ut4-server-ctl"
|
|
||||||
export CONFIG_DIR="/home/mathew/dev/zavage/ut4-server-ctl/server-dallas/config"
|
|
||||||
|
|
||||||
export REDIRECT_PROTOCOL="https"
|
|
||||||
export REDIRECT_URL="ut4-redirect.zavage.net"
|
|
||||||
|
|
||||||
export REMOTE_GAME_HOST="ut4-linode"
|
|
||||||
export REMOTE_GAME_DIR="/home/ut4/serv"
|
|
||||||
export REMOTE_REDIRECT_HOST="root@45.33.76.178:/srv/ut4-redirect.zavage.net"
|
|
10
vars-fremont
10
vars-fremont
@ -1,10 +0,0 @@
|
|||||||
export PROJECT_DIR="/home/mathew/dev/zavage/ut4-server-ctl"
|
|
||||||
export CONFIG_DIR="/home/mathew/dev/zavage/ut4-server-ctl/server-fremont/config"
|
|
||||||
|
|
||||||
export REDIRECT_PROTOCOL="https"
|
|
||||||
export REDIRECT_URL="ut4-redirect.zavage.net"
|
|
||||||
|
|
||||||
export REMOTE_GAME_HOST="ut4-fremont"
|
|
||||||
export REMOTE_GAME_DIR="/home/ut4/serv"
|
|
||||||
export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect.zavage.net"
|
|
||||||
|
|
10
vars-newark
10
vars-newark
@ -1,10 +0,0 @@
|
|||||||
export PROJECT_DIR="/home/mathew/dev/zavage/ut4-server-ctl"
|
|
||||||
export PROJECT_DIR="/home/mathew/dev/zavage/ut4-server-ctl/server-newark/config"
|
|
||||||
|
|
||||||
export REDIRECT_PROTOCOL="https"
|
|
||||||
export REDIRECT_URL="ut4-redirect.zavage.net"
|
|
||||||
|
|
||||||
export REMOTE_GAME_HOST="ut4-newark"
|
|
||||||
export REMOTE_GAME_DIR="/home/ut4/serv"
|
|
||||||
export REMOTE_REDIRECT_HOST="mathewguest.com:/srv/ut4-redirect.zavage.net"
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user