Update vallc.ps1

This commit is contained in:
SuspiciousActivity authored and GitHub committed 2022-06-01 22:09:06 +02:00
1 parent 6cfdffb413
commit 23ba78c38a
1 file changed
+118 -79
+118 -79
View File
@@ -52,105 +52,135 @@ if (Test-Path $configPath) {
} }
} }
$modified = 0 $outer = @{}
$tried = 0
while (!$valid.regions.Contains($config.region)) { function Ensure-Config {
$modified = 1 $outer.modified = 0
if ($tried -eq 1) { $tried = 0
Write-Host 'That is not a valid region!' -ForegroundColor Red while (!$valid.regions.Contains($config.region)) {
$outer.modified = 1
if ($tried -eq 1) {
Write-Host 'That is not a valid region!' -ForegroundColor Red
}
Write-Host 'Please enter your general region:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.regions), ')')) -ForegroundColor DarkGray
$config.region = Read-Host
$tried = 1
} }
Write-Host 'Please enter your general region:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.regions), ')')) -ForegroundColor DarkGray
$config.region = Read-Host
$tried = 1
}
$regionConfig = $patchConfigs | Where-Object 'id' -eq $config.region $outer.regionConfig = $patchConfigs | Where-Object 'id' -eq $config.region
$valid.langs = $regionConfig | ForEach-Object {$_.locale_data.available_locales} $valid.langs = $outer.regionConfig | ForEach-Object {$_.locale_data.available_locales}
$tried = 0 $tried = 0
while (!$valid.langs.Contains($config.voiceLang)) { while (!$valid.langs.Contains($config.voiceLang)) {
$modified = 1 $outer.modified = 1
if ($tried -eq 1) { if ($tried -eq 1) {
Write-Host 'That is not a valid language!' -ForegroundColor Red Write-Host 'That is not a valid language!' -ForegroundColor Red
}
Write-Host 'Please enter your voice language:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.langs), ')')) -ForegroundColor DarkGray
$config.voiceLang = Read-Host
$tried = 1
} }
Write-Host 'Please enter your voice language:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.langs), ')')) -ForegroundColor DarkGray
$config.voiceLang = Read-Host
$tried = 1
}
$tried = 0 $tried = 0
while (!$valid.langs.Contains($config.textLang)) { while (!$valid.langs.Contains($config.textLang)) {
$modified = 1 $outer.modified = 1
if ($tried -eq 1) { if ($tried -eq 1) {
Write-Host 'That is not a valid language!' -ForegroundColor Red Write-Host 'That is not a valid language!' -ForegroundColor Red
}
Write-Host 'Please enter your text language:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.langs), ')')) -ForegroundColor DarkGray
$config.textLang = Read-Host
$tried = 1
} }
Write-Host 'Please enter your text language:' -ForegroundColor Yellow
Write-Host (-join('(', [string]::Join(', ', $valid.langs), ')')) -ForegroundColor DarkGray
$config.textLang = Read-Host
$tried = 1
}
$tried = 0 $tried = 0
:out while (($null -eq $config.pakPath) -or (!$config.pakPath.EndsWith($savePakPath)) -or !(Test-Path $config.pakPath)) { :out while (($null -eq $config.pakPath) -or (!$config.pakPath.EndsWith($savePakPath)) -or !(Test-Path $config.pakPath)) {
$modified = 1 $outer.modified = 1
if ($tried -eq 1) { if ($tried -eq 1) {
Write-Host 'That is not the correct folder!' -ForegroundColor Red Write-Host 'That is not the correct folder!' -ForegroundColor Red
} else { } else {
Write-Host 'Trying to find VALORANT...' -ForegroundColor Green Write-Host 'Trying to find VALORANT...' -ForegroundColor Green
$drives = Get-PSDrive -PSProvider FileSystem | ForEach-Object {$_.Root} $drives = Get-PSDrive -PSProvider FileSystem | ForEach-Object {$_.Root}
foreach ($drive in $drives) { foreach ($drive in $drives) {
$jsonPath = -join($drive, 'ProgramData\Riot Games\RiotClientInstalls.json') $jsonPath = -join($drive, 'ProgramData\Riot Games\RiotClientInstalls.json')
if (!(Test-Path $jsonPath)) { if (!(Test-Path $jsonPath)) {
continue continue
} }
$installs = Get-Content ($jsonPath) | ConvertFrom-Json $installs = Get-Content ($jsonPath) | ConvertFrom-Json
$installPaths = $installs.associated_client.PSObject.Properties.Name $installPaths = $installs.associated_client.PSObject.Properties.Name
foreach ($path in $installPaths) { foreach ($path in $installPaths) {
$path = $path.Replace('\', '/') $path = $path.Replace('\', '/')
if ($path.EndsWith('VALORANT/live/')) { if ($path.EndsWith('VALORANT/live/')) {
$config.pakPath = -join($path, $savePakPath) $config.pakPath = -join($path, $savePakPath)
if (Test-Path $config.pakPath) { if (Test-Path $config.pakPath) {
Write-Host 'Found it!' -ForegroundColor Green Write-Host 'Found it!' -ForegroundColor Green
break out break out
}
} }
} }
} }
if (($null -eq $config.pakPath) -or !(Test-Path $config.pakPath)) {
Write-Host 'Sorry, can''t find VALORANT.' -ForegroundColor Red
}
}
if (!$FileBrowser) {
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
} }
if (($null -eq $config.pakPath) -or !(Test-Path $config.pakPath)) { Write-Host 'A window to select a folder will now open.' -ForegroundColor Yellow
Write-Host 'Sorry, can''t find VALORANT.' -ForegroundColor Red Write-Host 'Please go to your VALORANT installation folder.' -ForegroundColor Yellow
Write-Host (-join('In that folder, please find "', $savePakPath, '" and press Open.')) -ForegroundColor Yellow
$status = $FileBrowser.ShowDialog()
if ($status -eq 'OK') {
$config.pakPath = $FileBrowser.SelectedPath.Replace('\', '/')
if (!$config.pakPath.EndsWith('/')) {
$config.pakPath = -join($config.pakPath, '/')
}
} }
} $tried = 1
if (!$FileBrowser) {
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
} }
Write-Host 'A window to select a folder will now open.' -ForegroundColor Yellow # save the config
Write-Host 'Please go to your VALORANT installation folder.' -ForegroundColor Yellow if ($outer.modified -eq 1) {
Write-Host (-join('In that folder, please find "', $savePakPath, '" and press Open.')) -ForegroundColor Yellow $config.GetEnumerator() | Select Key, Value | Export-Csv (-join($savePath, 'config.csv'))
$status = $FileBrowser.ShowDialog()
if ($status -eq 'OK') {
$config.pakPath = $FileBrowser.SelectedPath.Replace('\', '/')
if (!$config.pakPath.EndsWith('/')) {
$config.pakPath = -join($config.pakPath, '/')
}
} }
$tried = 1
} }
# save the config Ensure-Config
if ($modified -eq 1) {
$config.GetEnumerator() | Select Key, Value | Export-Csv (-join($savePath, 'config.csv'))
}
# continue setup # continue setup
if ($args.count -eq 0) { if ($args.count -eq 0) {
if ($outer.modified -eq 0) {
$tried = 0
while ($true) {
if ($tried -eq 1) {
Write-Host 'That is not a valid choice!' -ForegroundColor Red
}
Write-Host 'What do you want to do? (Please type the number of your choice)' -ForegroundColor Yellow
Write-Host '1. Create a shortcut' -ForegroundColor Yellow
Write-Host '2. Run setup from the start (change region, language, ...)' -ForegroundColor Yellow
$choice = Read-Host
if ($choice -eq "1") {
break
} elseif ($choice -eq "2") {
$config = @{}
Ensure-Config
Write-Host 'Saved new config!' -ForegroundColor Green
Write-Host 'Press enter to exit.' -ForegroundColor DarkGray
Read-Host
Exit
}
$tried = 1
}
}
$shell = New-Object -COM WScript.Shell $shell = New-Object -COM WScript.Shell
$tried = 0 $tried = 0
@@ -159,6 +189,7 @@ if ($args.count -eq 0) {
Write-Host 'That is not a valid path to a shortcut!' -ForegroundColor Red Write-Host 'That is not a valid path to a shortcut!' -ForegroundColor Red
} }
Write-Host 'Please drag your VALORANT shortcut into this window and press enter.' -ForegroundColor Yellow Write-Host 'Please drag your VALORANT shortcut into this window and press enter.' -ForegroundColor Yellow
Write-Host '(The file which you double-click to start Valorant usually.)' -ForegroundColor DarkGray
Write-Host '(The path to the shortcut should appear.)' -ForegroundColor DarkGray Write-Host '(The path to the shortcut should appear.)' -ForegroundColor DarkGray
$shortcutPath = (Read-Host).Replace('"', '') $shortcutPath = (Read-Host).Replace('"', '')
$tried = 1 $tried = 1
@@ -178,7 +209,8 @@ if ($args.count -eq 0) {
Invoke-WebRequest -UseBasicParsing -Uri $manifestDownloaderUrl -OutFile (-join($savePath, $manifestDownloaderFile)) Invoke-WebRequest -UseBasicParsing -Uri $manifestDownloaderUrl -OutFile (-join($savePath, $manifestDownloaderFile))
Write-Host 'Done! You can now close this window and start VALORANT from the new icon on your desktop!' -ForegroundColor Green Write-Host 'Done! You can now close this window and start VALORANT from the new icon on your desktop!' -ForegroundColor Green
Write-Host 'You can also delete this file now.' -ForegroundColor Green Write-Host 'You could delete this file now.' -ForegroundColor Green
Write-Host 'If you want to change anything (like your language), just (download and) run this script again.' -ForegroundColor Green
Read-Host Read-Host
Exit Exit
} }
@@ -199,7 +231,7 @@ try {
$lastPatchUrl = Get-Content -Path (-join($savePath, 'url.txt')) $lastPatchUrl = Get-Content -Path (-join($savePath, 'url.txt'))
} }
$patchUrl = $regionConfig.patch_url $patchUrl = $outer.regionConfig.patch_url
if ($patchUrl -ne $lastPatchUrl) { if ($patchUrl -ne $lastPatchUrl) {
Write-Host 'Downloading new language files...' -ForegroundColor Green Write-Host 'Downloading new language files...' -ForegroundColor Green
@@ -216,11 +248,18 @@ try {
Write-Host 'Up to date!' -ForegroundColor Green Write-Host 'Up to date!' -ForegroundColor Green
} }
} catch { } catch {
Write-Error 'Can not check for new language files' -ForegroundColor Red Write-Host 'Can not check for new language files' -ForegroundColor Red
Write-Host $_
Read-Host Read-Host
Exit Exit
} }
if (!(Test-Path (-join($config.pakPath, $config.voiceLang, '_Text-WindowsClient.pak')))) {
Write-Host (-join('Please change your language *ingame* to ', $config.voiceLang, '!')) -ForegroundColor Red
Write-Host 'Press enter to continue, after you changed your language, please restart Valorant.' -ForegroundColor Red
Read-Host
}
Write-Host 'Starting Valorant...' -ForegroundColor Green Write-Host 'Starting Valorant...' -ForegroundColor Green
# copy 'voice' text lang files to valorant (to fool the launcher) # copy 'voice' text lang files to valorant (to fool the launcher)