SteamCMD

Больше
3 года 2 мес. назад #45 от Евгений
Евгений создал тему: SteamCMD
Консольный клиент Steam или SteamCMD - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему SteamPipe. Постепенно все серверы, использующие HLDSUpdateTool, перейдут на нее.
Contents
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


[/table]
Загрузка и запуск SteamCMD
1. Загрузите SteamCMD
Windows .zip
Linux: введите wget media.steampowered.com/client/steamcmd_linux.tar.gz
Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите здесь.
2. Распакуйте архив в папку
Примечание: Не распаковывайте содержимое архива в папку обычного клиента Steam или в папку с HLDSUpdateTool!
Linux: введите tar xvfz steamcmd_linux.tar.gz
3. Запуск SteamCMD в первый раз
Откройте командную строку в этой папке и запустите SteamCMD
Windows: наберите steamcmd
Linux: наберите ./steamcmd.sh
Утилита автоматически обновится и отобразит приглашение Steam> Наберите help для более подробной информации.
Для загрузки большинства серверов можно войти анонимно:
login anonymous

Если анонимный вход не работает для конкретной игры, вам нужно войти в аккаунт Steam
Примечание:Вам нужно выйти из обычного клиента Steam чтобы корректно войти в аккаунт через SteamCMD.
login <имя_пользователя>

Введите ваш пароль. После этого вам на почту должен прийти ключ SteamGuard, который необходимо будет ввести далее. (Это надо делать один раз для каждого компьютера/пользователя в Linux)
Вы должны увидеть сообщение о том, что вход выполнен.
Загрузка сервера
1. Запустите SteamCMD и укажите директорию для загрузки. (Внимание: используйте прямые слеши в Linux и обратные в Windows)
force_install_dir <путь>

Баг:На некоторых дистрибутивах Linux путь не может содержать только прописные буквы - смотрите #Известные проблемы
Пример: папка cs_go в текущей папке
force_install_dir ./csgo_ds/
force_install_dir ./zombie/

2. Установите или обновите сервер. <app_id> это ID приложения Steam. Чтобы проверить установку, добавьте validate Для участия в бета-тесте добавьте -beta "Beta".
app_update <app_id>

Пример: установка и проверка CS:GO
app_update 740 validate

Пример: установка и проверка бета-версии HLDS:
app_update "90 -beta beta" validate

3. После завершения, введите quit для корректного отключения от серверов Steam.
Поддерживаемые серверы
Это список серверов, которые используют SteamCMD. Любые дополнительные опции командной строки должны быть указаны перед командой app_update!
Сервер
ID
Дополнительные опции командной строки
HLDS для Half-Life: Deathmatch и Counter-Strike 90
Counter-Strike: Condition Zero dedicated server 90 +app_set_config 90 mod czero
Day of Defeat dedicated server 90 +app_set_config 90 mod dod
Team Fortress Classic dedicated server 90 +app_set_config 90 mod tfc
Half-Life: Deathmatch Classic dedicated server 90 +app_set_config 90 mod dmc
Ricochet dedicated server 90 +app_set_config 90 mod ricochet
Half-Life: Opposing Force dedicated server 90 +app_set_config 90 mod gearbox
Counter-Strike: Global Offensive dedicated server 740
Nuclear Dawn dedicated server 111710
Red Orchestra dedicated server 223240
Red Orchestra 2: Heroes of Stalingrad dedicated server 212542
Killing Floor dedicated server 215350
Team Fortress 2 Beta dedicated server 229830
DoD:S dedicated server 232290
CS:S dedicated server 232330
HL2:DM dedicated server 232370
Следующие серверы еще не опубликованы (указано на будущее)
Team Fortress 2 dedicated server 232250
Совет:
Для установки нескольких модов, укажите их через запятую, например +app_set_config 90 mod czero,dod.


Автоматизация SteamCMD
Есть два варианта автоматизации SteamCMD. (замените steamcmd на ./steamcmd.sh для Linux)
1. Добавление команд в строку запуска. Примеры:
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
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //Установите 0 для обновления нескольких серверов за раз
@NoPromptForPassword 1
login <username> <password>
//для загрузки серверов, не требующих авторизации
//login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
b. Запустите SteamCMD с параметром +runscript Пример:
steamcmd +runscript csgo_ds.txt

Пример bat-файла для Windows
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Известные проблемы
Я могу загрузить или обновить сервер через SteamCMD, но сервер не запускается
Известные причины:
Linux: Некоторые игры имеют проблемы с регистром в названиях папок/файлов.
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)
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.
Сделайте следующее:
dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs

(Если нужно, добавьте sudo)
Red Hat и подобные (RHEL, Fedora, CentOS)
yum install glibc.i686 libstdc++.i686

Arch Linux
Не забудьте вначале включить репозиторий Multilib.
pacman -S lib32-gcc-libs

Ошибки загрузки
В Windows первичная загрузка может закончиться ошибкой, если в стандартных настройках прокси-сервера не указана автоматическая настройка
Login Failure: No Connection
На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо прописать например
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
Список портов может быть найден здесь: support.steampowered.com/kb_article.php?...-GLVN-8711&l=russian

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Если вы не достигли возраста 6 лет, убедительная просьба покинуть этот сайт.