Skip to content

terminator-97/SCPUtils

Repository files navigation

SCPUtils [Mongo DB Edition] Plugin:

This is the list of SCPUtils features with a brief description, i recomend to read configs:

  • Welcome Message: You can set in server config a welcome broadcast that every player join will see.
  • Decontamination Message: A broadcast that all players will see when decontamination starts
  • Auto-Restart: Having only one player in server may cause round stuck forever, with this plugin you can avoid it!
  • Advanced SCP Suicide / Quit punishements: If a SCP suicide or leave the server you can punish him, with warns, kicks or bans, depending on settings you use and DC/Suicide percentage player has (configurable also for tutorial role)
  • Temporarily badges: Sometimes may be useful to give a player a temporarily role for event winners and donators (or anything else you want), with this plugin it's easy, see commands list.
  • Custom nicknames: Admins with permission can set any nickname to any player in server using admin console, users with permission can set their own nickname using a simple command on User's console.
  • Nickname Blacklist: You can prevent players joining with blacklisted nicknames and preventing them to change nicknames to restricted ones, users with bypassnickname permission bypass this limit!
  • Badge colors: Admins can assign a color to every person, users with permissions can assign any color to themselves if it's not in restricted list!
  • Permanently show/hide badges: Users with permission can permanently show or hide badge using a simple command (in user console)
  • Playtime statistics: You can see each user playtime day per day or total playtime using a simple command, you can also see overwatch time!
  • ASNs Bans: You can ban specific ASNs to avoid ban evaders and cheaters, you can whitelist legit users to bypass the ASNs bans using a simple command, to add an ASN to blacklist add it inside server config setting.
  • Team protection: Editing configs you can set protection to the teams you want against the teams you want on specific zones or entire map.
  • SCP-096 Target: Players gets notified via hint when they become a SCP-096 Target.
  • Last Player: Players gets notified via hint when they are the last player of the Team.
  • Custom Hints / Broadcast: You can save hints / broadcasts in the database and use them easily by the ID.
  • Multi account detector: Auto-detects multi accounts and based on plugin settings it informs the administrators, you can also set a webhook for reports about mute evaders (you can also remute them automatically by changing configs), you can also exclude specific asns or players from the detector
  • Handcuff ownership: By simply updating a config only who cuff the player will be able to uncuff it.
  • SCP-Swap: By setting a config you can decide the max allowed time for SCP-Swap requests and if the SCP has to be full health for swap to be allowed, you can configure swap even for scps that are not spawned.
  • Translations: You can translate the majority of parts of the plugin (with some exceptions on some staff commands), to use a translation head over to Localization folders on github and if it's present copy and paste the content inside Configs/port-translations.yml, if you wish you can contribute by sending your translation here so other users can use it (read at bottom to see how to do it)

To use this plugin you will have to install MongoDB and MongoDB Compass (the last one only if you want to manage your database).

LiteDb SCP-Utils version is still avaible but with limited support, check releases tab. It's advisable to use this version, for more info check pinned message in SCPUtils channel on Exiled.

Minimum requirements: Exiled version: 7.2.0 and MongoDB (depedencies are already included by base)

Configs:

You can see settings and edit them inside Exiled/port-config.yml file(example Exiled/7777-config.yml)

Commands

Admin commands and Game console commands

