[{"data":1,"prerenderedAt":104},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-en-x3d-selldrug":21,"config-public-x3d-selldrug":99},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"site":16,"contact":18,"seo":19,"payment":20},{"name":5,"host":6,"default_locale":7,"locales":17},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":30,"tags":33,"latest_version":55,"latest_released_at":56,"published_at":57,"has_docs":58,"config":59,"rent_price_satang":60,"description_md":61,"docs_md":62,"seo_title":63,"seo_description":64,"media":65,"versions":73},"5532c49c-d819-4dda-b8a0-71514a14df31","x3d-selldrug","X3D Sell Drug","Shady buyers appear around the map on a timer and pay in black money. Runs on ESX or standalone.",0,"none","public\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg",[31,32],"gangs","economy",[34,35,36,37,38,39,40,41,31,42,43,44,45,46,47,48,49,50,51,52,53,54],"ขายยา","งานขายยา","sell drug","drug selling","ของผิดกฎหมาย","เงินดำ","black money","ผู้รับซื้อ","แก๊ง","crime","esx","ฟรี","free","จุด10","จุดสิบ","จุดขายยา","ขายของจุด10","ขายของลับ","ฟอกเงิน","เงินแดง","ผู้รับซื้อรายใหญ่","1.2.6","2026-10-12T17:19:19.018788Z","2026-09-24T03:39:03.703963Z",true,"public",null,"An illegal sales job that does not park the player in the same spot every day — **shady buyers rotate through map spots on a timer**. When one runs out of time they disappear and a new one turns up somewhere else.\n\nSet up several buyer groups with their own spots, items, prices, stay time, minigame and barred jobs. Buyers pay in **black money**, so it feeds straight into whatever laundering loop your server already runs. Works on **ESX or standalone**.\n\n---\n\n## Features\n\n- [+] Easy to set up: tune everything in the config, or change it from the web\n- [+] Shady buyers appear at map spots with a blip and a time limit each\n- [+] Several buyer groups, each with its own spots and live-at-once count\n- [+] Set what they buy and a random min-max price per item\n- [+] Paid in black money, ready for your laundering system\n- [+] Minimum on-duty police before anyone can sell, plus jobs that cannot sell\n- [+] Police alert after a sale by chance, with a red circle on the map\n- [+] Haggling minigame before the deal: rounds and difficulty, can be turned off\n- [+] Big-buyer event on a timer: city-wide announcement, 1.2x pay\n- [+] No selling to the same buyer twice; items and distance re-checked on the server\n- [+] Hook your own scripts in at addons\u002F\n- [+] Admins add, move, toggle and delete buyer spots from the admin panel\n\n---\n\n## How it plays\n\n1. Check the map for a buyer (they get a blip)\n2. Walk up and press **E**\n3. The prompt says what they want and how many; if you have it, you can deal\n4. Hand it over, take the black money — that buyer will not deal with you twice\n\nEach one wants something different and carries its own countdown. First there, first served.\n\n---\n\n## Big buyers\n\nAn event that gets the whole city moving:\n\n- **Appears on a random timer** (default every 30–60 minutes) with a **city-wide announcement** and a flashing blip visible across the map\n- **Buys 10 units at a time**, paying the normal price × 1.2\n- **Each sale takes 3 minutes**; cancel any time, but you have to hold the spot to finish\n- Everyone can sell once per event\n- Admins can start one from the [X3D Admin Panel](\u002Fen\u002Fproducts\u002Fx3d-adminpanel\u002F) or with `exports.x3d_selldrug:StartEvent(group)`\n\nDo not want events? Delete the `event` group from the config.\n\n---\n\n## Police and admins\n\n- **On-duty police required**: `Config.RequiredJobs = { police = 2 }`\n- **Police alert**: `Config.Alert` fires after a sale by the chance you set (30% by default). Chosen jobs get a message and a temporary red circle on the map\n- **Jobs that cannot sell**: set per group with `blockedJobs`\n- **Admins see every buyer spot on the map**, empty ones too (green = buyer there · faded = empty · faded red = disabled). Turn it on with `Config.AdminBlips = true` or from the admin panel page. Players never see them\n- **Spot editor in the admin panel**: add a spot where you stand, teleport to it, enable\u002Fdisable it, move the buyer, hold to delete — no config editing\n\n---\n\n## Safe by construction\n\nEverything that matters is checked on the server:\n\n- **The items are verified**, never taken on the client's word\n- **Distance is re-checked at the end, not only at the start** — start a deal and run off and it pays nothing\n- **One seller per buyer** when you set `exclusive = true`; nobody can cut into a deal in progress\n- **No selling to the same buyer twice**, tracked per player\n- **The clock has to have actually run** — the client saying \"done\" is not enough\n\n---\n\n## All of it is configurable\n\nWhere buyers can appear, what they want, the prices, how long they stay, how many are live at once, the sale time, the minigame, the blip and which jobs are barred — all per group in `shared\u002Fconfig.lua`.\n\nThai and English text, switched with `Config.Locale`.\n\n---\n\n## Fits what you already run\n\nDetected automatically, and never required:\n\n- **A negotiation minigame** — an `ox_lib` skill check when it is started, skipped when it is not\n- **Progress bar** and **notifications** — ox_lib or esx_notify when present, otherwise built in\n- **3D labels and the E prompt** — built in, no label resource needed\n- **`Hooks.OnSold`** — hook levels, quests or logs after each sale\n- **[X3D Map Events](\u002Fen\u002Fproducts\u002Fx3d-mapevents\u002F)** (free) — with it on the server, the big-buyer event shows on the pause-menu map panel with a countdown, and players can click to set a waypoint. Without it nothing changes\n- **`Hooks.OnEventBuyer` \u002F `Hooks.OnEventBuyerGone`** — hook announcements or logs when the big buyer appears and leaves\n","## Installation\n\n1. Drop the `x3d_selldrug` folder into `resources\u002F`\n2. Add it to `server.cfg`:\n\n```\nensure x3d_selldrug\n```\n\nThat is all. No SQL.\n\n## Configuration\n\nEverything lives in `shared\u002Fconfig.lua`.\n\n```lua\n-- framework: 'auto' uses ESX when es_extended is there, otherwise standalone · 'esx' · 'standalone'\nConfig.Framework        = 'auto'\n\nConfig.Locale           = 'th'   -- language of the text\nConfig.InteractDistance = 2.5    -- how close you must be to press E\nConfig.StreamDistance   = 60.0   -- how close before the ped spawns\n```\n\n### Buyer groups (`Config.Groups`)\n\nEach group has its own items, prices, spots and blip. Two come by default: `street` (shady buyers) and `event` (big buyer).\n\n| Option | What it does |\n|---|---|\n| `activeCount` | buyers live at once (`0` = not standing around, driven by `schedule`) |\n| `lifeTime` \u002F `respawnDelay` | how long each buyer stays (seconds) \u002F delay before a new one (ms), `{ min, max }` |\n| `exclusive` | `true` = one seller per buyer at a time · `false` = everyone may sell once |\n| `blockedJobs` | jobs that cannot sell, e.g. `{ police = true }` |\n| `progressMs` | sale duration in ms |\n| `minigame` | `{ enabled, rounds, difficulty }` ox_lib skill check before the sale (skipped without ox_lib) |\n| `models` \u002F `scenarios` | ped looks and idle animations |\n| `blip` | `sprite` `scale` `name` `colour` · `flash` blinks · `shortRange = false` = visible map-wide |\n| `offers` | what they buy and the pay: `{ items = { { name, count } }, pay = { min, max } }` |\n| `spots` | where buyers appear: `vector4(x, y, z, heading)`, add or remove as you like |\n| `spotsFrom` \u002F `offersFrom` | reuse another group's spots or price table, e.g. `'street'` |\n\n## Jobs and alerts\n\n```lua\n-- minimum on-duty players per job before anyone can sell ({} = no check)\nConfig.RequiredJobs = { police = 2 }\n\n-- alert these jobs after a sale, with `chance` per sale (jobs = {} = off)\nConfig.Alert = { jobs = { 'police' }, chance = 0.3, delay = 10000, blipTime = 60 }\n\n-- jobs that cannot sell, per group\nConfig.Groups.street.blockedJobs = { police = true }\n```\n\n- Only on-duty players count (ESX `job.onDuty`). The server checks when a sale starts\n- Standalone has no jobs: if you set `RequiredJobs`, fill `Framework.GetJob` in `addons\u002Fframework\u002Fserver.lua`\n\n## Big-buyer events\n\nThe `event` block in `Config.Groups` (delete the whole block = no events):\n\n```lua\nevent = {\n    schedule      = { every = { min = 1800, max = 3600 }, count = 1, announce = true }, -- every 30–60 min, tell everyone\n    lifeTime      = { min = 900, max = 1200 },  -- stays 15–20 min\n    spotsFrom     = 'street',                   -- picks from the normal spots\n    offersFrom    = 'street',                   -- items and prices from the normal table\n    quantity      = 10,                         -- 10 units per deal, must carry all of them\n    payMultiplier = 1.2,                        -- normal price × 10 × 1.2\n    progressMs    = 180000,                     -- each sale takes 3 minutes (can be cancelled)\n    blip          = { flash = true, shortRange = false, colour = 5,\n                      ring = { radius = 60.0, colour = 5, alpha = 110 }, pulse = 4000 }, -- flashing, visible map-wide\n}\n```\n\n- Everyone may sell once per event · a buyer with a sale in progress waits until it finishes before leaving\n- Admins can press \"Start an event now\" in x3d_adminpanel, or call `exports.x3d_selldrug:StartEvent('event')`\n- Normal groups accept `blip.flash = true` too (off by default)\n\n## Editing spots from the X3D admin panel\n\nx3d_adminpanel menu \"Shady deals › Buyer spots\": add a spot where you stand · teleport · enable\u002Fdisable · move the buyer · hold to delete.\nSpots live in the script's KVP (`selldrug:spots`), not the config: editing `Config.Groups[...].spots` after the first start has no effect, use the panel instead.\nOwn admin panel? Call `SpotAdmin.addHere \u002F toggle \u002F remove \u002F moveBuyer \u002F teleport` server-side, or the net events `x3d_selldrug:adminAddHere \u002F adminToggle \u002F adminRemove \u002F adminRespawn` (admin check built in).\n\n## Admin blips\n\nAdmins see every buyer spot, empty ones too (green = buyer there · faded = empty · faded red = disabled) as map blips; players never do, the server sends the coordinates to admins only.\n\n- Without the X3D admin panel: set `Config.AdminBlips = true` and admins get them on join (ESX `admin`\u002F`superadmin` or ACE `\u003Cresource name>.admin`)\n- With x3d_adminpanel: this script's menu in the panel lists every spot and has a toggle button that only affects whoever presses it\n\n## Hooking other systems after a sale\n\n`addons\u002Fhooks\u002Fserver.lua` → `Hooks.OnSold(src, sale)` runs after the dirty money is paid (`sale = { group, pay, items }`). Use it for XP, quests or logs.\n\n`Hooks.OnEventBuyer(buyer)` \u002F `Hooks.OnEventBuyerGone(uid)` run when an event buyer appears and leaves (`buyer = { uid, group, label, labelEn, coords, endsAt }`). By default they feed **X3D Map Events** when it is on the server (pause-menu event panel + click to navigate); without it they do nothing.\n\n## Items\n\nWhatever they buy has to already exist in your items table. This script does not add items.\n\n## The negotiation minigame (optional)\n\nWith `ox_lib` started, a skill check runs before the sale and failing it fails the deal. Without `ox_lib` the step is skipped and the sale works normally — the real security is the server's item\u002Fdistance\u002Ftiming re-check at the end of the deal, not the minigame.\n\n## Laundering\n\nPayouts go through `Framework.AddMoney`, paid as `black_money` — a normal ESX account in ESX mode, or, in standalone (no `es_extended`), an `ox_inventory` item named `black_money` (make sure that item exists in your items table).\n\n## Troubleshooting\n\n**No buyers anywhere** — check the group has `spots` and its `activeCount` is not 0.\n\n**E does nothing** — stand closer than `Config.InteractDistance`, and not in a vehicle.\n\n**Sold but no money** — check the server console; usually not enough items, or the player left the radius mid-deal.\n","Free FiveM drug selling — buyers rotate around the map","An illegal sales job for ESX or standalone. Buyers rotate through map spots on a timer and pay black money, items and distance re-checked server side.",[66,69,71],{"kind":67,"url":68},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fmedia\u002F811481f63cf47d23.png",{"kind":67,"url":70},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fmedia\u002Fe12cadb6186f9c50.png",{"kind":67,"url":72},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fmedia\u002Fa64a808b589c89ed.png",[74,76,80,84,88,92,95],{"version":55,"released_at":56,"changelog_md":75},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":77,"released_at":78,"changelog_md":79},"1.2.4","2026-10-12T04:22:30.966794Z","### Added\n\n- `Hooks.OnEventBuyer` \u002F `Hooks.OnEventBuyerGone` in `addons\u002Fhooks\u002Fserver.lua`: called when a big-buyer event buyer appears and leaves\n- Works with **X3D Map Events** (free): with it on the server, the big-buyer event shows on the pause-menu map panel with its countdown, and players can click it to set a waypoint. Without it nothing changes",{"version":81,"released_at":82,"changelog_md":83},"1.2.3","2026-10-12T03:21:21.550779Z","### Changed\n\n- New store images\n- Shared label library synced (no visible change)",{"version":85,"released_at":86,"changelog_md":87},"1.2.2","2026-10-11T15:19:45.283306Z","### Added\n\n- Spot editor in x3d_adminpanel: add a spot where you stand, teleport to a spot, enable\u002Fdisable it, move the buyer standing there, and hold to delete\n- `SpotAdmin.*` server functions so your own admin panel can do the same (the `x3d_selldrug:admin*` net events now call them)\n\n### Changed\n\n- Admin notifications follow `Config.Locale` (Thai \u002F English)",{"version":89,"released_at":90,"changelog_md":91},"1.2.0","2026-10-11T08:44:20.822359Z","### Added\n\n- Big-buyer events (`Config.Groups.event`): appear on a random timer (`schedule.every`) with an announcement to everyone, buy `quantity` units per deal (default 10) at normal price × `payMultiplier` (default 1.2), each sale takes `progressMs` (default 3 minutes, can be cancelled), everyone may sell once per event; admins can start one from the x3d_adminpanel page or `exports.x3d_selldrug:StartEvent(group)`\n- Blip options per group: `flash` (events flash by default, normal buyers do not), `colour`, `shortRange`\n- Group options `spotsFrom` \u002F `offersFrom` to reuse another group's spots and price table\n- Admin-only map blips for every buyer spot, empty ones too (green = buyer there · faded = empty · faded red = disabled): `Config.AdminBlips = true` (admins get them on join) or the toggle button on the new x3d_adminpanel page, which also lists them\n- `Config.RequiredJobs`: minimum on-duty players per job (e.g. police) before anyone can sell\n- `Config.Alert`: alert chosen jobs after a sale, with a chance per sale, a message and a temporary red map circle\n- `addons\u002Fhooks\u002Fserver.lua` → `Hooks.OnSold(src, sale)` for XP, quests or logs after each sale\n\n### Changed\n\n- Runs on ESX or standalone (`Config.Framework = 'auto'`)\n- The optional negotiation minigame is now the ox_lib skill check (`cc_lifeskill` support removed); failing it means no sale",{"version":93,"released_at":94,"changelog_md":12},"1.0.1","2026-09-24T03:55:42.865936Z",{"version":96,"released_at":97,"changelog_md":98},"1.0.0","2026-09-24T03:38:48.17699Z","First public release.\r\n\r\n### Added\r\n\r\n- Shady buyers rotating through configurable map spots on a per-buyer timer, with blips\r\n- Per-group item lists, price ranges and blip styles\r\n- Black money payouts that feed straight into any laundering system\r\n- Optional negotiation minigame through cc_lifeskill, skipped cleanly when it is absent\r\n- 3D labels and the E prompt built in, so no label resource is needed\r\n- Thai and English text on `Config.Locale`\r\n\r\n### Notes\r\n\r\n- Server side: items verified before payout, distance re-checked when the deal completes rather than only when it starts, one seller per buyer, and no repeat sales to the same buyer",{"slug":23,"version":55,"latest_version":55,"files":100,"options":60},[101],{"path":102,"content":103},"shared\u002Fconfig.lua","Config = {}\n\n-- ===== ทั่วไป \u002F General =====\n\n-- เฟรมเวิร์ก: 'auto' ใช้ ESX ถ้ามี es_extended ไม่มีก็ standalone · 'esx' · 'standalone'\n-- Framework: 'auto' uses ESX when es_extended is there, otherwise standalone · 'esx' · 'standalone'\nConfig.Framework = 'auto'\n\n-- ภาษาของข้อความทั้งหมด ('th' หรือ 'en')\n-- Language of all text ('th' or 'en')\nConfig.Locale = 'th'\n\n-- เปิดข้อความดีบัก (true\u002Ffalse) \u002F Print debug messages (true\u002Ffalse)\nConfig.Debug = false\n\n-- ===== เงื่อนไขและการแจ้งเตือน \u002F Requirements and alerts =====\n\n-- จำนวนคนออนไลน์ขั้นต่ำต่ออาชีพ (นับเฉพาะคนที่เข้าเวร) ก่อนขายได้ เช่น { police = 2 } · {} = ไม่เช็ก\n-- standalone ไม่มีอาชีพ: ต้องเขียน Framework.GetJob ใน addons\u002Fframework\u002Fserver.lua เอง ไม่งั้นขายไม่ได้เลย\n-- อาชีพที่ห้ามขายตั้งแยกต่อกลุ่มที่ blockedJobs ด้านล่าง\n-- Minimum on-duty players per job before anyone can sell, e.g. { police = 2 } · {} = no check\n-- Standalone has no jobs: fill Framework.GetJob in addons\u002Fframework\u002Fserver.lua, otherwise nobody can sell\n-- Jobs that cannot sell are set per group in blockedJobs below\nConfig.RequiredJobs = {}\n\n-- แจ้งอาชีพเหล่านี้เมื่อขายสำเร็จ: chance 0–1 ต่อการขาย, delay = หน่วง ms, blipTime = วงบนแผนที่อยู่กี่วินาที\n-- radius = ขนาดวง, colour = สีวง (id สี blip ของ GTA เช่น 1 แดง 47 ส้ม 5 เหลือง) วงกระพริบจนหมดเวลา · jobs = {} = ไม่แจ้ง\n-- Alert these jobs after a sale: chance 0–1 per sale, delay in ms, blipTime = seconds the map circle stays\n-- radius = circle size, colour = GTA blip colour id (1 red, 47 orange, 5 yellow); the circle flashes until it expires · jobs = {} = off\nConfig.Alert = { jobs = {}, chance = 0.3, delay = 10000, blipTime = 60, radius = 80.0, colour = 47 }\n\n-- แอดมินเห็น blip ทุกจุดขาย (รวมจุดว่าง) ตอนเข้าเกม ผู้เล่นทั่วไปไม่เห็น · มี x3d_adminpanel ก็เปิด\u002Fปิดจากแผงได้ไม่ต้องตั้งตรงนี้\n-- Admins see every buyer spot (empty ones too) on join, players never do · with x3d_adminpanel you can toggle it there instead\nConfig.AdminBlips = false\n\n-- ===== ระยะ \u002F Distances =====\n\n-- ระยะที่กด E ได้ (เมตร) \u002F How close you must be to press E (metres)\nConfig.InteractDistance = 2.5\n\n-- ระยะที่ ped ผู้รับซื้อถูกสร้าง (เมตร) \u002F Distance at which a buyer ped spawns (metres)\nConfig.StreamDistance   = 60.0\n\n-- ===== กลุ่มผู้รับซื้อ \u002F Buyer groups =====\n-- แต่ละกลุ่มมีของ ราคา จุด และ blip ของตัวเอง เพิ่มกลุ่มใหม่ได้โดยคัดลอกบล็อก street\n-- Each group has its own items, prices, spots and blip; copy the street block to add a group\n\nConfig.Groups = {\n    street = {\n        label        = 'ผู้รับซื้อลับ',                 -- ชื่อไทย \u002F Thai name\n        labelEn      = 'Shady Buyer',                    -- ชื่ออังกฤษ \u002F English name\n        activeCount  = 8,                                -- จำนวนที่โผล่พร้อมกัน (0 = ใช้ schedule) \u002F buyers live at once (0 = use schedule)\n        lifeTime     = { min = 480, max = 840 },         -- อยู่กี่วินาทีต่อคน \u002F seconds each buyer stays\n        respawnDelay = { min = 240000, max = 420000 },   -- หายไปแล้วกี่ ms ถึงมีคนใหม่ \u002F ms before a replacement appears\n        exclusive    = false,                            -- true = ขายได้ทีละคน \u002F true = one seller at a time\n        blockedJobs  = {},   -- อาชีพที่ห้ามขาย เช่น { police = true } \u002F jobs that cannot sell, e.g. { police = true }\n        progressMs   = 8000,                             -- ขายนานกี่ ms \u002F sale duration in ms\n        -- minigame ต่อรอง (ทางเลือก): เปิดใช้ ox_lib skillCheck ก็ต่อเมื่อ ox_lib start ไว้ ไม่มีก็ข้ามไปเลย\n        -- Haggling minigame (optional): ox_lib skill check, only when ox_lib is started, skipped otherwise\n        minigame     = { enabled = true, rounds = 1, difficulty = 'medium' },\n        -- หน้าตาและท่ายืนของ ped (สุ่มหนึ่งอย่าง) \u002F Ped models and idle scenarios (one is picked at random)\n        models       = { 'a_f_m_skidrow_01', 'a_f_y_juggalo_01', 'a_m_y_breakdance_01', 'a_m_y_gay_02', 'a_m_m_skidrow_01', 'g_m_y_mexgoon_01' },\n        scenarios    = { 'WORLD_HUMAN_DRUG_DEALER', 'WORLD_HUMAN_DRUG_DEALER_HARD', 'WORLD_HUMAN_STAND_MOBILE', 'WORLD_HUMAN_SMOKING', 'WORLD_HUMAN_HANG_OUT_STREET' },\n        -- flash = กระพริบบนแผนที่ · shortRange = false เห็นได้ทั้งแผนที่ \u002F flash = blink on the map · shortRange = false shows it map-wide\n        blip         = { sprite = 51, scale = 0.55, name = 'ผู้รับซื้อลับ', flash = false },\n        -- ของที่รับซื้อและราคา (สุ่ม min-max) เพิ่มแถวได้ เช่น { items = { { name = 'ชื่อไอเทม', count = 1 } }, pay = { min = 100, max = 200 } }\n        -- What they buy and the pay (random min-max); add rows, e.g. { items = { { name = 'item_name', count = 1 } }, pay = { min = 100, max = 200 } }\n        offers = {\n            { items = { { name = 'drug_weed_pack', count = 1 } }, pay = { min = 380,  max = 460  } },\n            { items = { { name = 'drug_meth_cut',  count = 1 } }, pay = { min = 460,  max = 560  } },\n            { items = { { name = 'drug_cocaine',   count = 1 } }, pay = { min = 660,  max = 800  } },\n            { items = { { name = 'drug_meth',      count = 1 } }, pay = { min = 720,  max = 880  } },\n            { items = { { name = 'drug_heroin',    count = 1 } }, pay = { min = 1000, max = 1250 } },\n        },\n        -- จุดที่ผู้รับซื้อโผล่ vector4(x, y, z, heading) เพิ่ม\u002Fลบได้ (แอดมินแก้จากแผงได้ด้วย)\n        -- Where buyers appear, vector4(x, y, z, heading); add or remove freely (admins can also edit from the panel)\n        spots = {\n            vector4(299.27, -776.49, 29.31, 247.43),\n            vector4(-61.78, -93.86, 57.77, 122.4),\n            vector4(-1048.91, -1619.73, 4.39, 128.71),\n            vector4(-262.04, -1357.04, 31.31, 89.59),\n            vector4(263.89, -2085.06, 16.9, 137.76),\n            vector4(905.05, -2312.41, 30.56, 268.19),\n            vector4(947.21, -1778.26, 31.22, 312.16),\n            vector4(9.15, -776.04, 31.72, 334.62),\n            vector4(441.86, -684.05, 28.74, 0.2),\n            vector4(-648.51, -164.24, 37.73, 300.29),\n            vector4(650.75, -1718.38, 29.3, 175.24),\n            vector4(-1742.85, -401.82, 44.3, 251.18),\n            vector4(-1408.02, -938.48, 10.93, 301.43),\n            vector4(-1279.17, -1210.37, 4.73, 109.17),\n            vector4(-1224.36, -1356.8, 4.02, 160.66),\n            vector4(-1303.75, -919.4, 11.27, 287.49),\n            vector4(-1538.14, -655.2, 28.8, 183.91),\n            vector4(-1281.3, -563.38, 31.71, 310.94),\n            vector4(-1339.98, -424.14, 35.0, 124.31),\n            vector4(-1129.74, -277.5, 37.78, 128.89),\n            vector4(-1047.94, -384.06, 37.78, 27.81),\n            vector4(-1399.31, -36.71, 52.59, 138.27),\n            vector4(-996.1, 42.44, 51.4, 299.29),\n            vector4(-528.77, 269.86, 82.96, 144.26),\n            vector4(-210.68, 245.78, 91.98, 15.02),\n            vector4(41.52, 307.51, 110.95, 245.7),\n            vector4(596.56, 225.09, 102.67, 349.78),\n            vector4(-3.55, 8.72, 70.96, 331.17),\n            vector4(1.57, -301.57, 46.24, 272.48),\n            vector4(107.65, -511.04, 43.16, 250.58),\n            vector4(491.01, -1190.37, 29.29, 267.83),\n            vector4(811.64, -1289.63, 26.29, 88.57),\n            vector4(915.98, -1450.32, 31.16, 358.68),\n            vector4(1374.38, -1526.51, 56.69, 193.33),\n            vector4(810.59, -1963.81, 29.25, 80.34),\n            vector4(1044.35, -2425.48, 28.96, 82.24),\n            vector4(432.22, -1811.23, 28.15, 319.82),\n            vector4(619.81, -2068.68, 29.31, 353.01),\n            vector4(525.28, -2521.28, 5.78, 147.59),\n            vector4(177.56, -2584.53, 6.55, 357.32),\n            vector4(115.69, -1949.05, 20.67, 53.4),\n            vector4(-27.17, -1381.43, 29.3, 348.54),\n            vector4(-619.89, -645.35, 31.64, 141.22),\n            vector4(-1305.91, -1113.94, 6.76, 71.44),\n        },\n    },\n\n    -- ผู้รับซื้อรายใหญ่: โผล่ตามรอบสุ่ม ขายทีละ 10 ชิ้น ใช้เวลาขายนาน · ลบทั้งก้อนนี้ = ไม่มี event\n    -- Big buyer: appears on a random timer, buys 10 units per deal, each sale takes minutes · delete this block = no events\n    event = {\n        label        = 'ผู้รับซื้อรายใหญ่',              -- ชื่อไทย \u002F Thai name\n        labelEn      = 'Big Buyer',                      -- ชื่ออังกฤษ \u002F English name\n        activeCount  = 0,                                -- ไม่ยืนประจำ โผล่ตาม schedule \u002F not always on, follows schedule\n        -- every = สุ่มทุกกี่วินาที · count = โผล่ครั้งละกี่ตัว · announce = แจ้งทุกคนตอนโผล่ (แอดมินกดเริ่มเองได้จากแผง x3d)\n        -- every = seconds between events · count = buyers per event · announce = tell everyone (admins can also start one from the x3d panel)\n        schedule     = { every = { min = 1800, max = 3600 }, count = 1, announce = true },\n        lifeTime     = { min = 900, max = 1200 },        -- อยู่กี่วินาทีต่อครั้ง \u002F seconds each event buyer stays\n        spotsFrom    = 'street',                         -- สุ่มจุดจากจุดขายปกติ \u002F picks from the street spots\n        offersFrom   = 'street',                         -- ของ\u002Fราคาจากตารางปกติ \u002F items and prices from the street table\n        quantity     = 10,                               -- ขายทีละกี่ชิ้น (ต้องมีครบ) \u002F units per deal (must carry them all)\n        payMultiplier = 1.2,                             -- ราคา = ราคาปกติ × quantity × ตัวนี้ \u002F pay = normal price × quantity × this\n        progressMs   = 180000,                           -- ขายนานกี่ ms (3 นาที) \u002F sale duration in ms (3 min)\n        exclusive    = false,                            -- false = ทุกคนขายได้คนละครั้ง \u002F false = everyone may sell once\n        blockedJobs  = {},                               -- อาชีพที่ห้ามขาย เช่น { police = true } \u002F jobs that cannot sell, e.g. { police = true }\n        minigame     = { enabled = true, rounds = 2, difficulty = 'medium' }, -- มินิเกมต่อรอง \u002F haggling minigame\n        models       = { 'g_m_m_armboss_01', 'g_m_m_chiboss_01', 'g_m_y_lost_01' },   -- หน้าตา ped \u002F ped models\n        scenarios    = { 'WORLD_HUMAN_DRUG_DEALER_HARD', 'WORLD_HUMAN_STAND_IMPATIENT' }, -- ท่ายืน \u002F idle scenarios\n        -- ring = วงรอบที่หายใจเข้าออก · pulse = กระพริบแบบ GTA ทุกกี่ ms (ลบออก = ปิด)\n        -- ring = a breathing circle around it · pulse = the GTA pulse every N ms (remove = off)\n        blip         = { sprite = 51, scale = 0.9, colour = 5, name = 'ผู้รับซื้อรายใหญ่', flash = true, shortRange = false,\n                         ring = { radius = 60.0, colour = 5, alpha = 110 }, pulse = 4000 },\n    },\n}\n",1792316315732]