Item Selling Spots

Documentation

At documentation file you can search for guidelines, error fixes and find answers to your questions.

https://3m-studio.gitbook.io/3m-documentation/




3M Studio – Item Selling Spots (ESX + ox_inventory)

A lightweight, config-driven item selling system where players can sell specific items at specific locations (spots), with per-item prices & sell times, selling hours, and built-in security checks to prevent abuse.

Perfect for drug corners, blackmarket drop-offs, scavenger routes, crafting outputs, or any “sell point” gameplay loop.

Preview


✅ Features

  • Unlimited selling spots (add as many locations as you want)

  • Multiple items per spot (each item can have its own price + sell duration)

  • Auto-loop selling: once started, it keeps selling 1 item at a time until the player runs out

  • Distance protection / anti-exploit

    • Validates player is inside the zone

    • Validates the item is allowed at that spot

    • Checks the player actually has the item

    • Optional kick on invalid trigger attempt

  • Selling hours

    • Enable/disable selling by server time

    • Supports overnight ranges (example: 12:00 → 02:00)

  • Discord logs

    • Separate webhooks for Security and Sales

    • Includes player name, item, payout, location, timestamp

  • Notification bridge

    • Supports: ESX notify, okokNotify, ox_lib notify (optional)

    • Includes notification dedupe to prevent spam


🧩 Requirements

  • ESX (es_extended)

  • ox_inventory

  • (Optional) okokNotify or ox_lib if you want those notification styles


⚙️ Installation

  1. Drag the folder into your server resources:
    resources/[standalone]/ItemSelling3M

  2. Ensure it in server.cfg:

    • ensure ox_inventory

    • ensure ItemSelling3M

  3. Configure everything in config.lua:

    • Notify type

    • Selling spots (coords, radius, items, prices, sell time)

    • Sell hours

    • Discord webhooks


🛠️ Configuration Highlights

Create a selling spot

  • Name + vector3() location

  • maxDistance (zone radius)

  • items = { { item="itemname", price=1000, sellTime=5 }, ... }

Payout

  • Currently pays to black_money (easy to change to cash/bank if you want)


🔒 Security Notes

Server-side validation ensures players cannot:

  • Sell from outside the zone

  • Sell items not configured for that spot

  • Trigger selling without having the item
    Optional Discord logging + kick behavior helps keep it clean on live servers.