Last updated on Thursday, October 31, 2013

Ce cours est visible gratuitement en ligne.

Got it!

Introduction du cours

Bienvenue à tous dans ce tutoriel ayant pour but de vous apprendre comment installer et configurer son serveur Counter-Strike:Source.

Ce tutoriel va se décomposer en deux parties.

La première consistera à installer et à configurer le strict minimum de votre serveur (juste de quoi jouer, c'est-à-dire modifier le nom du serveur, mettre un pass rcon...).

La seconde vous permettra d'installer divers plugins pour faciliter l'administration, mettre des effets sympas sur vos serveurs, etc.

C'est parti ! ;)

Installation et configuration de base

Nous allons voir ici comment installer et configurer son serveur de jeu Counter-Strike:Source. Vous saurez à la fin de cette partie configurer votre serveur de manière basique (mettre un mot de passe, changer l'argent, modifier le temps du round, etc.). Sachez qu'il faut passer par là mais ça n'est vraiment pas compliqué à assimiler, l'apprentissage de la première partie étant relativement rapide.
Bonne lecture !

Installation sous serveur dédié Linux

Dans cette partie, nous allons voir comment installer la version serveur de Counter-Strike:Source sur un serveur Linux.

Téléchargement de hlds

Nous allons d'abord commencer par télécharger ce qui va nous permettre d'installer le serveur, toutes les manipulations seront effectuées par la console de Linux. Si votre serveur est un serveur loué chez OVH (pour ne citer que le plus connu), je vous renvoie vers le tutoriel de M@teo21 afin de voir comment accéder à sa console par internet (étant donné que vous n'avez pas l'écran du serveur devant les yeux) : Tutoriel d'utilisation de putty.

Commencez par créer un dossier sur votre serveur, à la racine par exemple :

mkdir /serveurs

Nous allons maintenant nous placer dans ce dossier :

cd /serveurs

Nous allons créer un dossier pour notre premier serveur (on suppose que vous allez en installer plusieurs) :

mkdir serveur1

Puis nous allons télécharger l'installeur avec la commande suivante :

wget "http://www.steampowered.com/download/hldsupdatetool.bin"

(wget est un programme permettant de télécharger et on lui indique ensuite l'URL de téléchargement).

Vous devriez avoir maintenant dans votre dossier « serveurs » un fichier nommé « hldsupdatetool.bin ». Pour le vérifier, saisissez la commande ls qui doit vous afficher :

hldsupdatetool.bin

Installation du serveur

On va maintenant procéder à l'installation du serveur. Nous allons tout d'abord modifier les droits du fichier afin de pouvoir l'exécuter, ceci avec la commande :

chmod a+x hldsupdatetool.bin

Puis on lance ce programme :

./hldsupdatetool.bin

Ne vous inquiétez pas, ce « blabla » en fait, on s'en moque ! :p Il correspond juste aux conditions d'utilisation du programme (l'équivalent du « Accepter les conditions » quand vous installez un programme).

Écrivez simplement « yes » pour dire que vous acceptez les conditions d'utilisation (enfin, si vous refusez, dites non, je ne vous force pas :-° ).

Normalement, en ayant accepté le contrat de licence, deux fichiers ont dû s'extraire. Faites un ls pour vérifier (cette commande permet d'afficher les fichiers du répertoire).

Ce qui nous intéresse, c'est le programme Steam ; c'est grâce à lui que nous allons installer le serveur.

./steam -command update -game "Counter-Strike Source" -dir "/serveurs/serveur1"

Cette commande a pour but de télécharger la dernière version de CS:S (la version serveur j'entends). Il est possible que la première fois que vous écriviez cette commande, la « bête » vous réponde :

Checking bootstrapper version ...
Getting version 32 of Steam HLDS Update Tool
Downloading. . . . . . . . . . . .
Steam Linux Client updated, please retry the command

En fait, si elle vous répond cela, c'est qu'elle a mis à jour Steam. Ressaisissez la première commande :

./steam -command update -game "Counter-Strike Source" -dir "/serveurs/serveur1"

Et là (normalement), la machine devrait faire son boulot, c'est-à-dire télécharger la version serveur de Counter-Strike:Source (je ne vais pas vous écrire tout son discours, il est ennuyant et inutile ; sachez juste que le serveur est en train de télécharger tous les fichiers utiles au bon fonctionnement de CS:S ; cela peut prendre assez longtemps suivant la vitesse de connexion du serveur).

La méthode qui utilise le programme « screen » reste la même. On va juste rajouter un petit « truc » devant la dernière commande, qui va donc devenir :

screen -dmS install_css1 ./steam -command update -game "Counter-Strike Source" -dir "/serveurs/serveur1"</

Normalement, le serveur ne répond rien : c'est tout à fait normal.

Toutefois, pour vérifier que la commande « screen » a bien été lancée, il nous suffit de faire :

screen -r install_css1

:magicien: Hocus pocus, on « rentre » dans la « screen ». On voit ce qui se passe dedans maintenant.

Euh, et si je quitte putty en étant dans la « screen », ça la ferme (sans vouloir être vulgaire :p ) ?

Eh non, pour fermer une « screen », il faut faire CTRL + C. En faisant ceci, vous stoppez le programme en cours d'exécution (et donc la « screen » en l'occurence), vous « fermez » le putty virtuel.

Et pour sortir de la « screen », comment dois-je faire ?

CTRL + A + D

Petite précision, vous ne devez pas appuyer sur la touche « + », c'est simplement pour dire qu'il faut appuyer sur CTRL, le laisser enfoncé puis appuyer sur C. Je préfère être clair. :)

Lancer le serveur

Je suppose ici que votre serveur est bien installé dans le répertoire « /serveurs/serveur1 ».
Pour le lancer, plaçons-nous dans le répertoire « /serveurs/serveur1 ».

cd /serveurs/serveur1

Nous allons maintenant lancer le programme appelé « srcds_run ».

Il faudra le démarrer en mode screen (pour ceux n'ayant pas fait la seconde méthode, il s'agit de faire comme si on lançait une fenêtre putty en permanence sans quoi le serveur s'éteindrait dès la fermeture de putty).

Voici la commande de base pour lancer le serveur, nous l'expliquerons juste après :

screen -dmS NOMDELASCREEN ./srcds_run -game cstrike -port UNPORT +maxplayers NOMBREDEJOUEURS +map MAPCHARGEAULANCEMENT -pingboost 1 -autoupdate -tickrate UNTICKRATE
  • NOMDELASCREEN

    Sert à donner un nom au programme lancé, nom qui sera utile pour pouvoir fermer le serveur par la suite.

  • ./srcds_run -game cstrike

    Indique le lancement de Counter-Strike:Source (la version serveur bien sûr).

  • -port UNPORT

    Sert à donner un port à votre serveur. En fait, votre serveur aura une adresse IP et un port ; admettons que nous mettions 27030 comme port et que l'IP de votre serveur soit (j'invente) 80.200.200.200 : votre serveur aura pour adresse 80.200.200.200:27030.

  • +maxplayers NOMBREDEJOUEURS

    Ceci sert à définir le nombre de slots de votre serveur dédié, le maximum étant de 64 slots (1 slot = 1 joueur humain ou ordinateur).

  • +map MAPCHARGÉEAULANCEMENT

    Ici, vous devez dire quelle map sera lancée sur le serveur à son démarrage ; vous devez préciser le nom sans l'extension « .bsp » : de_dust2 et non de_dust2.bsp !

  • -pingboost 1 -autoupdate

    Une commande pour améliorer le ping des joueurs et une autre pour mettre à jour automatiquement le serveur. Mettez ces commandes « sans trop vous poser de questions ». :p

  • -tickrate UNTICKRATE

    Le tickrate du serveur (un nombre allant de 1 à 100 maximum) est le taux de mise à jour des positions du joueur sur le serveur ; plus il est élevé, mieux c'est. En revanche il prendra de la puissance sur la machine (et oui, on ne peut pas tout avoir :D ).

Voici un exemple de commande :

screen -dmS serveur_css_1 ./srcds_run -game cstrike -port 27030 +maxplayers 16 +map de_dust2 -pingboost 1 -autoupdate -tickrate 100

Ici, on lance une screen d'un serveur appelé serveur_css_1.
C'est un serveur Counter-Strike:Source lancé sur le port 27030 ; le nombre de slots est de 16 ; la map chargée au démarrage sera de_dust2 et son tickrate sera de 100.

J'espère que vous avez compris (n'essayez pas de mémoriser les commandes, ça ne sert à rien ; je ne les connais pas par c%u0153ur moi-même et cela fait pas mal de temps que je les utilise).

Il ne reste plus qu'à appuyer sur la touche ENTRÉE, ajouter le serveur aux favoris et rester ébloui de son propre exploit !

Stopper son serveur

Votre serveur est lancé, c'est super, mais vous souhaitez le redémarrer pour une raison quelconque (à titre d'exemple, il faudra redémarrer le serveur après avoir installé un plugin, ce que nous verrons plus tard).

