Добавил: root 2013-11-19 13:01:21 6577 просмотров Консольный клиент Steam или SteamCMD - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему SteamPipe. Постепенно все серверы, использующие HLDSUpdateTool, перейдут на нее.
Загрузка и запуск SteamCMD
- Загрузите SteamCMD по ссылке сверху страницы
- Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите здесь.
- Распакуйте архив в папку
- Не распаковывайте содержимое архива в папку обычного клиента Steam или в папку с HLDSUpdateTool!
- Linux: введите
tar xvfz steamcmd_linux.tar.gz
- Запуск SteamCMD в первый раз
Откройте командную строку в этой папке и запустите SteamCMD
-
- Windows:
введите steamcmd
- Linux:
введите ./steamcmd.sh
Утилита автоматически обновится и отобразит приглашение Steam> Наберите help для более подробной информации.
Для загрузки большинства серверов можно войти анонимно:
Если анонимный вход не работает для конкретной игры, вам нужно войти в аккаунт Steam
Вам нужно выйти из обычного клиента Steam чтобы корректно войти в аккаунт через SteamCMD
Введите ваш пароль. После этого вам на почту должен прийти ключ SteamGuard, который необходимо будет ввести далее. (Это надо делать один раз для каждого компьютера/пользователя в Linux)
Вы должны увидеть сообщение о том, что вход выполнен.
Загрузка сервера
Запустите SteamCMD и укажите директорию для загрузки. (Внимание: используйте прямые слеши в Linux и обратные в Windows)
Пример: папка cs_go в текущей папке
1 |
force_install_dir ./cs_go/
|
Установите или обновите сервер. <app_id> это ID приложения Steam. Чтобы проверить установку, добавьте validate Для участия в бета-тесте добавьте -beta "Beta" .
Пример: установка и проверка CS:GO
Пример: установка и проверка бета-версии HLDS:
1 |
app_update "90 -beta beta" validate
|
После завершения, введите quit для корректного отключения от серверов Steam.
Поддерживаемые серверы
Это список серверов, которые используют SteamCMD. Любые дополнительные опции командной строки должны быть указаны перед командой app_update!
Сервер | ID | Дополнительные опции командной строки |
HLDS для Half-Life и Counter-Strike |
90 |
Counter-Strike: Condition Zero **Beta** dedicated server |
90 |
+app_set_config "90 mod czero" |
Deathmatch Classic **Beta** dedicated server |
90 |
+app_set_config "90 mod dmc" |
Day of Defeat dedicated server |
90 |
+app_set_config "90 mod dod" |
Half-Life: Opposing Force **Beta** dedicated server |
90 |
+app_set_config "90 mod gearbox" |
Ricochet **Beta** dedicated server |
90 |
+app_set_config "90 mod ricochet" |
Team Fortress Classic **Beta** dedicated server |
90 |
+app_set_config "90 mod tfc" |
Counter-Strike: Global Offensive dedicated server |
740 |
The Ship dedicated server |
2403 |
Garry's Mod dedicated server |
4020 |
Serious Sam 3 dedicated server |
41080 |
Nuclear Dawn dedicated server |
111710 |
Red Orchestra: Ostfront 41-45 dedicated server |
223240 |
Red Orchestra 2: Heroes of Stalingrad and Rising Storm dedicated server |
212542 |
Killing Floor Windows dedicated server |
215350 |
Killing Floor Linux dedicated server |
215360 |
Left 4 Dead 2 dedicated server |
222860 |
Team Fortress 2 dedicated server |
232250 |
Day of Defeat: Source dedicated server |
232290 |
Counter-Strike: Source dedicated server |
232330 |
Half-Life 2: Deathmatch dedicated server |
232370 |
Для установки нескольких модов, укажите их через запятую, например +app_set_config 90 mod czero,dod
Автоматизация SteamCMD
Есть два варианта автоматизации SteamCMD. (замените steamcmd на ./steamcmd.sh для Linux)
1. Добавление команд в строку запуска. Примеры:
1 2 3 4 5 |
steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 +quit
steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
|
2. Создание скрипта
a. Создайте текстовый файл с последовательностью команд для SteamCMD
1 2 3 4 5 6 7 8 9 10 |
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login <username> <password>
force_install_dir ../csgo_ds
app_update 740 validate
quit
|
b. Запустите SteamCMD с параметром +runscript Пример:
1 |
steamcmd +runscript csgo_ds.txt
|
Пример bat-файла для Windows
::=======================::
:: SteamCMD Guardian 1.2 ::
:: ckynick254 ::
::=======================::
set programname=SteamCMD Guardian 1.1
::=======================::
:: SET YOUR VARIABLES! ::
::=======================::
set servername=
set username=
set password=
::=======================::
:: Your folder ::
:: Replace after = ::
::=======================::
set runcmd=E:\Games\
::=======================::
:: End of variables ::
::=======================::
:: This will keep the window clean and easy to read
@ECHO off
:: Sets the title of the window
title %programname% - %servername%
:: Clears the window incase there is anything there
cls
COLOR 1f
CD %runcmd%
:: Prints to the window what we are doing
ECHO %programname% has been started!
:start
ECHO.
ECHO.
ECHO ##############################################################
ECHO # Dedicated Server #
ECHO # 1 - Half-Life: Deathmatch and Counter-Strike #
ECHO # 2 - Counter-Strike: Global Offensive #
ECHO # 3 - Nuclear Dawn Dedicated Server #
ECHO # 4 - Red Orchestra Dedicated Server #
ECHO # 5 - Red Orchestra 2: Heroes of Stalingrad Dedicated Server #
ECHO # 6 - Killing Floor Dedicated Server #
ECHO # 7 - Team Fortress 2 Dedicated Server Beta #
ECHO # 8 - HELP! #
ECHO # 9 - Exit #
ECHO ##############################################################
ECHO.
ECHO.
:: Delete variable %A%
SET "A="
SET /P A=Set Your Choice And Press Enter:
ECHO Loading .........
IF "%A%"=="1" set app=90
IF "%A%"=="2" set app=740
IF "%A%"=="3" set app=111710
IF "%A%"=="4" set app=223240
IF "%A%"=="5" set app=212542
IF "%A%"=="6" set app=215350
IF "%A%"=="7" set app=229830
IF "%A%"=="8" ECHO.
IF "%A%"=="8" ECHO https://developer.valvesoftware.com/wiki/SteamCMD
IF "%A%"=="8" ECHO.
IF "%A%"=="8" PAUSE
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT
:: This is a return point in case the server crashes or is closed
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is now ONLINE
ECHO Watching %servername% for crashes...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) Watching %servername% for crashes...
::Start the actual update window
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WARNING: srcds closed or crashed, restarting.
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% is now restarting...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Crash or Close detected!
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now restarting...
::Server crashed or closed, so we point it to the return point to start the server again
GOTO restart
Известные проблемы
Я могу загрузить или обновить сервер через SteamCMD, но сервер не запускается
Известные причины:
-
- Linux: Некоторые игры имеют проблемы с регистром в названиях папок/файлов.
Ошибка отсутствия библиотек SteamCMD в директории steam
В консоле сервера такая ошибка выглядит так: steamclient.so: cannot open shared object file: No such file or directory
Для начал проверяем существует ли директория steam.
Если директория отсутствует, то создаем ее.
1 |
mkdir /home/alliance/ .steam
|
Теперь создаем «символьную» ссылку к библиотекам SteamCMD
1 |
ln -s /home/alliance/srcds/steamcmd/linux32 /home/alliance/ .steam /sdk32
|
В вашем случае, пути к директориям будут различаться!
32-битные библиотеки на 64-битных дистрибутивах Linux
Так как SteamCMD это 32-битная программа, для запуска требуются некоторые 32-битные библиотеки, даже если у вас уже установлены 64-битные версии.
Обычно такая ошибка выглядит так: steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Решения специфичны для различных дистрибутивов:
Debian и подобные (Ubuntu, Mint)
1 |
apt-get install ia32-libs
|
Если вы получаете ошибку
The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable E: Unable to correct problems, you have held broken packages.
Сделайте следующее:
1 2 3 |
dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs
|
(Если нужно, добавьте sudo )
Red Hat и подобные (RHEL, Fedora, CentOS)
1 |
yum install glibc.i686 libstdc++.i686
|
Arch Linux
Не забудьте вначале включить репозиторий Multilib
Ошибки загрузки
В Windows первичная загрузка может закончиться ошибкой, если в стандартных настройках прокси-сервера не указана автоматическая настройка
В Linux пользователь может получить ошибку при старте, связанную с ulimit (no permission/can not open file). Для корректной работы steamcmd требуется установка параметра следующим образом: ulimit -n 2048 . Хотя в shell-скрипте имеется строка, отвечающая за изменение ulimit, в некоторых системах администратором может быть запрещено изменение параметра пользователем, не имеющим root-привилегий. Перед запуском проверьте параметры ulimit следующим образом: ulimit -a. В ответе терминала нужно найти следующую строку:
Здесь значение 1024 — значение uname -n.
Login Failure: No Connection
На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо прописать например
1 2 |
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT
|
Failed to open logfile или Failed to create directory
Переименуйте в корне рабочей директории каталог ./Steam/ в ./steam/ Тэги: |