Stores your players actually run
Most store scripts stop at “player owns a shop.” This one starts there.
Your players buy a storefront, stock it, price it, hire staff, and then open a dashboard that tells them what actually sells — best sellers, dead stock, revenue by day, and every transaction with a name attached. Running a store becomes something they do, not something they own.
Framework agnostic, genuinely
VORP Core, RSG Core, QBCore and RedEM:RP are detected at runtime. There is no setting to change and no version to pick. oxmysql is the only hard requirement — no menu resource, no input resource, no licensing resource.
For your players
- A storefront that’s theirs — buy a town shop, or found one anywhere with a deed
- Per-item pricing — set what each thing sells for, and what the shop pays the public for it
- Hidden back-stock — keep stock off the shelves without taking it out of the store
- A real dashboard — today, this week, best sellers by volume and by revenue, low-stock warnings
- Full transaction history — filterable, with the customer’s name on every line
- Staff with permissions — hire managers and employees; each role does exactly what you’d expect
- No job required — being on the staff list is the permission
For you
- One config file for store locations and what each type of store trades
- A store is three lines. Its type supplies the item lists, the map blip and the clerk
- No second NPC file — a shop’s clerk belongs to the shop and disappears with it
- /pmhere prints a finished config block for wherever you’re standing
- /pmdiag tells you what loaded, what didn’t, and why
- Item names that don’t exist on your server are named at startup, not swallowed
Three optional modules — all off by default
Supply & demand pricing. Prices move with what players actually do. Flood the market and prices fall; leave a commodity alone and it recovers. Items in the same market influence each other. You declare which markets exist — pelts, fish, ore, crops, whatever your server trades. Nothing is hardcoded.
Commodities exchange. A trading floor NPC where players speculate on those markets, holding positions rather than goods and settling in cash against the live price. Position caps and a trade fee keep it honest. Short selling ships disabled.
Simulated customers. On a quiet server, shops get the occasional unseen customer so owning one still feels worthwhile. Deliberately stingy, with price caps and per-sale ceilings so nobody farms it.
A server that never switches these on carries no cost for them.
Built to be handed to strangers
- The server owns every price — a price from the client is never charged
- Capacity is checked before money, so a full satchel is never a paid mistake
- Ledgers are debited before payouts, so a duplicated event can’t withdraw twice
- Roles are re-derived on every privileged call, never trusted from the interface
- Webhook URLs must be Discord, so the field can’t be turned into an open relay
- A missing item or a bad clerk model is reported once and skipped, never fatal
Setup
- Drop poggy_markets in your resources folder
- Run sql/poggy_markets.sql
- ensure poggy_markets
- Read the console — it names your framework, your store count, and anything in the catalog your server doesn’t have
Coming from an older store script? It uses the standard playershops and shop_sales_log tables, so existing shops, ledgers, stock and history are already where it expects them. The SQL only adds missing columns; it drops nothing.
Requirements
- oxmysql
- One of: VORP Core · RSG Core · QBCore · RedEM:RP
Want everything instead?
Poggy Markets is included in Poggy All Access — every script I make, in one package, including everything released from here on.
One-time purchase · instant download · free updates · support included.
Support: Rosewood Ridge RP