Готова функция скачивания модов
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
ruinship_tournament_mods/
|
ruinship_tournament_mods/
|
||||||
|
шаблон.ps1
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
# Установщик турнира RuinShip для RimWorld
|
# Установщик турнира RuinShip для RimWorld
|
||||||
|
|
||||||
<span style="color: red;">Данный репозиторий никак не относится к администрации турнира и является по большей части независимым, фанатским проектом</span>
|
🔴<span style="color: red;">**Данный репозиторий не относится к администрации турнира и является по большей части независимым, фанатским проектом**</span>
|
||||||
36
download_mods.ps1
Normal file
36
download_mods.ps1
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
$fileId = "13im-l6X2j-s5scZZlBvt2DCjYBbk2qI8"
|
||||||
|
$baseUrl = "https://drive.google.com/uc?export=download&id=$fileId"
|
||||||
|
$outputFile = "$env:TEMP\ruinship_mods.rar"
|
||||||
|
|
||||||
|
$response = Invoke-WebRequest -Uri $baseUrl -SessionVariable session
|
||||||
|
|
||||||
|
$form = $response.Forms | Where-Object { $_.Id -eq "download-form" }
|
||||||
|
|
||||||
|
if ($form) {
|
||||||
|
$queryParams = @{}
|
||||||
|
foreach ($field in $form.Fields.GetEnumerator()) {
|
||||||
|
$queryParams[$field.Key] = $field.Value
|
||||||
|
}
|
||||||
|
|
||||||
|
$uriBuilder = New-Object System.UriBuilder $form.Action
|
||||||
|
$queryString = ($queryParams.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join "&"
|
||||||
|
$uriBuilder.Query = $queryString
|
||||||
|
$downloadUrl = $uriBuilder.Uri.AbsoluteUri
|
||||||
|
|
||||||
|
Write-Host "[INFO] Downloading..."
|
||||||
|
Invoke-WebRequest -Uri $downloadUrl -WebSession $session -OutFile $outputFile
|
||||||
|
Write-Host "[INFO] The file was successfully downloaded with confirmation."
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host "[INFO] Downloading..."
|
||||||
|
Invoke-WebRequest -Uri $baseUrl -OutFile $outputFile
|
||||||
|
Write-Host "[INFO] The file was successfully downloaded directly."
|
||||||
|
}
|
||||||
|
|
||||||
|
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||||
|
$rimworldMods = Resolve-Path (Join-Path $scriptDir "..")
|
||||||
|
|
||||||
|
$sourceFolder = Get-ChildItem $outputFile | Select-Object -First 1
|
||||||
|
Move-Item -Path $sourceFolder.FullName -Destination $rimworldMods
|
||||||
|
|
||||||
|
Write-Host "[INFO] The ruinship_mods.rar file has been installed to the path $rimworldMods. Please extract it to install all the necessary mods." -ForegroundColor Green
|
||||||
43
setup.bat
43
setup.bat
@@ -1,2 +1,43 @@
|
|||||||
@echo off
|
@echo off
|
||||||
powershell -ExecutionPolicy Bypass -File "%~dp0setup.ps1"
|
setlocal enabledelayedexpansion
|
||||||
|
chcp 65001
|
||||||
|
|
||||||
|
echo Укажите, что вам нужно сделать:
|
||||||
|
:ask
|
||||||
|
echo 1) Установить моды (они будут только установлены в качестве архива и их надо будет вручную распаковать)
|
||||||
|
echo 2) Поставить сценарий
|
||||||
|
echo 3) Поставить ModsConfig
|
||||||
|
echo 4) Установить всё
|
||||||
|
echo 5) Выйти
|
||||||
|
|
||||||
|
set /p choice=Введите нужный пункт:
|
||||||
|
|
||||||
|
if /i "%choice%"=="1" (
|
||||||
|
powershell -ExecutionPolicy Bypass -File "%~dp0download_mods.ps1"
|
||||||
|
echo Вам что-то ещё?
|
||||||
|
goto ask
|
||||||
|
)
|
||||||
|
if /i "%choice%"=="2" (
|
||||||
|
|
||||||
|
echo Пока функция не готова. Вам что-то ещё?
|
||||||
|
goto ask
|
||||||
|
)
|
||||||
|
if /i "%choice%"=="3" (
|
||||||
|
|
||||||
|
echo Пока функция не готова. Вам что-то ещё?
|
||||||
|
goto ask
|
||||||
|
)
|
||||||
|
if /i "%choice%"=="4" (
|
||||||
|
powershell -ExecutionPolicy Bypass -File "%~dp0download_mods.ps1"
|
||||||
|
|
||||||
|
echo Всё готово^^! Осталось только распаковать моды из архива в папке Mods и можно начинать играть^^!
|
||||||
|
goto end
|
||||||
|
)
|
||||||
|
if /i "%choice%"=="5" (
|
||||||
|
echo Выхожу...
|
||||||
|
goto end
|
||||||
|
)
|
||||||
|
echo Варианта %choice% не существует
|
||||||
|
goto ask
|
||||||
|
|
||||||
|
:end
|
||||||
33
setup.ps1
33
setup.ps1
@@ -1,33 +0,0 @@
|
|||||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
|
||||||
$rimworldModsPath = Resolve-Path (Join-Path $scriptDir "..")
|
|
||||||
$tmpHtml = "$env:TEMP\ruinship_tournament_gd.html"
|
|
||||||
$ModsFilesId = "13im-l6X2j-s5scZZlBvt2DCjYBbk2qI8"
|
|
||||||
$OutFile = "$env:TEMP\ruinship_tournament_mods.zip"
|
|
||||||
|
|
||||||
Invoke-WebRequest -Uri "https://drive.google.com/uc?export=download&id=$ModsFilesId" -OutFile $tmpHtml -SessionVariable session
|
|
||||||
|
|
||||||
$htmlContent = Get-Content $tmpHtml -Raw
|
|
||||||
|
|
||||||
if ($htmlContent -match 'confirm=([0-9A-Za-z_]+)') {
|
|
||||||
$confirmToken = $matches[1]
|
|
||||||
if ($htmlContent -match 'name="uuid" value="([0-9a-f-]+)"') {
|
|
||||||
$uuid = $matches[1]
|
|
||||||
} else {
|
|
||||||
$uuid = ""
|
|
||||||
}
|
|
||||||
Write-Host "Found confirm-token: $confirmToken"
|
|
||||||
Write-Host "Found uuid: $uuid"
|
|
||||||
|
|
||||||
$downloadUrl = "https://drive.google.com/uc?export=download&confirm=$confirmToken&id=$ModsFilesId"
|
|
||||||
if ($uuid) {
|
|
||||||
$downloadUrl += "&uuid=$uuid"
|
|
||||||
}
|
|
||||||
Write-Host "Downloading from URL: $downloadUrl"
|
|
||||||
Invoke-WebRequest -Uri $downloadUrl -WebSession $session -OutFile $OutFile
|
|
||||||
} else {
|
|
||||||
Write-Host "No confirm token found, downloading directly..."
|
|
||||||
Invoke-WebRequest -Uri "https://drive.google.com/uc?export=download&id=$ModsFilesId" -WebSession $session -OutFile $OutFile
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Extracting archive..."
|
|
||||||
Expand-Archive -Path $OutFile -DestinationPath $rimworldModsPath -Force
|
|
||||||
Reference in New Issue
Block a user