Skip to content

ns-kits โ€‹

Western (RDR2) styled kit menu for RedM. Players open the menu with the /kit chat command and claim from one of ten kit categories โ€” three free, three Discord-gated, four donator tiers.

Support / Community: discord.gg/UyyngemnF8 โ€” bug reports, feature requests, server invite.

Kits โ€‹

Free (no role required) โ€‹

IDCooldownContents
starteronce per characterRevolver ammo ร—8, bandage ร—3, peach ร—2, $50
daily24 hoursKidney beans ร—2, salmon can ร—2, coffee ร—1, $25
weekly7 daysRepeater ร—8, repeater express ร—8, bandage ร—5, herbal tonic ร—3, $150

Discord-gated โ€‹

IDRequired roleCooldownContents
discordmember7 daysHaycube ร—5, bandage ร—3, meat stew ร—2, $200
streamerstreamer7 daysRevolver express ร—8, bandage ร—5, herbal tonic ร—2, coffee ร—2, $250
boosterbooster7 daysRifle express ร—8, rifle explosive ร—8, bandage ร—5, herbal tonic ร—3, wine ร—2, $500

Donator tiers (Discord-gated) โ€‹

IDRequired roleCooldownContents
vipvip7 daysRevolver express ร—8, bandage ร—3, herbal tonic ร—2, coffee ร—2, $300
goldgold7 daysRepeater ร—8, repeater express ร—8, bandage ร—5, herbal tonic ร—2, wine ร—1, $400
premiumpremium7 daysRifle express ร—8, rifle explosive ร—8, bandage ร—5, herbal tonic ร—3, wine ร—2, $600
diamonddiamond7 daysRifle express ร—8, rifle explosive ร—8, rifle velocity ร—8, bandage ร—5, herbal tonic ร—3, wine ร—3, meat stew ร—2, $1000

Disable any kit you don't offer by setting enabled = false in config.lua โ€” it'll be hidden in the menu and server-side claims will be rejected.

Adding / removing kits โ€‹

Open config.lua and edit the Config.Kits = { ... } table at the bottom. The block right above that table has a copy-paste template, a field reference, and notes on how to remove a kit cleanly. After editing, run restart ns-kits in-game โ€” no build step required.

Available icon values (SVG icons shipped in html/kit-menu.jsx):

Starter | Daily | Weekly | Discord | Streamer | Booster
VIP | Gold | Premium | Diamond

Available accent values (card rail colors, defined in html/styles.css):

gold | amber | discord | rust | streamer
vip | gold-tier | premium | diamond

To add a new icon, see html/README.md โ†’ "Add a new icon".

Running on RSG / QBCore / ESX / RedEM:RP โ€‹

ns-lib auto-detects the framework, so NSLib.AddItem, NSLib.AddMoney, etc. are framework-agnostic. The only thing that varies between servers is item key names.

The kits ship with VORP item keys (e.g. ammorevolvernormal, consumable_peach). On a different framework, just edit each kit's items[*].name in config.lua to your real item keys. Look them up in:

  • RSG: rsg-core/shared/items.lua
  • QBCore: qb-core/shared/items.lua
  • ESX: SELECT name FROM items;
  • RedEM:RP: SELECT item FROM items;

Dependencies โ€‹

  • ns-lib (required) โ€” ensure ns-lib must come before ns-kits in server.cfg
  • VORP / RSG-Core / RedEM:RP / ESX / QBCore โ€” NSLib auto-detects whichever is running
  • oxmysql or mysql-async โ€” for cooldown persistence

Installation โ€‹

  1. Make sure ns-lib is installed and ensured.
  2. Drop this folder into resources/ns-kits/.
  3. Update server.cfg:
    ensure ns-lib
    ensure ns-kits
  4. Discord bot โ€” token + guild ID are configured once in ns-lib (see ns-lib README ยง7) and shared by every dependent script. ns-kits only needs role IDs.
  5. For Discord-gated kits, fill in the role IDs in Config.Discord.Roles in config.lua (see below). Set Enabled = true to enable role checks.
  6. Replace item names if not on VORP โ€” see Running on RSG / QBCore / ESX / RedEM:RP.

Discord role setup โ€‹

The bot itself lives in ns-lib. ns-kits only maps role IDs โ†’ kit gates. Configure as many or as few as you sell on your server โ€” disable kits you don't use with enabled = false.

  1. Discord โ†’ Settings โ†’ Advanced โ†’ enable Developer Mode (if not already).
  2. Server Settings โ†’ Roles โ†’ right-click each role โ†’ Copy Role ID.
  3. Paste into Config.Discord.Roles in config.lua:
    lua
    Config.Discord = {
        Enabled = true,
        Roles = {
            member   = 'ROLE_ID',   -- discord kit
            booster  = 'ROLE_ID',   -- booster kit
            streamer = 'ROLE_ID',   -- streamer kit
            vip      = 'ROLE_ID',   -- vip kit
            gold     = 'ROLE_ID',   -- gold kit
            premium  = 'ROLE_ID',   -- premium kit
            diamond  = 'ROLE_ID',   -- diamond kit
        },
    }

If you don't run a tier (e.g. no gold rank on your server), set the corresponding kit's enabled = false in Config.Kits instead of leaving a junk role ID.

Testing โ€‹

/kit

The command name can be changed via Config.OpenCommand in config.lua.

Database โ€‹

The ns_kits_claims table is created automatically on first start. Manual reset queries:

sql
TRUNCATE ns_kits_claims;                                    -- reset all cooldowns
DELETE FROM ns_kits_claims WHERE char_id = 'CHAR_ID';       -- reset a single character
DELETE FROM ns_kits_claims WHERE kit_id = 'starter';        -- let everyone claim starter again

Cross-resource API โ€‹

ns-lib already exposes a cross-resource API. ns-kits does not export its own surface โ€” if another script needs to grant a kit, call NSLib.AddItem / NSLib.AddMoney directly.

NUI / frontend โ€‹

The menu is built with React 18. No CDN dependencies โ€” React, ReactDOM and the fonts (Rye / Crimson Text / JetBrains Mono) are all bundled locally under html/vendor/ and html/fonts/. The menu fully renders even on offline servers.

For build steps and customization (icons, colors, layout), see html/README.md.

License โ€‹

Proprietary / commercial โ€” distribution governed by the Native Scripts EULA. Redistribution, resale, or republishing the source is prohibited.

Released under the MIT License.