Pour l'éteindre donc, rien de plus simple, vous devez accéder à la screen de votre serveur par la commande screen -r NOMDELASCREEN, puis faire CTRL + C.

Ainsi la screen se ferme, de même que votre serveur.

Je crois que je ne me souviens plus du nom de la screen, que faire ?

screen -list

Cette commande affichera en effet toutes les screens lancées. Un exemple chez moi (je n'ai que des screens de Counter-Strike:Source) :

There are screens on:
        5696.serveur_css_prive  (Detached)
        10702.serveur_css_public        (Detached)
        14820.serveur_css_gungame       (Detached)
3 Sockets in /var/run/screen/S-root.

J'ai ici l'ID puis le nom de la screen et enfin (Detached) qui signifie que vous n'êtes pas dedans. C'est donc présenté sous ce format :

IDSCREEN.NOMSCREEN (Detached)

Vous avez ensuite deux façons de procéder : ou bien vous faites kill IDSCREEN, ou alors screen -r NOMSCREENCTRL + C.

Admettons que je souhaite fermer le serveur gungame ; je procéderai ainsi :

kill 14820

Ou bien :

screen -r serveur_css_gungame
CTRL + C

On peut ensuite vérifier que le serveur de jeu a bien été coupé :

There are screens on:
        5696.serveur_css_prive  (Detached)
        10702.serveur_css_public        (Detached)
2 Sockets in /var/run/screen/S-root.

Cool, ça a fonctionné. ;)

Configuration basique

Nous allons ici voir comment configurer basiquement votre serveur : lui donner un mot de passe rcon, changer son nom, etc.
Bonne lecture ! ;)

Créer d'autres fichiers de configuration

Si vous avez un nombre important de commandes à écrire dans votre fichier server.cfg, il est conseillé de séparer les commandes en plusieurs fichiers pour plus de lisibilité. Supposons que vous ayez toute une partie pour régler tout ce qui concerne le gameplay et une autre pour régler les configurations du joueur (rates et compagnie), vous pouvez créer deux fichiers :

  • un fichier gameplay.cfg ;

  • un fichier configurations.cfg.

