2. Gameplay Config Setup
The config_gameplay.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 |
heavily_modded_server | bool | default | |
custom_whitelist | bool | false | |
server_access_restriction | bool | false | |
transparently_modded_server | if your server is a Transparently Modded 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 |
use_native_sockets | bool | true | |
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 | ||
late_join_time | How long after the round starts can someone join and get spawned | int | 0 |
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
Each NTF or CI player spawned in consumes one ticket.
# We recommend keeping this on for game balance!
#
# Warning: Even if you disable the system, the tickets ratio for MTF/CI will still determine their spawn chance.
# Ticket counts (initial)
# The ratio of MTF-to-CI tickets directly determines which team has a higher chance of spawning.
# The initial settings (24:18) give around 42.8% chance for the CI to spawn instead of the MTF.
# The CI spawn chance can be calculated by this formula: CI_TICKETS / (MTF_TICKETS + CI_TICKETS) * 100%
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/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_start_minutes | How long it takes for the warhead to start | int | 0 |
auto_warhead_lock | Is the warhead able to be cancelled? | bool | true |
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_bind_ip1 | IPv4 address to listen to |
string | 0.0.0.0 |
query_socket_ip1_dualmode | bool | false | |
query_socket_ip1_linger | bool | false | |
query_bind_ip2 | IPv6 address to listen to | string | :: |
query_socket_ip2_dualmode | bool | false | |
query_socket_ip2_linger | bool | false | |
query_rx_buffer_size | int | 4096 | |
query_administrator_password | Sets administrator password for query procol. | string | none |
query_permissions | long | 18446744073709551615 | |
query_kick_power | int | 255 | |
query_clients_limit | int | 10 | |
query_timeout_time | int | 10000 | |
query_maximum_time_difference | int | 120 | |
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 | |
display_preauth_logs | |||
rejection_suppression_threshold | |||
challenge_issuance_suppression_threshold | |||
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
#Action is performed if someone either kills enough teammates OR deals enough damage to teammates.
#Set kills or damage to 0 to disable that threshold.
#Detectors priority: Respawn (kill), Window (kill), Life (kill), Round (kill), Respawn (damage), Window (damage), Life (damage), Round (damage)
#Actions: kill, kick, ban, noop (no operation - do nothing, eg. to enable logging)
#Damage dealt AFTER round end is ignored.
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 | |||
ff_detector_classD_can_damage_classD | |||
ff_detector_webhook_url | |||
#Per round | |||
ff_detector_round_enabled | bool | false | |
ff_detector_round_kills | int | 6 | |
ff_detector_round_damage | int | 500 | |
ff_detector_round_action | string | ban | |
ff_detector_round_ban_time | string | 24h | |
ff_detector_round_bankick_reason | string | You have been automatically banned for teamkilling. | |
ff_detector_round_kill_reason | string | You have been automatically killed for teamkilling. | |
ff_detector_round_adminchat_enable | bool | false | |
ff_detector_round_adminchat_message | string | %nick has been banned for teamkilling (round detector). |
|
ff_detector_round_broadcast_enable | bool | true | |
ff_detector_round_broadcast_message | string | %nick has been automatically banned for teamkilling. | |
ff_detector_round_webhook_report | bool | true | |
#Per life (resets on respawn) | |||
ff_detector_life_enabled | bool | false | |
ff_detector_life_kills | int | 4 | |
ff_detector_life_damage | int | 300 | |
ff_detector_life_action | string | ban | |
ff_detector_life_ban_time | string | 24h | |
ff_detector_life_bankick_reason | string | You have been automatically banned for teamkilling. | |
ff_detector_life_kill_reason | string | You have been automatically killed for teamkilling. | |
ff_detector_life_adminchat_enable | bool | false | |
ff_detector_life_adminchat_message | string | %nick has been banned for teamkilling (life detector). | |
ff_detector_life_broadcast_enable | bool | true | |
ff_detector_life_broadcast_message | string | %nick has been automatically banned for teamkilling. | |
ff_detector_life_webhook_report | bool | true | |
#In a specified time window |
|||
ff_detector_window_enabled | bool | false | |
ff_detector_window_seconds | int | 180 | |
ff_detector_window_kills | int | 3 | |
ff_detector_window_damage | int | 250 | |
ff_detector_window_action | string | ban | |
ff_detector_window_ban_time | string | 16h | |
ff_detector_window_bankick_reason | string | You have been automatically banned for teamkilling. | |
ff_detector_window_kill_reason | string | You have been automatically killed for teamkilling. | |
ff_detector_window_adminchat_enable | bool | false | |
ff_detector_window_adminchat_message | string | %nick has been banned for teamkilling (window detector). | |
ff_detector_window_broadcast_enable | bool | true | |
ff_detector_window_broadcast_message | string | %nick has been automatically banned for teamkilling. | |
ff_detector_window_webhook_report | bool | true | |
#In a specified time window AFTER RESPAWN |
|||
ff_detector_spawn_enabled | bool | true | |
ff_detector_spawn_window_seconds | int | 120 | |
ff_detector_spawn_kills | int | 2 | |
ff_detector_spawn_damage | int | 180 | |
ff_detector_spawn_action | string | ban | |
ff_detector_spawn_ban_time | string | 48h | |
ff_detector_spawn_bankick_reason | string | You have been automatically banned for teamkilling. | |
ff_detector_spawn_kill_reason | string | You have been automatically killed for teamkilling. | |
ff_detector_spawn_adminchat_enable | bool | false | |
ff_detector_spawn_adminchat_message | string | %nick has been banned for teamkilling (spawn detector). |
|
ff_detector_spawn_broadcast_enable | bool | true | |
ff_detector_spawn_broadcast_message | string | %nick has been automatically banned for teamkilling. | |
ff_detector_spawn_webhook_report | bool | true | |
#Kills made with explosions (eg. grenades) after DISCONNECTING from a server (eg. throwing a grenade and immediately closing the game) |
|||
ff_detector_explosion_after_disconnecting_enabled | bool | true | |
ff_detector_explosion_after_disconnecting_action | string | ban | |
ff_detector_explosion_after_disconnecting_ban_time | string | 48h | |
ff_detector_explosion_after_disconnecting_bankick_reason | string | You have been automatically banned for teamkilling. | |
ff_detector_explosion_after_disconnecting_adminchat_enable | bool | false | |
ff_detector_explosion_after_disconnecting_adminchat_message | string | %nick has been banned for teamkilling (explosion after disconnecting detector). | |
ff_detector_explosion_after_disconnecting_broadcast_enable | bool | true | |
ff_detector_explosion_after_disconnecting_broadcast_message | string | %nick has been automatically banned for teamkilling. |
|
ff_detector_explosion_after_disconnecting_webhook_report | 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 |
Few ban settings
Config Field | Description | Type | Default Value |
---|---|---|---|
gban_ban_ip | Enabling this will automatically ban IP of players on the server that receives a Global Ban by a Global Moderator. (Defaults to false) | bool | default |
ban_nickname_maxlength | default | ||
ban_nickname_trimunicode | default |
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 |
No Comments