SPP bot world as of 2026-08-26: merged state of all Cowork sessions (brain, combat data, chat seams 2.0, idiolect, heard/context, headless players, name generator, crests, seeds)

This commit is contained in:
2026-09-03 19:05:51 +02:00
parent f520c66e85
commit dcbecd2843
55 changed files with 58741 additions and 566 deletions
+108
View File
@@ -0,0 +1,108 @@
# L2 Interlude SPP - запуск одной командой (Docker-вариант).
# Использование:
# powershell -ExecutionPolicy Bypass -File start.ps1 # поднять всё
# powershell -ExecutionPolicy Bypass -File start.ps1 -Down # остановить
# powershell -ExecutionPolicy Bypass -File start.ps1 -Reset # остановить и стереть базу (полный сброс)
# powershell -ExecutionPolicy Bypass -File start.ps1 -Client "D:\Games\L2Interlude" # + запустить клиент
param(
[switch]$Down,
[switch]$Reset,
[string]$Client = ""
)
$ErrorActionPreference = "Stop"
$Base = $PSScriptRoot
$ServerDir = Join-Path $Base "server"
$Zip = Join-Path $Base "server_interlude.zip"
$Compose = Join-Path $ServerDir "docker\docker-compose.yml"
function Compose { docker compose -f $Compose @args }
# --- Docker есть? ---
try { docker info *>$null } catch {
Write-Host "Docker не запущен или не установлен. Поставь Docker Desktop и запусти его." -ForegroundColor Red
exit 1
}
# --- Остановка / сброс ---
if ($Down -or $Reset) {
if (Test-Path $Compose) {
if ($Reset) {
Compose down -v
Write-Host "Остановлено, база стёрта. Следующий запуск начнёт с чистой базы (боты - со стартовых уровней)." -ForegroundColor Yellow
} else {
Compose down
Write-Host "Остановлено. Прогресс ботов и персонажи сохранены." -ForegroundColor Green
}
} else {
Write-Host "Сервер ещё не разворачивался, останавливать нечего."
}
exit 0
}
# --- Распаковка сервера при первом запуске ---
if (-not (Test-Path (Join-Path $ServerDir "game"))) {
if (-not (Test-Path $Zip)) {
Write-Host "Не найден $Zip" -ForegroundColor Red
exit 1
}
Write-Host "Распаковываю сервер (~700 МБ, минуту-другую)..."
New-Item -ItemType Directory -Force -Path $ServerDir | Out-Null
Expand-Archive -Path $Zip -DestinationPath $Base -Force
# в архиве корневая папка server_interlude - переименуем в server
if (Test-Path (Join-Path $Base "server_interlude\game")) {
if (Test-Path $ServerDir) { Remove-Item $ServerDir -Recurse -Force }
Rename-Item (Join-Path $Base "server_interlude") $ServerDir
}
}
# --- Docker-файлы внутрь папки сервера ---
if (-not (Test-Path $Compose)) {
Copy-Item -Recurse -Force (Join-Path $Base "docker") (Join-Path $ServerDir "docker")
}
# --- Поднимаем ---
Write-Host "Собираю и запускаю контейнеры (первый раз - несколько минут)..."
Compose up --build -d
# --- Ждём готовности гейм-сервера ---
Write-Host "Жду старта гейм-сервера (загрузка геодаты ~1 мин)..."
$deadline = (Get-Date).AddMinutes(10)
$ready = $false
while ((Get-Date) -lt $deadline) {
Start-Sleep -Seconds 5
$logs = Compose logs game --tail 100 2>$null | Out-String
if ($logs -match "Registered on login") { $ready = $true; break }
if ($logs -match "OutOfMemoryError") {
Write-Host "Гейм-серверу не хватило памяти. Docker Desktop -> Settings -> Resources: дай WSL2 минимум 6 ГБ RAM." -ForegroundColor Red
exit 1
}
}
if ($ready) {
Write-Host ""
Write-Host "=== Сервер готов ===" -ForegroundColor Green
Write-Host "Логин-сервер: 127.0.0.1:2106"
Write-Host "В клиенте: system\l2.ini -> ServerAddr=127.0.0.1, запускать system\l2.exe"
Write-Host "Аккаунт: любые логин/пароль на экране входа - создастся сам."
Write-Host ""
Write-Host "Админка (после первого входа в игру):"
Write-Host " docker compose -f `"$Compose`" exec db mariadb -uroot -pl2j l2jmobiusinterlude -e `"UPDATE accounts SET accessLevel=100 WHERE login='ЛОГИН'`"" -ForegroundColor DarkGray
Write-Host "Логи: docker compose -f `"$Compose`" logs -f game"
Write-Host "Стоп: powershell -File start.ps1 -Down"
} else {
Write-Host "Гейм-сервер не отрапортовал готовность за 10 минут. Смотри логи:" -ForegroundColor Red
Write-Host " docker compose -f `"$Compose`" logs game --tail 50"
exit 1
}
# --- Клиент ---
if ($Client -ne "") {
$l2exe = Join-Path $Client "system\l2.exe"
if (Test-Path $l2exe) {
Write-Host "Запускаю клиент..."
Start-Process -FilePath $l2exe -WorkingDirectory (Join-Path $Client "system")
} else {
Write-Host "Не нашёл $l2exe - проверь путь к клиенту." -ForegroundColor Yellow
}
}