[{"data":1,"prerenderedAt":96},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-th-x3d-music":21,"config-public-x3d-music":91},{"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":32,"latest_version":52,"latest_released_at":53,"published_at":54,"has_docs":55,"config":56,"rent_price_satang":57,"description_md":58,"docs_md":59,"seo_title":60,"seo_description":61,"media":62,"versions":76},"c72d91e0-6bcd-4fae-bde9-0e140e02b0cb","x3d-music","X3D Music (ลำโพง)","ลำโพงบูมบ็อกซ์ฟรีสำหรับ ESX: วางบนพื้นหรือติดบนรถ เปิดเพลง YouTube คิวเพลงร่วมกัน เสียงเบาลงตามระยะ ลำโพงยังอยู่หลังรีสตาร์ท",0,"none","public\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg",[31],"entertainment",[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"boombox","ลำโพง","ลำโพงเปิดเพลง","เปิดเพลง youtube","music script","fivem music","xsound","youtube","คิวเพลง","ติดบนรถ","esx","ฟรี","free","ลำโพงติดรถ","เปิดเพลงในรถ","ฟังเพลงด้วยกัน","เพลงร่วมกัน","ลำโพงวางพื้น","จำกัดลำโพง","1.1.4","2026-10-12T17:17:14.482272Z","2026-09-26T14:56:09.091062Z",true,"public",null,"ลำโพงบูมบ็อกซ์สำหรับ ESX ใช้ฟรี วางลำโพงบนพื้นหรือติดบนรถ แล้วเปิดเพลง YouTube ให้คนรอบข้างฟังด้วยกัน\n\n---\n\n## ฟีเจอร์\n\n- [+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\n- [+] วางลำโพงบนพื้นหรือติดบนรถ เห็นเงาก่อนวาง หมุนด้วย Scroll\n- [+] ค้นเพลง YouTube ด้วยชื่อหรือวางลิงก์ API key อยู่ฝั่งเซิร์ฟเวอร์\n- [+] คิวเพลงร่วมกัน ตั้งความยาวคิว หรือให้เจ้าของเพิ่มคนเดียวได้\n- [+] เจ้าของคุมเล่น หยุด ข้าม ล้างคิว ตั้งระยะเสียง 10\u002F20\u002F30 เมตรได้\n- [+] เสียงเบาลงตามระยะ ปรับความเร็วที่เสียงลดได้\n- [+] ตั้งลิมิตลำโพงต่อคนและทั้งเซิร์ฟ\n- [+] ตั้งลิมิตความยาวเพลง ไลฟ์สดเพิ่มไม่ได้\n- [+] ลำโพงบนพื้นไม่หายตอนรีสตาร์ท ลำโพงบนรถคืนเป็นไอเทมเมื่อรถหาย\n- [+] แอดมินปิดเพลงทุกลำโพงหรือรายตัวด้วย musicstop\n- [+] ตั้งชื่อไอเทมและโมเดลลำโพงเองได้ ปิดการติดบนรถได้\n- [+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\n\n---\n\n## มีอะไรบ้าง\n\n- **วางบนพื้นหรือติดบนรถ**: ใช้ไอเทม `boombox` เห็นเงาลำโพงก่อนวาง หมุนด้วย Scroll เล็งที่รถเพื่อติดบนรถ\n- **ค้นหาเพลงจาก YouTube**: ค้นด้วยชื่อหรือวางลิงก์ API key อยู่ฝั่งเซิร์ฟเวอร์ ผู้เล่นไม่เห็น\n- **คิวเพลงร่วมกัน**: ทุกคนในระยะเพิ่มเพลงได้ สูงสุด 25 เพลง เห็นว่าใครเป็นคนเพิ่ม\n- **เจ้าของคุม**: เล่น หยุด ข้าม ล้างคิว ปรับเสียง ระยะ 10\u002F20\u002F30 เมตร และเก็บลำโพงคืน\n- **เสียงตามระยะ**: เดินออกห่างเสียงเบาลง ได้ยินพร้อมกันสูงสุด 3 ตัว คนที่เพิ่งเดินมาได้ยินเพลงต่อจากจุดเดียวกัน\n- **ไม่หายตอนรีสตาร์ท**: ลำโพงบนพื้นเก็บในฐานข้อมูล ลำโพงบนรถคืนเป็นไอเทมเมื่อรถหายไป\n- **จำกัดจำนวน**: ต่อคนและทั้งเซิร์ฟ แอดมินปิดเพลงด้วย `musicstop`\n- **ไทย \u002F อังกฤษ**\n\n---\n\n## แก้ให้เข้ากับเซิร์ฟ\n\n| ไฟล์ | หน้าที่ |\n|---|---|\n| `addons\u002Fitems\u002Fserver.lua` | คืนลำโพงให้ผู้เล่น (ต่อกับระบบจดหมายของคุณได้) |\n| `addons\u002Fvehiclekey\u002Fserver.lua` | ใครติดลำโพงบนรถได้ (ต่อกับระบบกุญแจรถได้) |\n| `addons\u002Fnotify\u002Fclient.lua` | แจ้งเตือน |\n| `addons\u002Fprompt\u002Fclient.lua` | ป้ายลอยและปุ่ม [E] |\n\n---\n\n## ต้องมี\n\n- `es_extended` (ESX Legacy)\n- `oxmysql`\n- YouTube Data API v3 key (ฟรี จาก Google Cloud)\n","## การติดตั้ง\n\n1. วางโฟลเดอร์ `x3d_music` ไว้ใน `resources\u002F` **ห้ามเปลี่ยนชื่อโฟลเดอร์**\n2. รัน `install.sql` สร้างตาราง `x3d_music_speakers` และเพิ่มไอเทม `boombox` (ถ้าใช้ ox_inventory ให้เพิ่มไอเทมใน `items.lua` แทน ในไฟล์มีตัวอย่าง)\n3. เพิ่มใน `server.cfg`:\n\n```\nset x3d_music_ytkey \"ใส่ YouTube API key ตรงนี้\"\nensure oxmysql\nensure es_extended\nensure x3d_music\n```\n\n> **ใส่ key ใน server.cfg เท่านั้น** ห้ามใส่ใน `config\u002Fconfig.lua` เพราะไฟล์ config ถูกส่งไปที่เครื่องผู้เล่นด้วย\n\n## ขอ YouTube API key (ฟรี)\n\n1. เข้า Google Cloud Console แล้วสร้างโปรเจกต์ใหม่\n2. เมนู APIs & Services > Library ค้นหา **YouTube Data API v3** แล้วกด Enable\n3. เมนู Credentials > Create credentials > API key แล้วคัดลอก key\n4. ใส่ใน `server.cfg` ตามด้านบน แล้วรีสตาร์ท resource\n\nโควต้าฟรีวันละ 10,000 หน่วย การค้นหาหนึ่งครั้งใช้ประมาณ 101 หน่วย พอสำหรับเซิร์ฟทั่วไป ไม่มี key ก็ยังวางลำโพงได้ แต่ค้นหาและเพิ่มเพลงไม่ได้\n\n## ต้องมี\n\n| resource | จำเป็นไหม | ใช้ทำอะไร |\n|---|---|---|\n| `es_extended` | จำเป็น | ESX Legacy |\n| `oxmysql` | จำเป็น | เก็บลำโพงที่วางไว้ |\n\n---\n\n## ตั้งค่าทั้งหมด: `config\u002Fconfig.lua`\n\n| ค่า | ค่าเริ่มต้น | ความหมาย |\n|---|---|---|\n| `Config.Locale` | `'th'` | `'th'` หรือ `'en'` |\n| `Config.Item` \u002F `Config.PropModel` | `'boombox'` \u002F `'prop_boombox_01'` | ไอเทมและโมเดลลำโพง |\n| `Config.SearchMaxResults` | `12` | จำนวนผลค้นหา |\n| `Config.SearchCooldownMs` | `4000` | ค้นหาซ้ำได้ทุกกี่มิลลิวินาที |\n| `Config.MaxTrackSeconds` | `10800` | เพลงยาวสุด (วินาที) ไลฟ์สดเพิ่มไม่ได้ |\n| `Config.InteractDistance` | `2.5` | ระยะกด [E] |\n| `Config.StreamDistance` | `65.0` | ระยะที่เห็นลำโพง |\n| `Config.Ranges` \u002F `Config.DefaultRange` | `{10,20,30}` \u002F `20` | ระยะเสียงที่เลือกได้ |\n| `Config.DefaultVolume` | `60` | เสียงเริ่มต้น |\n| `Config.FalloffPower` | `1.6` | เสียงลดตามระยะเร็วแค่ไหน |\n| `Config.MaxConcurrentAudible` | `3` | ได้ยินพร้อมกันกี่ตัว |\n| `Config.MaxSpeakers` \u002F `Config.MaxPerPlayer` | `40` \u002F `2` | จำนวนลำโพงทั้งเซิร์ฟ \u002F ต่อคน |\n| `Config.QueueMax` | `25` | คิวยาวสุด |\n| `Config.PublicQueue` | `true` | `false` = เจ้าของเพิ่มเพลงได้คนเดียว |\n| `Config.AdminGroups` | admin, superadmin | คุมลำโพงทุกตัว และใช้ `musicstop` |\n| `Config.VehicleMount` | เปิด | ติดลำโพงบนรถ, `maxZOffset` |\n| `Config.OwnedVehiclesTable` | `'owned_vehicles'` | ตารางรถของ ESX ใช้เช็คเจ้าของรถ |\n\n---\n\n## ปรับให้เข้ากับเซิร์ฟ: `addons\u002F`\n\n| ไฟล์ | ฟังก์ชัน | ค่าเริ่มต้น |\n|---|---|---|\n| `addons\u002Fitems\u002Fserver.lua` | `Items.Return(identifier)` | ใส่กระเป๋า ESX ถ้าเต็มหรือออฟไลน์ เก็บไว้คืนตอนเข้าเกมครั้งถัดไป |\n| `addons\u002Fvehiclekey\u002Fserver.lua` | `VehicleKey.Has(source, plate, vehicle)` | นั่งคนขับอยู่ หรือเป็นเจ้าของใน `owned_vehicles` |\n| `addons\u002Fnotify\u002Fclient.lua` | `Notify(message, kind)` | esx_notify, ox_lib, ESX ตามลำดับ |\n| `addons\u002Fprompt\u002Fclient.lua` | `Prompt.Draw3D`, `Prompt.IsInteractPressed` | ป้าย 3D, [E] |\n\n## คำสั่งแอดมิน\n\n| คำสั่ง | ทำอะไร |\n|---|---|\n| `musicstop all` | หยุดเพลงและล้างคิวทุกลำโพง |\n| `musicstop \u003Cid>` | หยุดลำโพงตัวเดียว (id เช่น `g12`, `v3`) |\n\n## ปัญหาที่พบบ่อย\n\n| อาการ | สาเหตุ \u002F วิธีแก้ |\n|---|---|\n| ค้นหาแล้วขึ้นว่าไม่มี key | ยังไม่ได้ `set x3d_music_ytkey` ใน server.cfg หรือใส่หลังบรรทัด `ensure` |\n| เพิ่มเพลงแล้วไม่เข้า | เป็นไลฟ์สด หรือยาวเกิน `Config.MaxTrackSeconds` |\n| ใช้ไอเทมแล้วไม่มีอะไรเกิด | ยังไม่มีไอเทม `boombox` ในฐานข้อมูล หรือวางครบ `Config.MaxPerPlayer` แล้ว |\n| บางเพลงไม่มีเสียง | เจ้าของเพลงปิดการฝังวิดีโอ YouTube ให้ลองเพลงอื่น |\n","สคริปต์ลำโพงเปิดเพลง YouTube FiveM ESX ฟรี","ลำโพงบูมบ็อกซ์ FiveM ESX ฟรี เปิดเพลง YouTube วางบนพื้นหรือติดบนรถ คิวเพลงร่วมกัน เสียงตามระยะ API key อยู่ฝั่งเซิร์ฟเวอร์",[63,66,68,70,72,74],{"kind":64,"url":65},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002Ff997ccd3243c45ce.png",{"kind":64,"url":67},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002F2a3abb94fdeb7fb6.png",{"kind":64,"url":69},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002Fca0ac6e81ba8ea46.png",{"kind":64,"url":71},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002F2e03247b64d9093e.png",{"kind":64,"url":73},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002F1f4be38e3267f411.png",{"kind":64,"url":75},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fmedia\u002Fa312550bd1797eba.png",[77,79,83,87],{"version":52,"released_at":53,"changelog_md":78},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":80,"released_at":81,"changelog_md":82},"1.1.2","2026-10-12T03:23:21.815599Z","### Changed\n\n- UI font is now Kanit (one family for Thai and English), bundled inside the script; the Thai font now really loads in game (FiveM's browser dropped the old font declaration and fell back to a system font)\n- New store images",{"version":84,"released_at":85,"changelog_md":86},"1.1.1","2026-10-11T09:19:43.787308Z","### Changed\n\n- Boombox `[E]` label uses the X3D 3D-text standard (outlined Thai text, amber key line)",{"version":88,"released_at":89,"changelog_md":90},"1.0.0","2026-09-26T14:56:07.80947Z","First public release.\n\n### Added\n\n- `boombox` item: place it on the ground (ghost preview, scroll to rotate) or aim at a vehicle to mount it.\n- YouTube search through the server, so the API key (`x3d_music_ytkey` convar) never reaches players. Search by name or paste a link.\n- Shared queue (anyone in range can add, up to 25), owner controls for play, pause, skip, stop, volume, range 10\u002F20\u002F30 m and pick up.\n- Playback through hidden YouTube players with distance falloff, up to 3 speakers heard at once, and late joiners start at the right point.\n- Ground speakers are saved in `x3d_music_speakers` and come back after a restart; vehicle speakers are returned when the vehicle is gone.\n- Picked-up speakers go back to the bag; if it is full or the owner is offline, they are returned on the next join.\n- Limits per player and per server, `musicstop \u003Cid|all>` for admins, Thai and English.",{"slug":23,"version":52,"latest_version":52,"files":92,"options":57},[93],{"path":94,"content":95},"config\u002Fconfig.lua","Config = {}\n\n-- ===== ระบบ \u002F System =====\n\n-- เฟรมเวิร์ก: 'auto' | 'esx' | 'standalone'\n-- Framework: 'auto' | 'esx' | 'standalone'\nConfig.Framework = 'auto'\n-- ภาษา: 'th' | 'en' \u002F Language: 'th' | 'en'\nConfig.Locale = 'th'\n-- เปิดข้อความ debug · ต้อง false ตอนใช้จริง \u002F Enables debug output · must be false in production\nConfig.Debug = false\n\n-- ===== YouTube =====\n-- ใส่ API key ใน server.cfg (ห้ามใส่ในไฟล์นี้ ไฟล์นี้ถูกส่งไปที่เครื่องผู้เล่น):\n--   set x3d_music_ytkey \"AIza...\"\n-- ไม่มี key = ค้นหา\u002Fเพิ่มเพลงไม่ได้ (ดูวิธีขอ key ฟรีใน docs)\n-- Put the API key in server.cfg (never in this file, it is sent to players):\n--   set x3d_music_ytkey \"AIza...\"\n-- No key = no search or adding songs (see the docs for how to get a free key)\n\n-- จำนวนผลค้นหา \u002F Number of search results\nConfig.SearchMaxResults = 12\n-- เว้นระหว่างค้นหา (ms) \u002F Time between searches (ms)\nConfig.SearchCooldownMs = 4000\n-- ความยาวเพลงสูงสุด (วินาที) · ไลฟ์สดเพิ่มไม่ได้ \u002F Longest song (seconds) · live streams cannot be added\nConfig.MaxTrackSeconds = 3 * 3600\n\n-- ===== ไอเทมและโมเดล \u002F Item and model =====\n\n-- ชื่อไอเทมลำโพง \u002F Speaker item name\nConfig.Item = 'boombox'\n-- โมเดลพร็อพลำโพง \u002F Speaker prop model\nConfig.PropModel = 'prop_boombox_01'\n\n-- ===== เสียง \u002F Sound =====\n\n-- ระยะกด [E] \u002F [E] distance\nConfig.InteractDistance = 2.5\n-- ระยะที่ลำโพงปรากฏ \u002F Distance at which speakers appear\nConfig.StreamDistance = 65.0\n-- ระยะเสียงที่เจ้าของเลือกได้ (เมตร) \u002F Ranges the owner can pick (metres)\nConfig.Ranges = { 10, 20, 30 }\n-- ระยะเสียงเริ่มต้น \u002F Default range\nConfig.DefaultRange = 20\n-- ระดับเสียงเริ่มต้น \u002F Default volume\nConfig.DefaultVolume = 60\n-- เสียงเบาลงตามระยะ ยิ่งมากยิ่งลดเร็ว \u002F Volume falls off with distance, higher = faster drop\nConfig.FalloffPower = 1.6\n-- ได้ยินพร้อมกันได้กี่ตัว (ใกล้สุดก่อน) \u002F Speakers heard at once (nearest first)\nConfig.MaxConcurrentAudible = 3\n\n-- ===== จำกัดจำนวน \u002F Limits =====\n\n-- ลำโพงสูงสุดทั้งเซิร์ฟ \u002F Max speakers on the server\nConfig.MaxSpeakers = 40\n-- ลำโพงสูงสุดต่อคน \u002F Max speakers per player\nConfig.MaxPerPlayer = 2\n-- เพลงสูงสุดในคิว \u002F Max songs in the queue\nConfig.QueueMax = 25\n-- true = ทุกคนที่อยู่ในระยะเพิ่มเพลงเข้าคิวได้ · false = เฉพาะเจ้าของ\n-- true = anyone in range can queue songs · false = owner only\nConfig.PublicQueue = true\n\n-- ===== แอดมิน \u002F Admin =====\n\n-- กลุ่มที่คุมทุกลำโพงและใช้ musicstop ได้ \u002F Groups that control every speaker and can use musicstop\n-- เช่น \u002F e.g. ['moderator'] = true\nConfig.AdminGroups = {\n    ['admin'] = true,\n    ['superadmin'] = true,\n}\n\n-- ===== ติดลำโพงบนรถ \u002F Vehicle mount =====\n\nConfig.VehicleMount = {\n    -- เปิด\u002Fปิดการติดบนรถ \u002F Allow mounting on vehicles\n    enabled = true,\n    -- ความสูงสูงสุดที่ติดได้เหนือจุดกลางรถ (เมตร) \u002F Max height offset above the vehicle origin (metres)\n    maxZOffset = 2.5,\n}\n-- ตารางรถของผู้เล่นสำหรับเช็คเจ้าของ · ใช้เฉพาะโหมด ESX เท่านั้น standalone เช็คแค่คนขับ (ดู addons\u002Fvehiclekey\u002Fserver.lua)\n-- Player vehicle table for the owner check · ESX mode only, standalone only checks the driver (see addons\u002Fvehiclekey\u002Fserver.lua)\nConfig.OwnedVehiclesTable = 'owned_vehicles'\n",1792316307769]