Only this pageAll pages
Powered by GitBook
1 of 44

UncomplicatedCustomRoles

Loading...

Getting Started

Loading...

Loading...

Custom Roles

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Commands

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Syntax Notions

Loading...

Loading...

Loading...

Loading...

What's UCR

UCR or UncomplicatedCustomRoles is a free open-source plugin for EXILED (SCP:Secret Laboratory) that allow server owners to create highly-customizable Custom Roles with a simple YAML configuration.

With our powerful tool you have the chance to customize even more your server without having to learn how to develop EXILED plugins nor to pay a developer lots of money!

UCR has lots of key features such as: - Unlimited number of Custom Roles You can create how manu Custom Roles you want without any limitation from us! The only limitation is your creativity! - Custom Roles configurations are in different files Custom Roles YAML configuration are one per file: you can organize them as you prefer. You can also put Custom Roles configuration files inside sub-folders in order to get more order! - Exhaustive wiki We always try to provide the best documentation both for our server owners and developers. - Active community on Discord Our official Discord community is really active and always willing to help everyone with their problems with UCR. We also have a special section for server owners where warnings, teasers and pre-releases are shared in advance! - Fully customizable Custom Roles With UCR you can configure almost every aspect of the role in order to reach your goal. - User-friendly in-game commands With our newer version of UCR, v7.0.0, we have completly reworked the command system. Now commands are more user-friendly, have a better graphic and they work even better!

For these reasons UCR is the current most powerful Custom Roles open-source system that meets the needs of more than 100 servers!

Welcome

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!

Configuration

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

Installation

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

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'
- DoNotTriggerTeslaGates

As 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!

First steps

With UCR you can create Custom Roles for your EXILED server. But what's a Custom Role?

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.

Where are the Custom Roles?

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!

Folder structure

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:

Where can I take a base Custom Role in order to customize it?

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!

Goto

You might need to go to an already created Spawn Point (for example to check if the location is correct) and you can do that by using the Goto command.

Syntax

Description

SpawnPoint

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.

Teleport yourself to a Spawn Point location.
ucr spawnpoint goto <Name>

Delete

If you want to remove a Spawn Point you can use the Delete command.

Syntax

ucr spawnpoint delete <Name>

Description

Deletes a Spawn Point.

List

If you need to see every loaded Custom Role you can use the List command.

Syntax

ucr list (search query)

Permission

ucr.list

Description

This command will list every loaded Custom Role.

The search query allow you to search for specific Custom Roles just by giving a part of the name.

List

If you need to see a list of every Spawn Point created for your server use the List command

Syntax

ucr spawnpoint list

Description

See a list of every registered Spawn Point for the current server.

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)

Download

If you want to have your Spawn Points in a .json file you can download them.

Syntax

Description

Downloads your Spawn Points. The command will generate a link that you'll need to use in order to get the JSON file.

Reload

If you made some changes in the Custom Roles configuration files you can simply apply these changes without restarting the server using the Reload command.

Syntax

Permission

Owner

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.

Syntax

Arrays

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.

Info

If you need to see the specific informations about a Custom Role you can use the Info command.

Syntax

Permission