Vous placerez ces deux fichiers dans le répertoire cstrike/cfg et vous mettrez les commandes que vous souhaitez dedans.

Ensuite, pour que votre serveur les interprète, vous n'aurez plus qu'à rajouter dans le fichier server.cfg deux lignes à la fin :

exec gameplay.cfg
exec configurations.cfg

Des commandes, plein de commandes

Voici une liste non exhaustive des commandes pour configurer basiquement son serveur CS:S.

Ajouter de l'argent :

mp_startmoney X

où X est un nombre compris entre 800 et 16000.

Activer / désactiver les communications vocales :

sv_voiceenable 1/0

Activer / désactiver le alltalk (tout le monde entend) :

sv_alltalk 1/0

Régler le temps du round :

mp_roundtime X

avec X compris entre 1 et 9.

Faire un restart :

mp_restartgame X

avec X nombre de secondes avant ledit restart.

Régler le nombre de rounds avant le changement de la map :

mp_maxrounds X

Régler le nombre de frags avant le changement de la map :

mp_fraglimit X

avec X le nombre de frags avant le changement (0 = la map ne changera pas pour un certain nombre de frags).

Régler le temps avant le changement de la map :

mp_timelimit X

avec X le temps avant le changement (0 = la map ne changera pas pour un temps donné).

Régler les victoires d'équipe avant le changement de la map :

mp_winlimit X

avec X le temps avant le nombre de victoires avant le changement (0 = la map ne changera pas pour un nombre de victoires).

Régler le feu ami :

mp_friendlyfire 0/1

Active ou non le feu ami (teamkill).

Force le joueur à aller dans l'équipe où il y a le moins de joueurs :

mp_limitteams X

avec X le nombre de joueurs en surplus autorisé (0 désactive la commande).

Règle le temps de blocage au début du round (pour les achats) :

mp_freezetime X

avec X le temps d'arrêt en secondes.

Règle le temps pour acheter les armes au respawn :

mp_buytime X

avec X le temps avant que l'achat ne soit plus possible.

Modifie le mot de passe pour rejoindre le serveur :

sv_password "CHAINE"

avec CHAINE le mot de passe à rentrer pour pouvoir rejoindre le serveur. Si CHAINE vaut " " ou "", aucun mot de passe ne sera requis pour rejoindre le serveur.

Modifie le nom du serveur :

hostname "NOM"

avec NOM le nom du serveur qui s'affichera dans la liste des serveurs.

Modifie le temps avant l'explosion de la bombe :

mp_c4timer X

avec X le temps en secondes avant l'explosion de la bombe une fois qu'elle a été posée (mp_c4timer 35 est une valeur recommandée).

