فهرست منبع

调整服务器启动时,检查游戏和模组更新的逻辑

Dcr 1 ماه پیش
والد
کامیت
7d732ba128
2فایلهای تغییر یافته به همراه22 افزوده شده و 15 حذف شده
  1. 2 2
      DockerFile/start.sh
  2. 20 13
      DockerFile/updatemod.sh

+ 2 - 2
DockerFile/start.sh

@@ -80,7 +80,7 @@ start_dayzserver() {
     cd /root/Steam/steamapps/common/DayZServer
     
     # 启动服务器之前,检查mod是否有更新.
-    bash /opt/updatemod.sh
+    bash /opt/updatemod.sh update_server
     updatemodpath="/root/Steam/steamapps/workshop/content/221100"
     target_dir="/root/Steam/steamapps/common/DayZServer/client_mod"
 
@@ -238,7 +238,7 @@ else
     echo "DayZServer已安装,检查更新"
     # 切换到SteamCMD目录
     cd /opt/steamcmd
-    ./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +app_update 223350 validate +quit
+    # ./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +app_update 223350 validate +quit
     echo "启动DayZServer..."
     cd /root/Steam/steamapps/common/DayZServer
     start_dayzserver

+ 20 - 13
DockerFile/updatemod.sh

@@ -10,10 +10,20 @@ fi
 # 设置日志文件路径
 LOG_FILE="/var/log/updatemod.log"
 
-echo "==========================================" >> "$LOG_FILE"
-echo "开始更新DayZ Mod..." >> "$LOG_FILE"
-echo "时间: $(date)" >> "$LOG_FILE"
-echo "==========================================" >> "$LOG_FILE"
+# 检查是否传入update_server参数
+UPDATE_SERVER=false
+if [ "$1" = "update_server" ]; then
+    UPDATE_SERVER=true
+    echo "==========================================" >> "$LOG_FILE"
+    echo "开始更新DayZ服务器和Mod..." >> "$LOG_FILE"
+    echo "时间: $(date)" >> "$LOG_FILE"
+    echo "==========================================" >> "$LOG_FILE"
+else
+    echo "==========================================" >> "$LOG_FILE"
+    echo "开始更新DayZ Mod..." >> "$LOG_FILE"
+    echo "时间: $(date)" >> "$LOG_FILE"
+    echo "==========================================" >> "$LOG_FILE"
+fi
 
 # 检查环境变量
 if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
@@ -26,15 +36,6 @@ fi
 
 cd /opt/steamcmd
 
-if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
-    echo "SteamCMD未安装,开始下载和安装..." >> "$LOG_FILE"
-    wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
-    tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
-    rm /opt/steamcmd/steamcmd_linux.tar.gz
-    chmod +x /opt/steamcmd/steamcmd.sh
-    echo "SteamCMD安装完成!" >> "$LOG_FILE"
-fi
-
 if [ -n "$MOD_IDS" ]; then
     echo "开始更新Mod..." >> "$LOG_FILE"
     IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
@@ -44,6 +45,12 @@ if [ -n "$MOD_IDS" ]; then
     
     echo "login $STEAM_USERNAME $STEAM_PASSWORD" > "$SCRIPT_FILE"
     
+    # 如果需要更新服务器,先添加服务器更新指令
+    if [ "$UPDATE_SERVER" = true ]; then
+        echo "添加DayZ服务器更新指令 (ID: 223350)" >> "$LOG_FILE"
+        echo "app_update 223350 validate" >> "$SCRIPT_FILE"
+    fi
+    
     for mod_id in "${MOD_ARRAY[@]}"; do
         echo "添加Mod ID: $mod_id 到更新脚本" >> "$LOG_FILE"
         echo "workshop_download_item 221100 $mod_id validate" >> "$SCRIPT_FILE"