Gamemode Aim Train

Gamemode Aim Train 1.3.1

Practice shooting and recoil on bots
Dependencies
Gamemode Core (Required)
Recoil Tracker (Optional)
Gear Core (Required)



This plugin lets players train their aim and practice recoil control against bots in a combat-style training environment.

Bot Isolation

Trainees and their bots are completely hidden from other players. They are completely invisible and inaudible to others, making the training space fully private and distraction-free.

Commands

  • gm.at create <title> <position> <radius> [maxPlayerCapacity]- Creates a new Aim Train arena with the specified title, position, radius, and optional maximum player capacity.
    • <position> - Coordinates for the center of the arena. Use here to use your current location.
  • gm.at edit <arenaId> - Enters editing mode for the specified Aim Train arena, allowing you to modify spawn points, bots, teleporters, and other settings.
  • gm.at remove - Deletes the currently selected arena. You must edit an arena first to use this command.
  • gm.at teleporter create <position> <radius> [visibilityRange] [visibleZone]- Creates a teleporter within the currently edited arena.
    • <position> - Location for the teleporter. Use here for your current position.
    • [visibilityRange] (Optional) - Range in which the teleporter information is visible.
    • [visibleZone] (Optional) - Whether the teleporter has a visible zone marker.
  • gm.at teleporter remove - Removes the teleporter associated with the currently edited arena.
  • gm.at spawn add <position> <radius>- Adds a spawn point to the currently edited arena.
    • <position> - Coordinates for the spawn point. Use here to use your current location.
    • <radius> - Defines the area around the position to randomize player spawns.
  • gm.at spawn remove <spawnPointId> - Removes a specific spawn point by its id.
  • gm.at rule add <rule1> [<rule2> ...] - Adds one or more rules to the currently edited arena. (See Rules for details on available rules.)
  • gm.at rule remove <rule1> [<rule2> ...]- Removes one or more rules from the currently edited arena.
  • gm.at set <property> <value>- Updates a property of the currently edited arena. Available properties:
    • title <string> - Sets the name of the arena.
    • enabled <true/false> - Toggles whether the arena is active.
    • maxplayers <int> - Sets the maximum number of players allowed in the arena.
    • infotemplate <string> - Customizes the information template displayed about the arena, such as player count, status, and more. (See Arena Teleporters for all placeholders you can use.)
    • respawngear <string> - Sets the gear players receive upon respawning in the arena.
  • gm.at bot add <numberToSpawn> - Adds a new bot profile to the currently edited arena.
  • gm.at bot edit <botId> - Selects an existing bot profile for editing, allowing you to update its properties (such as health or movement speed).
  • gm.at bot remove - Removes the currently edited bot profile.
  • gm.at bot set <property> <value>- Updates the properties of the currently selected bot profile. The following properties can be modified:
    • health <float> - Sets the bot's health points.
    • immune <true/false> - Determines whether the bot is immune to all damage. (Useful for stationary bots intended as static targets.)
    • randomname <true/false> - Toggles random name generation for bots spawned under this profile.
    • number <int> - Updates the number of bots spawned.
    • minrunspeed <float> - Defines the minimum speed at which bots can move. (Set to 0 if bots should not move at all.)
    • maxrunspeed <float> - Defines the maximum speed at which bots can move.
  • gm.at bot spawn add <position> <radius>- Adds a spawn point for the currently edited bot profile.
    • <position> - Coordinates for the spawn point. Use here to use your current location.
    • <radius> - The area around the position where bots can randomly spawn. If set to 0, the bot always spawns at the exact center.
  • gm.at bot spawn remove <spawnPointId> - Removes a specific spawn point from the currently edited bot profile.

Quick Start

Configuration

JSON:
{
  "Version": "1.2.0",
  "Locked Inventory Containers": [
    "wear"
  ],
  "Recoil": {
    "Recoil Matching Tolerance": 5.0,
    "Pattern Dot Symbol": "●",
    "Pattern Dot Color": "CACF52",
    "Pattern Dot Size": 15,
    "Hit Symbol": "✖",
    "Hit Color": "75A838",
    "Hit Size": 18,
    "Miss Symbol": "✖",
    "Miss Color": "B1231E",
    "Miss Size": 18
  }
}

Stored Data

JSON:
{
  "Arenas": [
    {
      "Enabled": true,
      "Id": "001",
      "Title": "Training Arena",
      "Gamemode": "AimTrain",
      "Radius": 50.0,
      "Position": {
        "x": 100.0,
        "y": 0.0,
        "z": 200.0
      },
      "Rules": ["NoCorpseSpawn", "NoItemContainerSpawn"],
      "Teleporter": {
        "Radius": 5.0,
        "Position": { "x": 105.0, "y": 0.0, "z": 195.0 },
        "Information Text Visibility Range": 20.0,
        "Visible Zone": true
      },
      "Information Template": "{Title}\nGamemode: {Gamemode}\nPlayers: {PlayerCount}/{PlayerCapacity}",
      "Maximum Player Capacity": 10,
      "Spawn Points": [
            {
              "Id": "001",
              "Position": { "x": 102.0, "y": 0.0, "z": 202.0 },
              "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
              "Radius": 5.0
            },
       ],
      "Respawn Gear Set": "DefaultGear",
      "Training Bots": [
        {
          "Id": "001",
          "Health": 100.0,
          "Immune To Damage": false,
          "Minimum Movement Speed": 0.0,
          "Maximum Movement Speed": 0.0,
          "Gear Sets": ["TrainingBot"],
          "Generate Random Name From Pool": true,
          "Custom Names": [],
          "Number To Spawn": 3,
          "Spawn Points": [
            {
              "Id": "001",
              "Position": { "x": 102.0, "y": 0.0, "z": 202.0 },
              "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
              "Radius": 0.0
            },
            {
              "Id": "002",
              "Position": { "x": 104.0, "y": 0.0, "z": 204.0 },
              "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
              "Radius": 0.0
            },
            {
              "Id": "003",
              "Position": { "x": 106.0, "y": 0.0, "z": 206.0 },
              "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
              "Radius": 0.0
            }
          ]
        },
        {
          "Id": "002",
          "Health": 200.0,
          "Immune To Damage": false,
          "Minimum Movement Speed": 2.0,
          "Maximum Movement Speed": 5.0,
          "Gear Sets": ["TrainingBot"],
          "Generate Random Name From Pool": true,
          "Custom Names": [],
          "Number To Spawn": 20,
          "Spawn Points": [
            {
              "Id": "001",
              "Position": { "x": 110.0, "y": 0.0, "z": 210.0 },
              "Rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
              "Radius": 25.0
            }
          ]
        }
      ]
    }
  ]
}
  • Like
Reactions: (Manky)sieve
Author
VisEntities
License duration
Unlimited
Price
20.00 USD
First release
Last update

Ratings

0.00 star(s) 0 reviews

Parent plugin

Child plugins

  • Recoil Tracker
    Recoil Tracker
    Records weapon recoils and analyzes player shot accuracy against them

Also by VisEntities

Latest updates

  1. 1.3.1

    Fixed a bug that caused players to be kicked when joining the arena.
  2. 1.3.0

    Infinite ammo is now enabled by default for players upon arena entry.
  3. 1.2.0

    Updated for compatibility with the latest Gamemode Core version. Added distance tracking so you...
Back
Top
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.
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.
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. Make sure 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