Custom Commands

Custom Commands 1.0.0

Create custom chat and console commands with cooldowns, costs, and conditional requirements
This plugin lets you create custom commands for your server - things like /rules, /discord, /kit - with built-in cooldowns, costs, and smart conditions. Want a heal command that only works in safe zones? A tip command that shows random messages? Commands that charge players items or currency? You can make all that happen without needing separate plugins for every little thing.

Features

  • Create unlimited custom commands with aliases
  • Support chat commands, console commands, or both
  • Display multiple response messages with rich text formatting
  • Show random responses from predefined sets
  • Use dynamic placeholders for player info and arguments
  • Set per-command cooldowns with permission-based overrides
  • Limit maximum uses per wipe or day with permission overrides
  • Charge Economics currency, ServerRewards points, or require items
  • Configure different costs for different permission groups
  • Enforce usage conditions like safe zones, building blocked status, health requirements, swimming status
  • Execute client console commands, server console commands, and chat commands
  • Broadcast messages to all online players
  • Control where responses appear: chat, console, or both
  • Set custom chat avatars using Steam IDs
  • Automatically reset cooldowns and usage counts on map wipe or daily
  • Manage player cooldowns and usage counts with admin commands

Permissions

  • customcommands.admin -- Access to admin commands for resetting cooldowns and usage counts.

Command-Specific Permissions

Each command can have a required permission configured in its settings. Set the Required Permission field to any permission string you want. Players without this permission cannot use the command. The default configuration includes these example permissions:
  • customcommands.vip -- Example VIP permission for reduced cooldowns and costs
  • customcommands.elite -- Example Elite permission for further reduced cooldowns
  • customcommands.kit.nocooldown -- Bypass cooldown for kit command
  • customcommands.kit.unlimited -- Unlimited kit usage
  • customcommands.heal.nocooldown -- Bypass cooldown for heal command
  • customcommands.heal.free -- Free heal command usage
  • customcommands.buybase -- Permission to use buybase command
  • customcommands.buybase.free -- Free base purchase

Commands

All commands are fully customizable. The following are examples from the default configuration.

Player Commands

  • /rules-- Display server rules.
    • Aliases: /r, /serverrules
  • /discord-- Show Discord and community links.
    • Aliases: /dc, /community, /socials
  • /kit <name>-- Claim a kit (executes kit plugin command).
    • Aliases: /getkit, /starterkit
    • <name> -- Kit name to claim (defaults to "starter" if not specified)
  • /vote-- Display voting information and links.
    • Aliases: /votereward, /claimvote
  • /tip-- Display a random server tip.
    • Aliases: /tips, /hint, /hints
  • /pos-- Show your current position and grid location.
    • Aliases: /position, /loc, /location, /coords, /where
  • /buybase-- Purchase a starter base (disabled by default, requires permission).
    • Alias: /purchasebase
    • Note: Requires customcommands.buybase permission
  • /heal-- Heal to full health (disabled by default).
    • Aliases: /medic, /doctor
  • /vipinfo-- Display VIP benefits information.
    • Aliases: /vip, /donate, /premium, /store
  • /playtime-- Check playtime (disabled by default, requires compatible plugin).
    • Aliases: /played, /mytime
  • /wipe-- Display wipe schedule information.
    • Aliases: /wipetime, /wipeinfo, /nextwipe
  • /report-- Show how to report players.
    • Aliases: /reportplayer, /cheater
  • /pm <player> <message>-- Send private message (disabled by default).
    • Aliases: /msg, /whisper, /tell, /w
    • <player> -- Target player name or ID
    • <message> -- Message to send
  • craftinfo-- Display crafting information.
    • Aliases: craft, crafting

Admin Commands

  • /ccresetcooldowns [player]-- Reset cooldowns for all players or a specific player.
    • Requires customcommands.admin permission
    • [player] -- Optional player name to reset cooldowns for
  • /ccresetuses [player]-- Reset usage counts for all players or a specific player.
    • Requires customcommands.admin permission
    • [player] -- Optional player name to reset usage counts for

Configuration

