NS-KITS 🎒 — Western-Styled Kit Menu for RedM

NS-KITS :backpack: — Western-Styled Kit Menu for RedM

A clean RDR2-styled kit menu for RedM. Players type /kit, browse ten kit tiers — three free, three Discord-role-gated, four donator tiers — and claim
with a single click. Cooldowns persist across restarts, Discord role checks happen server-side, item granting is framework-agnostic via ns-lib. :cowboy_hat_face:

:movie_camera: Preview

Video:
Youtube

Screenshots:

:sparkles: Features

  • :backpack: 10 kit tiers out of the box — Starter, Daily, Weekly, Discord, Streamer, Booster, VIP, Gold, Premium, Diamond
  • :locked: Discord role gating — server-side role check, no client trust; tiers locked until the player has the matching role
  • :stopwatch: Per-character cooldowns — once-per-character starter, 24h daily, 7-day weekly/donator, all stored in MySQL
  • :artist_palette: RDR2-styled western NUI — Rye + Crimson Text fonts, gold/amber/diamond accent rails, fully bundled (no CDN, runs offline)
  • :hammer_and_wrench: One config file — add, remove, rename, recolor or disable any kit by editing config.lua, no rebuild needed
  • :electric_plug: Cross-framework via ns-lib — VORP, RSG-Core auto-detected; same code, same kits, every framework
  • :money_bag: Items + money in one claim — each kit grants any combination of weapons, ammo, consumables and cash
  • :bullseye: Custom command — default /kit, change to whatever fits your server with Config.OpenCommand
  • :shield: Server-side validation — every claim re-verifies role, cooldown and kit-enabled state before granting

:gear: Configuration

All gameplay settings live in config.lua. Discord bot credentials are configured once in ns-lib and shared by every dependent script — ns-kits only needs
role IDs.

Config.OpenCommand = 'kit'

  Config.Discord = {
      Enabled = true,
      Roles = {
          member   = 'ROLE_ID',
          booster  = 'ROLE_ID',
          streamer = 'ROLE_ID',
          vip      = 'ROLE_ID',
          gold     = 'ROLE_ID',
          premium  = 'ROLE_ID',
          diamond  = 'ROLE_ID',
      },
  }

  Config.Kits = {
      starter = {
          enabled  = true,
          cooldown = 'once',
          items    = { { name = 'ammorevolvernormal', amount = 8 }, ... },
          money    = 50,
          accent   = 'gold',
          icon     = 'Starter',
      },
      -- nine more tiers below...
  }

Disable a tier you don’t run by setting enabled = false — it disappears from the menu and the server rejects claims for it.

:package: Install

  1. Drop ns-kits/ into resources/
  2. Make sure ns-lib is installed and ensured BEFORE ns-kits
  3. Add to server.cfg:
  4. Restart :rocket:

:package: Install

  1. Drop ns-kits/ into resources/
  2. Make sure ns-lib is installed and ensured BEFORE ns-kits
  3. Add to server.cfg:
 ensure ns-lib
 ensure ns-kits
  1. Set Discord role IDs in Config.Discord.Roles (config.lua)
  2. If you’re not on VORP, swap items[*].name to your framework’s item keys
  3. Restart :rocket:

:link: Links

Code is accessible Yes
Subscription-based No
Lines (approximately) 2000+
Requirements ox_mysql, ns-lib, VORP / RSG-Core
Support Yes
1 Like