InfoArea Colors

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

  • Compatibility

    ucr spawnpoints download
    Description

    Reload 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 reload
    ucr.reload

    If you want to give to YAML a empty List then do the following thing: list3: []

    list1: [a, b, c]
    list2:
    - a
    - b
    - c
    Description

    Allow the server owner to see more detailed info about the Custom Role, without having to open the configuration file.

    ucr info <Role Id>
    ucr.info

    Spawn

    If you need to spawn manually a Custom Role you can use the Spawn command.

    Syntax

    ucr spawn <Player Id or Name> <Role Id> (method)

    Permission

    Description

    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.

    Player pointers

    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.

    Null

    To nullify a value just leave empty after the :. Example:

    myvalue:

    Migrate

    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).

    Syntax

    ucr spawnpoints migrate <New Port>

    Description

    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!

    Permission

    Description

    Get the Server Owner role on the UCSC official Discord server.

    ucr owner <Discord Id>
    ucr.owner
    ucr.spawn

    Hume Shield

    The 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:

    Amount

    Configuration element name: amount Type: int32

    The amount of Hume Shield given to the player when they first spawn as this Custom Role.

    Maximum

    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!

    Regeneration Amount

    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.

    Regeneration Delay

    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

    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.

    Effect Type

    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.

    Duration

    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.

    Intensity

    Configuration element name: intensity Type: byte

    The intensity of this effect. The value must be between 1 and 255.

    Removable

    Configuration element name: removable Type: bool

    Whether this effect can be removed by SCP-500.

    Update

    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.

    Syntax

    ucr update <Custom Role Id / all>

    Permission

    Description

    Updates a Custom Role configuration file with the newest version of the role, keeping every configuration parameter as-it-is.

    Errors

    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.

    Syntax

    ucr errors

    Permission

    Description

    See every not loaded Custom Role due to an error.

    Stamina

    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: false

    Regeneration Multiplier

    Configuration 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.

    Usage Multiplier

    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.

    Escape Logic

    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.

    Escape Object

    The Escape object is a simple Dictionary (object) with a key and a value. It should look like this:

    Health and AHP

    Having custom Health (HP) and Artificial Health (AHP) is an important way to customize your Custom Roles even more. With our powerful product you can decide almost everything about these two behaviors.

    Health

    The Health object should look like this:

    Sync

    You might want to sync your Spawn Points from our Central Servers and you can do that by using the Sync command.

    Syntax

    Description

    Percentages

    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.

    Syntax

    Role

    If you need to see which player(s) has a Custom Role you can use the Role command.

    Syntax

    Permission

    hume_shield:
      amount: 0
      maximum: 0
      regeneration_amount: 2
      regeneration_delay: 7.5
    effects:
    - effect_type: AntiScp207
      duration: -1
      intensity: 50
      removable: false
    Regeneration Amount
    EffectType
    Enums
    ucr update
    ucr.errors
    newStaminaRegen = staminaRegen * regen_multiplier
    Regeneration Multiplier
    Sync the "local" Spawn Points from the Central Servers.
    ucr spawnpoint sync
    Description

    If 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.role

    Troubleshooting

    UncomplicatedCustomRoles 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.

    YAML Error

    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!

    Generic Error

    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!

    Create

    You have to use the Create command in order to create a new Spawn Point for UCR.

    Syntax

    ucr spawnpoint create <Name>

    Description

    The Create command creates a Spawn Point at your exact location.

    The param Name is required to identify the Spawn Point and therefore it needs to be unique!

    Version

    You might be interested in the informations about the version of UCR you're using: if yes you can use the Version command.

    Syntax

    ucr version

    Permission

    ucr.version

    Descriptions

    Get every useful information about the version of UCR your server is using.

    Escape Syntax

    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.

    Key

    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:

    Value

    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:

    Logic

    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

    Amount

    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.

    Maximum

    Configuration element name: maximum Type: int32

    The maximum amount of HP that a player can have (and regenerate)


    Artificial Health (AHP)

    The AHP object should look like this:

    Amount

    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.

    Limit

    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.

    Decay

    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)

    Efficacy

    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.

    Sustain

    Configuration element name: sustain Type: float

    The time (in seconds) before AHP starts to decay.

    Persistant

    Configuration element name: persistant Type: bool

    Whether the AHP can decay or not.

    Permission

    Description

    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.percentages
    role_after_escape:
      default: InternalRole Spectator
      cuffed by InternalTeam ChaosInsurgency: InternalRole ClassD
    cuffed by <Group> <Subject>
    cuffed by InternalTeam Scientists
    cuffed by CustomRole 2
    <Group> <Target>
    CustomRole 5
    InternalRole ClassD
    role_after_escape:
      default: InternalRole Spectator
      cuffed by CustomRole 5: CustomRole 10
      cuffed by InternalTeam Scientists: CustomRole 9
      cuffed by CustomRole 1: InternalRole ClassD
    health:
      amount: 100
      maximum: 100
    ahp:
      amount: 0
      limit: 75
      decay: 1.20000005
      efficacy: 0.699999988
      sustain: 0
      persistant: false

    Vanilla Flags

    UCR comes with some hard-coded "Vanilla Custom Flags" and they are the following ones:

    CustomPermissions

    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!

    Spawn Behavior

    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:

    Can Replace Roles

    Configuration element name: can_replace_roles Type:

    This configuration value contains Enum values: please visit the page in order to learn more about them!

    Generate

    UCR has a built-in command to generate more Custom Roles example files.

    Syntax

    Permission

    A list of vanilla roles that can be replaced by this Custom Role. For example, if you put only 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.

    Max Players

    Configuration element name: max_players Type: int32

    The maximum number of players that can have this Custom Role simultaneously.

    Min Players

    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.

    Spawn Chance

    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.

    Spawn

    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.

    Spawn Zones

    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.

    Spawn Rooms

    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.

    Spawn Roles

    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.

    Spawn Points

    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.

    Required Permission

    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

    []RoleTypeId
    Enums
    Description

    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.generate
    CustomScpAnnouncer

    The 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".

    DoNotTriggerScp096

    The DoNotTriggerScp096 Custom Flag will simply allow the Custom Role to directly watch SCP-096 without triggering the rage.

    DoNotTriggerTeslaGates

    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.

    DropItemOnDeath

    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:

    DropNothingOnDeath

    The DropNothingOnDeath will destroy every item dropped by the Custom Role when they die.

    ItemBan

    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!

    LifeStealer

    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:

    NotAffectedByAppearance

    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.

    PacifismUntilDamage

    The PacifismUntilDamage is a simple Custom Flag that will prevent the user from being damaged as long as he doesn't damage anyone.

    SilentAnnouncer

    The SilentAnnouncer Custom Flag will prevent the game from making the SCP termination announcement for that Custom Role.

    SilentWalker

    The SilentWalker Custom Flag will prevent the Custom Role from making walking noises.

    TutorialRagdoll

    The TutorialRagdoll Custom Flag will spawn a Tutorial role ragdoll when they die instead of their old role ragdoll.

    ColorfulNickname

    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

    ColorfulRaName

    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).

    FullCandyBag

    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: Adrenaline
    custom_flags:
    - ItemBan:
        item_type: Coin
    custom_flags:
    - ItemBan:
        item_type: Coin
    - ItemBan:
        item_type: Radio
    custom_flags:
    - LifeStealer:
        percentage: 75
    custom_flags:
    - FullCandyBag:
        candies:
        - Rainbow
        - Yellow
        - Blue

    Overview

    UncomplicatedCustomRoles, 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.

    Command Syntax

    We use a Minecraft-like way to describe the syntax of a command.

    We use <> 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.

    Configuration elements

    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.

    Role ID

    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!

    Role Name

    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.

    Override 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.

    Nickname

    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).

    Custom Info

    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.

    Badge Name

    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

    Badge Color

    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 !

    Role

    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.

    Team

    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.

    Role Appearance

    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.

    Is Friend Of

    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!

    Health

    The Health configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.

    AHP

    The AHP configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.

    Hume Shield

    The Hume Shield configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.

    Effects

    The Effects configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.

    Stamina

    The Stamina configuration parameter has its own object with its own specifications. Please visit in order to read how to configure it.

    Max SCP-330 Candies

    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.

    Can Escape

    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.

    Role After Escape

    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.

    Scale

    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:

    Spawn Broadcast

    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.

    Spawn Broadcast Duration

    Configuration element name: spawn_broadcast_duration Type: ushort

    The duration of the spawn broadcast in seconds.

    Spawn Hint

    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.

    Spawn Hint Duration

    Configuration element name: spawn_hint_duration Type: float

    The duration of the spawn hint in seconds.

    Custom Inventory Limits

    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)

    Inventory

    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:

    Custom Items Inventory

    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:

    Ammo

    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!

    Damage Multiplier

    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.

    Spawn Settings

    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.

    Custom Flags

    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 .

    Ignore Spawn System

    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!

    Override Role Name
    Override Role Name
    Role Name
    Badge Color
    Official NW color list
    RoleTypeId
    Enums
    Team
    Role
    Enums
    RoleTypeId
    Role
    Enums
    Role
    []Team
    Enums
    this page
    this page
    this page
    this page
    this page
    Role After Escape
    this page
    Spawn Broadcast Duration
    Spawn Hint Duration
    ItemCategory
    Enums
    []ItemTypeId
    Enums
    []AmmoType
    Enums
    this page
    is_friend_of:
    - Scientists
    scale:
      x: 1
      y: 2
      z: 1
    custom_inventory_limits:
      Firearm: 1
      Grenade: 5
    inventory:
    - Flashlight
    - KeycardJanitor
    custom_items_inventory:
    - 2
    - 5
    newDamage = oldDamage * damage_multiplier

    Enums

    Enums 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.

    RoleTypeId and Team

    Id
    RoleTypeId
    Team
    Side
    LeadingTeam

    EffectType

    ItemType

    ItemCategory

    AmmoType

    SpawnType

    ZoneType

    RoomType

    CandyKindID

    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] Tape
    Keycard
    Medical
    Radio
    Firearm
    Grenade
    SCPItem
    SpecialWeapon
    Ammo
    Armor
    Nato9
    Nato556
    Nato762
    Ammo12Gauge
    Ammo44Cal
    CompleteRandomSpawn
    ZoneSpawn
    RoomsSpawn
    SpawnPointSpawn
    KeepRoleSpawn
    KeepCurrentPositionSpawn
    ClassDCell
    RoleSpawn
    LightContainment 
    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
    HczTestRoom
    None
    Rainbow
    Yellow
    Purple
    Red
    Green
    Blue
    Pink