Gameplay Config Setup
The config_gamepaly.txt file (often simply referred to as the Gameplay Config file) is used to set up many of the core functions of an SCP:SL server.
Misc
Change warhead and intercom timers, friendly fire, etc.
Config Field | Description | Type | Default Value |
---|---|---|---|
server_forced_class | int | -1 | |
map_seed | Set the server map seed | int | -1 |
display_preauth_logs | default | ||
rejection_suppression_threshold | default | ||
challenge_issuance_suppression_threshold | default | ||
heavily_modded_server | bool | default | |
custom_whitelist | bool | false | |
server_access_restriction | bool | false | |
custom_gamemode_server | if your server is a Custom Gamemode Server according to the definition that can be found in the Verified Server Rules. | bool | false |
Server main settings
Config Field | Description | Type | Default Value |
---|---|---|---|
server_name | Server name | string | My Server Name |
player_list_title | Title of the playerlist | string | default |
player_list_title_rate | how often title of the playerlist is updated | int | default |
serverinfo_pastebin_id | Pastebin ID for the server description |
string | 7wV681fT |
server_ip | Server IP that gets sent to the serverlist |
string | 0.0.0.0 |
max_players | Server player limit | int | 20 |
server_tickrate | int | 60 | |
use_reserved_slots | Enable or disable reserved slots | bool | true |
lobby_waiting_time | Time on the waiting for players screen | int | default |
ipv4_bind_ip | IPv4 address for the server to listen on |
string | 0.0.0.0 |
ipv6_bind_ip | IPv6 address for the server to listen on | string | :: |
contact_email | Contact email for the verification team to contact you by | string | default |
Spawn settings
Config Field | Description | Type | Default Value |
---|---|---|---|
minimum_MTF_time_to_spawn | int | 280 | |
maximum_MTF_time_to_spawn | int | 350 | |
maximum_MTF_respawn_amount | int | 15 | |
maximum_CI_respawn_amount | int | 15 | |
priority_mtf_respawn | bool | true | |
use_crypto_rng | bool | false | |
team_respawn_queue | default | ||
How long after the round starts can someone join and get spawned |
Player Info Range
Config Field | Description | Type | Default Value |
---|---|---|---|
player_info_range | This controls the default range that the player information text appears on clients. | int | 10 |
Respawn ticket system settings
Config Field | Description | Type | Default Value |
---|---|---|---|
respawn_tickets_enable | Enable or disable the ticket system | bool | true |
respawn_tickets_mtf_initial_count | default | ||
respawn_tickets_ci_initial_count | default | ||
respawn_tickets_mtf_classd_cuffed_escape_count | default | ||
respawn_tickets_mtf_scientist_escape_count | default | ||
respawn_tickets_mtf_scp_hurt_escape_count | default | ||
respawn_tickets_ci_classd_escape_count | default | ||
respawn_tickets_ci_scientist_cuffed_escape_count | default | ||
respawn_tickets_ci_scientist_died_count | default | ||
respawn_tickets_ci_scp_item_count | default | ||
respawn_tickets_mtf_scp_hurt_interval | default |
Stamina
Config Field | Description | Type | Default Value |
---|---|---|---|
stamina_balance_use | The percentage of stamina used per second while sprinting. Stamina is currently only utilized on humans. 0 to disable, but this *will* cause weirdness with status effects and other mechanics, so we recommend keeping it on! |
double | 0.05 |
stamina_balance_immunity | The time (in seconds) that newly-spawned players can sprint without consuming stamina. Used to reduce visual artifacts. We recommend to put it at least 2 seconds |
int | 3 |
stamina_balance_regen_cd | The seconds that must pass before stamina starts regenerating after the player stops sprinting. Lower values are more liekly to be exploited by players Higher higher can be annoying to players. |
int | 1 |
stamina_balance_regen_speed | How fast the stamina regenerates. This is a multiplier for the default setting, which is based on a curve - not a specific value. |
int | 1 |
stamina_balance_walk_speed | Multiplier for human walk speed. Default speed before multiplier is 4.5 m/s. |
double | 1.2 |
stamina_balance_sprint_speed | Multiplier for human sprint speed. Default speed before multiplier is 7 m/s. |
double | 1.05 |
Misc gameplay settings
Config Field | Description | Type | Default Value |
---|---|---|---|
intercom_cooldown | time before intercom becomes available again | int | 120 |
intercom_max_speech_time | int | 20 | |
auto_round_restart_time | int | 10 | |
friendly_fire | bool | false | |
friendly_fire_multiplier | double | 0.4 | |
warhead_tminus_start_duration | int | 90 | |
lock_gates_on_countdown | bool | true | |
isolate_zones_on_countdown | bool | false | |
open_doors_on_countdown | bool | true | |
keep_items_after_escaping | bool | true | |
allow_playing_as_tutorial | bool | true | |
disable_decontamination | bool | false | |
096_destroy_locked_doors | bool | true | |
no_holidays | bool | false | |
allow_disarmed_interaction | bool | false | |
914_mode |
DroppedAndHeld/Inventory/DroppedAndInventory/Held/DroppedAndHeld/Dropped |
String | default |
sinkhole_slow_amount | int | 30 | |
sinkhole_spawn_chance | int | 0 | |
disconnect_drop | bool | true | |
end_round_on_one_player | bool | false | |
cuffed_escapee_change_team | bool | true | |
pd_exit_count | how many exits in pd | int | 2 |
AFK Settings
Config Field | Description | Type | Default Value |
---|---|---|---|
afk_time | time for someone to be detected as afk (079 gets extra 13 seconds) | int | 90 |
constantly_check_afk | bool | false | |
afk_kick_message | string | AFK |
Spawn Protection
Config Field | Description | Type | Default Value |
---|---|---|---|
spawn_protect_disable | Disable spawn protection. | bool | true |
spawn_protect_time | Spawn protection length in seconds. | int | 30 |
spawn_protect_team | Spawn protection enabled for selected team(s). | 1, 2 (MTF, Chaos Insurgents) | |
spawn_protect_allow_dmg | Allow spawn protected players to deal damage. | bool | true |
Auto Event Broadcast Settiings
Config Field | Description | Type | Default Value |
---|---|---|---|
auto_warhead_broadcast_enabled | Enable broadcast for auto warhead | bool | false |
auto_warhead_broadcast_message | Message for auto broadcast | string | The Alpha Warhead is being detonated |
auto_warhead_broadcast_time | Broadcast time | int | 10 |
auto_warhead_detonate_broadcast | End of detonation broadcast | string | The Alpha Warhead has been detonated now |
auto_warhead_detonate_broadcast_time | Broadcast time | int | 10 |
auto_decon_broadcast_enabled | enable broadcast | bool | false |
auto_decon_broadcast_message | Decontamination broadcast | string | Light Containment Zone is now decontaminated |
auto_decon_broadcast_time | Broadcast time | int | 10 |
Metrics
Config Field | Description | Type | Default Value |
---|---|---|---|
save_metrics | etrics are used to anonymously track players' in-game activities and can be used to improve gameplay balance. If set to 'true', the game will generate a JSON file containing collected metrics at the end of the round, which will be stored locally. |
bool | true |
Security & Anticheat
Recommended to not be changed from what it is by default.
Config Field | Description | Type | Default Value |
---|---|---|---|
online_mode | Enables connection to central servers | bool | true |
ip_banning | Enables IP banning. | bool | true |
enable_whitelist | Allows only whitelisted users to join. | bool | false |
forward_ports | Enables automatic port forwarding.Note: router must have enabled UPnP support to make this work. | bool | true |
enable_query | Enables query protocol (TCP port). | bool | false |
query_port_shift | Determines shift between game port and query port. | int | 0 |
query_use_IPv6 | Enables query over IPv6 protocol. | bool | true |
administrator_query_password | Sets administrator password for query procol. | string | none |
connections_delay_time | Time to send to clients for how long they should wait on the round restart screen before attempting to connect to the server again | int | 5 |
enable_sync_command_binding | bool | false | |
ratelimit_kick | Kicks user after exceeding commands rate limits (otherwise just disallows command execution). | bool | true |
same_account_joining | Allow the same account to join more than once? |
bool | false |
anticheat_console_output | output anticheat stuff to console | bool | false |
enable_fast_round_restart | restart the round fast (can be buggy) | bool | false |
fast_round_restart_delay | double | 3.2 | |
preauth_challenge | bool | true | |
preauth_challenge_mode | Reply - prevents from flooding server with preauth requests from spoofed IP addresses MD5 or SHA1 - prevents from flooding with preauth requests from legitimate IP addresses as well. Requires additional time to join the server. |
string | reply |
preauth_challenge_base_length | int | 10 | |
preauth_challenge_time_window | int | 12 | |
preauth_challenge_clean_period | int | 4 | |
preauth_challenge_secret_length | Only for MD5 and SHA1 challenges (higher value = longer time required to join the server) | int | 2 |
enforce_same_ip | This enforces the player to be using same IP address to connect to the game and authenticate. Enabling this blocks proxies. Not enforced if player joined from IPv4 and authenticated from IPv6 or viceversa. |
bool | true |
no_enforcement_for_local_ip_addresses | bool | true | |
enforce_same_asn | This enforces that the IP address used to connect to the game and authenticate must be assigned to the same Internet Service Provider (ISP). Works only on servers on the public list. This is less restrictive that "enforce_same_ip" and blocks most of the proxies. |
bool | true |
Connections ratelimiting
Ratelimit time windows define how often user with the same IP/UserID can initialize new connection (once per X seconds).
Config Field | Description | Type | Default Value |
---|---|---|---|
enable_ip_ratelimit | bool | true | |
enable_userid_ratelimit | bool | true | |
ip_ratelimit_window | Time between connections per ip | int | 3 |
userid_ratelimit_window | Time between connections per userid |
int | 5 |
Item & Ammo limits
Item category limits -
Values of 0 are NOT unlimited and will prevent item pickups of that type entirely!
The inventory can hold a max of 8 items, so a limit of 8 is effectively unlimited.
Config Field | Description | Type | Default Value |
---|---|---|---|
limit_category_grenade | int | default | |
limit_category_keycard | int | default | |
limit_category_medical | int | default | |
limit_category_scpitem | int | default | |
limit_category_firearm | int | default |
Ammo type limits
Values from 1 to 65k.
Config Field | Description | Type | Default Value |
---|---|---|---|
limit_ammo12ga | int | default | |
limit_ammo556x45 | int | default | |
limit_ammo44cal | int | default | |
limit_ammo762x39 | int | default | |
limit_ammo9x19 | int | default |
Friendly Fire
Config Field | Description | Type | Default Value |
---|---|---|---|
ff_detector_global_broadcast_seconds | Specifies the broadcast time length in seconds in which the broadcast is visible. | int | 5 |
ff_detector_global_adminchat_seconds | Specifies the broadcast time in seconds in which the broadcast is visible in adminchat. | int | 6 |
ff_detector_classD_can_damage_classD | Enables detecting damage dealt to D-class by other D-class | bool | false |
ff_detector_webhook_url | Webhook URL to send to when action is taken | string | none |
ff_detector_round_enabled | Detects the klls and damage done in a round. | bool | false |
ff_detector_round_kills | Detects number of kills in a round. | int | 6 |
ff_detector_round_damage | Detects number of damage dealt in a round. | int | 500 |
ff_detector_round_action | Enables action taking for friendly fire dealt in a round. | string | ban |
ff_detector_round_ban_time | If action is set to ban, set the ban time. | string?? | 24h |
ff_detector_round_bankick_reason | If action is set to ban, set the bankick reason. | string | You have been automatically banned for teamkilling. |
ff_detector_round_kill_reason | If action is set to ban, set the kill reason. | string | You have been automatically killed for teamkilling. |
ff_detector_round_adminchat_enable | Enables adminchat broadcast. | bool | false |
ff_detector_round_adminchat_message | Shows message on adminchat. %nick gets replaced with teamkiller name. | string | %nick has been banned for teamkilling (round detector). |
ff_detector_round_broadcast_enable | Enables regular broadcast. | bool | true |
ff_detector_round_broadcast_message | Shows message on the regualr broadcast. %nick gets replaced with teamkiller name. | string | %nick has been automatically banned for teamkilling. |
ff_detector_round_webhook_report | Should it be reported using the webhook specified in ff_detector_webhook_url. | bool | true |
ff_detector_life_enabled | Detects damage dealt since last death of player. | bool | false |
ff_detector_life_kills | Detects kills by players since last death. | int | 4 |
ff_detector_life_damage | Detects damage dealt by player since last death. | int | 300 |
ff_detector_life_action | Enables action taking for friendly fire dealt since last death. | string | ban |
ff_detector_life_ban_time | If action is set to ban, set the ban time. | int | 24h |
ff_detector_life_bankick_reason | If action is set to ban, set the bankick reason. | string | You have been automatically banned for teamkilling. |
ff_detector_life_kill_reason | If action is set to ban, set the kill reason. | string | You have been automatically killed for teamkilling. |
ff_detector_life_adminchat_enable | Enables adminchat broadcast. | bool | false |
ff_detector_life_adminchat_message | Shows message on adminchat. %nick gets replaced with teamkiller name. | string | %nick has been banned for teamkilling (life detector). |
ff_detector_life_broadcast_enable | Enables regular broadcast. | bool | true |
ff_detector_life_broadcast_message | Shows message on the regualr broadcast. %nick gets replaced with teamkiller name. | string | %nick has been automatically banned for teamkilling. |
ff_detector_life_webhook_report | Should it be reported using the webhook specified in ff_detector_webhook_url. | bool | true |
ff_detector_window_enabled | Detects damage dealt by players in a specified time window. | bool | false |
ff_detector_window_seconds | Sets the specified time window. | int | 180 |
ff_detector_window_kills | Detects number of kills by player during specified time window. | int | 3 |
ff_detector_window_damage | Detects damage dealt by player during specified time window. | int | 250 |
ff_detector_window_action | Enables action taking for friendly fire dealt during specified time window. | string | ban |
ff_detector_window_ban_time | If action is set to ban, set the ban time. | int | 16h |
ff_detector_window_bankick_reason | If action is set to ban, set the bankick reason. | string | You have been automatically banned for teamkilling. |
ff_detector_window_kill_reason | If action is set to ban, set the kill reason. | string | You have been automatically killed for teamkilling. |
ff_detector_window_adminchat_enable | Enables adminchat broadcast. | bool | false |
ff_detector_window_adminchat_message | Shows message on the adminchat broadcast. %nick gets replaced with teamkiller name. | string | %nick has been banned for teamkilling (window detector). |
ff_detector_window_broadcast_enable | Enables regular broadcast. | bool | true |
ff_detector_window_broadcast_message | Shows message on the regualr broadcast. %nick gets replaced with teamkiller name. | string | %nick has been automatically banned for teamkilling. |
ff_detector_window_webhook_report | Should it be reported using the webhook specified in ff_detector_webhook_url. | bool | true |
ff_detector_spawn_enabled | Detects team killing actions since the player's last spawn for a specified amount of time. | bool | true |
ff_detector_spawn_window_seconds | Sets the specified amount of time since player's spawn. | int | 120 |
ff_detector_spawn_kills | Detects number of kills by player during specified time window since spawn. | int | 2 |
ff_detector_spawn_damage | Detects damage dealt by player during specified time window since spawn. | int | 180 |
ff_detector_spawn_action | Enables action taking for friendly fire dealt during specified time window since spawn. | string | ban |
ff_detector_spawn_ban_time | If action is set to ban, set the ban time. | string | 48h |
ff_detector_spawn_bankick_reason | If action is set to ban, set the bankick reason. | string | You have been automatically banned for teamkilling. |
ff_detector_spawn_kill_reason | If action is set to ban, set the kill time. | string | You have been automatically killed for teamkilling. |
ff_detector_spawn_adminchat_enable | Enables adminchat broadcast. | bool | false |
ff_detector_spawn_adminchat_message | Shows message on the adminchat broadcast. %nick gets replaced with teamkiller name. | string | %nick has been banned for teamkilling (spawn detector). |
ff_detector_spawn_broadcast_enable | Enables regular broadcast. | bool | true |
ff_detector_spawn_broadcast_message | Shows message on the regular broadcast. %nick gets replaced with teamkiller name. | string | %nick has been automatically banned for teamkilling. |
ff_detector_spawn_webhook_report | Should it be reported using the webhook specified in ff_detector_webhook_url. | bool | true |
Port queue
Config Field | Description | Type | Default Value |
---|---|---|---|
port_queue | port_queue is for NONDEDICATED SERVERS ONLY | - 7777 - 7778 - 7779 - 7780 - 7781 - 7782 - 7783 - 7784 |
Nickname Filtering with Regex
Config Field | Description | Type | Default Value |
---|---|---|---|
nickname_filter | list | default | |
nickname_filter_replacement | list | default |
Administration Broadcast
Config Field | Description | Type | Default Value |
---|---|---|---|
broadcast_kicks | Enable broadcasts for player kicks. | bool | false |
broadcast_kick_text | Text that is displayed when a player gets kicked. | string | %nick% has been kicked from this server. |
broadcast_kick_duration | Broadcast message duration in seconds. | int | 5 |
broadcast_bans | Enable broadcasts for player bans. | bool | true |
broadcast_ban_text | Text that is displayed when a player gets banned. | string | %nick% has been banned from this server. |
broadcast_ban_duration | Broadcast message duration in seconds. | int | 5 |
Idle mode options
Config Field | Description | Type | Default Value |
---|---|---|---|
idle_mode_enabled | Enable or disable idle mode | bool | false |
idle_mode_time | Time in milliseconds until idle mode enables | int | 5000 |
idle_mode_preauth_time | int | 30000 | |
idle_mode_tickrate | int | 1 |
Player Report
Config Field | Description | Type | Default Value |
---|---|---|---|
report_send_using_discord_webhook | Send report using webhooks | bool | false |
report_discord_webhook_url | Enter the discord channel webhook URL here | string | PleaseSetWebhookUrlHere |
report_username | Webhook username | string | Cheater Report |
report_avatar_url | Webhook avatar | string | default |
report_color | Webhook embed message color | int | 14423100 |
report_server_name | Webhook embed servername field content |
string | My SCP:SL Server |
report_header | Webhook embed message header | string | Player Report |
report_content | Webhook embed messsage content | string | Player has just been reported. |
Restart options
Config Field | Description | Type | Default Value |
---|---|---|---|
full_restart_rejoin_time | Amount of time after client should rejoin after a full server restart | int | 25 |
restart_after_rounds | Set autorestart of the server after a specified amount of rounds (0 - disabled | int | 0 |
Geoblocking
Block players from certain regions from playing on your server.
Config Field | Description | Type | Default Value |
---|---|---|---|
geoblocking_mode | Changes the mode for geoblocking. | string | none |
geoblocking_ignore_whitelisted | list of players who bypass geoblocking. | bool | true |
geoblocking_whitelist | country codes to whitelist. | - AA - AB - AC |
|
geoblocking_blacklist | country codes to blacklist. | - AA - AB - AC |