Итак, что же такое SteamCMD? Это новая система распространения контента игровых серверов, которые перешли на новую систему хранения SteamPipe. Если игра не перешла на SteamPipe, она распространяется через HLDSUpdateTool.
1. SteamCMD можно скачать по следующим ссылкам(официальные):
- Windows (http://media.steampowered.com/client/steamcmd_win32.zip)
Linux: wget http://media.steampowered.com/client/st ... nux.tar.gz
- 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.
Пишем это:Потом:Код: Выделить всё
sudo dpkg --add-architecture i386
перед запуском apt-get install ia32-libsКод: Выделить всё
sudo apt-get update
- Red Hat, RHEL, Fedora, CentOS и т. д.:
Код: Выделить всё
yum install glibc.i686 libstdc++.i686
- Arch Linux:
Вначале включаем репозиторий multilib
и пишем этоКод: Выделить всё
pacman -S lib32-gcc-libs
2. Далее нам надо распаковать SteamCMD:
- Внимание, не распаковывайте SteamCMD в папку с клиентом Steam или HLDSUpdateTool
Для Linux:Код: Выделить всё
tar xvfz steamcmd_linux.tar.gz
3. Теперь нужно запустить SteamCMD в первый раз(он скачает файлы своей платформы)
Открываем командную строку и пишем(Для Linux это SSH, для Windows я не знаю)
- Windows: steamcmd
Linux: ./steamcmd.sh
После запуска, когда всё загрузится пишем quit чтобы выйти с steamcmd.
Установка завершена!
Для загрузки большинства серверов можно залогиниться(войти в систему) анонимно.
Код: Выделить всё
login anonymous
Заметка: сначала выйдите из обычного steam клиента.
Код: Выделить всё
login <логин>
При успешной авторизации вы увидите надпись successful.
Загрузка серверов:
1. Запускаете SteamCMD и указываете папку, в которую нужно загрузить сервер игры.
Код: Выделить всё
force_install_dir <путь>
К примеру, указываем папку cs_go из текущей директории:
Код: Выделить всё
force_install_dir ./cs_go/
2. Для загрузки сервера или обновления используем app_update:
Код: Выделить всё
app_update <ID сервера>
Код: Выделить всё
app_update 740 validate
Код: Выделить всё
app_update 90 -beta beta
Код: Выделить всё
app_update 4940 -beta "имя беты" -betapassword "пароль от беты" validate
После загрузки пишем quit, чтобы выйти из SteamCMD.
Вот список серверов, которые теперь распространяются только через SteamCMD:
Любые дополнительные опции командной строки должны быть указаны перед командой app_update!
Баг: Чтобы мод на HLDS(игра, к примеру CS или HL) нормально работал, нужно скачать его пару раз.(не докачивает файлы)
Примичания:
1: В скриптах для автоматизации, для дополнительных аргументов "+" не нужен.(к примеру +app_set_config будет app_set_config)
2: Бета сервера загружаются с аргументом -beta beta
3: Для некоторых серверов недбходимо заходить с anonymous.(К примеру для CS: S надо заходить из-под anonymous)(прим. перевод. мне кажется, это не фича, а баг.)
Код: Выделить всё
Сервер ID Дополнительные опции командной строки
HLDS for Half-Life and Counter-Strike 1.6 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
Natural Selection 2 dedicated server 4940
Natural Selection 2 Beta dedicated server 4940 -beta beta
Serious Sam 3 dedicated server 41080
Nuclear Dawn dedicated server 111710
Red Orchestra: Ostfront 41-45 Windows dedicated server 223240
Red Orchestra: Ostfront 41-45 Linux dedicated server 223250
Red Orchestra 2: Heroes of Stalingrad and Rising Storm Windows DS 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
Blade Symphony Beta dedicated server 228780
Source SDK Base 2013 MP dedicated server 244310
Half-Life Deathmatch: Source dedicated server 255470
1. К примеру, можно вставить параметры загрузки как аргументы:
Код: Выделить всё
steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Код: Выделить всё
steamcmd +login <логин> <пароль> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
Код: Выделить всё
// csgo_ds.txt
//
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login <логин> <пароль>
//для серверов, которые не приватные
//используйте login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
Код: Выделить всё
steamcmd +runscript csgo_ds.txt
Теперь можно не париться и загружать сервер под Linux из Windows или наоборот!
Как же это сделать?
Для этого появился новый параметр SteamCMD!
Код: Выделить всё
@sSteamCmdForcePlatformType
К примеру загрузить Windows сервер CS: GO из под Linux:
Код: Выделить всё
./steamcmd.sh [email protected] windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Код: Выделить всё
steamcmd.sh [email protected] linux +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Код: Выделить всё
steamcmd.sh [email protected] macos +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Вот это пример для скриптов:
Код: Выделить всё
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
Код: Выделить всё
::=======================::
:: 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
http://pastebin.com/nwNdT7CT
Редактируем скрипт под себа в текстовом редакторе, заливаем его на сервер, прописываем ему chmod(updateserver.sh - название файла)
Запускаем!
Скрипт сам загрузит SteamCMD и начнет загружать серверы
Редактируем скрипт под себа в текстовом редакторе, заливаем его на сервер, прописываем ему chmod
Код: Выделить всё
chmod u+x ./updateserver.sh
Запускаем!
Код: Выделить всё
./updateserver.sh
Код: Выделить всё
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
ILocalize::AddFile() failed to load file "public/steambootstrapper_russian.txt".
[ 0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[ 0%] Download Complete.
[----] Verifying installation...
[ 0%] Downloading Update...
[ 0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[ 0%] Download Complete.
SteamUpdater: Error: Steam needs to be online to update. Please confirm your ne
twork connection and try again.
[ 0%] !!! Fatal Error: Steam needs to be online to update. Please confirm your
network connection and try again.
Запускаем Internet Explorer и идем в свойства браузера.
Идем на вкладку "подключения" и там нажимаем кнопку "настройки сети".
Ставим галочку на "Автоматическое определение параметров"
Идем на вкладку "подключения" и там нажимаем кнопку "настройки сети".
Ставим галочку на "Автоматическое определение параметров"
В Linux пользователь может получить ошибку при старте, связанную с ulimit (no permission/can not open file)
Решение
Для корректной работы steamcmd требуется установка параметра следующим образом: ulimit -n 2048. Хотя в shell-скрипте имеется строка, отвечающая за изменение ulimit, в некоторых системах администратором может быть запрещено изменение параметра пользователем, не имеющим root-привилегий. Перед запуском проверьте параметры ulimit следующим образом: ulimit -a. В ответе терминала нужно найти следующую строку: Здесь значение 1024 — значение uname -n.
Код: Выделить всё
open files (-n) 1024
На 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
P.S Эта статья является вольным переводом с официального сайта SteamCMD, на официальном сайте есть русская версия, возможно она лучше, но она не обновляется!(возможно мою списали)) )