BetterStore - Complete Multi-currency Store solution

BetterStore

A fully-featured, modular in-game store plugin for Counter-Strike 2 servers running SwiftlyS2.

Releases and Downloads

Features

  • Multi-currency support — Define any number of named currencies (e.g. credits, tokens, gems), each with its own icon, balance commands, and gifting permissions. All currencies integrate with the Economy API.

  • Hierarchical store menu — Organize items into nested categories and subcategories via a simple JSONC config file. No code changes required to add new items.

  • Inventory system — Players can view all owned items, see remaining time for timed items, equip/unequip, inspect, and sell items from a single menu.

  • Timed & permanent items — Items can be permanent or expire after a configurable duration (7d, 1h30m, permanent, etc.). Expired items are automatically purged every 60 seconds.

  • Weapon/Player Models — Supports Custom Weapon and Player models that support AG2.

  • Purchase confirmation — Optional confirm dialog before finalizing a purchase.

  • Inspect / preview — Player skin and weapon skin items can be previewed before purchasing.

  • Free-use permission — Players with betterstore.freeuse can equip any item without purchasing it.

  • Top-10 leaderboard!rich command shows the top 10 wealthiest players per currency.

  • Currency gifting — Players can gift currency to each other (per-currency opt-in).

  • Async MySQL persistence — All database writes are queued and flushed in batches, either on a timer, on round end, or on map change — minimising performance impact.

  • Orphan cleanup — On startup, items referencing item IDs that no longer exist in the config are automatically removed from the database.

  • Modular architecture — New item types can be added as external plugins implementing IItemModule without modifying BetterStore itself.

  • Fully translatable — All player-facing strings are in JSONC translation files (en.jsonc, tr.jsonc, etc.).

  • Default model management — Configure default T-side and CT-side models; admin commands (!model0 / !model1) can toggle player models server-wide.

  • Gradient menu titles — Configurable hex color gradient for the store menu title.

Commands

Command (default) Description
!store / !shop Open the main store menu
!inventory / !inv Open your inventory
!gift <player> <amount> [currency] Gift currency to another player
!rich View the top-10 wealthiest players leaderboard
!<currency> Check your balance for that currency (one command per configured currency)

Admin Commands

Command Permission Description
givecurrency <player> <amount> <currency> betterstore.currency Give currency to a player
removecurrency <player> <amount> <currency> betterstore.currency Remove currency from a player
resetplayer <player> betterstore.reset Wipe all store data and currency for a player
resetdatabase betterstore.reset Wipe the entire store database
model0 betterstore.admin Force all players back to their default model
model1 betterstore.admin Reapply all player custom models

More Details