diff --git a/README.md b/README.md index 5251856..3933b42 100644 --- a/README.md +++ b/README.md @@ -77,8 +77,8 @@ CS2_GAMEALIAS="" (Game type, e.g. casual, competitive, deathmatch. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) CS2_GAMETYPE=0 (Used if CS2_GAMEALIAS not defined. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) CS2_GAMEMODE=1 (Used if CS2_GAMEALIAS not defined. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) -CS2_MAPGROUP="mg_active" (Map pool) -CS2_STARTMAP="de_inferno" (Start map) +CS2_MAPGROUP="mg_active" (Map pool. Ignored if workshop maps are defined.) +CS2_STARTMAP="de_inferno" (Start map. Ignored if workshop maps are defined.) ``` ### Bots @@ -110,6 +110,22 @@ CS2_LOG_DETAIL=0 (Combat damage logging: 0=disabled, 1=enemy, 2=frien CS2_LOG_ITEMS=0 (Turns item logging on/off: 0=off, 1=on) ``` +### Steam Workshop + +Support for Steam Workshop is experimental! + +```dockerfile +CS2_HOST_WORKSHOP_MAP="" (Steam Workshop Map ID to load on server start) +CS2_HOST_WORKSHOP_COLLECTION="" (Steam Workshop Collection ID to download) +``` + +If a Workshop Collection is set, maps can be selected via rcon. E.g: + +``` +ds_workshop_listmaps +ds_workshop_changelevel $map_name +``` + # Customizing this Container ## Validating Game Files diff --git a/bullseye/etc/entry.sh b/bullseye/etc/entry.sh index d82808b..ba602fb 100644 --- a/bullseye/etc/entry.sh +++ b/bullseye/etc/entry.sh @@ -93,6 +93,22 @@ if [[ ! -z $SRCDS_TOKEN ]]; then SV_SETSTEAMACCOUNT_ARGS="+sv_setsteamaccount ${SRCDS_TOKEN}" fi +if [[ ! -z $CS2_HOST_WORKSHOP_COLLECTION ]] || [[ ! -z $CS2_HOST_WORKSHOP_MAP ]]; then + CS2_MP_MATCH_END_CHANGELEVEL="+mp_match_end_changelevel true" # https://github.com/joedwards32/CS2/issues/57#issuecomment-2245595368 + CS2_STARTMAP="\" # https://github.com/joedwards32/CS2/issues/57#issuecomment-2245595368 + CS2_MAPGROUP_ARGS= +else + CS2_MAPGROUP_ARGS="+mapgroup ${CS2_MAPGROUP}" +fi + +if [[ ! -z $CS2_HOST_WORKSHOP_COLLECTION ]]; then + CS2_HOST_WORKSHOP_COLLECTION_ARGS="+host_workshop_collection ${CS2_HOST_WORKSHOP_COLLECTION}" +fi + +if [[ ! -z $CS2_HOST_WORKSHOP_MAP ]]; then + CS2_HOST_WORKSHOP_MAP_ARGS="+host_workshop_map ${CS2_HOST_WORKSHOP_MAP}" +fi + # Start Server if [[ ! -z $CS2_RCON_PORT ]]; then @@ -107,8 +123,11 @@ eval "./cs2" -dedicated \ -usercon \ -maxplayers "${CS2_MAXPLAYERS}" \ "${CS2_GAME_MODE_ARGS}" \ - +mapgroup "${CS2_MAPGROUP}" \ + "${CS2_MAPGROUP_ARGS}" \ +map "${CS2_STARTMAP}" \ + "${CS2_HOST_WORKSHOP_COLLECTION_ARGS}" \ + "${CS2_HOST_WORKSHOP_MAP_ARGS}" \ + "${CS2_MP_MATCH_END_CHANGELEVEL}" \ +rcon_password "${CS2_RCONPW}" \ "${SV_SETSTEAMACCOUNT_ARGS}" \ +sv_password "${CS2_PW}" \ diff --git a/examples/docker-compose.yml b/examples/docker-compose.yml index fe3a40c..535f3b7 100644 --- a/examples/docker-compose.yml +++ b/examples/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.7' services: cs2-server: image: joedwards32/cs2 @@ -22,8 +21,11 @@ services: - CS2_GAMEALIAS # (Game type, e.g. casual, competitive, deathmatch. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) - CS2_GAMETYPE=0 # (Used if CS2_GAMEALIAS not defined. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) - CS2_GAMEMODE=1 # (Used if CS2_GAMEALIAS not defined. See https://developer.valvesoftware.com/wiki/Counter-Strike_2/Dedicated_Servers) - - CS2_MAPGROUP=mg_active # (Map pool) - - CS2_STARTMAP=de_inferno # (Start map) + - CS2_MAPGROUP=mg_active # (Map pool. Ignored if Workshop maps are defined.) + - CS2_STARTMAP=de_inferno # (Start map. Ignored if Workshop maps are defined.) + # Workshop Maps + - CS2_HOST_WORKSHOP_COLLECTION # The workshop collection to use + - CS2_HOST_WORKSHOP_MAP # The workshop map to use. If collection is also defined, this is the starting map. # Bots - CS2_BOT_DIFFICULTY # (0 - easy, 1 - normal, 2 - hard, 3 - expert) - CS2_BOT_QUOTA # (Number of bots)