Admin Commands Args Permission Description
scputils_help none scputils.help Show plugin info
scputils_player_info player / id / userid scputils.playerinfo Show player info
scputils_player_list minimun percentage scputils.playerlist List all players with a percetage equal or higher of quits/suicides
scputils_player_reset player / id / userid scputils.playerreset Reset warns,suicides,bans,kick and games played stats
scputils_player_reset_preferences player / id / userid scputils.playerresetpreferences Reset nickname,badge color,show badge preference
scputils_set_color <player / id / userid> <color/None> scputils.playersetcolor + scputils.rainbowtag Change player color
scputils_set_name <player / id / userid> <name/None> scputils.playersetname Change player name, changes take effects next round/rejoin
scputils_set_badge <player / id / userid> scputils.handlebadges Add a temp player badge
scputils_revoke_badge <player / id / userid> scputils.handlebadges Revoke a badge given to a player
scputils_play_time <player / id / userid> scputils.playtime Show recent player activity withing the specified days
scputils_whitelist_asn <id / userid> scputils.whitelist Add player to ASN whitelist
scputils_unwhitelist_asn <id / userid> scputils.whitelist Removes player to ASN whitelist
scputils_staff_list - scputils.stafflist Show both local staff and global staff present in game
scputils_enable_suicide_warns - scputils.warnmanagement Enabled previously disabled suicide / quits warns
scputils_disable_suicide_warns - scputils.warnmanagement Disable suicides / quits warns for the rest of the round
scputils_global_edit <Suicides/Quits to remove> scputils.globaledit Globally edits player stats (removes total scp games/suicides/kicks/bans)
scputils_player_edit <id / userid> <Suicides/Quits> scputils.playeredit Edits player stats (total scp games/suicides/kicks/bans) by setting them to specified amount
scputils_player_delete <userid / id> scputils.playerdelete Deletes a player from db, action is irreversible, do this when player is not in server.
scputils_preference_persist <userid / id> scputils.keep If disabled by config players that lose the permission to change name,color,hide badge will have that setting resetted, by using this command you allow the player to use their preference even without permissions
scputils_player_restrict <userid / id> scputils.moderatecommands <duration in minutes (0=permanent)
scputils_player_unrestrict <userid / id> scputils.moderatecommands Unban a previously command banned player
scputils_show_command_bans <userid / id> scputils.moderatecommands Show command ban history of a specific player
scputils_remove_previous_badge <userid / id> scputils.handlebadges Removes previous badge from database for that player
scputils_round_info <userid / id> See bellow Show round info
scputils_online_list <userid / id> See bellow Show online player list
scputils_player_dnt <userid / id> scputils.dnt Ignore DNT requests from a certain player
scputils_player_warnings <userid / id> scputils.showwarns Show all scputils warnings of a specific player
scputils_player_warning <userid / id> scputils.showwarns Show last scputils warning of a specific player
scputils_player_unwarn <userid / id> scputils.unwarn Removes a specific warning from a user
scputils_player_broadcast <userid / id> <broadcast/hint> <duration (optional> scputils.broadcast Send an hint or broadcast to a specific player
scputils_broadcast <broadcast/hint> <duration (optional> scputils.broadcast Send an hint or broadcast to all players
scputils_set_round_ban <id / userid> scputils.roundban Sets the number of round ban to one player
scputils_dupeip < id / userid > scputils.dupeip Check if player has another account on same IP
scputils_broadcast_create scputils.broadcastcreate Create a custom broadcast
scputils_broadcast_delete scputils.broadcastdelete Delete a custom broadcast
scputils_broadcast_list none scputils.broadcastlist List all created broadcast
scputils_multiaccount_whitelist <userid / id> scputils.whitelistma Whitelists / unwhitelist an account from multiaccount detector
scputils_badge_playtime scputils.playtime Show playtime for a specific badge
scputils_reports use help paramenter scputils.reports See many stats
scputils_custom_badge <player id/name/userid> <custom badge name / none> scputils.custombadge Set a custom badge to a player, it required to have already a base badge
scputils_searchip < id / userid > scputils.dupeip Finds all users that played on a specific IP

Console commands

Player Commands Args Permission Description
scputils_help none none Show plugin commands
scputils_info none none Show plugin info
scputils_permissions_view none none Show your plugin permissions
scputils_change_nickname Nickname / None scputils.changenickname Change your nickname, changes take effects next round/rejoin
scputils_change_color Color / None scputils.changecolor Change your badge color
scputils_show_badge none scputils.badgevisibility Permanently show your badge
scputils_hide_badge none scputils.badgevisibility Permanently hide your badge
scputils_my_info none none Show your preferences and temporarily badges info
scputils_play_time none scputils.ownplaytime Show your own playtime with a max range of 120 days
scputils_swap_request (configurable) none Sends a SCP swap request
scputils_swap_request_accept (configurable) none none Accept a SCP swap request
scputils_swap_request_deny (configurable) none none Deny a SCP swap request
scputils_swap_request_cancel (configurable) none none Cancel a SCP swap request
scputils_scp_list none Requires to be scp and swap module enabled Show SCP list
scputils_respawn none Requires the timer to be configured Show SCP list

Generic permissions

Permisssion Description
scputils.bypassnickrestriction Allows to bypass nickname restrictions
scputils.help Show also admin command list in scputils_help command, without this permission only user commands are shown
scputils.bypasscooldown Bypass command cooldown

Pro tip: use scputils_speak.* to allow someone to speak with all the SCPs, set permission to default role to allow everyone to speak with that scp.

Console commands must be executed like .scputils_help in game console (press ò to open it)

Round Info

This command allows to show advanced round info and users are able to use it by default to see informations about their own team (using user console), if you don't like that just edit configs. It has also the following permissions (those bypass server config):

Permisssion Description
scputils.roundinfo.execute Needed to simply executing the command, doesnt show any info
scputils.roundinfo.roundtime Show roundtime
scputils.roundinfo.tickets Show tickets of all teams
scputils.roundinfo.nextrespawnteam Show which team respawn next and when
scputils.roundinfo.respawncount Show how many times MTF/Chaos respawned
scputils.roundinfo.lastrespawn Show when MTF/Chaos respawned

Online List

This command show online player list, it's also usable by users on normal console, it uses advanced permissions like past command.

Permisssion Description
scputils.onlinelist.basic Allows to execute the command, see total players online and player nicknames
scputils.onlinelist.userid Show UserIDs
scputils.onlinelist.badge Show badges (hidden or not)
scputils.onlinelist.role Show roles
scputils.onlinelist.health Show players health
scputils.onlinelist.flags Show player flags (God, DNT, Muted etc...)

Config Example

To edit your configs you must go into EXILED folder and edit port-config.yml file (example 7777-config.yml), and edit them


To edit permissions you must go into Plugins/Exiled Permissions folder and edit permissions.yml file, bellow you can see a sample config

    user:
    inheritance: []
        default: true
        permissions:
        - scputils_speak.scp049
    owner:
        permissions:
        - scputils.*
		- scputils_speak.*
    admin:
    inheritance: []
        permissions:       
        - scputils.playerinfo
        - scputils.playerlist
        - scputils.changecolor
        - scputils.changenickname
        - scputils.badgevisibility
        - scputils.playerresetpreferences
        - scputils_speak.*      
    vip:
    inheritance: []
        permissions:        
        - scputils.changecolor
        - scputils.changenickname     
        - scputils_speak.*	  

Team protection

ClassD = Class-D
ChaosInsurgency = Chaos Insurgency
FoundationForces = MTF Team (included guards)
Dead = Spectators
Scientists = Scientist
SCPs = SCP
Tutorial = Tutorial

Sample Config for team protection:

In the following example we will protect Class-D against MTF team and Scientist, since they are listed on cuffed_protected_teams they require to be handcuffed to be protected. They also must be in Entrance or Surface to get protection.

  # You have to add the team you want to protect from the target as key and enemy teams on the list as value, on github documentation you can see all the teams.
  cuffed_immunity_players:
    CDP:
    - MTF
    - RSC
  # Indicates if the protected teams should be cuffed to get the protection, if you don't add a team it will get protection regardless
  cuffed_protected_teams:
  - CDP
  # Indicates in which zones the protected team is protected, Zone list: Surface, Entrance, HeavyContainment, LightContainment, Unspecified }
  cuffed_safe_zones:
    CDP:
    - Entrance
    - Surface


Using scputils.* grants every permission that starts with prefix scputils Using '*' grants every possible permission on the server
To verify if you yml file is valid paste it into this website: http://www.yamllint.com/
Note: you must add every group in permissions don't forget default one

Translations

To submit a translation head over to the Localizations folder, take the english one and translate it, after finishing review it and check if the yaml check passes on this website: https://www.yamllint.com/

If everything is fine open a pull requst for adding that file, the file name should be Language.yml

Thank you if you wish to help, don't forget to add yourself to TranslationCredits.

Data stored on database is intended only for internal use, sharing it is a violation of SCP:SL EULA and will cause your server delist.

Thanks to iopietro and Exiled community for the advices