[{"data":1,"prerenderedAt":104},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-th-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 (งานขายยา)","งานขายของผิดกฎหมาย ผู้รับซื้อลับสุ่มโผล่ตามแมพ มีเวลาจำกัด จ่ายเป็นเงินดำ มีระบบจุด10 ใช้ได้ทั้ง ESX และ 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,"งานขายของผิดกฎหมายแบบไม่ต้องยืนรอที่เดิมทุกวัน — **ผู้รับซื้อลับสุ่มโผล่ตามจุดในแมพ** มีเวลาจำกัดต่อคน หมดเวลาก็หายไป แล้วมีคนใหม่โผล่ที่อื่น\n\nมีระบบ **จุด10** (จุดขายของลับ) ในตัว: ตั้งจุดโผล่ได้หลายกลุ่ม กำหนดของที่รับซื้อ ราคา เวลาที่อยู่ จำนวนคนที่โผล่พร้อมกัน มินิเกม และอาชีพที่ห้ามขายได้เอง จ่ายเป็น **เงินดำ** ต่อเข้าวงจรฟอกเงินของเซิร์ฟได้เลย ใช้ได้ทั้ง **ESX และ standalone**\n\n---\n\n## ฟีเจอร์\n\n- [+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\n- [+] ผู้รับซื้อลับสุ่มโผล่ตามจุดในแมพ ขึ้น blip มีเวลาจำกัดต่อคน\n- [+] ตั้งจุดโผล่ได้หลายกลุ่ม และจำนวนคนที่โผล่พร้อมกัน\n- [+] ตั้งของที่รับซื้อ และราคาแบบสุ่ม min-max ต่อไอเทม\n- [+] จ่ายเป็นเงินแดง (black_money) ต่อเข้าวงจรฟอกเงินของเซิร์ฟได้\n- [+] ต้องมีตำรวจเข้าเวรขั้นต่ำก่อนถึงขายได้ และห้ามบางอาชีพขาย\n- [+] แจ้งตำรวจหลังขายตามโอกาสที่ตั้ง พร้อมวงสีแดงบนแผนที่\n- [+] มินิเกมต่อรองก่อนขาย ปรับรอบและความยาก ปิดได้\n- [+] ผู้รับซื้อรายใหญ่โผล่ตามรอบ ประกาศทั้งเมือง จ่ายราคา x1.2\n- [+] ขายซ้ำกับคนเดิมไม่ได้ เช็กของจริงและระยะตอนจบดีลที่ฝั่งเซิร์ฟเวอร์\n- [+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\n- [+] แอดมินเพิ่ม ย้าย เปิด\u002Fปิด และลบจุดผู้รับซื้อได้จากแผงแอดมิน\n\n---\n\n## เล่นยังไง\n\n1. ดูแผนที่ว่ามีผู้รับซื้ออยู่ตรงไหน (ขึ้น blip ให้)\n2. เดินไปหา กด **E**\n3. ระบบบอกว่าเขารับซื้ออะไร จำนวนเท่าไหร่ ถ้ามีของก็ขายได้\n4. ส่งของ รับเงินดำ — คุณขายให้ผู้รับซื้อคนนั้นซ้ำไม่ได้แล้ว\n\nแต่ละคนรับซื้อไม่เหมือนกัน และมีนาฬิกานับถอยหลังของตัวเอง ใครไปถึงก่อนได้ก่อน\n\n---\n\n## ผู้รับซื้อรายใหญ่\n\nevent ที่ทำให้ทั้งเมืองออกมาเคลื่อนไหว:\n\n- **โผล่ตามรอบสุ่ม** (ค่าเริ่มต้นทุก 30–60 นาที) พร้อม **ประกาศให้ทุกคนรู้** และ blip กระพริบเห็นได้ทั้งแมพ\n- **รับทีละ 10 ชิ้น** จ่ายราคาปกติ × 1.2\n- **ขายนาน 3 นาทีต่อดีล** ยกเลิกกลางทางได้ ต้องยืนเฝ้าให้รอด\n- ทุกคนขายได้คนละครั้งต่อรอบ\n- แอดมินกดเริ่มเองได้จากแผง [X3D Admin Panel](\u002Fth\u002Fproducts\u002Fx3d-adminpanel\u002F) หรือ `exports.x3d_selldrug:StartEvent(group)`\n\nไม่อยากได้ event ลบกลุ่ม `event` ใน config ออกทั้งก้อน\n\n---\n\n## ตำรวจกับแอดมิน\n\n- **ต้องมีตำรวจเข้าเวรก่อนขาย** `Config.RequiredJobs = { police = 2 }`\n- **แจ้งตำรวจ** `Config.Alert` หลังขายสำเร็จตามโอกาสที่ตั้ง (ค่าเริ่มต้น 30%) อาชีพที่เลือกได้ข้อความและวงสีแดงบนแผนที่ชั่วคราว\n- **ห้ามบางอาชีพขาย** ตั้งแยกต่อกลุ่มที่ `blockedJobs`\n- **แอดมินเห็นทุกจุดขายบนแผนที่** รวมจุดว่าง (เขียว = มีผู้รับซื้อ · จาง = ว่าง · แดงจาง = ปิดจุด) เปิดด้วย `Config.AdminBlips = true` หรือกดจากหน้า \"ขายของลับ\" ในแผงแอดมิน ผู้เล่นทั่วไปไม่เห็น\n\n- **ตัวแก้จุดขายในแผงแอดมิน**: เพิ่มจุดตรงที่ยืนอยู่ วาร์ปไปที่จุด เปิด\u002Fปิดจุด ย้ายผู้รับซื้อที่ยืนอยู่ตรงนั้น และกดค้างเพื่อลบ ไม่ต้องไล่แก้ config\n\n---\n\n## ปลอดภัยตั้งแต่ต้น\n\nทุกอย่างที่สำคัญตรวจฝั่งเซิร์ฟเวอร์:\n\n- **ของจริงถึงจะขายได้** ไม่ได้เชื่อที่ client บอก\n- **เช็กระยะตอนจบ ไม่ใช่แค่ตอนเริ่ม** เริ่มขายแล้ววิ่งหนี ไม่ได้เงิน\n- **ขายซ้ำกับคนเดิมไม่ได้** จำไว้ต่อผู้เล่น\n- **เวลาต้องผ่านจริง** client บอกว่าเสร็จแล้วไม่พอ\n- **กันแทรกดีลได้** ตั้ง `exclusive = true` ผู้รับซื้อหนึ่งคนขายได้ทีละคน\n\n---\n\n## ปรับได้ทั้งหมด\n\nแยกเป็นกลุ่มผู้รับซื้อ แต่ละกลุ่มตั้งจุดโผล่ ของที่รับซื้อ ราคา เวลาที่อยู่ จำนวนคนที่โผล่พร้อมกัน เวลาขาย มินิเกม blip และอาชีพที่ห้ามขาย — อยู่ใน `shared\u002Fconfig.lua` ทั้งหมด\n\nข้อความไทย\u002Fอังกฤษ สลับที่ `Config.Locale`\n\n---\n\n## ต่อกับของที่มีอยู่\n\nตรวจให้เอง ไม่มีก็ทำงานครบ:\n\n- **มินิเกมต่อรอง** — มี ox_lib ก็เล่น skillCheck ก่อนขาย ไม่ผ่านก็ขายไม่ได้ ไม่มีก็ข้ามไป\n- **แถบความคืบหน้า** และ **แจ้งเตือน** — ใช้ ox_lib \u002F esx_notify ถ้ามี ไม่มีก็ใช้ของในตัว\n- **ป้าย 3D กับปุ่ม E** — มีในตัว ไม่ต้องลง resource ป้ายไหน\n- **`Hooks.OnSold`** — ต่อเลเวล เควส หรือ log หลังขายแต่ละครั้ง\n- **[X3D Map Events](\u002Fth\u002Fproducts\u002Fx3d-mapevents\u002F)** (ฟรี) — มีในเซิร์ฟ อีเวนต์ผู้รับซื้อรายใหญ่จะขึ้นที่แผงบนแผนที่ pause menu พร้อมเวลานับถอยหลัง ผู้เล่นกดตั้งจุดนำทางได้ ไม่มีก็ไม่มีอะไรเปลี่ยน\n- **`Hooks.OnEventBuyer` \u002F `Hooks.OnEventBuyerGone`** — ต่อประกาศหรือ log ตอนผู้รับซื้อรายใหญ่โผล่และหายไป\n","## การติดตั้ง\n\n1. วางโฟลเดอร์ `x3d_selldrug` ลง `resources\u002F`\n2. เพิ่มใน `server.cfg`\n\n```\nensure x3d_selldrug\n```\n\nจบ ไม่ต้องรัน SQL\n\n## ตั้งค่าหลัก (`shared\u002Fconfig.lua`)\n\n| ค่า | ทำอะไร |\n|---|---|\n| `Config.Framework` | `'auto'` ใช้ ESX ถ้ามี ไม่มีก็ standalone · `'esx'` · `'standalone'` |\n| `Config.Locale` | `'th'` หรือ `'en'` |\n| `Config.RequiredJobs` | คนเข้าเวรขั้นต่ำต่ออาชีพก่อนขาย เช่น `{ police = 2 }` · `{}` = ไม่เช็ก |\n| `Config.Alert` | แจ้งอาชีพใน `jobs` หลังขายสำเร็จ · `chance` 0–1 ต่อการขาย · `delay` หน่วง ms · `blipTime` วงบนแผนที่อยู่กี่วินาที · `jobs = {}` = ไม่แจ้ง |\n| `Config.AdminBlips` | `true` = แอดมินเห็น blip ทุกจุดขาย (รวมจุดว่าง) ตอนเข้าเกม (มี x3d_adminpanel กดเปิด\u002Fปิดจากแผงได้) |\n| `Config.InteractDistance` | ระยะกด E |\n| `Config.StreamDistance` | ระยะที่ ped ผู้รับซื้อถูกสร้าง |\n\n```lua\nConfig.RequiredJobs = { police = 2 }\nConfig.Alert = { jobs = { 'police' }, chance = 0.3, delay = 10000, blipTime = 60 }\n```\n\n### standalone\n\nไม่มี ESX ระบบใช้ ox_inventory เก็บไอเทมและเงิน (ถ้ามี) แอดมินใช้ ACE: `add_ace group.admin x3d_selldrug.admin allow`\n\nstandalone ไม่มีระบบอาชีพ ถ้าตั้ง `Config.RequiredJobs` ต้องเขียน `Framework.GetJob` ใน `addons\u002Fframework\u002Fserver.lua` เอง ไม่งั้นขายไม่ได้เลย\n\n## กลุ่มผู้รับซื้อ (`Config.Groups`)\n\nแต่ละกลุ่มมีของ ราคา จุด และ blip ของตัวเอง ค่าเริ่มต้นมีสองกลุ่ม: `street` (ผู้รับซื้อลับ) กับ `event` (ผู้รับซื้อรายใหญ่)\n\n| ค่า | ทำอะไร |\n|---|---|\n| `label` \u002F `labelEn` | ชื่อที่แสดง |\n| `activeCount` | จำนวนที่โผล่พร้อมกัน (`0` = ไม่ยืนประจำ ใช้ `schedule`) |\n| `lifeTime` | อยู่กี่วินาทีต่อคน `{ min, max }` |\n| `respawnDelay` | หายไปแล้วกี่ ms ถึงมีคนใหม่ `{ min, max }` |\n| `exclusive` | `true` = ผู้รับซื้อหนึ่งคนขายได้ทีละคน · `false` = ทุกคนขายได้คนละครั้ง |\n| `blockedJobs` | อาชีพที่ห้ามขาย เช่น `{ police = true }` |\n| `progressMs` | ขายนานกี่ ms |\n| `minigame` | `{ enabled, rounds, difficulty }` skillCheck ของ ox_lib ก่อนขาย (ไม่มี ox_lib = ข้าม) |\n| `models` \u002F `scenarios` | หน้าตาและท่าของ ped |\n| `blip` | `sprite` `scale` `name` `colour` · `flash` = กระพริบ · `shortRange = false` = เห็นได้ทั้งแมพ |\n| `offers` | ของที่รับซื้อกับราคา `{ items = { { name, count } }, pay = { min, max } }` |\n| `spots` | พิกัดที่ผู้รับซื้อโผล่ `vector4(x, y, z, heading)` |\n| `spotsFrom` \u002F `offersFrom` | ใช้จุดหรือตารางราคาของกลุ่มอื่น เช่น `'street'` |\n\n### ผู้รับซื้อรายใหญ่ (event)\n\n| ค่า | ทำอะไร |\n|---|---|\n| `schedule` | `{ every = { min, max } (วินาที), count = จำนวนต่อรอบ, announce = ประกาศทุกคน }` |\n| `quantity` | ขายทีละกี่ชิ้น (ต้องมีครบ) ค่าเริ่มต้น 10 |\n| `payMultiplier` | ราคา = ราคาปกติ × `quantity` × ตัวนี้ ค่าเริ่มต้น 1.2 |\n| `progressMs` | ค่าเริ่มต้น 180000 (3 นาที) ยกเลิกกลางทางได้ |\n\nลบกลุ่ม `event` ทั้งก้อน = ไม่มี event · แอดมินเริ่มเองได้จากแผงหรือ `exports.x3d_selldrug:StartEvent('event')`\n\n## ไอเทม\n\nของที่ขายได้ต้องมีอยู่ในตารางไอเทมของเซิร์ฟอยู่แล้ว สคริปต์นี้ไม่ได้เพิ่มไอเทมให้\n\n## จุดต่อ (`addons\u002Fhooks\u002Fserver.lua`)\n\n```lua\n-- เรียกหลังขายสำเร็จ (จ่ายเงินดำแล้ว)\n-- sale = { group = 'street', pay = 720, items = { { name = 'drug_meth', count = 1 } } }\nHooks.OnSold = function(src, sale) end\n```\n\n`Hooks.OnEventBuyer` กับ `Hooks.OnEventBuyerGone` ถูกเรียกตอนผู้รับซื้อรายใหญ่ของอีเวนต์โผล่และตอนหายไป — เอาไปต่อประกาศหรือ log ได้\n\n## แผงแอดมิน\n\nมี [X3D Admin Panel](\u002Fth\u002Fproducts\u002Fx3d-adminpanel\u002F) จะมีหน้า \"ขายของลับ\" ให้เอง: รายการจุดผู้รับซื้อทั้งหมด ปุ่มเปิด\u002Fปิด blip ทุกจุด (เห็นคนเดียว) ปุ่มเริ่ม event ตอนนี้ และตัวแก้จุดขาย (เพิ่มจุดตรงที่ยืน วาร์ปไปที่จุด เปิด\u002Fปิดจุด ย้ายผู้รับซื้อ กดค้างเพื่อลบ) ไม่มีแผงก็ทำงานปกติ\n\nฟังก์ชัน `SpotAdmin.*` ฝั่งเซิร์ฟเวอร์ทำได้ทุกอย่างที่ตัวแก้จุดขายทำ แผงแอดมินที่คุณเขียนเองจึงคุมจุดได้เหมือนกัน (net event `x3d_selldrug:admin*` เรียกฟังก์ชันพวกนี้อยู่)\n\n## ต่อกับระบบฟอกเงิน\n\nจ่ายเป็น `black_money` ตรง ๆ ระบบฟอกเงินอะไรก็รับต่อได้\n\n## ปัญหาที่เจอบ่อย\n\n**ไม่เห็นผู้รับซื้อเลย** — เช็กว่ากลุ่มมี `spots` และ `activeCount` ไม่ใช่ 0\n\n**กด E แล้วไม่มีอะไรเกิดขึ้น** — ยืนใกล้กว่า `Config.InteractDistance` และต้องไม่ได้อยู่ในรถ\n\n**ขึ้นว่าตำรวจไม่พอ** — `Config.RequiredJobs` นับเฉพาะคนที่เข้าเวร ตั้ง `{}` ถ้าไม่ต้องการ\n\n**เจรจาไม่สำเร็จ** — เล่น skillCheck ของ ox_lib ไม่ผ่าน ปิดได้ที่ `minigame.enabled = false`\n\n**ขายแล้วไม่ได้เงิน** — ดูคอนโซลฝั่งเซิร์ฟเวอร์ ปกติคือของไม่พอ หรือเดินออกนอกระยะระหว่างดีล\n","งานขายยา FiveM ฟรี — ผู้รับซื้อสุ่มตามแมพ มีระบบจุด10","งานขายยา FiveM ฟรี ผู้รับซื้อลับสุ่มโผล่ตามแมพ มีเวลาจำกัด จ่ายเงินดำ มีระบบจุด10 (จุดขายของลับ) ในตัว ใช้ได้ทั้ง ESX และ standalone",[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",1792316308225]