Docs/ORB Donations/VIP & Subscriptions

VIP & Subscriptions

The flagship 2.1 feature. VIP is a store-style comparison table — tiers across the top, benefits down the side — billed through recurring Tebex subscriptions. The defaults ship as three tiers (DISTRICT SILVER, DISTRICT GOLD, DISTRICT DIAMOND), fully editable in-game from the admin panel's VIP tab.

The VIP comparison table players see in the store
The VIP comparison table players see in the store · click to enlarge

How a tier pays out

Each tier has a reward pack — the same shape as a bundle's contents, so it can mix money, vehicles, items and weapons (everything the store sells). The script delivers that pack once per billing cycle (Config.Vip.period, default 30 days). Every other benefit row in the table is display-only — owners automate those from Tebex or their own resources.

Reward entry shapes:

lua
{ kind = 'money',   amount = 30000 }
{ kind = 'vehicle', spawnName = 'adder', label = 'Adder' }
{ kind = 'item',    item = 'lockpick', count = 5, label = 'Lockpick' }
{ kind = 'weapon',  weapon = 'weapon_pistol', label = 'Pistol' }

Tiers and their reward packs are built in the admin panel's VIP tab — collapsible tier cards with a reward builder (money / vehicles / items / weapons), the benefits matrix, and a one-click Copy Tebex command per tier:

The admin VIP editor — tiers, reward packs and the benefits matrix
The admin VIP editor — tiers, reward packs and the benefits matrix · click to enlarge

Tebex wiring

Put a recurring package on Tebex and make it run, on each payment:

orb_vip_grant {"transid":"{transaction}","identifier":"{id}","tier":"gold"}

and, on cancellation / expiry:

orb_vip_revoke {"identifier":"{id}"}

A server-side expiry safety net revokes a tier whose cycle has lapsed even if the cancel command never arrives.

Testing

Grant, renew or revoke a tier for an online player from the server console:

orb_vip_test <serverId> [tier] [days]     # grant / renew
orb_vip_test <serverId> off               # revoke

Exports

Read a player's VIP state from any other resource:

lua
-- Full VIP object (tier, benefits, expiry) or nil
local vip = exports['orb-donations']:GetVip(source)

-- A single benefit value by key, or false
local slots = exports['orb-donations']:GetVipBenefit(source, 'garageSlots')

Wire the display-only benefits (priority queue, character/garage slots, job payout, Discord role, VIP clothing, …) to these exports so the perks shown in the table actually take effect on your server.