JSON:
{
  "Version": "1.0.0",
  "Global Settings": {
    "Reset Cooldowns On Map Wipe": true,
    "Reset Usage Counts On Map Wipe": true,
    "Reset Usage Counts Daily At Midnight (Server Time)": false,
    "Chat Message Prefix (Supports Rich Text)": "<color=#55aaff>[Server]</color> ",
    "Log Command Usage To Server Console": true
  },
  "Commands": {
    "rules": {
      "Enabled": true,
      "Command Type (Chat, Console, Both)": "Both",
      "Alternate Command Names (Aliases)": ["r", "serverrules"],
      "Required Permission (Empty = No Permission)": "",
      "Response Messages (Sent To Player)": [
        "<size=16><color=#55aaff>========== SERVER RULES ==========</color></size>",
        "",
        "<color=#ff5555>1.</color> No cheating, hacking, or exploiting bugs",
        "<color=#ff5555>2.</color> No racism, harassment, or toxic behavior",
        "<color=#ff5555>3.</color> No griefing sleepers or spawn camping",
        "<color=#ff5555>4.</color> English only in global chat",
        "<color=#ff5555>5.</color> Respect admins and their decisions",
        "",
        "<color=#aaaaaa>Violators will be banned without warning.</color>",
        "<size=16><color=#55aaff>==================================</color></size>"
      ],
      "Random Response Sets (Groups Of Messages)": [],
      "Pick Random Response (Instead Of Sending All)": false,
      "Broadcast To All Players": false,
      "Response Location (Where Messages Appear)": "MatchWhereUsed",
      "Chat Avatar Steam ID (0 = Default)": 0,
      "Cooldown (Seconds, 0 = None)": 30.0,
      "Cooldown Overrides (Permission: Seconds)": {},
      "Cooldown Bypass Permission (Ignores Cooldown)": "",
      "Maximum Uses Per Reset (0 = Unlimited)": 0,
      "Maximum Uses Overrides (Permission: Amount)": {},
      "Maximum Uses Bypass Permission (Unlimited Uses)": "",
      "Economics Cost (0 = Free)": 0,
      "Economics Cost Overrides (Permission: Cost)": {},
      "Server Rewards Cost (0 = Free)": 0,
      "Server Rewards Overrides (Permission: Cost)": {},
      "Required Items (Consumed On Use)": [],
      "Cost Bypass Permission (Free Use)": "",
      "Client Console Commands (Runs On Player)": [],
      "Server Console Commands (RCON)": [],
      "Chat Commands (Runs As Player)": [],
      "Usage Requirements (Conditions)": {
        "Must Have Permission (Extra Permission Check)": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You don't have the required permission."
        },
        "Block If Has Permission (Prevent Usage)": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You cannot use this command."
        },
        "Must Not Be Building Blocked": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You cannot use this while building blocked!"
        },
        "Must Be Building Blocked": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You must be building blocked to use this!"
        },
        "Must Be In Safe Zone": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You must be in a safe zone to use this!"
        },
        "Must Not Be In Safe Zone": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You cannot use this in a safe zone!"
        },
        "Minimum Health Required": {
          "Enabled": false,
          "Value": 0.0,
          "Error Message (Shown When Condition Fails)": "You need at least {0} health to use this!"
        },
        "Maximum Health Allowed": {
          "Enabled": false,
          "Value": 100.0,
          "Error Message (Shown When Condition Fails)": "Your health must be below {0} to use this!"
        },
        "Must Be Alive": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You must be alive to use this!"
        },
        "Must Be Swimming": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You must be swimming to use this!"
        },
        "Must Not Be Swimming": {
          "Enabled": false,
          "Value (Permission For Permission Checks)": "",
          "Error Message (Shown When Condition Fails)": "You cannot use this while swimming!"
        }
      }
    }
  }
}

Global Settings

  • Reset Cooldowns On Map Wipe -- Automatically clears all cooldowns when a new map is generated.
  • Reset Usage Counts On Map Wipe -- Automatically resets usage counts when a new map is generated.
  • Reset Usage Counts Daily At Midnight -- Resets usage counts every day at midnight server time. Useful for daily limits instead of per-wipe limits.
  • Chat Message Prefix -- Prefix added to chat messages. Supports Unity rich text formatting.
  • Log Command Usage To Server Console -- Logs each command usage to the server console for tracking.