Enfin, voici de nombreuses autres commandes (source : https://support.steampowered.com/kb_ar [...] 975-UOPG-1608). La liste ci-dessous n'est pas exhaustive.

sv_accelerate
None
Default Value: 10
sv_airaccelerate
None
Default Value: 10
sv_allow_color_correction
Allow or disallow clients to use color correction on this server
Default Value: 1
sv_allow _wait_command
Allow or disallow the wait command on clients connected to this server
Default Value: 1
sv_allowdownload
Allow clients to download files
Default Value: 1
sv_allowupload
Allow clients to upload customizations files
Default Value: 1
sv_alltalk
Players can hear all other players, no team restrictions
Default Value: 0
sv_alternateticks
If set, server only simulates entities on alternate ticks.
Default Value: 0
sv_autosave
Set to 1 to save game on level transition. Does not affect autosave triggers.
Default Value: 1
sv_backspeed
How much to slow down backwards motion
Default Value: 0
sv_bounce
Bounce multiplier for when physically simulated objects collide with other objects.
Default Value: 0
sv_cacheencodedents
If set to 1, does an optimization to prevent extra SendTable_Encode calls.
Default Value: 1
sv_cheats
Allow cheats on server if set to 1
Default Value: 0
sv_client_cmdrate_difference
cl_cmdrate is moved to within sv_client_cmdrate_difference units of cl_updaterate before it is clamped between sv_mincmdrate and sv_maxcmdrate
Default Value: 20
sv_client_interpolate
This can be used to force the value of cl_interpolate for connected clients (only while they are connected). -1 = let client set this value
Default Value: -1
sv_client_max_interp_ratio
This can be used to limit the value of cl_interp_ratio for connected clients (only while they are connected). If sv_client_min_
Default Value: 2
sv_client_min_interp_ratio
This can be used to limit the value of cl_interp_ratio for connected clients (only while they are connected). -1 = let client set this value
Default Value: 1
sv_client_predict
This can be used to force the value of cl_predict for connected clients (only while they are connected). -1 = let clients set this value
Default Value: -1
sv_consistency
Whether the server enforces file consistency for critical files
Default Value: 0
sv_contact
Contact email for server sysop
Default Value: 0
sv_debug_player_use
Visualizes +use logic. Green cross=trace success, Red cross=trace too far, Green box=radius success
Default Value: 0
sv_debugmanualmode
Make sure entities correctly report whether or not their network data has changed.
Default Value: 0
sv_deltaprint
Print accumulated CalcDelta profiling data (only if sv_deltatime is on)
Default Value: 0
sv_deltatime
Enable profiling of CalcDelta calls
Default Value: 0
sv_enableoldqueries
Enable support for old style (HL1) server queries
Default Value: 0
sv_filterban
Set packet filtering by IP mode
Default Value: 1
sv_findsoundname
Find sound names which reference the specified wave files.
Default Value:
sv_footsteps
Play footstep sound for players
Default Value: 1
sv_forcepreload
Force server side preloading
Default Value: 0
sv_friction
World friction.
Default Value: 4
sv_gravity
World gravity
Default Value: 800
sv_instancebaselines
Enable instanced baselines. Saves network overhead
Default Value: 1
sv_lagflushbonecache
Flushes entity bone cache on lag compensation
Default Value: 1
sv_lan
Server is a lan server (no heartbeat, no authentication, no non-class C addresses)
Default Value: 0
sv_log_onefile
Log server information to only one file
Default Value: 0
sv_logbans
Log server bans in the server logs
Default Value: 0
sv_logblocks
If true when log when a query is blocked (can cause very large log files)
Default Value: 0
sv_logdownloadlist
None
Default Value: 1
sv_logecho
Echo log information to the console.
Default Value: 1
sv_logfile
Log server information in the log file.
Default Value: 1
sv_logflush
Flush the log file to disk on each write (slow).
Default Value: 0
sv_logsdir
Folder in the game directory where server logs will be stored.
Default Value: logs
sv_massreport
None
Default Value: 0
sv_master_legacy_mode
Use old (outside-of-Steam) code to communicate with master servers
Default Value: 0
sv_master_share_game_socket
Use the game's socket to communicate to the master server. If this is 0, then it will create a socket on -steamport + 1 to comm
Default Value: 0
sv_max_queries_sec
Maximum queries per second to respond to from a single IP address.
Default Value: 3
sv_max_queries_sec_global
Maximum queries per second to respond to from anywhere.
Default Value: 60
sv_max_queries_window
Window over which to average queries per second averages.
Default Value: 30
sv_max_usercmd_future_ticks
Prevents clients from running usercmds too far in the future. Prevents speed hacks.
Default Value: 8
sv_maxcmdrate
(If sv_mincmdrate is > 0), this sets the maximum value for cl_cmdrate.
Default Value: 101
sv_maxrate
Max bandwidth rate allowed on server, 0 == unlimited
Default Value: 0
sv_maxreplay
Maximum replay time in seconds
Default Value: 0
sv_maxspeed
None
Default Value: 320
sv_maxunlag_
Maximum lag compensation in seconds
Default Value: 1
sv_maxupdaterate
Maximum updates per second that the server will allow
Default Value: 60
sv_maxvelocity
Maximum speed any ballistically moving object is allowed to attain per axis.
Default Value: 3500
sv_mincmdrate
This sets the minimum value for cl_cmdrate. 0 == unlimited.
Default Value: 0
sv_minrate
Min bandwidth rate allowed on server, 0 == unlimited
Default Value: 0
sv_minupdaterate
Minimum updates per second that the server will allow
Default Value: 10
sv_netvisdist
Test networking visibility distance. Only available if cheats are enabled.
Default Value: 10000
sv_noclipaccelerate
None
Default Value: 5
sv_noclipduringpause
If cheats are enabled, then you can noclip with the game paused (for doing screenshots, etc.).
Default Value: 0
sv_noclipspeed
None
Default Value: 5
sv_npc_talker_maxdist
NPCs over this distance from the player won't attempt to speak
Default Value: 1024
sv_password
Server password for entry into multiplayer games
Default Value: 0
sv_pausable
Is the server pausable.
Default Value: 0
sv_precacheinfo
Show precache info.
Default Value: 0
sv_pure
If set to 1, the server will force all client files except the whitelisted ones(in pure_server_whitelist.txt) to match the server. If set to 2, than pure_server_whitelist.txt is ignored and all content files come from Steam.
Default Value: 0
sv_pure_kick_clients
If set to 1, the server will kick clients with mismatching files. Otherwise, it will issue a warning to the client.
Default Value: 0
sv_pure_trace
If set to 1, the server will print a message whenever a client is verifying a CRC for a file.
Default Value: 0
sv_pushaway_clientside
Clientside physics push away (0=off, 1=only localplayer, 1=all players)Add sound to precache list.
Default Value: 0
sv_pushaway_clientside_size
Minimum size of pushback objects
Default Value: 15
sv_pushaway_force
How hard physics objects are pushed away from the players on the server.
Default Value: 30000
sv_pushaway_hostage_force
How hard the hostage is pushed away from physics objects (falls off with inverse square of distance)
Default Value: 20000
sv_pushaway_max_force
Maximum amount of force applied to physics objects by players
Default Value: 1000
sv_pushaway_max_hostage_force
Maximum of how hard the hostage is pushed away from physics objects
Default Value: 1000
sv_pushaway_max_player_force
Maximum of how hard the player is pushed away from physics objects
Default Value: 1000
sv_pushaway_min_player_speed
If a player is moving slower than this, don't push away physics objects (enables ducking behind things)
Default Value: 75
sv_pushaway_player_force
How hard the player is pushed away from physics objects (falls off with inverse square of distance)
Default Value: 200000
sv_pvsskipanimation
Skips SetupBones when npc's are outside the PVS
Default Value: 1
sv_rcon_banpenalty
Number of minutes to ban users who fail rcon authentication
Default Value: 0
sv_rcon_log
Enable/disable rcon logging
Default Value: 1
sv_rcon_maxfailures
Max number of times a user can fail rcon authentication before being banned
Default Value: 10
sv_rcon_minfailures
Number of times a user can fail rcon authentication in sv_rcon_minfailuretime before being banned
Default Value: 5
sv_rcon_minfailuretime
Number of seconds to track failed rcon authentications
Default Value: 30
sv_region
The region of the world to report this server in.
Default Value: -1
sv_rollangle
Max view roll angle
Default Value: 0
sv_rollspeed
None
Default Value: 200
sv_runcmds
None
Default Value: 1
sv_sendtables
Force full sendtable sending path
Default Value: 0
sv_showanimstate
Show the (server) animation state for the specified entity (-1 for none).
Default Value: 1
sv_showanimstate_log
1 to output sv_showanimstate to Msg(). 2 to store in AnimStateServer.log. 3 for both.
Default Value: 1
sv_showhitboxes
Send server-side hitboxes for specified entity to client (NOTE: this uses lots of bandwidth, use on listen server only). Only available if Cheats are enabled.
Default Value: 1
sv_showimpacts
Shows client (red) and server (blue) bullet impact point (1=both, 2=client-only, 3=server-only)
Default Value: 0
sv_showladders
Show bbox and dismount points for all ladders (must be set before level load.)
Default Value: 0
sv_showlagcompensation
Show lag compensated hitboxes whenever a player is lag compensated
Default Value: 0
sv_showplayerhitboxes
Show lag compensated hitboxes for the specified player index whenever a player fires
Default Value: 0
sv_skyname
Current name of the skybox texture
Default Value: 0
sv_soundemitter_filecheck
Report missing wave files for sounds and game_sounds files.
Default Value:
sv_soundemitter_flush
Flushes the sounds.txt system (server only)
Default Value:
sv_soundemitter_trace
Show all EmitSound calls including their symbolic name and the actual wave file they resolved to
Default Value: 0
sv_soundscape_printdebuginfo
print soundscapes
Default Value:
sv_specaccelerate
None
Default Value: 5
sv_specnoclip
None
Default Value: 1
sv_specspeed
None
Default Value: 3
sv_stats
Collect CPU usage stats
Default Value: 1
sv_stepsize
None
Default Value: 18
sv_stopspeed
Minimum stopping speed when on ground
Default Value: 100
sv_stressbots
If set to 1, the server calculates data and fills packets to bots. Used for perf testing.
Default Value: 0
sv_strict_notarget
If set, notarget will cause entities to never think they are in the pvs
Default Value: 0
sv_suppress_viewpunch
None
Default Value: 0
sv_teststepsimulation
None
Default Value: 0
sv_thinktimecheck
Check for thinktimes all on same timestamp
Default Value: 0
sv_timeout
After this many seconds without a message from a client, the client is dropped
Default Value: 65
sv_unlag
Enables player lag compensation
Default Value: 1
sv_unlag_debug
None
Default Value: 0
sv_unlag_fixstuck
Disallow backtracking a player for lag compensation if it will cause them to become stuck
Default Value: 0
sv_unlockedchapters
None
Default Value: 0
sv_voicecodec
Specifies which voice codec DLL to use in a game. Set to the name of the DLL without the extension
Default Value: 0
sv_voiceenable
None
Default Value: 1
sv_wateraccelerate
None
Default Value: 10
sv_waterdist
Vertical view fixup when eyes are near water plane
Default Value: 12
sv_waterfriction
None
Default Value: 1

Le fichier server.cfg

Tout d'abord, quelques informations :

Le fichier de configuration chargé au lancement du serveur est le fichier server.cfg ; il est placé dans le dossier cstrike de votre serveur. Si vous avez installé un serveur dédié Linux, il sera placé dans :

/serveurs/serveur1/cstrike/cfg

Si vous avez un serveur dédié, le fichier n'est normalement pas créé par défaut, il faut donc le faire.

Voici un exemple de fichier « server.cfg » :

// configurations globales

hostname "Nom du serveur" // choisi le nom du serveur entre guillemets
log on // active les logs sur le serveur (attention, peut faire lagger le serveur s'il n'est pas souvent reboot)
rcon_password "Le pass rcon secret ;)" // le mot de passe rcon du serveur, vous verrez comment utiliser rcon plus tard
sv_password "LEPASSDUSERVEUR" // défini le mot de passe du serveur (sv_password "" = pas de passe)

// informations pour le nombre limite avant changement de la map (0 = pas de limite)

mp_maxrounds 0 // nombre de round avant changement de la map 
mp_fraglimit 0 // nombre de frag avant changement de la map 
mp_timelimit 90 // temps avant changement de map 
mp_winlimit 0 // victoire d'équipe avant changement de map



mp_forcecamera 0 // permet de voir les deux équipes quand on est mort (1 = on ne peut voir que les persos de son équipe)

//configuration vocales 

sv_voiceenable 1 // active les communications vocales (K par défaut dans le jeu)
sv_alltalk 1 // permet que tout le monde entende quand l'on parle au micro et non seulement son équipe 

//configurations liées au rates

sv_maxrate 40000 // rate max autorisé sur le serveur
sv_minrate 15000 // rate min...
sv_maxupdaterate 101 // updaterate max autorisé sur le serveur 
sv_minupdaterate 100 // updaterate min...


// configurations de gameplay

mp_friendlyfire 1 // active le feu ami (on peut faire des dégâts sur ses potes)
mp_flashlight 1 // active les flashs (les grenades aveuglantes)
mp_roundtime 1.75 // détermine le temps du round (ici c'est 1.75 minute et pas 1 minute 75 secondes ce qui voudrait dire 2mn 15s). Le temps du round est donc 1 minute + 0.75 * 60 = 1 min 45 secondes.
mp_startmoney 16000 // 16000 de dollar pour s'acheter un sniper flambant neuf !

//configurations diverses
mp_limitteams 1 // permet de ne pas faire du 8 terroristes contre 1 anti-terroriste (on ne peut rejoindre que l'équipe qui a le moins de joueurs)
mp_autoteambalance 1 // permet le rééquilibrage automatique des équipes si elles ne le sont pas
exec autrefichierconfiguration.cfg // permet d'exécuter un autre fichier de configuration

Rassurez-vous, je vais bien vous expliquer le fonctionnement de ce fichier.

Tout d'abord, tout ce qui se trouve à la suite de deux barres obliques comme celles-ci « // » est ignoré par le jeu ; vous pouvez donc mettre ce qui vous chante derrière, c'est utile pour commenter une configuration (comme ce que j'ai fait ici).

Ensuite, une commande fonctionne ainsi :

COMMANDE VALEUR

De nombreuses commandes prennent comme valeur 0 ou 1 avec 1 qui signifie « Oui » et 0 « Non ».

Exemple :

sv_alltalk 1 // active le alltalk (alltalk = OUI)
sv_alltalk 0 // désactive le alltalk (alltalk = NON)

Si une commande ne doit pas prendre une valeur numérique (un nombre/chiffre) mais du texte (une chaîne de caractères), il faut l'entourer de guillemets.

Exemple :

hostname "Nom du serveur" // OK
hostname Nom du serveur // surtout pas car le serveur ne sait pas si "du" est une autre commande, il ne sait pas où s'arrêter, ce sont les guillemets qui délimitent

Enfin, admettons que vous ayez défini mp_maxrounds 100 en haut du fichier et que plus loin vous écriviez "mp_maxrounds 20" ; le serveur va « se souvenir » de la dernière commande, celle qui sera donc la plus en bas dans le fichier (le serveur lit le fichier comme vous, de gauche à droite et de haut en bas).

Commander son serveur

Avoir un serveur de jeu, c'est bien. Pouvoir le contrôler, c'est mieux. :p Il existe un système appelé RCON qui permet de commander le serveur en effectuant des commandes, qui l'aurait deviné ? >_

Toutes les commandes que vous avez pu voir dans le chapitre précédent peuvent être utilisées avec le RCON !

Fonctionnement global

Tout d'abord, pour pouvoir utiliser le RCON en étant sur le serveur, il faut avoir la console. Je vous renvoie vers ce tutoriel pour savoir comment l'activer.

Ensuite, avant toute commande RCON, il faut s'identifier sur le serveur en saisissant :

rcon_password "LEPASSRCONDUSERVEUR"

Le mot de passe RCON étant défini dans le fichier « server.cfg » par la commande rcon_password "PASSRCON".

La syntaxe d'une commande entrée dans la console est la suivante :

rcon COMMANDE VALEUR

Par exemple, je vais mettre 16000$ sur le serveur (le maximum d'argent) :

rcon mp_startmoney 16000

Euh, j'ai rentré ta commande mais ça ne fonctionne pas, j'ai pas 16000$ !

Certaines commandes nécessitent un restart (pas du serveur, simplement du round !).

Ainsi, après avoir fixé le montant de l'argent par défaut, écrivez :

rcon mp_restartgame 1

Le round est restarté et vous avez désormais 16000$ ! ;)

Kicker, bannir

Tu peux pas m'aider, il y a un abruti sur mon serveur qui insulte tout le monde, je fais comment pour le virer moi ?

Tout d'abord, on peut soit le kicker (ça le déconnecte du serveur mais il peut aisément revenir), soit le bannir (là il fait moins le malin, il ne peut pas revenir avant d'avoir été débanni).

Commencez par écrire dans la console la commande client suivante :

status

Voici ce que nous répond le serveur (chez moi par exemple) :

] status
hostname:  Nom du serveur
version : 1.0.0.34/7 3471 secure 
udp/ip  :  XX.XXX.XXX.XXX:27040
map     :  de_dust2 at: 0 x, 0 y, 0 z
players :  2 (16 max)

