- MySQL & sqlite database support
- Fully functioning in-game skin menu
- Compatible with CounterStrikeSharp WeaponPaints database
- Long-term stattrak tracking
- Player-based skin name localization
- Completely game-based econ data dumping (no network required)
The config.toml should have the following structure in Main section:
[Main]
StorageBackend = "inherit"
InventoryUpdateBackend = "hook"
SyncFromDatabaseWhenPlayerJoin = false
ItemLanguages = []When set to inherit, the plugin use the database configuration from swiftlys2 database configuration.
When set to sqlite, the plugin use its own file-based sqlite database.
Recommended to set to hook for now. Another option is inventory but its deprecated.
When set to true, the plugin will automatically synchronize skin data from database when a player join.
The update is asynchronous so it won't introduce lags in theory.
When unset or set to empty list, the plugin will load item and skin names in all languages.
When set to a list of language, the first language will be used as default fallback language, and only languages in this list will be loaded and set for player based on their game language.
This configuration helps optimizing your memory usage, reducing 80MB at max.
Check the Code column in this table for all available languages:
Available language codes
Gate entire feature groups with a single permission string in config.toml:
[Main.ItemPermissions]
WeaponSkins = "vip"
KnifeSkins = "vip"
GloveSkins = "vip"
Stickers = "vip"
Keychains = "vip"
Agents = "vip"Leave a value empty or remove it to keep the feature available to everyone. Players without the required permission cannot open the related menus, and any equipped cosmetics of that type are hidden until they regain access.
- Open the project in your preferred .NET IDE (e.g., Visual Studio, Rider, VS Code).
- Build the project. The output DLL and resources will be placed in the
build/directory. - The publish process will also create a zip file for easy distribution.
- Use the
dotnet publish -c Releasecommand to build and package your plugin. - Distribute the generated zip file or the contents of the
build/publishdirectory.