Command Configuration

Each command is defined under the Commands section with a unique key that becomes the primary command name.

Basic Settings

  • Enabled -- Whether this command is active.
  • Command Type -- Where the command can be used.
  • Alternate Command Names -- Alternative names for the command.
  • Required Permission -- Permission required to use the command. Empty string means no permission required.

Response Settings

  • Response Messages -- Messages sent to the player when command is used. Supports rich text and placeholders.
  • Random Response Sets -- Alternative to Response Messages. Each inner array is a possible set of messages. One set is randomly chosen if Pick Random Response is enabled.
  • Pick Random Response -- If true and Random Response Sets is configured, picks one random set. If false, uses Response Messages.
  • Broadcast To All Players -- If true, sends responses to all online players instead of just the command user.
  • Response Location -- Where messages appear. Options: MatchWhereUsed (chat if used via chat, console if used via console), ChatOnly (always chat), ConsoleOnly (always F1 console), ChatAndConsole (both locations).
  • Chat Avatar Steam ID -- Steam ID for the chat avatar image. Use 0 for server icon, or any Steam ID for custom avatars.

Cooldown Settings

  • Cooldown -- Default cooldown in seconds.
  • Cooldown Overrides -- Permission-based cooldown reductions. Lower values take precedence. First matching permission is used.
  • Cooldown Bypass Permission -- Permission that completely ignores cooldown.

Usage Limit Settings

  • Maximum Uses Per Reset -- Maximum number of times command can be used per reset period (wipe or daily).
  • Maximum Uses Overrides -- Permission-based usage limit increases. Higher values take precedence. First matching permission is used.
  • Maximum Uses Bypass Permission -- Permission for unlimited uses.

Cost Settings

  • Economics Cost -- Cost in Economics plugin currency. Requires Economics plugin.
  • Economics Cost Overrides -- Permission-based cost reductions for Economics. Lower values take precedence.
  • Server Rewards Cost -- Cost in ServerRewards points. Requires ServerRewards plugin.
  • Server Rewards Overrides-- Permission-based cost reductions for ServerRewards. Lower values take precedence.
  • Required Items -- List of items consumed when using the command. Each entry has: Item Short Name, Amount Required, Skin ID, and Custom Display Name.
  • Cost Bypass Permission -- Permission that bypasses ALL costs (Economics, ServerRewards, and items).
Note: All costs are checked before command execution. If player lacks any required resource, the command fails and nothing is consumed.

Action Settings

  • Client Console Commands -- Commands executed on the player's client. Supports placeholders.
  • Server Console Commands -- Commands executed on the server console. Supports placeholders.
  • Chat Commands -- Chat commands executed as if the player typed them. Supports placeholders.
Execution Order: Response messages are sent first, then client commands, server commands, and finally chat commands are executed in that order.

Usage Requirements (Conditions)

All conditions have the same structure with Enabled, Value, and Error Message fields.
  • Must Have Permission-- Requires an additional permission beyond the base command permission.
    • Value field contains the permission string to check
  • Block If Has Permission-- Prevents usage if player has a specific permission (useful for blocking certain groups).
    • Value field contains the permission string to check
  • Must Not Be Building Blocked -- Player must NOT be in a building blocked area.
  • Must Be Building Blocked -- Player MUST be in a building blocked area.
  • Must Be In Safe Zone -- Player must be in a safe zone.
  • Must Not Be In Safe Zone -- Player must NOT be in a safe zone.
  • Minimum Health Required-- Player must have at least this much health. Use `{0}`in error message to show the required value.
    • Value field is numeric health amount
  • Maximum Health Allowed-- Player must have less than this much health. Use `{0}`in error message to show the maximum value.
    • Value field is numeric health amount
  • Must Be Alive -- Player must be alive (not dead/wounded).
  • Must Be Swimming -- Player must be in water/swimming.
  • Must Not Be Swimming -- Player must NOT be swimming.
Condition Checking: All enabled conditions are checked before command execution. If any condition fails, the command is blocked and the error message is shown.

Placeholder System

