From 760ab151015702d090141a1268e7d91706f5c03d Mon Sep 17 00:00:00 2001 From: Damighty <27978131-real_damighty@users.noreply.gitlab.com> Date: Thu, 16 Oct 2025 22:12:05 +0300 Subject: [PATCH] Added Linux quick install script(s), changed script filenames to be more readable --- .../quick-install-oha-CN.bat | 54 +++++++++++++ .../quick-install-oha_linux-CN.sh | 75 +++++++++++++++++++ .../quick-install-oha_linux-RU.sh | 75 +++++++++++++++++++ .../quick-install-oha_linux.sh | 75 +++++++++++++++++++ .../quick-install-oha_mac.sh | 52 +++++++++++++ 5 files changed, 331 insertions(+) create mode 100644 bots/Install-to-vscript/quick-install-oha-CN.bat create mode 100644 bots/Install-to-vscript/quick-install-oha_linux-CN.sh create mode 100644 bots/Install-to-vscript/quick-install-oha_linux-RU.sh create mode 100755 bots/Install-to-vscript/quick-install-oha_linux.sh create mode 100644 bots/Install-to-vscript/quick-install-oha_mac.sh diff --git a/bots/Install-to-vscript/quick-install-oha-CN.bat b/bots/Install-to-vscript/quick-install-oha-CN.bat new file mode 100644 index 0000000..6c9ac9a --- /dev/null +++ b/bots/Install-to-vscript/quick-install-oha-CN.bat @@ -0,0 +1,54 @@ +@echo off +chcp 65001 >nul +:: 检查是否以管理员权限运行脚本 +net session >nul 2>&1 +if %errorlevel% neq 0 ( + echo 请求管理员权限... + powershell -Command "Start-Process '%~f0' -Verb RunAs" + exit /b +) + +:: 获取当前时间戳(格式: YYYYMMDD_HHMMSS) +for /f "tokens=1-4 delims=/:. " %%a in ("%date% %time%") do ( + set year=%%a + set month=%%b + set day=%%c + set hour=%%d +) +set timestamp=%year%%month%%day%_%time:~0,2%%time:~3,2%%time:~6,2% + +:: 如果小时数中有空格,将其移除(适用于24小时制) +set timestamp=%timestamp: =0% + +:: 检查文件夹是否已存在 +if exist "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\bots" ( + echo bots文件夹已存在,正在重命名为 bots_old_%timestamp%... + ren "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\bots" "bots_old_%timestamp%" +) + +echo 正在创建机器人脚本链接... +mklink /d "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\bots" "%~dp0.." + +if exist "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\game\Customize" ( + echo Customize文件夹已存在,正在重命名为 Customize_old_%timestamp%... + ren "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\game\Customize" "Customize_old_%timestamp%" +) +echo 正在创建自定义脚本... +xcopy "%~dp0..\Customize\" "%~dp0..\..\..\..\..\common\dota 2 beta\game\dota\scripts\vscripts\game\Customize\" /E + +if %errorlevel% equ 0 ( + echo ============ + echo ============ + echo 成功创建!!! + echo ============ + echo ============ +) else ( + echo ============ + echo "1. 请在正确的文件夹 (Steam\steamapps\workshop\content\570\3246316298\Install-to-vscript) 内运行此文件" + echo "2. 如果你不知道这个Steam文件夹的位置,请在Steam库中右键点击Dota2,选择属性 > 已安装文件 > 浏览。" 这时会打开文件夹: "Steam\steamapps\common\dota 2 beta",将地址中的 "common\dota 2 beta" 部分替换成 "workshop\content\570\3246316298\Install-to-vscript",按下回车键即可打开正确的文件夹。 + echo "3. 请确保以管理员身份运行该文件" + echo ============ + echo 创建失败!!! + echo ============ +) +pause diff --git a/bots/Install-to-vscript/quick-install-oha_linux-CN.sh b/bots/Install-to-vscript/quick-install-oha_linux-CN.sh new file mode 100644 index 0000000..05d636d --- /dev/null +++ b/bots/Install-to-vscript/quick-install-oha_linux-CN.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -euo pipefail + +function error_exit { + echo "============" + echo "$1" + echo "常见故障排除:" + echo "1. 请确保在此文件夹中执行此脚本:'SteamLibrary/steamapps/workshop/content/570/3246316298/Install-to-vscript'(或您 Steam 库中的等效路径)。" + echo "2. 如果您不知道 Steam 库文件夹的位置,请在 Steam 库中右键点击 Dota 2,选择属性 > 已安装文件 > 浏览。它将打开文件夹:'steamapps/common/dota 2 beta'。从那里,向后导航到 'steamapps',然后到 'workshop/content/570/3246316298/Install-to-vscript'。" + echo "3. 如果遇到权限问题,请确保 Steam 库文件夹由您的用户拥有(例如,如果需要,运行 'chown -R $USER:$USER /path/to/SteamLibrary',替换 /path/to/SteamLibrary 为您的实际路径)。chown 命令递归地将文件和目录的所有权更改为指定的用户和组(这里是您的当前用户和组)。" + echo "============" + echo "安装失败!!!" + echo "============" + exit 1 +} + +# 获取当前时间戳(格式: YYYYMMDD_HHMMSS) +TIMESTAMP=$(date +%Y%m%d_%H%M%S) || error_exit "无法生成时间戳。" + +# 获取脚本目录 +SCRIPT_DIR=$(pwd) || error_exit "无法确定当前目录。" + +# 工坊项目目录(此脚本目录的父目录) +WORKSHOP_ITEM_DIR="$SCRIPT_DIR/.." +if [ ! -d "$WORKSHOP_ITEM_DIR" ]; then + error_exit "未找到工坊项目目录:$WORKSHOP_ITEM_DIR。请确保从正确位置运行脚本。" +fi + +# 检查源 Customize 文件夹 +if [ ! -d "$WORKSHOP_ITEM_DIR/Customize" ]; then + error_exit "在 $WORKSHOP_ITEM_DIR 中未找到源 Customize 文件夹。" +fi + +# Dota 2 目录(假设标准 Steam 库结构) +DOTA_DIR="$SCRIPT_DIR/../../../../../common/dota 2 beta" +if [ ! -d "$DOTA_DIR" ]; then + error_exit "未找到 Dota 2 安装目录:$DOTA_DIR。请验证您的 Steam 库路径和脚本位置。" +fi + +# vscripts 目录 +VSCRIPTS_DIR="$DOTA_DIR/game/dota/scripts/vscripts" +if [ ! -d "$VSCRIPTS_DIR" ]; then + error_exit "未找到 Dota 2 vscripts 目录:$VSCRIPTS_DIR。请确保 Dota 2 已正确安装。" +fi + +# 目标目录 +BOTS_DIR="$VSCRIPTS_DIR/bots" +CUSTOMIZE_TARGET="$VSCRIPTS_DIR/game/Customize" +CUSTOMIZE_PARENT="$VSCRIPTS_DIR/game" +if [ ! -d "$CUSTOMIZE_PARENT" ]; then + mkdir -p "$CUSTOMIZE_PARENT" || error_exit "无法为 Customize 创建父目录:$CUSTOMIZE_PARENT。" +fi + +# 检查 bots 文件夹是否已存在 +if [ -d "$BOTS_DIR" ] || [ -L "$BOTS_DIR" ]; then + echo "bots 文件夹或符号链接已存在,正在重命名为 bots_old_$TIMESTAMP..." + mv "$BOTS_DIR" "$VSCRIPTS_DIR/bots_old_$TIMESTAMP" || error_exit "无法重命名现有的 bots 目录。" +fi + +echo "正在创建机器人脚本链接..." +ln -s "$WORKSHOP_ITEM_DIR" "$BOTS_DIR" || error_exit "无法为 bots 创建符号链接。" + +# 检查 Customize 文件夹是否已存在 +if [ -d "$CUSTOMIZE_TARGET" ] || [ -L "$CUSTOMIZE_TARGET" ]; then + echo "Customize 文件夹已存在,正在重命名为 Customize_old_$TIMESTAMP..." + mv "$CUSTOMIZE_TARGET" "$VSCRIPTS_DIR/game/Customize_old_$TIMESTAMP" || error_exit "无法重命名现有的 Customize 目录。" +fi + +echo "正在创建自定义脚本..." +cp -r "$WORKSHOP_ITEM_DIR/Customize/" "$CUSTOMIZE_TARGET" || error_exit "无法复制 Customize 文件夹。" + +echo "============" +echo "安装成功!!!" +echo "============" diff --git a/bots/Install-to-vscript/quick-install-oha_linux-RU.sh b/bots/Install-to-vscript/quick-install-oha_linux-RU.sh new file mode 100644 index 0000000..ad0a66d --- /dev/null +++ b/bots/Install-to-vscript/quick-install-oha_linux-RU.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -euo pipefail + +function error_exit { + echo "============" + echo "$1" + echo "Общие рекомендации по устранению неисправностей:" + echo "1. Убедитесь, что вы запускаете этот скрипт в папке: 'SteamLibrary/steamapps/workshop/content/570/3246316298/Install-to-vscript' (или эквивалентном пути в вашей библиотеке Steam)." + echo "2. Если вы не знаете, где находится папка библиотеки Steam, щелкните правой кнопкой мыши на Dota 2 в библиотеке Steam, выберите Свойства > Установленные файлы > Просмотреть. Откроется папка: 'steamapps/common/dota 2 beta'. Оттуда вернитесь в 'steamapps', а затем перейдите в 'workshop/content/570/3246316298/Install-to-vscript'." + echo "3. Если возникнут проблемы с разрешениями, убедитесь, что папки библиотеки Steam принадлежат вашему пользователю (например, выполните 'chown -R $USER:$USER /path/to/SteamLibrary', если нужно, заменив /path/to/SteamLibrary на ваш фактический путь). Команда chown рекурсивно изменяет владельца файлов и каталогов на указанного пользователя и группу (здесь — ваш текущий пользователь и группа)." + echo "============" + echo "Установка не удалась!!!" + echo "============" + exit 1 +} + +# Получить текущую временную метку (формат: YYYYMMDD_HHMMSS) +TIMESTAMP=$(date +%Y%m%d_%H%M%S) || error_exit "Не удалось сгенерировать временную метку." + +# Получить директорию скрипта +SCRIPT_DIR=$(pwd) || error_exit "Не удалось определить текущую директорию." + +# Директория элемента мастерской (родительская директория этого скрипта) +WORKSHOP_ITEM_DIR="$SCRIPT_DIR/.." +if [ ! -d "$WORKSHOP_ITEM_DIR" ]; then + error_exit "Директория элемента мастерской не найдена: $WORKSHOP_ITEM_DIR. Убедитесь, что скрипт запущен из правильного места." +fi + +# Проверить исходную папку Customize +if [ ! -d "$WORKSHOP_ITEM_DIR/Customize" ]; then + error_exit "Исходная папка Customize не найдена в $WORKSHOP_ITEM_DIR." +fi + +# Директория Dota 2 (предполагая стандартную структуру библиотеки Steam) +DOTA_DIR="$SCRIPT_DIR/../../../../../common/dota 2 beta" +if [ ! -d "$DOTA_DIR" ]; then + error_exit "Директория установки Dota 2 не найдена: $DOTA_DIR. Проверьте путь к вашей библиотеке Steam и位置 скрипта." +fi + +# Директория vscripts +VSCRIPTS_DIR="$DOTA_DIR/game/dota/scripts/vscripts" +if [ ! -d "$VSCRIPTS_DIR" ]; then + error_exit "Директория vscripts Dota 2 не найдена: $VSCRIPTS_DIR. Убедитесь, что Dota 2 установлена правильно." +fi + +# Целевые директории +BOTS_DIR="$VSCRIPTS_DIR/bots" +CUSTOMIZE_TARGET="$VSCRIPTS_DIR/game/Customize" +CUSTOMIZE_PARENT="$VSCRIPTS_DIR/game" +if [ ! -d "$CUSTOMIZE_PARENT" ]; then + mkdir -p "$CUSTOMIZE_PARENT" || error_exit "Не удалось создать родительскую директорию для Customize: $CUSTOMIZE_PARENT." +fi + +# Проверить, существует ли папка bots +if [ -d "$BOTS_DIR" ] || [ -L "$BOTS_DIR" ]; then + echo "Папка bots или символьная ссылка уже существует, переименовывается в bots_old_$TIMESTAMP..." + mv "$BOTS_DIR" "$VSCRIPTS_DIR/bots_old_$TIMESTAMP" || error_exit "Не удалось переименовать существующую директорию bots." +fi + +echo "Создание символьной ссылки..." +ln -s "$WORKSHOP_ITEM_DIR" "$BOTS_DIR" || error_exit "Не удалось создать символьную ссылку для bots." + +# Проверить, существует ли папка Customize +if [ -d "$CUSTOMIZE_TARGET" ] || [ -L "$CUSTOMIZE_TARGET" ]; then + echo "Папка Customize уже существует, переименовывается в Customize_old_$TIMESTAMP..." + mv "$CUSTOMIZE_TARGET" "$VSCRIPTS_DIR/game/Customize_old_$TIMESTAMP" || error_exit "Не удалось переименовать существующую директорию Customize." +fi + +echo "Копирование папки Customize..." +cp -r "$WORKSHOP_ITEM_DIR/Customize/" "$CUSTOMIZE_TARGET" || error_exit "Не удалось скопировать папку Customize." + +echo "============" +echo "Установка удалась!!!" +echo "============" diff --git a/bots/Install-to-vscript/quick-install-oha_linux.sh b/bots/Install-to-vscript/quick-install-oha_linux.sh new file mode 100755 index 0000000..0323932 --- /dev/null +++ b/bots/Install-to-vscript/quick-install-oha_linux.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -euo pipefail + +function error_exit { + echo "============" + echo "$1" + echo "Common troubleshooting:" + echo "1. Make sure to execute this script in the folder: 'SteamLibrary/steamapps/workshop/content/570/3246316298/Install-to-vscript' (or equivalent path in your Steam library)." + echo "2. If you don't know where the Steam library folder is, right-click Dota 2 in Steam Library, select Properties > Installed Files > Browse. It will open the folder: 'steamapps/common/dota 2 beta'. From there, navigate back to 'steamapps' and then to 'workshop/content/570/3246316298/Install-to-vscript'." + echo "3. If you encounter permission issues, ensure the Steam library folders are owned by your user (e.g., run 'chown -R $USER:$USER /path/to/SteamLibrary' if needed, replacing /path/to/SteamLibrary with your actual path). The chown command recursively changes ownership of files and directories to the specified user and group (here, your current user and group)." + echo "============" + echo "Install failed!!!" + echo "============" + exit 1 +} + +# Get the current timestamp (format: YYYYMMDD_HHMMSS) +TIMESTAMP=$(date +%Y%m%d_%H%M%S) || error_exit "Failed to generate timestamp." + +# Get the script's directory +SCRIPT_DIR=$(pwd) || error_exit "Failed to determine current directory." + +# Workshop item directory (parent of this script's directory) +WORKSHOP_ITEM_DIR="$SCRIPT_DIR/.." +if [ ! -d "$WORKSHOP_ITEM_DIR" ]; then + error_exit "Workshop item directory not found: $WORKSHOP_ITEM_DIR. Ensure the script is run from the correct location." +fi + +# Check for required source Customize folder +if [ ! -d "$WORKSHOP_ITEM_DIR/Customize" ]; then + error_exit "Source Customize folder not found in $WORKSHOP_ITEM_DIR." +fi + +# Dota 2 directory (assuming standard Steam library structure) +DOTA_DIR="$SCRIPT_DIR/../../../../../common/dota 2 beta" +if [ ! -d "$DOTA_DIR" ]; then + error_exit "Dota 2 installation directory not found: $DOTA_DIR. Verify your Steam library path and script location." +fi + +# vscripts directory +VSCRIPTS_DIR="$DOTA_DIR/game/dota/scripts/vscripts" +if [ ! -d "$VSCRIPTS_DIR" ]; then + error_exit "Dota 2 vscripts directory not found: $VSCRIPTS_DIR. Ensure Dota 2 is installed correctly." +fi + +# Target directories +BOTS_DIR="$VSCRIPTS_DIR/bots" +CUSTOMIZE_TARGET="$VSCRIPTS_DIR/game/Customize" +CUSTOMIZE_PARENT="$VSCRIPTS_DIR/game" +if [ ! -d "$CUSTOMIZE_PARENT" ]; then + mkdir -p "$CUSTOMIZE_PARENT" || error_exit "Failed to create parent directory for Customize: $CUSTOMIZE_PARENT." +fi + +# Check if the bots folder already exists +if [ -d "$BOTS_DIR" ] || [ -L "$BOTS_DIR" ]; then + echo "bots folder or symlink already exists, renaming to bots_old_$TIMESTAMP..." + mv "$BOTS_DIR" "$VSCRIPTS_DIR/bots_old_$TIMESTAMP" || error_exit "Failed to rename existing bots directory." +fi + +echo "Creating symbolic link..." +ln -s "$WORKSHOP_ITEM_DIR" "$BOTS_DIR" || error_exit "Failed to create symbolic link for bots." + +# Check if the Customize folder already exists +if [ -d "$CUSTOMIZE_TARGET" ] || [ -L "$CUSTOMIZE_TARGET" ]; then + echo "Customize folder already exists, renaming to Customize_old_$TIMESTAMP..." + mv "$CUSTOMIZE_TARGET" "$VSCRIPTS_DIR/game/Customize_old_$TIMESTAMP" || error_exit "Failed to rename existing Customize directory." +fi + +echo "Copying Customize folder..." +cp -r "$WORKSHOP_ITEM_DIR/Customize/" "$CUSTOMIZE_TARGET" || error_exit "Failed to copy Customize folder." + +echo "============" +echo "Install Succeeded!!!" +echo "============" diff --git a/bots/Install-to-vscript/quick-install-oha_mac.sh b/bots/Install-to-vscript/quick-install-oha_mac.sh new file mode 100644 index 0000000..0632b5c --- /dev/null +++ b/bots/Install-to-vscript/quick-install-oha_mac.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Check if the script is run as root +if [ "$EUID" -ne 0 ]; then + echo "Requesting administrator privileges..." + sudo "$0" "$@" + exit +fi + +# Define paths +steam_path="$HOME/Library/Application Support/Steam" +dota_path="$steam_path/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots" +workshop_path="$steam_path/steamapps/workshop/content/570/3246316298" +install_folder=$(cd "$(dirname "$0")" && pwd) + +# Check if Steam and Dota paths exist +if [ ! -d "$steam_path" ]; then + echo "Steam folder not found. Please ensure Steam is installed and try again." + exit 1 +fi + +if [ ! -d "$workshop_path" ]; then + echo "Workshop folder not found at $workshop_path. Please check your workshop item ID and try again." + exit 1 +fi + +# Get the current timestamp (format: YYYYMMDD_HHMMSS) +timestamp=$(date +"%Y%m%d_%H%M%S") + +# Check if the bots folder already exists +if [ -d "$dota_path" ]; then + echo "Folder already exists, renaming to bots_old_$timestamp..." + mv "$dota_path" "${dota_path}_old_$timestamp" +fi + +# Create symbolic link +echo "Creating symbolic link..." +ln -s "$workshop_path" "$dota_path" +if [ $? -eq 0 ]; then + echo "============" + echo "Install Succeeded!!!" + echo "============" +else + echo "============" + echo "Install failed!!!" + echo "1. Ensure Dota 2 is installed and the paths are correct." + echo "2. Ensure you run this script with sudo." + echo "============" +fi + +# Pause to keep the terminal open +read -p "Press Enter to exit..."