Commands
Contracts is driven mostly from its in-game menu, but a few commands let players tweak their view and let admins manage rotations and troubleshoot.
Players type the chat command in chat. Admins run console commands from the server console (RCON) or
the F1 client console. The chat command name is configurable. This page uses the default
contracts (see Command Configuration). Admin and debug commands require the
contracts.admin permission (see Permissions Configuration).
In the tables below, <angle brackets> mark required arguments and [square brackets] optional ones.
Player commands
Section titled “Player commands”Available to anyone with the contracts.use permission. Type them in chat.
| Command | Arguments | Description |
|---|---|---|
/contracts |
None | Opens the Contracts menu. |
/contracts hud |
None | Toggles the on-screen HUD on or off. Also configurable via the preferences menu. |
/contracts autopin |
None | Toggles whether a contract gets pinned to the HUD as soon as the player accepts it. On by default. Also configurable via the preferences menu. |
/contracts reminders |
None | Toggles all reminders on or off for the player. Also configurable via the preferences menu. Only matters when the server has at least one reminder enabled in the config. |
/contracts scale |
[amount] |
Adjusts the plugin’s UI scale for the player. Also configurable via the preferences menu. amount should be between 0.5 and 1.0 (default). Players should set this to their Rust UI scale. |
/contracts score |
None | Shows the player their current Contract Score (CS) in chat, and their prestige tier when the track is on. |
⭐ Premium /contracts hud and /contracts autopin both act on the HUD, which is premium. On the
lite edition the HUD does not exist, so the arguments are unrecognized and the command simply opens
the menu.
Admin commands
Section titled “Admin commands”Require the contracts.admin permission. Run them from the server console or the F1 console.
| Command | Arguments | Description |
|---|---|---|
contracts.rotate_category |
<categoryId> |
Immediately re-rolls one category’s active contracts and reschedules its next rotation. |
contracts.add_to_rotation |
<categoryId> <contractId> |
Puts one specific contract live in a category’s active rotation without re-rolling the rest. Also adds the contract to the category’s contract list if it is missing. If the category is dormant (had no contracts), this starts a fresh rotation. |
contracts.remove_from_rotation |
<categoryId> <contractId> [confirm] |
Removes one contract from the active rotation only (it stays a candidate for the next cycle). In-progress players lose their work on that contract, logged as expired. Players who already completed it still get their reward. If any player has work in progress, the command reports the impact and does nothing until you re-run it with confirm. |
contracts.reset_all_progress |
None | Wipes every player’s contract progress and all unclaimed rewards. Cannot be undone! |
contracts.view_score |
<steamId|name> |
Shows a player’s Contract Score (CS). |
contracts.give_score |
<steamId|name> <amount> |
Grants a player Contract Score (CS). amount must be a whole number of at least 1. Their prestige tier follows the new score. |
contracts.take_score |
<steamId|name> <amount> |
Removes Contract Score (CS) from a player. Their CS never drops below zero, and their prestige tier follows it down. |
contracts.give_item |
<steamId|name> <shortname> [amount] [skinId] [name] |
Gives a player an item, with an optional skin and custom name. amount defaults to 1 and skinId to 0 (no skin). Everything after the skin ID is the item name, no quotes needed. Use 0 as the skin to only set a name. If the player’s inventory is full, the rest drops at their feet. Skins sold by Facepunch only go on the item for players who own them. The player must be on the server (awake or asleep) and alive. |
contracts.wipe_scores |
None | Resets every player’s Contract Score (CS) to zero and clears their claimed prestige tiers. Cannot be undone! |
⭐ Premium contracts.give_item is premium. On the lite edition the command does not exist.
Giving items from a shop or kit
Section titled “Giving items from a shop or kit”contracts.give_item can be used outside of Contracts! Shop and kit plugins can run contracts.give_item when a player buys or redeems something. Put the plugin’s own Steam ID placeholder where the player goes:
- Shop or Kits by Mevent:
contracts.give_item %steamid% paper 100 3731371060 Cash - ServerRewards or GUIShop:
contracts.give_item $player.id paper 100 3731371060 Cash
These shops have no amount placeholder, so the amount is part of the line. Make one shop entry per bundle size (10, 50, 100).
Debug commands
Section titled “Debug commands”Also require contracts.admin. These are for troubleshooting and support, so you won’t need them in
normal operation. Output prints to the console you run them from.
| Command | Arguments | Description |
|---|---|---|
contracts.debug.hooks |
None | Lists every game hook Contracts uses and whether it is currently subscribed or not. Contracts automatically unsubscribes from hooks when no active contract’s objective needs it. |
contracts.debug.reset_data |
<yes> |
Resets all plugin data (contracts, categories, presets, progress, preferences, pending rewards) to defaults, then reloads the plugin. You must pass the literal yes to confirm. Cannot be undone! |
contracts.debug.refresh.all |
None | Rebuilds every objective cache from the current data. |
contracts.debug.tainted_items |
None | Prints how many items are flagged as tainted in the loot objective cache. This usually stays under 1000. Clear if it exceeds 100k (never happens in practice). |
contracts.debug.clear_tainted_items |
None | Clears the tainted-item set from the loot objective cache. |
contracts.debug.transfers |
None | Prints how many in-flight item transfers are tracked in the loot objective cache. Transfers should typically be completed within a single tick. It should ideally be 0 all the time. |
contracts.debug.clear_transfers |
None | Clears tracked item transfers from the loot objective cache. You can usually safely run this, because it’s unlikely you’ll clear any active transfers. |
Cache inspection
Section titled “Cache inspection”Each objective type keeps a cache for fast objective progress lookups on high-frequency game events. These commands dump the contents of one cache (or all of them) to the console for diagnosis. You will likely never need to run these. They’re only documented here for completeness and for support purposes.
| Command | Arguments | Description |
|---|---|---|
contracts.debug.cache.all |
None | Dumps every objective cache. |
contracts.debug.cache.attackers |
None | Dumps the attackers cache. |
contracts.debug.cache.kill |
None | Dumps the kill objective cache. |
contracts.debug.cache.damage |
None | Dumps the damage objective cache. |
contracts.debug.cache.loot |
None | Dumps the loot objective cache. |
contracts.debug.cache.gather |
None | Dumps the gather objective cache. |
contracts.debug.cache.harvest |
None | Dumps the harvest objective cache. |
contracts.debug.cache.craft |
None | Dumps the craft objective cache. |
contracts.debug.cache.heal |
None | Dumps the heal objective cache. |
contracts.debug.cache.fishing |
None | Dumps the fishing objective cache. |
contracts.debug.cache.dig |
None | Dumps the dig objective cache. |
contracts.debug.cache.plant |
None | Dumps the plant objective cache. |
contracts.debug.cache.card_swipe |
None | Dumps the card-swipe objective cache. |
contracts.debug.cache.crate_hack |
None | Dumps the crate-hack objective cache. |