Placeholders allow dynamic content in messages and commands. Use them in Response Messages, Client Console Commands, Server Console Commands, and Chat Commands.

Player Placeholders

  • {player.name} -- Player's display name
  • {player.id} -- Player's Steam ID (UserIDString)
  • {player.position} -- Player's 3D position (X, Y, Z)
  • {player.grid} -- Player's grid location (e.g., "H10")
  • {player.health} -- Player's current health (rounded to nearest integer)
  • {player.maxhealth} -- Player's maximum health (rounded to nearest integer)

Argument Placeholders

  • {args} -- All arguments joined with spaces
  • {arg0} -- First argument (index 0)
  • {arg1} -- Second argument (index 1)
  • {arg2} -- Third argument (index 2)
  • etc.
You can specify default values for arguments using this syntax:
  • {arg0:defaultvalue} -- If arg0 doesn't exist, uses "defaultvalue"
  • {arg1:starter} -- If arg1 doesn't exist, uses "starter"
Example: {arg0:starter} in the message "You received the {arg0:starter} kit!" will show "You received the vip kit!" if the player types /kit vip, or "You received the starter kit!" if they just type /kit.

Stored Data

JSON:
{
  "Player Data": {
    "76561198000000000": {
      "Cooldowns": {
        "commandname": 1234567890.0
      },
      "Uses": {
        "commandname": 3
      }
    }
  }
}
  • Cooldowns -- Dictionary of command cooldown expiry times (Unix timestamp in seconds)
  • Uses -- Dictionary of command usage counts for the current reset period

Localization

JSON:
{
  "Error.NoPermission": "You do not have permission to use this command.",
  "Error.OnCooldown": "This command is on cooldown for {0}.",
  "Error.MaxUsesReached": "You have reached the maximum uses ({0}) for this command.",
  "Error.InsufficientFunds": "You need {0} money to use this command. (Balance: {1})",
  "Error.InsufficientPoints": "You need {0} points to use this command. (Points: {1})",
  "Error.InsufficientItems": "You need {0}x {1} to use this command.",
  "Success.CooldownsReset": "All cooldowns have been reset.",
  "Success.UsesReset": "All usage counts have been reset."
}

FAQ

Can I make commands that execute other plugin commands?

Yes! Use the Chat Commands (Runs As Player) setting to execute commands as if the player typed them. You can pass arguments using placeholders.

What's the difference between Response Location options?

  • MatchWhereUsed -- Shows response where command was used (chat command shows in chat, console command shows in console)
  • ChatOnly -- Always shows in chat (even if used from console)
  • ConsoleOnly -- Always shows in F1 console (useful for long text that would spam chat)
  • ChatAndConsole -- Shows in both locations simultaneously

Can I have different costs for different permission groups?

Yes! Use the override dictionaries: Economics Cost Overrides, Server Rewards Overrides, Cooldown Overrides, and Maximum Uses Overrides. Players need the permission to get the override. Lower costs/cooldowns take precedence.

How do I reset a player's cooldowns?

Use either:
  • Chat command: /ccresetcooldowns <playername>
  • Console command: customcommands.resetcooldowns <playername>
Or reset all players:
  • Chat command: /ccresetcooldowns
  • Console command: customcommands.resetcooldowns

What are Random Response Sets used for?

Random Response Sets let you display one random set of messages from multiple options. Perfect for random tips, random quotes, random server messages, or randomized help responses. Set Pick Random Response (Instead Of Sending All) to true to enable.

Can I make a command that's only usable in safe zones?

Yes! Use the Usage Requirements conditions:
JSON:
"Usage Requirements (Conditions)": {
  "Must Be In Safe Zone": {
    "Enabled": true,
    "Error Message (Shown When Condition Fails)": "You must be in a safe zone to use this!"
  }
}

Can commands cost multiple resources simultaneously?

Yes! Commands can require Economics balance, ServerRewards points, and multiple different items. All costs are checked before execution. If any cost cannot be paid, the command fails and nothing is consumed.
Author
VisEntities
License duration
Unlimited
Price
7.99 USD
First release
Last update

Ratings

0.00 star(s) 0 reviews

Also by VisEntities

Back
Top
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.
Cart