# userid name uniqueid connected ping loss state
#  2 "Freempi" STEAM_0:0:537XXXX 00:13 420 0 active
#  3 "Rapace" STEAM_0:0:151XXXXX 00:10 55 0 active

Ce qui nous intéresse, ce sont les lignes concernant les joueurs :

#  2 "Freempi" STEAM_0:0:537XXXX 00:13 420 0 active
#  3 "Rapace" STEAM_0:0:151XXXXX 00:10 55 0 active

En premier (avant le pseudo), s'affiche l'identifiant (ID) sur le serveur : c'est grâce à lui que l'on va pouvoir kicker et bannir ; ensuite viennent le pseudo puis le Steam ID (j'ai volontairement censuré la fin des Steams ID :p ) ; pour le reste, on s'en moque (en fait, je ne sais pas ce que veut dire la suite :euh: ).

Admettons que je souhaite kicker Rapace ; je vais exécuter la commande serveur suivante kickid 3 car le 3 correspond à l'ID de Rapace.
Ce qui nous donne donc au final :

rcon_password "LEPASSRCONDUSERVEUR"
rcon kickid 3

:waw: Rapace a disparu !

Malheureusement pour moi, Rapace est coriace et il se demande pourquoi il a été kické (il n'a pas compris que c'était pour un tuto :soleil: ).

Je vais donc devoir le bannir (le pauvre petit).

Pour le bannir, la syntaxe est la suivante :

rcon banid TEMPSENMINUTES ID

L'ID peut être soit un Steam ID (la 3e colonne) soit un ID normal (la 1re colonne).

Admettons que je souhaite le bannir en permanence, je vais faire :

rcon banid 0 4

Il faut ensuite le kicker car il est banni, il ne pourra donc pas revenir ; toutefois il faut le faire partir une première fois :

rcon kickid 4

Il faut savoir que si vous avez banni une personne sur votre serveur, elle ne le sera que jusqu'au prochain reboot du serveur. Pour la bannir définitivement, il faut faire suivre le ban de la commande rcon writeid, le Steam ID du banni sera ainsi stocké dans le fichier cstrike/cfg/banned_user.cfg.

Il est également possible de bannir par IP en effectuant :

rcon addip TEMPS IP

avec TEMPS en minutes et avec IP l'adresse IP du banni.
Il faut faire suivre cette commande de rcon writeip pour que le ban reste, même après reboot du serveur.

Pour débannir via la console :

rcon removeid Steam_ID

Enlève Steam_ID de la liste de ban.

rcon removeip IP

Enlève IP de la liste de ban.

Et pour débannir via les fichiers du serveur, éditez simplement le fichier « cstrike/cfg/banned_user.cfg ».

Je vous conseille de bannir par steam_id ; vous êtes ainsi sûr à 100% que la personne ne reviendra pas (sauf si elle change de compte Steam...) car une IP peut être changée par un simple reboot de connexion (si l'IP est dynamique).

Vous savez maintenant bannir et kicker des joueurs (quant à Rapace, il sait qu'il existe des sadiques sur cette terre, le pauvre petit cobaye :lol: ).

Commander à distance

Il est possible de contrôler son serveur sans être physiquement présent. Tout d'abord via la console du jeu, mais sans être connecté au serveur :

rcon_address IP.DU.SERVEUR.CSS:PORT
rcon_password "PASSRCON"

Et ensuite, libre à vous d'effectuer les commandes voulues (en les précédant du mot rcon) !

Il est aussi possible de le contrôler à distance, mais SANS avoir le jeu lancé, via un logiciel appelé HLSW ; cliquez ici pour accéder à la page de téléchargement.

Enregistrez-vous en mettant un bonne adresse e-mail car il faut une confirmation (je sais, c'est lourd...).

Image utilisateur

Voici HLSW en action : vérifiez tout d'abord que votre menu « Voir » correspond au mien qui est montré sur le screenshoot (cochez tout comme moi), écrivez ensuite l'IP de votre serveur en haut, cliquez sur la liste juste en-dessous pour sélectionner votre serveur, rentrez le mot de passe rcon en bas, cliquez sur « Test » et faites obtenir le log (Internet).

Tout en bas, vous pouvez voir (non présent sur le screenshoot) des onglets :

  • Console ;

  • Chat ;

  • Liste de ban ;

  • Changer la carte ;

  • Bot mIRC ;

  • Plugins Metamod.

Ceux qui nous intéressent sont principalement les onglets « Console » (on peut rentrer n'importe quelle commande et ici pas besoin de précéder la commande par « rcon »), « Chat » (il ne marche que si l'on a le log Internet) qui permet de dialoguer avec les joueurs sur le serveur, « Liste de ban » permettant de voir les bannis et de bannir plus facilement, et « Changer la carte » qui affiche toutes les cartes disponibles sur le serveur.

L'onglet « Plugins Metamod » nous sera utile beaucoup plus tard si vous décidez d'installer des mods sur votre serveur.

Alors, c'est pas super HLSW ?

Les maps

Nous allons voir dans ce chapitre tout ce qui concerne les changements de maps, l'ajout de maps, etc.

Ajouter une map

Avant d'ajouter une map sur le serveur, il faut la posséder. :p
Pour ceci, deux cas sont possibles.

I - Vous l'avez téléchargée avec Counter-Strike: Source (vous êtes allés sur un serveur de jeu qui l'avait mise)

La map se trouvera donc dans :
D:\Program Files\Steam\steamapps\VotreNomDeCompte\counter-strike source\cstrike\maps

Ce répertoire est parfois composé de deux sous-répertoires que sont « soundcache » et « graphs ». Généralement, la map se trouve en un seul fichier, le fichier « .bsp », mais il arrive qu'elle soit également composée d'autres fichiers. Admettons par exemple que notre map se nomme « XmapX », elle sera forcément composée de :

XmapX.bsp

et éventuellement de :

XmapX.nav (le fichier qui gère les bots)

XmapX.cache (je ne sais pas à quoi il sert, mais il doit se trouver dans soundcache)
XmapX.manifest (je ne sais pas à quoi il sert, mais il doit se trouver dans soundcache)

XmapX.ain (je ne sais pas à quoi il sert, mais il doit se trouver dans graphs)

À l'exeption du .nav qui est facultatif, vous devez mettre tous les autres fichiers sur votre serveur, sinon la map ne fonctionnera pas.

J'ai sûrement oublié des types de fichiers, mais de toute façon, ne vous posez pas de questions, prenez tous les fichiers qui comportent XmapX dans le répertoire map tout en gardant leur arborescence quand vous les mettrez sur le serveur.

II - Vous souhaitez la télécharger sur internet car vous ne la possédez pas

Pour ceci, il existe un site comportant énormément de maps :
FPS BANANA (www.fpsbanana.com).
Preuve de ma grande générosité, je vous donne le lien de la section CS:S. :D
Ici (la barre de recherche est en haut à gauche :-° ).
Vous n'avez qu'à la télécharger.

Vous possédez maintenant la map, il ne reste plus qu'à l'envoyer sur votre serveur.
Pour ceci, connectez-vous avec votre logiciel FTP sur le serveur à l'aide des identifiants que votre hébergeur vous a donnés (si vous avez un serveur dédié il faut d'abord installer un serveur FTP dessus ; si la demande s'en fait ressentir, je rédigerai un tutoriel dessus).

Le répertoire vers lequel il faut envoyer la map est le suivant : « cstrike/maps ». Il suffit ensuite de « copier » l'arborescence des fichiers (par exemple si vous avez un fichier XmapX.bsp, un XmapX.nav et un XmapX.cache, il faudra mettre XmapX.bsp et XmapX.nav dans le dossier « cstrike/maps » et XmapX.cache dans le dossier « cstrike/maps/soundcache ».

La map est maintenant mise sur le serveur !

Changer de map

Tout d'abord, je tiens à rappeler que la map changera « toute seule » suivant un certain nombre de conditions (vues plus haut).

Admettons que vous souhaitiez changer de map avant que l'une des conditions ne soit remplie, il vous suffit de faire la simple commande :

rcon changelevel NOMDELAMAP avec NOMDELAMAP le nom du niveau en question sans prendre en compte l'extention « .bsp ».
Par exemple, le fichier de la map de_dust2 se nomme de_dust2.bsp.
Pour mettre cette map, il faudra donc faire :
rcon changelevel de_dust2
et non :rcon changelevel de_dust2.bsp

Voilà, c'est aussi simple que ça !
Je pense qu'il est important de préciser que lorsque l'on change de map la configuration contenue dans server.cfg est rechargée, ce qui signifie que si vous aviez rentré une commande juste avant de changer de map et que cette commande n'est pas contenue dans server.cfg, cette commande sera « oubliée » : vous devrez la re-rentrer.

Parfois, il peut arriver que le serveur soit un peu lent, que les armes des joueurs tremblent par exemple. En changeant de map, le problème est généralement résolu (pas besoin de carrément redémarrer le serveur).

Afficher les maps présentes

Je suppose ici que vous avez la console activée. Pour lister toutes les maps présentes sur le serveur, faites ce qui suit.
Tout d'abord, on s'identifie à l'aide du rcon :
rcon_password LeMotDePassRconDuServeur
puis on liste les maps qui sont présentes :

Image utilisateur

En fait, pour lister les maps présentes, la commande commence par :
rcon maps à laquelle on ajoute un filtre.
Par exemple faire :
rcon maps de affichera toutes les maps dont le nom commence par de, donc toutes les maps avec bombe.

Pour afficher TOUTES les maps présentes sur le serveur, quel que soit leur nom, il suffit de mettre une étoile. Celle-ci veut dire « n'importe quelle lettre », donc faire
rcon maps * signifie « afficher les maps qui commencent par n'importe quelle lettre (donc toutes les maps) ».

Comme on peut le voir dans mon exemple, j'ai d'abord affiché toutes les maps, puis uniquement les « de », puis les « cs » et enfin, j'ai écrit « india » qui ne m'a rien affiché car la map « awp_india » ne commence pas par « india ».

Gérer le cycle de rotation des maps

Nous allons maintenant gérer ce que l'on appelle le « cycle de rotation des maps ». En effet, les maps (monde, niveau de jeu) sur les serveurs peuvent alterner les unes après les autres, puisque jouer pendant 15 heures sur la même map peut devenir... lassant :-° .

Pour cela, il suffit d'éditer le fichier mapcycle.txt situé dans cstrike/mapcycle.txt.

Ouvrez-le et regardons ensemble ce qu'il contient :

cs_italy
de_dust
de_aztec
de_cbble
cs_office
de_chateau
de_dust2
de_piranesi
cs_havana
de_prodigy
cs_compound
de_train
de_tides
de_port
de_inferno
cs_assault
de_nuke
cs_militia

Il contient des noms de maps. En fait, il indique directement le cycle de rotation. Prenons l'exemple où nous sommes sur la carte de_aztec (3e ligne).
Une fois que de_aztec sera terminée, le serveur mettra de_cbble puis une fois celle-ci terminée, il mettra cs_office, etc.
Une fois cs_militia terminée, il reviendra en haut du fichier et mettra cs_italy.
Ce n'est pas plus compliqué que cela ^^ .

Comment décide-t-on qu'une map est « terminée » ?

La map changera « toute seule » suivant un certain nombre de conditions. En effet, dans le fichier server.cfg, il est normalement spécifié les commandes suivantes :

mp_fraglimit X
mp_timelimit X
mp_maxrounds X
mp_winlimit X

La première spécifie un nombre de frags (nombre de tués par un joueur, de kill) avant que la map ne change, la deuxième un temps limite en minutes (le temps étant compté à partir du moment où la map a été chargée sur le serveur), la troisième un nombre de rounds max et la dernière un nombre de victoires d'une équipe maximum. Si X vaut 0 (zéro et pas « ho »), alors il n'y aura pas de limite pour la commande concernée, c'est-à-dire que si mp_fraglimit vaut 0, alors la map ne changera pas en fonction du nombre de frags.
Soient les commandes suivantes :

mp_maxrounds 11
mp_fraglimit 0
mp_winlimit 8
mp_timelimit 15

Et que les terroristes aient sept points, les antiterroristes deux.
La carte changera à partir du moment où 15 minutes se seront écoulées depuis son chargement OU quand score des terroristes + score des antiterroristes vaudra 11 OU quand score des terroristes vaudra 8 OU quand score des antiterroristes vaudra 8 (si les terroristes gagnent 1 round la map changera, si les antiterroristes en mettent 2, la map changera également car mp_maxrounds sera vérifiée).

Que se passe-t-il si je ne mets que de_dust2 dans ce fichier ?

Le cycle de rotation se déroulera mais uniquement sur de_dust2, c'est-à-dire qu'une fois que de_dust2 aura vu ses conditions de fin remplies, le serveur remettra de_dust2 (en gros tous les rounds, les scores... seront réinitialisés).

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a

Example of certificate of achievement
Example of certificate of achievement