SteamCMD

From Valve Developer Community
Jump to: navigation, search
English Español Français Polski Русский 简体中文

De Steam Console Client of SteamCMD is een nieuw hulpmiddel om dedicated servers te installeren en te updaten via de opdrachtregel. Het systeem werkt alleen met games die zijn overgeschakeld op het SteamPipe bestandssysteem. Op den duur zullen alle games die gebruik maken van de HLDSUpdateTool overschakelen op SteamPipe.

SteamCMD downloaden en uitvoeren

1. Download de SteamCMD Update Tool

Als je gebruik maakt van een 64-bit Linux distro moet je de 32-bit libs installeren. Kijk hier voor informatie over hoe dit moet.

2. Pak de inhoud van het archief uit in een bestandsmap

Note:Pak de inhoud van het SteamCMD archief niet uit in de Steam Client map of in de HLDSUpdateTool map.
  • Linux: type tar -xvzf steamcmd_linux.tar.gz

3. Start SteamCMD voor de eerste keer op.

Open een opdrachtprompt in de map waar SteamCmd staat
  • Windows: type steamcmd
  • Linux: type ./steamcmd.sh

Het programma zal zichzelf automatisch updaten en toont na het updaten een Steam> prompt. Typ help voor meer informatie.

Voor de meeste gameservers kan je anoniem inloggen

login anonymous

Mocht anoniem inloggen niet werken voor een bepaalde game, dan zal je in moeten loggen met je Steam account.

Note:Je moet uitloggen uit de reguliere Steam client voordat je inlogt op de SteamCMD Update Tool.
login <username>

Voer je wachtwoord in. Kijk daarna in je e-mail voor je Steam Guard toegangscode en voer hem in (dit hoeft maar een keer per computer).

Er komt een melding in beeld waarop staat dat je succesvol bent ingelogd.

Een app downloaden

1. Start SteamCMD en stel SteamCMD in op je app installatiefolder. (hint: gebruik voorwaarde slashes (/) op Linux en backslashes (\) op Windows)

force_install_dir <path>
Voorbeeld: cs_go bestandsmap in de huidige map:
force_install_dir ./cs_go/

2. Installeer of update de app. <app_id> is de Steam Application ID. Om de te installeren of the updaten app ook te valideren voeg je validate te aan het commando.

app_update <app_id>
Voorbeeld: instaleer en valideer CS:GO:
app_update 740 validate
Voorbeeld: installeeer en valideer de beta versie van HDLS (CS 1.6):
app_update 90 -beta beta validate
Voorbeeld: Installeer en valideer een prerelease versie van CS:S:
app_update 232330 -beta prerelease validate
Voorbeeld: Installeer en valideer CS:CZ:
app_set_config 90 mod czero
app_update 90 validate
Bug:
HLDS mods vereisen momenteel meerde installatierondes voordat alles is geïnstalleerd.


3. Wanneer je klaar bent met de SteamCMD, type quit om de SteamCMD netjes af te melden bij de Steam Servers en om het programma te sluiten.

Supported Servers

Onderstaande lijst vereist steamcmd om te worden geïnstalleerd. Eventuele extra commando's moeten voor de app_update regel.

Bug:
HLDS (appid 90) vereisen momenteel meerde installatierondes voordat alles is geïnstalleerd.
Server ID Extra commando's
HLDS for Half-Life and Counter-Strike 90
Counter-Strike: Condition Zero dedicated server 90 +app_set_config 90 mod czero
Deathmatch Classic 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 dedicated server 90 +app_set_config 90 mod gearbox
Ricochet dedicated server 90 +app_set_config 90 mod ricochet
Team Fortress Classic dedicated server 90 +app_set_config 90 mod tfc
Counter-Strike: Global Offensive dedicated server 740
Garry's Mod dedicated server 4020
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
Red Orchestra: Rising Storm beta dedicated server 238690
Killing Floor Windows dedicated server 215350
Killing Floor Linux dedicated server 215360
Team Fortress 2 dedicated server 440
Day of Defeat: Source dedicated server 232290
Counter-Strike: Source dedicated server 232330
Half-Life 2: Deathmatch dedicated server 232370
The Ship dedicated server 2403
Tip:Om meerde mods teglijk te installeren kan je de namen scheiden door comma's, v.b. +app_set_config 90 mod czero,dod.

Automatische SteamCMD

Er zijn twee manieren om SteamCMD te automatiseren. (vervang steamcmd door./steamcmd.sh op Linux)

Note:Wanneer je beta gebruikt op de opdrachtregel moet je het commando op de goede manier citeren: +app_update "90 -beta beta"

1. Voeg commando's toe aan de SteamCMD opdrachtregel, voorbeeld:

steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit

Om een specifieke mod voor HL1 te installeren, zoals Counter-Strike: Condition Zero:

steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 validate +quit

Voor een game waarvoor je moet inloogen, zoals Killing Floor

steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit

2. Maak een script

a. Stop je SteamCMD commando's in een tekstbestand. Voorbeeld:
// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //maak hier 0 van als je meerdere server installeert
@NoPromptForPassword 1
login <gebruikersnaam> <wachtwoord>
//voor servers waarvoor je niet hoeft in te loggen
//login anonymous 
force_install_dir ../csgo_ds
app_update 740 validate
quit
b. Voer SteamCMD uit met de +runscript optie. Voorbeeld:
steamcmd +runscript csgo_ds.txt

Voorbeeld Batchcode voor Windows

::=======================::
:: SteamCMD Guardian 1.2 ::
::       ckynick254      ::
::=======================::
set programname=SteamCMD Guardian 1.1
::=======================::
::  STEL WAARDEN IN!     ::
::=======================::
set servername=
set username=
set password=
::=======================::
::      Servermap        ::
::    Vervang achter =   ::
::=======================::
set runcmd=E:\Games\
 
::=======================::
:: Einde van variabelen  ::
::=======================::
 
:: Dit houd het scherm mooi leesbaar
@ECHO off
 
:: Stel de titel van het scherm in
title %programname% - %servername%
 
:: Leegt het scherm, mocht er iets staan
cls
COLOR 1f
CD %runcmd%
 
:: Geeft aan dat het programma is gestart
ECHO %programname% is gestart
:start
ECHO.
ECHO.
ECHO   ##############################################################
ECHO   #                    Dedicated Server                        #
ECHO   # 1 - Half-Life: Deathmatch en 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 - Afsluiten                                              #
ECHO   ##############################################################
ECHO.
ECHO.
 
:: Delete variable %A%
SET "A="
SET /P A=Kies het nummer van je keuze en druk op [ENTER]
ECHO Laden.........
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" START https://developer.valvesoftware.com/wiki/SteamCMD:nl
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT
 
:: Dit is een terugkeerpunt, mocht de server vastlopen
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is nu ONLINE
ECHO %servername% wordt in de gaten gehouden voor eventuele crashes
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is nu ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) %servername% wordt in de gaten gehouden voor eventuele crashes
 
::Start het daadwerkelijke updatescherm
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WAARSCHUWING: srcds was afgesloten of is gecrasht. Herstarten...
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% wordt opnieuw opgestart...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Server gecrasht of afgesloten.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% start nu opnieuw op...
 
::De server is gestopt, dus we gaan terug naar het terugkeerpunt
GOTO restart

Bekende problemen

32-bit libraries op 64-bit Linux systemen

Omdat SteamCMD een 32-bit programma is, zijn er enkele 32-bit libraries vereist, zelfs als je al het 64-bit equivalent van deze libraries hebt.

De foutmelding die bij dit probleem hoort:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

De oplossingen zijn distrospecifiek:

Debian en afgeleide (Ubuntu, Mint)

apt-get install ia32-libs

Als je de volgende foutmelding krijgt: 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.

Doe dan het volgende

dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs

Red Hat en afgeleide (RHEL, Fedora, CentOS)

yum install glibc.i686 libstdc++.i686

Arch Linux

Vergeet niet om eerst de multilib repository aan te zetten.

pacman -S lib32-gcc-libs

Login Failure: No Connection

Op Linux server kan je de volgende fout tegenkomen: "Login Failure: No Connection". Dit komt door ontbrekende iptables regels. Je kan dit oplossen door iets in de trend van het volgende te doen:

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

Een lijst met poorten is hier: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=english

Op Windows Servers kan je het volgende krijgen: "SteamUpdater: Error: Download failed: http error 0", dit is meestal te repareren door "Automatically detect settings" (of "Instellingen automatisch detecteren") aan te vinken bij de LAN instellingen van de Internet Instellingen.

SteamCmd opstartfouten

Ulimit linux startup error

Sommige gebruikers kunnen ulimit meldingen krijgen (geen rechten/kan bestand niet openen) terwijl het script aan het opstarten is. Deze fout wordt veroorzaakt door een te lage -n-parameter in ulimit. SteamCmd gebruikt standaard commando's om ulimit automatisch aan te passen maar sommige servers kunnen dit om veiligheidsreden blokkeren (meestal ingesteld door administrator/root). Het probleem lost op door ulimit te verhogen tot ten minste 2048: ulimit -n 2048. Het kan zijn dat je permissiefouten krijgt (no permission), dus het kan zijn dat dit als root moet worden gedaan. Om de instelling na te kijken, typ je: ulimit -a. Je krijgt een grote response, je moet dan zoeken naar:

open files                      (-n) 1024

"1024" is de waarde van de instelling van het systeem.