Skip to content

Instantly share code, notes, and snippets.

@Hammer2900
Last active April 24, 2026 10:16
Show Gist options
  • Select an option

  • Save Hammer2900/6972341e09557dc807ae889fc929c3c0 to your computer and use it in GitHub Desktop.

Select an option

Save Hammer2900/6972341e09557dc807ae889fc929c3c0 to your computer and use it in GitHub Desktop.
auto installer stellaris old version include
#!/bin/bash
# Цвета для красоты
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
clear
echo -e "${CYAN}======================================================${NC}"
echo -e "${CYAN} Мастер автоматической развертки Stellaris GOG ${NC}"
echo -e "${CYAN}======================================================${NC}"
echo ""
# Включаем правильную обработку пустых результатов (если файлов нет)
shopt -s nullglob
# Ищем базовые установщики в текущей папке
base_installers=(stellaris_*.sh)
if [ ${#base_installers[@]} -eq 0 ]; then
echo -e "${RED}Ошибка: Базовые установщики stellaris_*.sh не найдены!${NC}"
exit 1
fi
# Массивы для хранения данных
versions=()
dlc_counts=()
echo -e "Идет сканирование версий и подсчет DLC...\n"
# Собираем информацию о версиях
for installer in "${base_installers[@]}"; do
# Вытаскиваем версию (например, 3_10_4_69706)
ver=$(echo "$installer" | sed 's/stellaris_\(.*\)\.sh/\1/')
versions+=("$ver")
# Считаем DLC в папке dlcs/
count=0
for dlc in dlcs/*.sh; do
# Особое правило для 4.3.4 (подхватываем и 4.2.4, т.к. они из одной волны релизов)
if [[ "$ver" == "4_3_4_90202" ]]; then
if [[ "$dlc" == *"4_3_4"* || "$dlc" == *"4_2_4"* ]]; then
((count++))
fi
else
if [[ "$dlc" == *"$ver"* ]]; then
((count++))
fi
fi
done
dlc_counts+=("$count")
done
# Выводим меню
echo -e "${YELLOW}Найдены следующие версии игры:${NC}"
for i in "${!versions[@]}"; do
num=$((i+1))
echo -e " [${GREEN}$num${NC}] Версия ${CYAN}${versions[$i]}${NC} (Дополнений найдено: ${YELLOW}${dlc_counts[$i]}${NC})"
done
echo -e " [${RED}0${NC}] Выход"
echo ""
# Ждем выбора пользователя
selected_index=-1
while true; do
read -p "Введите цифру нужной версии: " choice
if [[ "$choice" == "0" ]]; then
echo "Выход..."
exit 0
fi
# Проверяем, что введено число и оно в пределах меню
if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le "${#versions[@]}" ]; then
selected_index=$((choice-1))
break
else
echo -e "${RED}Неверный ввод. Пожалуйста, введите цифру от 1 до ${#versions[@]}.${NC}"
fi
done
SELECTED_VER="${versions[$selected_index]}"
BASE_INSTALLER="stellaris_${SELECTED_VER}.sh"
echo -e "\nВыбрана версия: ${GREEN}$SELECTED_VER${NC}"
echo -e "Будет установлен базовый пакет и ${YELLOW}${dlc_counts[$selected_index]}${NC} дополнений.\n"
# Спрашиваем путь установки и проверяем его
while true; do
echo -e "${YELLOW}Укажите абсолютный путь для установки (например: /home/user/Games/Stellaris):${NC}"
read -p "> " INSTALL_PATH
if [[ -z "$INSTALL_PATH" ]]; then
echo -e "${RED}Путь не может быть пустым!${NC}"
continue
fi
# Проверяем существует ли папка
if [[ -d "$INSTALL_PATH" ]]; then
# Если существует, проверяем пустая ли она
if [[ -z "$(ls -A "$INSTALL_PATH")" ]]; then
echo -e "${GREEN}Папка существует и пуста. Отлично!${NC}"
break
else
echo -e "${RED}Ошибка: Папка '$INSTALL_PATH' не пуста! Выберите другую папку или очистите эту.${NC}\n"
fi
else
# Если не существует, пробуем создать
echo "Папка не существует. Пытаюсь создать..."
if mkdir -p "$INSTALL_PATH"; then
echo -e "${GREEN}Папка успешно создана!${NC}"
break
else
echo -e "${RED}Ошибка: Нет прав для создания папки по этому пути. Попробуйте другой путь.${NC}\n"
fi
fi
done
echo -e "\n${CYAN}======================================================${NC}"
echo -e "${GREEN}НАЧИНАЮ УСТАНОВКУ В: $INSTALL_PATH${NC}"
echo -e "${CYAN}======================================================${NC}"
# 1. Установка базовой игры
echo -e "\n${YELLOW}---> Шаг 1: Установка базовой игры ($BASE_INSTALLER)...${NC}"
bash "$BASE_INSTALLER" -- --i-agree-to-all-licenses --noreadme --noprompt --destination "$INSTALL_PATH"
if [ $? -ne 0 ]; then
echo -e "${RED}Ошибка при установке базовой игры! Прерываю процесс.${NC}"
exit 1
fi
# 2. Установка DLC
echo -e "\n${YELLOW}---> Шаг 2: Установка дополнений (DLC)...${NC}"
for dlc in dlcs/*.sh; do
should_install=false
if [[ "$SELECTED_VER" == "4_3_4_90202" ]]; then
if [[ "$dlc" == *"4_3_4"* || "$dlc" == *"4_2_4"* ]]; then
should_install=true
fi
else
if [[ "$dlc" == *"$SELECTED_VER"* ]]; then
should_install=true
fi
fi
if [ "$should_install" = true ]; then
dlc_name=$(basename "$dlc")
echo -e "Установка: ${CYAN}$dlc_name${NC}"
bash "$dlc" -- --i-agree-to-all-licenses --noreadme --noprompt --destination "$INSTALL_PATH"
fi
done
echo -e "\n${GREEN}======================================================${NC}"
echo -e "${GREEN}УСТАНОВКА УСПЕШНО ЗАВЕРШЕНА!${NC}"
echo -e "${GREEN}======================================================${NC}"
echo -e "Ваша игра находится в папке: $INSTALL_PATH"
echo -e "${YELLOW}Примечание:${NC} Если вам нужны моды из папки 'non-gog' (.tar), распакуйте их вручную в папку dlc/ установленной игры."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment