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) โ
| ID | Cooldown | Contents |
|---|---|---|
starter | once per character | Revolver ammo ร8, bandage ร3, peach ร2, $50 |
daily | 24 hours | Kidney beans ร2, salmon can ร2, coffee ร1, $25 |
weekly | 7 days | Repeater ร8, repeater express ร8, bandage ร5, herbal tonic ร3, $150 |
Discord-gated โ
| ID | Required role | Cooldown | Contents |
|---|---|---|---|
discord | member | 7 days | Haycube ร5, bandage ร3, meat stew ร2, $200 |
streamer | streamer | 7 days | Revolver express ร8, bandage ร5, herbal tonic ร2, coffee ร2, $250 |
booster | booster | 7 days | Rifle express ร8, rifle explosive ร8, bandage ร5, herbal tonic ร3, wine ร2, $500 |
Donator tiers (Discord-gated) โ
| ID | Required role | Cooldown | Contents |
|---|---|---|---|
vip | vip | 7 days | Revolver express ร8, bandage ร3, herbal tonic ร2, coffee ร2, $300 |
gold | gold | 7 days | Repeater ร8, repeater express ร8, bandage ร5, herbal tonic ร2, wine ร1, $400 |
premium | premium | 7 days | Rifle express ร8, rifle explosive ร8, bandage ร5, herbal tonic ร3, wine ร2, $600 |
diamond | diamond | 7 days | Rifle 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 | DiamondAvailable accent values (card rail colors, defined in html/styles.css):
gold | amber | discord | rust | streamer
vip | gold-tier | premium | diamondTo 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-libmust come beforens-kitsinserver.cfg - VORP / RSG-Core / RedEM:RP / ESX / QBCore โ NSLib auto-detects whichever is running
- oxmysql or mysql-async โ for cooldown persistence
Installation โ
- Make sure
ns-libis installed andensured. - Drop this folder into
resources/ns-kits/. - Update
server.cfg:ensure ns-lib ensure ns-kits - 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. - For Discord-gated kits, fill in the role IDs in
Config.Discord.Rolesinconfig.lua(see below). SetEnabled = trueto enable role checks. - 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.
- Discord โ Settings โ Advanced โ enable Developer Mode (if not already).
- Server Settings โ Roles โ right-click each role โ Copy Role ID.
- Paste into
Config.Discord.Rolesinconfig.lua:luaConfig.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 โ
/kitThe 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:
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 againCross-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.
