Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Welcome to the official documentation of the UncomplicatedCustomRoles EXILED plugin! Here you'll learn how to use our product in the best possible way!
Notice: the wiki is currently based on v9.0.0 of UCR.
Newer or older version could be different (and work in a different way) from what is explained here!
The configuration of a UCR Custom Role is a simple YAML file where you can manage almost every aspect of the role.
The following file configuration is the current default one that the plugin generates.
In the following document we'll take a look at the main configuration elements and explain them, in order to allow you the best and easiest experience.
id: 1
name: 'Janitor'
override_role_name: false
nickname: 'D-%dnumber%'
custom_info: 'Janitor'
badge_name: 'Janitor'
badge_color: 'pumpkin'
role: ClassD
team:
role_appearance: ClassD
is_friend_of: []
health:
amount: 100
maximum: 100
ahp:
amount: 0
limit: 75
decay: 1.20000005
efficacy: 0.699999988
sustain: 0
persistant: false
hume_shield:
amount: 0
maximum: 0
regeneration_amount: 2
regeneration_delay: 7.5
effects: []
stamina:
regen_multiplier: 1
usage_multiplier: 1
infinite: false
max_scp330_candies: 2
can_escape: true
role_after_escape:
default: InternalRole Spectator
cuffed by InternalTeam ChaosInsurgency: InternalRole ClassD
scale:
x: 1
y: 1
z: 1
spawn_broadcast: |-
You are a <color=orange><b>Janitor</b></color>!
Clean the Light Containment Zone!
spawn_broadcast_duration: 5
spawn_hint: 'This hint will be shown when you will spawn as a Janitor!'
spawn_hint_duration: 5
custom_inventory_limits: {}
inventory:
- Flashlight
- KeycardJanitor
custom_items_inventory: []
ammo:
Nato9: 10
damage_multiplier: 1
spawn_settings:
can_replace_roles:
- ClassD
max_players: 10
min_players: 1
spawn_chance: 60
spawn: RoomsSpawn
spawn_zones: []
spawn_rooms:
- LczClassDSpawn
spawn_roles:
- ClassD
spawn_points: []
required_permission: ''
custom_flags:
ignore_spawn_system: false
UCR is really easy to install as it's an EXILED plugin.
In order to install UCR you need to download the UncomplicatedCustomRoles.dll file from the UCR latest release and put the file inside the folder .config/EXILED/Plugins/.
You may need to install the UCR's only dependency, Newtonsoft.Json and if you need to then download from the UCR latest release the file Newtonsoft.Json.dll and put it inside the .config/EXILED/Plugin/dependencies folder.
After this you simply need to completely restart the SCP:SL Server in order to allow UCR to enable itself.
Custom Flags are the easiest and most user-friendly way to add more complex custom behaviors to a Custom Role.
Since v6.0.0 Custom Flags became a more powerful tool as they started supporting arguments and developers could finally create their own.
The Custom Flag configuration param is a List of Custom Abilities. Elements inside this List might also require some arguments that can be added like they were an object.
Here's an example of a Custom Flag configuration:
custom_flags:
- CustomScpAnnouncer:
name: '250'
- DoNotTriggerTeslaGatesAs you can see the Custom Flag CustomScpAnnouncer does require an argument and it's given like it was an object, while the DoNotTriggerTeslaGates can work without any argument(s).
Developers can read the development page related to Custom Flags (or Modules) in order to create their one that can be also used in the YAML configurations!
With UCR you can create Custom Roles for your EXILED server. But what's a Custom Role?
A Custom Role is a base role with a different behavior and different stats. For example a Custom Role can be a Facility Guard with 250HP (instead of the default 100HP) and with 2 First-Aid Kits in the inventory (instead of the default 1).
Custom Roles can also have different stamina, different escaping rules, different AHP (Artificial Health), different item group limitations, different name, different custom info, different spawn point and so on.
With UCR you can customize almost every aspect of a Custom Role through a simple YAML configuration and through simple RA commands.
Each Custom Role has its personal .yml configuration file.
These files are inside the .config/EXILED/Configs/UncomplicatedCustomRoles folder.
Note: Every role outside that folder won't be loaded as it won't be recognized by the plugin!
From v6.0.0 you can create custom folders inside the UncomplicatedCustomRoles main folder and they will be loaded.
UCR since v3.2.0 has a thing called port-based loading that loads certain Custom Roles only if the current port of the server is equal to the given value.
These roles have a custom folder inside the main folder and it's name is equal to the name of the server port.
For example the roles inside the folder UncomplicatedCustomRoles/7778 will be loaded ONLY if the server is running on the 7778 port and so on.
Because of that every folder that has as a name an int32 WILL NOT be evaluated as these folders are reserved for the port-based loading.
Let's imagine that we start the server on the 8888 port:
When the plugin starts for the first time it autogenerates two example Custom Role configuration files.
You can tho generate more example Custom Role configuration files via the ucr generate command, but we'll talk about it later!
UCR offers to server owners a powerful tool to customize even more the spawn location for their Custom Roles. With the SpawnPoint feature you can decide a precise position in a precise room where the Custom Role will spawn and no matter if the seed changes: the position will be always the same (in the room)!
The SpawnPoint command, due to its complexity, has some sub-commands that are available in the sub-pages.
ucr spawnpoint goto <Name>UncomplicatedCustomRoles/
- custom_role.yml // WILL BE LOADED
- MyBeautifulRoles/
- another_custom_role.yml // WILL BE LOADED
- 8888/
- yey_custom_role.yml // WILL BE LOADED (name of the folder == port)
- 6969/
- homely_owo.yml // WONT BE LAODED (name of the folder != port)
- AWA/
- myRole.yml // WILL BE LOADED
- no_u/
- anotherRole.yml // WONT BE LOADED (sub-sub folders are not evaluated)UncomplicatedCustomServer Collective supports server owners that use their products and because of this there are some perks for them in our Discord Server.
In order to access to the Server Owner section (called Owners Plaza) you have to get the role @Server Owner and via this command is the only way.
You can get the role only if your server is a verified server online on the official list.
Almost every programming language does support Arrays: they are a List of elements. C# does have both Arrays and Lists: for developers they are NOT the same but for users with YAML they work the same way. From now on we'll call them Lists.
C# is a strongly typed language and because of this every List must contain only a single, specified type.
For example, if we create a List<string> it can contains only strings, while a List<int> can contain only int32.
In a list a value can be repeated as much times as you want.
YAML does support two different notation for Lists:
They are almost the same: the only difference is that the second one does support also objects while the first one doesn't.
Inside the Player's InfoArea only these hex colors are allowed:
#FF96DE
#C50000
#944710
#A0A0A0
#32CD32
#DC143C
#00B7EB
#00FFFF
#FF1493
#FF6448
#FAFF86
#FF0090
#4DFFB8
#FF9966
#BFFF00
#228B22
#50C878
#960018
#727472
#98FB98
#4B5320
#EE7600
#FFFFFF
#000000
ucr spawnpoints downloadReload every already registered Custom Roles, register new Custom Roles and unload removed Custom Roles.
Note: these changes WONT BE APPLIED to those who already have the Custom Role assigned!
Note: if you remove a Custom Role it will be removed from every player that had it!
ucr reloaducr.reloadIf you want to give to YAML a empty List then do the following thing: list3: []
list1: [a, b, c]
list2:
- a
- b
- cAllow the server owner to see more detailed info about the Custom Role, without having to open the configuration file.
ucr info <Role Id>ucr.infoIf you need to spawn manually a Custom Role you can use the Spawn command.
ucr spawn <Player Id or Name> <Role Id> (method)With this command you can spawn one or more player as a Custom Role.
The method parameter allows you to decide if spawn the role synchronously or asynchronously.
If you need to spawn it synchronously then put sync as method.
There are different pointers that you can use to point a single player, a defined group of player or everyone.
If you put a simple player id or name then only the selected player will be spawned as the Custom Role.
If you put different player ids, divided by a comma (,) then these players will be spawned as the Custom Role.
If you put all then every player in the server will be spawned as the Custom Role.
If you put spectators or spect then only the spectators will be spawned as the Custom Role.
If you put alive or al then only the alives will be spawned as the Custom Role.
To nullify a value just leave empty after the :.
Example:
myvalue:If you want to change the port of your SCP:SL server but you want to keep your Spawn Points you need to migrate them as they are port-based (linked to both the IP and the port of the server).
ucr spawnpoints migrate <New Port>Migrate your Spawn Points from your current port to another one.
Note: if you change the server and therefore the IP you need to contact us to migrate also the IP!
Get the Server Owner role on the UCSC official Discord server.
ucr owner <Discord Id>ucr.ownerucr.spawnThe Hume Shield is a key mechanic for SCPs and because of that it's really important to learn how to customize it. UCR does actually includes pretty powerful tools for doing that.
The Hume Shield object should look like this:
Configuration element name: amount
Type: int32
The amount of Hume Shield given to the player when they first spawn as this Custom Role.
Configuration element name: maximum
Type: int32
The maximum amount of Hume Shield that the player as this Custom Role can have.
The amount can be lower than the maximum as the role can gain Hume Shield from the regeneration!
Configuration element name: regeneration_amount
Type: float
The amount of Hume Shield that should be given to the player every second (it's in HS/s).
0 will disable the generation.
Configuration element name: regeneration_delay
Type: float
The delay, in seconds, from the last damage dealt to the SCP from where they'll start to regenerate Hume Shield again following the .
Effects are an important game mechanic and you can, with UCR, give as many effects as you want to your Custom Roles.
Note: every effect will be added to the player as soon as they spawn as the Custom Role!
The Effects object should look like this:
As you can see the effects config param is an array of Effect objects.
Configuration element name: effect_type
Type:
This configuration value is an Enum: please visit the page in order to learn more about them!
The effect you want to give to the Custom Role.
Configuration element name: duration
Type: float
The duration, in seconds, before the effect is removed from the role.
If the duration is -1 than the effect will last forever unless they remove it with SCP-500.
Configuration element name: intensity
Type: byte
The intensity of this effect.
The value must be between 1 and 255.
Configuration element name: removable
Type: bool
Whether this effect can be removed by SCP-500.
Since v7.0.0 and the Compatibility update UCR does support also roles from the previous versions (starting from v6.0.0).
These roles are loaded by the plugin with some limitations as they are not updated and some new configuration parameters might not be included in the previous versions.
UCR does load them without editing the file: if you want your roles to get updated you can use this command - the file will be modified but every old value will be still here. You'll just have to configure the new ones and nothing more.
ucr update <Custom Role Id / all>Updates a Custom Role configuration file with the newest version of the role, keeping every configuration parameter as-it-is.
Lots of times you'll encounter YAML Errors that will prevent your role from being loaded.
Since v6.0.0 UCR does track every not loaded role but since v7.0.0 there's a specific command where you can see which roles were not loaded, the reason and some suggestion(s) for fixing it.
ucr errorsSee every not loaded Custom Role due to an error.
The Stamina decides how much you can run. With UCR you can customize every aspect of it, in order to create an even more custom server!
The Stamina object should look like this:
stamina:
regen_multiplier: 1
usage_multiplier: 1
infinite: falseConfiguration element name: regen_multiplier
Type: float
The multiplier of the amout of Stamina that is regenerated to the player every second. The formula we use is
The greater this number is (from 1) the faster stamina will be regenerated.
Configuration element name: usage_multiplier
Type: float
The multiplier for the amount of Stamina that is used while sprinting. The formula is the same used for the but for the usage.
The greater this number is (from 1) the faster stamina will deplete.
Customizing the Escape Logic of a Custom Role is a very important way to make the users experience even more beautiful.
UCR does provide a powerful tool to decide almost everything about the escape.
The Escape object is a simple Dictionary (object) with a key and a value. It should look like this:
The Spawn behavior of UCR is completely based on Percentages: each role has a defined percentage of replacing a vanilla one and if you start to have lots of Custom Roles is quite difficult to keep an eye on every percentage.
Because of that we've created the Percentages command that will display the Custom Role and the Vanilla spawn percentages for each vanilla role.
hume_shield:
amount: 0
maximum: 0
regeneration_amount: 2
regeneration_delay: 7.5effects:
- effect_type: AntiScp207
duration: -1
intensity: 50
removable: falseucr updateucr.errorsnewStaminaRegen = staminaRegen * regen_multiplierucr spawnpoint syncIf the argument is filled then it shows only the given player, otherwise it will show if every player has (or not) a Custom Role assigned to them.
ucr role (Player Id or Name)ucr.roleUncomplicatedCustomRoles is both a simple and a complex product and errors can happen. Here you'll be guided on how you should find, handle and fix problems with this powerful product.
It's really easy to do something wrong in a file configuration and the plugin will make sure you'll see it by throwing in the console a YAML Error that should look something like this:
[2025-01-17 18:23:07.434 +01:00] [ERROR] [UncomplicatedCustomRoles] Failed to parse C:\Users\piwnica\AppData\Roaming\EXILED\Configs\UncomplicatedCustomRoles\7777\dfds.yml. YAML Exception: (Line: 48, Col: 7, Idx: 989) - (Line: 48, Col: 8, Idx: 990): Exception during deserialization.These errors are not a plugin bug but they are caused by an error in the YAML syntax of one or more of your Custom Roles!
Remember always to double-check the syntax before and after asking for support on our Official Discord server!
Note: online YAML validators MIGHT NOT WORK because they check only for the syntax and not for the type consistency!
Sometimes you can encounter a "generic error": it's an error thrown by UCR who's NOT a YAML error. In this case you can consider the error a bug and you must report it on our official Discord server in order to allow us to patch it.
Remember that after you encounter the error you should do the command ucrlogs and send the Id with the bug report in order to allow us to work even faster!
The syntax for handling the escape logic is quite complicated but when you'll learn how to use it you'll see that it's very powerful.
As you can see from the example of the YAML every key-value pair represents a different scenario.
The key represents the condition that you want to handle.
If the condition is not present the default one will be used.
In the condition there are two variable elements: InternalTeam and ChaosInsurgency.
The plain syntax is:
There are two available Groups: InternalTeam and CustomRole.
If you put InternalTeam you then have to put as the Subject a value of the Team enum.
If you instead put CustomRole you then have to put as the Subject the Custom Role Id.
Let's see some examples:
The value represents the action that the plugin will do to the player. The syntax is really clear:
There are two available groups: InternalRole and CustomRole.
If you put InternalRole you then have to put as the Target a value of the RoleTypeId enum.
If you instead put CustomRole you then have to put as the Target the Custom Role Id.
For example, if we put CustomRole 2 and the associated condition is true the player will be spawned as the Custom Role with Id=2 when they escape.
Let's see some examples:
Now that we have both the key and the value if we put them together we have a condition=>action group.
For example, if we have this configuration:
If we escape not cuffed then we will become spectators
If we escape cuffed by Custom Role 5 we'll become Custom Role 10
If we escape cuffed by a member of the Scientists team we'll become Custom Role 9
If we escaped cuffed by Custom Role 1 we'll become Class-Ds
Configuration element name: amount
Type: int32
The amount of HP that will be given to the player when they first spawn as this Custom Role. If the amount is greater than the maximum then the maximum will be equal to the amount.
Configuration element name: maximum
Type: int32
The maximum amount of HP that a player can have (and regenerate)
The AHP object should look like this:
Configuration element name: amount
Type: int32
The amount of AHP given to the player when they first spawn as this Custom Role. Note: due to a game limitation, the maximum number of AHP that will be displayed to the player is 75 but this doesn't mean that if you assign 300AHP the player won't have them: the 225 will just be hidden.
Configuration element name: limit
Type: int32
The player's AHP limit when they are this Custom Role. They won't be able to gain more AHP (like with Adrenaline) than this limit.
Configuration element name: decay
Type: float
The decay speed of the AHP in AHP/s (so if you put decay: 2 the player will lose 2AHP every second)
Configuration element name: efficacy
Type: float
The efficacy (in percentage where 0% is 0 and 100% is 1) of the AHP.
This indicates how much damage does the AHP take instead of the player: for example, if the efficacy: 0.9 (really high) and a player deal 50HP of damage to this Custom Role he would receive only 5HP damage directly and the other 45HP will be absorbed by the AHP.
Configuration element name: sustain
Type: float
The time (in seconds) before AHP starts to decay.
Configuration element name: persistant
Type: bool
Whether the AHP can decay or not.
Show the spawn chance of every Custom Role for each vanilla role.
If you put details as the second arg you'll see also each Custom Role that can replace the given vanilla role.
ucr percentages (details)ucr.percentagesrole_after_escape:
default: InternalRole Spectator
cuffed by InternalTeam ChaosInsurgency: InternalRole ClassDcuffed by <Group> <Subject>cuffed by InternalTeam Scientists
cuffed by CustomRole 2<Group> <Target>CustomRole 5
InternalRole ClassDrole_after_escape:
default: InternalRole Spectator
cuffed by CustomRole 5: CustomRole 10
cuffed by InternalTeam Scientists: CustomRole 9
cuffed by CustomRole 1: InternalRole ClassDhealth:
amount: 100
maximum: 100ahp:
amount: 0
limit: 75
decay: 1.20000005
efficacy: 0.699999988
sustain: 0
persistant: falseUCR comes with some hard-coded "Vanilla Custom Flags" and they are the following ones:
The CustomPermissions flag allows the player that has the Custom Role to have additional EXILED permissions.
Example of usage:
Note: you can also put a single permission
Note: the * char is NOT supported here!
Spawning is definitely the most important mechanics for a Custom Role. With UCR you can decide almost everything, from the location, to the conditions: almost everything!
The object should look like this:
Configuration element name: can_replace_roles
Type:
This configuration value contains Enum values: please visit the page in order to learn more about them!
ClassD then the role will be able to spawn only at the beginning of the round and it would be given only to a Class-D!This is the easiest way to control which vanilla-roles can become Custom Roles and it's also a powerful tool to choose when a Custom Role can spawn.
Configuration element name: max_players
Type: int32
The maximum number of players that can have this Custom Role simultaneously.
Configuration element name: min_players
Type: int32
The minimum number of players that must be online in the server in order to allow the spawn of this Custom Role.
Configuration element name: spawn_chance
Type: int32
The chance of spawning as this Custom Role (if your vanilla role was in the can_replace_roles list) in percentage (%).
spawn_chance: 60 is a 60% chance of spawning.
Configuration element name: spawn
Type: SpawnType
This configuration value contains an Enum: please visit the Enums page in order to learn more about them!
The spawn mechanism that UCR will use in order to decide where to spawn your Custom Role.
Available values:
- CompleteRandomSpawn: a random room inside the whole facility will be chosen.
- ZoneSpawn: the role will spawn in a room in one of the given Zones
- RoomsSpawn: the role will spawn in one of the given Rooms.
- SpawnPointSpawn: the role will spawn in one of the given Spawn Points.
- KeepRoleSpawn: the role will keep the default vanilla Role position, chosen by the game.
- KeepCurrentPositionSpawn: the role won't modify the player position (where they spawned as the vanilla Role)
- ClassDCell: the role will spawn in one of the Class-D's cells.
- RoleSpawn: the role will be spawned in a random spawn position of one of the given Spawn Roles.
Configuration element name: spawn_zones
Type: []ZoneType
This configuration value contains Enum values: please visit the Enums page in order to learn more about them!
A list of Zones where the Custom Role will be able to spawn. The spawn room will be chosen randomly.
Configuration element name: spawn_rooms
Type: []RoomType
This configuration value contains Enum values: please visit the Enums page in order to learn more about them!
A list of Rooms where the Custom Role will be able to spawn. The spawn room will be chosen randomly between the given values.
Configuration element name: spawn_roles
Type: []RoleTypeId
This configuration value contains Enum values: please visit the Enums page in order to learn more about them!
The Custom Role will spawn in one of this Role list random spawn point.
Configuration element name: spawn_points
Type: []string
A list of Spawn Points where the role will be able to spawn. In order to read more about Spawn Points please visit this page.
Configuration element name: spawn_points
Type: string
A "custom" EXILED permission that the role must have in order to natually spawn as this Custom Role.
For example if you put ucr.vip.role1 then the people with these perms will be able to spawn as this Custom Role:
- *
- *.*
- ucr.*
- ucr.vip.*
- ucr.vip.role1
Generate a sample Custom Role at the defined File Name.
You can also generate it inside a port configuration (folder) by putting the server port at the second argument.
ucr generate <File name> (Server port)ucr.generateThe CustomScpAnnouncer flag will force the game to make an announcement about the termination of this Custom Role, whether is an SCP or not.
It requires a param named name where you have to put the SCP number.
Example of usage:
This will make the game say "SCP-250".
The DoNotTriggerScp096 Custom Flag will simply allow the Custom Role to directly watch SCP-096 without triggering the rage.
The DoNotTriggerTeslaGates will disable the Tesla Gate activation for this Custom Role.
Note: if there's another person that CAN activate the Tesla Gate then it WILL activate, no matter what.
The DropItemOnDeath allows you to make the Custom Role drop a specific item when they die.
It requires a param named item where you have to put the wanted ItemType.
Example of usage:
The DropNothingOnDeath will destroy every item dropped by the Custom Role when they die.
The ItemBan Custom Flag will prevent the Custom Role from picking up a specific Item.
It requires a param named item_type where you have to put the wanted ItemType.
Example of usage:
Note: if you need to ban more than a single item you can add as many ItemBan custom flags as you want!
The LifeStealer Custom Flag will allow the Custom Role to gain a certain number of HP when they deal damage to other players.
It requires a param named percentage who's an int32 and it represent the percentage of the damage that will be transferred to the Custom Role.
For example, if percentage: 50 and the Custom Role deals a 100HP damage they will be healed with 50HP.
Example of usage:
The NotAffectedByAppearance is a simple Custom Flag that will prevent the user from seeing the "fake" appearance of every other Custom Role and they instead will see their real role.
The PacifismUntilDamage is a simple Custom Flag that will prevent the user from being damaged as long as he doesn't damage anyone.
The SilentAnnouncer Custom Flag will prevent the game from making the SCP termination announcement for that Custom Role.
The SilentWalker Custom Flag will prevent the Custom Role from making walking noises.
The TutorialRagdoll Custom Flag will spawn a Tutorial role ragdoll when they die instead of their old role ragdoll.
The ColorfulNickname will change the color of the nickname of the Custom Role's player(s) inside the player infobox.
It requires a param named color which must be one of these colors: InfoArea Colors
The ColorfulRaName will change the color of the nickname of the Custom Role's player(s) inside the RemoteAdmin player list.
It requires a param named color which can be any hex (like #ff00ff).
The FullCandyBag will spawn (when the Custom Role spawns) a Candy Bag in the player's inventory with inside how many candies you want.
It requires a param named candies who's a List of CandyKindIDs .
Example:
spawn_settings:
can_replace_roles:
- ClassD
max_players: 10
min_players: 1
spawn_chance: 60
spawn: RoomsSpawn
spawn_zones: []
spawn_rooms:
- LczClassDSpawn
spawn_roles:
- ClassD
spawn_points: []
required_permission: ''custom_flags:
- CustomPermissions:
permissions: "ucr.spawn, ucr.list"custom_flags:
- CustomScpAnnouncer:
name: '250'custom_flags:
- DropItemOnDeath:
item: Adrenalinecustom_flags:
- ItemBan:
item_type: Coincustom_flags:
- ItemBan:
item_type: Coin
- ItemBan:
item_type: Radiocustom_flags:
- LifeStealer:
percentage: 75custom_flags:
- FullCandyBag:
candies:
- Rainbow
- Yellow
- BlueUncomplicatedCustomRoles, such as every other complex product on the market has a complete command system with lots of useful commands.
In this part of the documentation we'll see their utility, their required permissions and what they do.
If you need to see in-game a complete list of commands we invite you to execute in the Remote Admin (RA) the command ucr.
We use a Minecraft-like way to describe the syntax of a command.
<> to indicate a needed value while we use () to indicate an optional value.We use | or / to separate what you can use for that value.
For example, <Player Id/Player Nickname> (Message) does tell you that the Player Id OR the Player Name is required while the Message is optional.
Here the main configuration elements will be explained. You need to read the whole page in order to create basic Custom Roles with UCR. We'll always reference to the main YAML configuration given at the Configuration part of this wiki.
Configuration element name: id
Type: int32
The unique Identifier for your Custom Role. You'll have to use this in order to spawn a player as that role and to get information about that role. Identifiers must be unique so watch out to avoid using the same Id for multiple roles: only the first one will be loaded!
Configuration element name: name
Type: string
The name of the Custom Role. This value is visible only to the server owner (unless is activated) and it can be a simpler way to identify a role. If is activated then this string will appear also to the other players instead of the vanilla role name.
Configuration element name: override_role_name
Type: bool
Whether the should appear inside the player info area (to other players) instead of the vanilla role name.
Configuration element name: nickname
Type: string
This configuration value is nullable and if null no operations will be done on the player's nickname.
The nickname that will be assigned to the player when they'll be this Custom Role.
You can put different nicknames by splitting them with a comma (,): if there are multiple nicknames the plugin will randomly choose between one of them.
That function supports also Placeholders(R).
Configuration element name: custom_info
Type: string
This configuration value is nullable and if null nothing will be set as the player's custom info.
The custom info that will be assigned to the player when they'll be this Custom Role. Custom info appears just under the role name and it's visible only to other players.
Configuration element name: badge_name
Type: string
This configuration value is nullable and if null no operations no badge will be added to the player.
The temporary Badge that will be added to the player when they'll be this Custom Role. Badges are visible both to the player and to other players in the custom info area (it will be the first element) and in the player list.
You can choose a color for the badge by editing
Configuration element name: badge_name
Type: string*
This configuration value is nullable and if null no operations no badge will be added to the player
The Badge color. Note: you can use a limited number of colors marked as "Server groups" inside the !
Configuration element name: role
Type:
This configuration value is an Enum: please visit the page in order to learn more about them!
The wanted RoleTypeId for the Custom Role.
Configuration element name: team
Type:
This configuration value is nullable and if null the player will have the default team of the choosen .
This configuration value is an Enum: please visit the page in order to learn more about them!
The custom team for a Custom Role.
You can create, for example, a ClassD that's an SCPs or things like that to make the game more interesting.
Configuration element name: role_appearance
Type:
This configuration value is nullable and if null the player will have the default appearance of the choosen .
This configuration value is an Enum: please visit the page in order to learn more about them!
If not null the player will be the given but every other player will see him as the given Role Appearance role.
Configuration element name: is_friend_of
Type:
This configuration value contains Enum values: please visit the page in order to learn more about them!
With Is Friend Of you can decide which teams can harm (and can be harmed) by this Custom Role.
For example, if the Custom Role's role is ClassD and is friend of is
the Custom Role won't be able to damage Scientists (nor them will be able to harm the Custom Role).
Note: this is just an ADDITION to the game main logic!
The Health configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.
The AHP configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.
The Hume Shield configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.
The Effects configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.
The Stamina configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.
Configuration element name: max_scp330_candies
Type: int32
Indicates the maximum number of candies that can be taken from SCP-330 without having your hands severed.
Configuration element name: can_escape
Type: bool
Indicates whether the Custom Role can escape or not (through the exit on the Surface). The behavior behind the escape event is decided by editing the configuration parameter.
The Role After Escape configuration parameter has a complex syntax in order to allow server-owners to have a more advanced and complete configuration method to customize escape logic for each Custom Role. Please visit in order to learn the syntax and read how to correctly use it.
Configuration element name: scale
Type: Vector3
A simple Vector3 that decide the scale on the three dimensions (X, Y and Z).
It's an object with three keys (x, y and z) and three int32 as values.
Example:
Configuration element name: spawn_broadcast
Type: string
The spawn broadcast that gets displayed to the user when they spawn as the Custom Role. Here you can use the Unity syntax to decide the text's size, color, weight and everything else.
You can choose the duration through the configuration value.
Configuration element name: spawn_broadcast_duration
Type: ushort
The duration of the spawn broadcast in seconds.
Configuration element name: spawn_hint
Type: string
The spawn hint that gets displayed to the user when they spawn as the Custom Role. Here you can use the Unity syntax to decide the text's size, color, weight and everything else.
You can choose the duration through the configuration value.
Configuration element name: spawn_hint_duration
Type: float
The duration of the spawn hint in seconds.
Configuration element name: custom_inventory_limits
Type: , sbyte
This configuration value contains Enum values: please visit the page in order to learn more about them!
A simple Dictionary that allow server owners to edit the default inventory limits value for each Custom Role. For example Class-D have a limit of 3 firearms: with this configuration parameter you can increase or even decrease this value! Note: if an ItemCategory is not specified the plugin will use it's default value!
Example:
(Yeah now you can have up to 5 grenades but only 1 firearm)
Configuration element name: inventory
Type:
This configuration value contains Enum values: please visit the page in order to learn more about them!
Customizing the inventory of a Custom Role might be the most important thing to do and UCR gives you a simple -but powerful- tool to achieve that. The Inventory configuration value is a simple list of ItemTypes: every item will be added to the player's inventory.
Example:
Configuration element name: custom_items_inventory
Type: []int32
UCR does support both EXILED CustomItems and UncomplicatedCustomItems (UCI) and with this configuration parameter you can add Custom Items from both plugins to your Custom Role. Just put the Custom Item's Id and it will be given! Note: remember to NOT have Id conflicts between EXILED CI and UCI as if you have two items with the same Id UCR will always take the UCI one!
Example:
Configuration element name: ammo
Type:
This configuration value contains Enum values: please visit the page in order to learn more about them!
You can also customize the amount of ammo that a Custom Roles has. Note: the plugin actually overrides the default amount of ammo: for that reason if you don't give ammo to a Custom Role it won't have any of them!
Configuration element name: damage_multiplier
Type: float
The damage multiplier that will be applied to the damage dealt by this role to another player. We use the following formula:
For that reason if the value is 1 then nothing will change while if we set the value for example to 1.5 and we deal 20HP the given damage will be 30HP.
The SpawnSettings configuration parameter has its own object as it's a main part of the configuration and because of its complexity another page is needed for a better organization. Please visit this page in order to read more about the Spawn Settings param.
With the v6.0.0 Custom Flags officially became open to the developers and because of that the system changed in a more customizable -but complex- one.
The explanation (with the list of built-in Custom Flags) is available at .
Configuration element name: ignore_spawn_system
Type: bool
If true the Custom Role won't be evaluated by our Spawn System but you'll be able to spawn it manually using commands!
is_friend_of:
- Scientistsscale:
x: 1
y: 2
z: 1custom_inventory_limits:
Firearm: 1
Grenade: 5inventory:
- Flashlight
- KeycardJanitorcustom_items_inventory:
- 2
- 5newDamage = oldDamage * damage_multiplierEnums are a common type in almost every programming language because they have a special behavior: they can only can take only a finite set of predefined values.
EXILED does use enums when talking about roles, rooms, items, ammo and everything that is defined.
Here you'll find every EXILED enum in order to configure your role as best as possible.
None
Draw
3
Scp106
SCPs
Scp
Anomalies
4
NtfSpecialist
FoundationForces
Mtf
FacilityForces
5
Scp049
SCPs
Scp
Anomalies
6
Scientist
Scientists
Mtf
FacilityForces
7
Scp079
SCPs
Scp
Anomalies
8
ChaosConscript
ChaosInsurgency
ChaosInsurgency
ChaosInsurgency
9
Scp096
SCPs
Scp
Anomalies
10
Scp0492
SCPs
Scp
Anomalies
11
NtfSergeant
FoundationForces
Mtf
FacilityForces
12
NtfCaptain
FoundationForces
Mtf
FacilityForces
13
NtfPrivate
FoundationForces
Mtf
FacilityForces
14
Tutorial
OtherAlive
Tutorial
Draw
15
FacilityGuard
FoundationForces
Mtf
FacilityForces
16
Scp939
SCPs
Scp
Anomalies
17
CustomRole
Dead
None
Draw
18
ChaosRifleman
ChaosInsurgency
ChaosInsurgency
ChaosInsurgency
19
ChaosMarauder
ChaosInsurgency
ChaosInsurgency
ChaosInsurgency
20
ChaosRepressor
ChaosInsurgency
ChaosInsurgency
ChaosInsurgency
21
Overwatch
Dead
None
Draw
22
Filmmaker
Dead
None
Draw
23
Scp3114
SCPs
Scp
Anomalies
24
Flamingo
Flamingo
Flamingo
Flamingo
25
AlphaFlamingo
Flamingo
Flamingo
Flamingo
26
ZombieFlamingo
SCPs
Scp
Anomalies
-1
None
Dead
None
Draw
0
Scp173
SCPs
Scp
Anomalies
1
ClassD
ClassD
ChaosInsurgency
ChaosInsurgency
2
Spectator
Dead
AmnesiaItems
AmnesiaVision
Asphyxiated
Bleeding
Blinded
Burned
Concussed
Corroding
Deafened
Decontaminating
Disabled
Ensnared
Exhausted
Flashed
Hemorrhage
Invigorated
BodyshotReduction
Poisoned
Scp207
Invisible
SinkHole
DamageReduction
MovementBoost
RainbowTaste
SeveredHands
Stained
Vitality
Hypothermia
Scp1853
CardiacArrest
InsufficientLighting
SoundtrackMute
SpawnProtected
Traumatized
AntiScp207
Scanned
PocketCorroding
SilentWalk
Marshmallow (Obsolete)
Strangled
Ghostly[0] KeycardJanitor
[1] KeycardScientist
[2] KeycardResearchCoordinator
[3] KeycardZoneManager
[4] KeycardGuard
[5] KeycardMTFPrivate
[6] KeycardContainmentEngineer
[7] KeycardMTFOperative
[8] KeycardMTFCaptain
[9] KeycardFacilityManager
[10] KeycardChaosInsurgency
[11] KeycardO5
[12] Radio
[13] GunCOM15
[14] Medkit
[15] Flashlight
[16] MicroHID
[17] SCP500
[18] SCP207
[19] Ammo12gauge
[20] GunE11SR
[21] GunCrossvec
[22] Ammo556x45
[23] GunFSP9
[24] GunLogicer
[25] GrenadeHE
[26] GrenadeFlash
[27] Ammo44cal
[28] Ammo762x39
[29] Ammo9x19
[30] GunCOM18
[31] SCP018
[32] SCP268
[33] Adrenaline
[34] Painkillers
[35] Coin
[36] ArmorLight
[37] ArmorCombat
[38] ArmorHeavy
[39] GunRevolver
[40] GunAK
[41] GunShotgun
[42] SCP330
[43] SCP2176
[44] SCP244a
[45] SCP244b
[46] SCP1853
[47] ParticleDisruptor
[48] GunCom45
[49] SCP1576
[50] Jailbird
[51] AntiSCP207
[52] GunFRMG0
[53] GunA7
[54] Lantern
[55] Snowball
[56] Coal
[57] SpecialCoal
[58] TapeKeycard
Medical
Radio
Firearm
Grenade
SCPItem
SpecialWeapon
Ammo
ArmorNato9
Nato556
Nato762
Ammo12Gauge
Ammo44CalCompleteRandomSpawn
ZoneSpawn
RoomsSpawn
SpawnPointSpawn
KeepRoleSpawn
KeepCurrentPositionSpawn
ClassDCell
RoleSpawnLightContainment
HeavyContainment
Entrance
Surface LczArmory
LczCurve
LczStraight
Lcz330
Lcz914
LczCrossing
LczTCross
LczCafe
LczPlants
LczToilets
LczAirlock
Lcz173
LczClassDSpawn
LczCheckpointB
LczGlassBox
LczCheckpointA
Hcz079
HczEzCheckpointA
HczEzCheckpointB
HczArmory
Hcz939
HczHid
Hcz049
HczChkpA
HczCrossing
Hcz106
HczNuke
HczTesla
HczTestRoom
HczElevatorA
HczElevatorB
HczServers
HczChkpB
HczTCross
HczCurve
Hcz096
EzVent
EzIntercom
EzGateA
EzDownstairsPcs
EzCurve
EzPcs
EzCrossing
EzCollapsedTunnel
EzConference
EzStraight
EzCafeteria
EzUpstairsPcs
EzGateB
EzShelter
Pocket
Surface
EzCheckpointHallway
HczTestRoomNone
Rainbow
Yellow
Purple
Red
Green
Blue
Pink