[{"data":1,"prerenderedAt":931},["ShallowReactive",2],{"site":3,"product-th-x3d-mailbox":15,"product-description-html-th-x3d-mailbox":84,"product-gallery-th-x3d-mailbox":104,"products-th":130,"product-mentions-th-x3d-mailbox":908},{"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},{"id":16,"slug":17,"name":18,"summary":19,"price_thb":20,"license_mode":21,"cover_key":22,"cover_url":23,"category_slugs":24,"tags":26,"latest_version":45,"latest_released_at":46,"published_at":47,"has_docs":48,"config":49,"rent_price_satang":50,"description_md":51,"docs_md":52,"seo_title":53,"seo_description":54,"media":55,"versions":69},"83c7d7cb-bde4-45e3-a552-d7e377e4dc5d","x3d-mailbox","X3D Mailbox (โค้ดรับของ)","กล่องจดหมายออฟไลน์พร้อมของแนบ + โค้ดรับของ \u002Fredeem ฟรี ไม่ต้องลงฐานข้อมูล — ส่งไอเทมและเงินให้ผู้เล่นที่ออฟไลน์ แยกแท็บจดหมาย\u002Fตู้นิรภัย ต่อได้ทุกเฟรมเวิร์ก",0,"none","public\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg",[25],"gameplay",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"esx","free","mailbox","redeem code","standalone","กล่องจดหมาย","ของแนบ","ฟรี","รีดีมโค้ด","ส่งของออฟไลน์","โค้ดรับของ","กรอกโค้ดรับของ","จดหมายออฟไลน์","ส่งของให้คนออฟไลน์","โค้ดแจกของ","แจกของกิจกรรม","ของชดเชย","ไม่ต้องใช้ฐานข้อมูล","1.7.2","2026-10-12T17:22:30.892527Z","2026-09-19T19:05:39.140076Z",true,"public",null,"# กล่องจดหมายออฟไลน์ พร้อมของแนบ — ฟรี ไม่ต้องลงฐานข้อมูล\n\nผู้เล่นออกจากเกมไปแล้ว แต่ยังอยากได้ของรางวัลกิจกรรม ของชดเชย หรือข้อความจากแอดมิน — `x3d_mailbox` ให้ส่งจดหมายพร้อมของแนบรอไว้ได้ ผู้เล่นมาเปิดรับเองตอนไหนก็ได้ ผ่านแผง Nuxt 4 UI พร้อมใช้ ต่อกับเฟรมเวิร์กไหนก็ได้ผ่านไฟล์ adapter\n\n---\n\n## ฟีเจอร์\n\n- [+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\n- [+] ส่งจดหมายพร้อมของแนบให้คนออฟไลน์ หรือทุกคนในเมืองได้\n- [+] แนบไอเทมหลายชิ้น และเงินเขียว เงินแดง ธนาคาร ในฉบับเดียว\n- [+] ตั้งวันหมดอายุจดหมายได้ มีเตือนสีแดง ตั้งอายุเริ่มต้นเองได้\n- [+] แยกแท็บจดหมาย \u002F ตู้นิรภัย นับ unread แยกกัน\n- [+] โค้ดรับของ \u002Fredeem จำกัดจำนวนครั้ง คนละครั้ง ตั้งวันหมดอายุได้\n- [+] กระเป๋าเต็มของก็ไม่หาย เพราะไปรออยู่ในจดหมาย\n- [+] กดรับทั้งหมดในคลิกเดียว กันรับซ้ำ กันสแปมรับของ\n- [+] แจ้งจำนวนจดหมายค้างตอนเข้าเกม\n- [+] เก็บเป็นไฟล์ JSON ไม่ต้องลงฐานข้อมูล หรือสลับเป็น MySQL ได้\n- [+] ย้ายมาจากกล่องจดหมายเจ้าอื่นง่าย SendMail รับรูปแบบเดิม\n- [+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\n\n---\n\n## ส่งของแนบได้ทั้งไอเทมและเงิน\n\n`SendMail`\u002F`SendMailAll` แนบไอเทมหลายชิ้น เงินหลายบัญชี (`money`, `bank`, `black_money`, หรือบัญชีอื่นของเฟรมเวิร์กคุณ) ในจดหมายฉบับเดียวได้ ตั้งวันหมดอายุได้ ตั้งชื่อผู้ส่งเองได้\n\nย้ายมาจากกล่องจดหมายตัวอื่น? `SendMail` รับรูปแบบที่กล่องจดหมายเจ้าอื่นใช้ด้วย (`subject`, `cash`\u002F`bank`, `items = {{ name, count }}`, `expiresInDays`) แค่เปลี่ยนชื่อ export ก็ย้ายได้เลย\n\n## ต่อกับเฟรมเวิร์กไหนก็ได้\n\n4 ไฟล์ใน `addons\u002F` — framework, notify, reward, storage — ค่าเริ่มต้นทำงานกับ ESX ได้ทันที ไม่มี ESX ก็ยังทำงานแบบ standalone ได้ (ace เท่านั้น) มีตัวอย่าง QBCore \u002F ox_lib คอมเมนต์ไว้ให้คัดลอกทับ\n\n## ไม่ต้องลงฐานข้อมูล\n\nเก็บข้อมูลเป็นไฟล์ JSON ในตัว resource เอง โหลดครั้งเดียว flush ทุก 30 วินาทีและตอนผู้เล่นออก\u002Fresource หยุดแบบปกติ — เซิร์ฟเวอร์ล่มกลางคันตรง ๆ ไม่ได้เสียของแนบ ความเสี่ยงจริงคือตรงข้าม: จดหมายที่ถูกรับในช่วง flush ล่าสุดที่ยังไม่ทัน (≤30 วินาที) ของแนบจ่ายผ่านเฟรมเวิร์กไปแล้ว แต่ธง `claimed` บนดิสก์ยังตามไม่ทัน รีสตาร์ทแล้วจดหมายฉบับเดิมอาจถูกรับซ้ำจ่ายซ้ำได้ อยากได้ MySQL สำหรับเซิร์ฟเวอร์ใหญ่? ตั้ง `Config.Storage.Driver = 'oxmysql'` ก็เก็บลงตาราง `x3d_mailbox` ให้เอง สร้างตารางอัตโนมัติ ไม่ต้อง include `@oxmysql`\n\n## รับซ้ำไม่ได้ ของพังไม่ล็อกผู้เล่นค้าง\n\nธงรับของถูกเขียนลง storage ก่อนจ่ายของทุกครั้ง event รับซ้ำที่มาพร้อมกันไม่มีทางจ่ายสองรอบ ถ้าไอเทมพิมพ์ผิดจนจ่ายของพัง จดหมายก็ยังถูกทำเครื่องหมายว่ารับแล้ว ไม่ค้างให้กดซ้ำได้ไม่รู้จบ จำนวนของแนบถูกปัดเป็นจำนวนเต็มก่อนเสมอ เพดานจำนวนจดหมายไม่มีวันลบฉบับที่ยังไม่ได้รับของทิ้ง\n\n## โค้ดรับของ (Redeem Code) ในตัว\n\nแจกโค้ดต้อนรับ โค้ดกิจกรรม หรือโค้ดชดเชยได้เลยโดยไม่ต้องลงสคริปอื่น ผู้เล่นพิมพ์ `\u002Fredeem \u003Cโค้ด>` หรือกรอกโค้ดในช่องบนพาเนลกล่องจดหมาย ของรางวัลทั้งไอเทมและเงินจะ**ส่งเป็นจดหมาย**เข้ากล่อง กระเป๋าเต็มก็ไม่หาย และเลือกให้ส่งเข้าแท็บตู้นิรภัยแทนได้\n\n- ตั้งโค้ดถาวรใน `Config.Codes`: จำกัดจำนวนครั้งทั้งเซิร์ฟ (`maxUses`) หนึ่งครั้งต่อคน (`oncePerPlayer`) และวันหมดอายุ (`expires`)\n- สร้างโค้ดชั่วคราวจากสคริปอื่นผ่าน export (`AddCode`, `RemoveCode`, `GetCodeUsage`) เช่นโค้ดไลฟ์สตรีมหรือโค้ดอีเวนต์\n- ยอดใช้โค้ดอยู่ครบหลังรีสตาร์ท และ `\u002Fredeem` ใช้ throttle กับล็อกเดียวกับการกดรับของ สแปมรัว ๆ ก็ได้ของครั้งเดียว\n\n## ต้องมี\n\nไม่มี · ไม่ต้องใช้ฐานข้อมูล ไม่ต้องใช้เฟรมเวิร์ก ไม่มีไลเซนส์ · วางแล้ว `ensure` ได้เลย\n\n**ฟรี** · แก้โค้ดได้ตามใจ · ขอแค่อย่านำไปขายต่อและอย่าอัปโหลดใหม่ในชื่อตัวเอง\n","## การติดตั้ง\n\n1. แตกไฟล์แล้ว **เปลี่ยนชื่อโฟลเดอร์เป็น `x3d_mailbox`** (สคริปต์อื่นเรียก export ด้วยชื่อนี้)\n2. วางใน `resources\u002F`\n3. เพิ่มใน `server.cfg`:\n\n```\nensure x3d_mailbox\n```\n\nเสร็จแล้ว — เก็บข้อมูลเป็นไฟล์ `data\u002Fmailbox.json` ในตัว resource เอง ไม่ต้องรัน SQL ใด ๆ\n\nผู้เล่นเปิดกล่องจดหมายด้วย `\u002Fmailbox` หรือปุ่ม **F7** (`Config.Key`, ว่าง = ไม่ผูกปุ่ม)\n\nในพาเนล: สองแท็บ **จดหมาย** (หมดอายุได้) กับ **ตู้นิรภัย** (ช่องที่สอง แยกนับ unread\u002Fรับทั้งหมดกันคนละกล่อง — ใช้ส่งของจากโค้ดรับของได้), กดรับทีละฉบับหรือ **รับทั้งหมด** ในคลิกเดียว (เฉพาะแท็บที่เปิดอยู่), **ลบ** จดหมายที่รับของแล้ว, นับถอยหลังเวลาหมดอายุ, แลกโค้ดผ่านช่องกรอกในพาเนล และเด้งแจ้งเตือนทันทีถ้าผู้เล่นออนไลน์อยู่ตอนได้จดหมายใหม่\n\nไม่ต้องใช้ฐานข้อมูล ไม่ต้องใช้เฟรมเวิร์ก ไม่มีไลเซนส์ · ทำงานกับ ESX ได้ทันที และทำงานแบบ standalone ได้ถ้าไม่มีเฟรมเวิร์ก\n\n## ต่อกับเฟรมเวิร์ก — 4 adapter ใน `addons\u002F`\n\n| โฟลเดอร์ | หน้าที่ |\n|---|---|\n| `addons\u002Fframework\u002F` | `Framework.IsBusy()` (client) — เปิดกล่องจดหมายตอนนี้ไม่ได้ไหม (ตาย\u002Fpause menu); `Framework.Identifier(src)` \u002F `Framework.IsAdmin(src)` (server) — คีย์ถาวรของผู้เล่นและสิทธิ์แอดมิน |\n| `addons\u002Fnotify\u002F` | `Notify(message, kind)` (client) — การแจ้งเตือน |\n| `addons\u002Freward\u002F` | `Reward.CanCarry` \u002F `Reward.GiveItem` \u002F `Reward.GiveMoney` (server) — ระบบไอเทม\u002Fเงิน |\n| `addons\u002Fstorage\u002F` | `Storage.Get\u002FSet\u002FAll\u002FFlush` (server) — ที่เก็บข้อมูล (ดูหัวข้อถัดไป) |\n\nทุกไฟล์มีค่าเริ่มต้นที่ใช้กับ ESX ได้ทันที (เช็ก `GetResourceState('es_extended')` เอง) และมีตัวอย่าง QBCore \u002F ox_lib คอมเมนต์ไว้ท้ายไฟล์ให้คัดลอกทับ ไม่มีเฟรมเวิร์กเลยก็ยังเปิดกล่องจดหมายได้ แค่รับของแนบไม่ได้จนกว่าจะต่อ `Reward.GiveItem`\u002F`GiveMoney` เอง (มี `print` เตือนใน console ถ้ายังไม่ได้ต่อ)\n\n## เก็บข้อมูล — JSON ค่าเริ่มต้น หรือสลับเป็น MySQL\n\nค่าเริ่มต้น: ไฟล์ JSON เดี่ยว (`Config.Storage.File`, ค่าเริ่มต้น `data\u002Fmailbox.json`) โหลดครั้งเดียวตอน resource เริ่ม เขียนกลับทุก `Config.Storage.FlushSeconds` วินาที (ค่าเริ่มต้น 30) และตอนผู้เล่นออก\u002Fresource หยุด ไฟล์เสียอ่านไม่ได้ → ย้ายไปเก็บเป็น `data\u002Fmailbox.broken.json` แล้วเริ่มไฟล์ใหม่ ไม่ทับทิ้งของเดิม\n\nอยากใช้ MySQL แทน:\n\n1. ตั้ง `Config.Storage.Driver = 'oxmysql'` — ตาราง `x3d_mailbox` ถูกสร้างให้อัตโนมัติ ไม่ต้อง include `@oxmysql`\n2. รีสตาร์ท resource เป็นอันเสร็จ (จะแก้ 4 ฟังก์ชัน `Storage.*` ใน `addons\u002Fstorage\u002Fserver.lua` ก็ต่อเมื่อต้องการที่เก็บข้อมูลแบบเขียนเอง)\n\n## Exports\n\n```lua\n-- target = server id (number) หรือ identifier (string) ก็ได้\nexports['x3d_mailbox']:SendMail(target, {\n    title   = 'ของรางวัลกิจกรรม',\n    body    = 'ขอบคุณที่เข้าร่วม',\n    sender  = 'ทีมงาน',           -- ไม่ใส่ = ใช้ชื่อกล่องจดหมาย\n    box     = 'mail',             -- 'mail' (ค่าเริ่มต้น, หมดอายุได้) หรือ 'safe' (ตู้ที่สอง)\n    expires = os.time() + 86400,  -- unix timestamp, ไม่ใส่ = ไม่หมดอายุ\n    items   = { { item = 'bread', count = 5 } },\n    money   = { { account = 'money', amount = 500 } },\n})\n\nexports['x3d_mailbox']:SendMailAll({ title = 'ประกาศ', body = 'เซิร์ฟเวอร์จะปิดปรับปรุงคืนนี้' })\n\nexports['x3d_mailbox']:GetMails(src)         --> { {id, title, body, sender, at, expires, read, claimed, box, items, money}, ... }\nexports['x3d_mailbox']:GetUnread(src)        --> number (รวมทุกกล่อง)\nexports['x3d_mailbox']:GetUnread(src, 'safe') --> number (เฉพาะตู้นิรภัย — ใส่ 'mail'\u002F'safe' ได้)\n```\n\n`GetMails` กรองจดหมายที่หมดอายุออกให้อัตโนมัติ และแปะ `label` ภาษาไทยจาก `Config.ItemLabels`\u002F`Config.AccountLabels` ลงบนสำเนาที่ส่งออกไป (ไม่แตะของจริงใน storage) `GetUnread` นับเฉพาะฉบับที่ยังไม่อ่านและไม่หมดอายุ คืนกลับเป็นตัวเลขเท่านั้น ไม่มี label\n\n`SendMail` รับรูปแบบที่กล่องจดหมายเจ้าอื่นใช้ด้วย — `subject`, `cash`\u002F`bank`, `items = {{ name, count }}`, `expiresInDays` — ย้ายจากกล่องจดหมายเก่าแค่เปลี่ยนชื่อ export\n\n## Events — server-internal (ไม่ใช่ net event)\n\n```lua\nAddEventHandler('x3d_mailbox:onSend', function(identifier, mail) end)\nAddEventHandler('x3d_mailbox:onClaim', function(src, mail, ok) end)\n```\n\n`x3d_mailbox:onSend` ยิงทันทีที่จดหมายถูกสร้าง (ทั้งจาก export และคำสั่งแอดมิน)\n\n`x3d_mailbox:onClaim` ยิงหลังพยายามจ่ายของเสมอ — **`mail.claimed` เป็น `true` เสมอไม่ว่าจะสำเร็จหรือไม่** (ธงถูกปักไว้ก่อนจ่ายของโดยตั้งใจ กันรับซ้ำ) ต้องเช็กผลจริงที่ arg ที่ 3 — `ok` เป็น `true` เฉพาะตอนของแนบทุกชิ้นจ่ายสำเร็จไม่ throw:\n\n```lua\nAddEventHandler('x3d_mailbox:onClaim', function(src, mail, ok)\n    if not ok then print(('mail %s claimed by %s but a reward failed'):format(mail.id, src)) end\nend)\n```\n\n## คำสั่งแอดมิน\n\n`\u002Fmailsend \u003Cserver id หรือ identifier> \u003Cหัวข้อ> \u003Cเนื้อหา…>` และ `\u002Fmailsendall \u003Cหัวข้อ> \u003Cเนื้อหา…>` — เรียกจาก in-game console ได้เสมอ เรียกจากผู้เล่นในเกมต้องมี ace `Config.AdminAce` (ค่าเริ่มต้น `x3d_mailbox.admin`)\n\n## ความปลอดภัยที่ทดสอบไว้\n\n- **รับซ้ำไม่ได้** — ธง `claimed` ถูกเขียนลง storage ก่อนจ่ายของทุกครั้ง ไม่มี yield คั่นระหว่างเช็กกับปักธง บวกล็อก `InFlight[identifier]` กันสอง event ที่มาพร้อมกัน\n- **ของพังไม่ล็อกผู้เล่นค้าง** — การจ่ายของห่อด้วย `pcall` จดหมายยังถูกทำเครื่องหมายว่ารับแล้วแม้จ่ายพัง (item key พิมพ์ผิดจาก `\u002Fmailsend` ก็ไม่ทำให้ผู้เล่นกดรับซ้ำได้ไม่รู้จบ) — ได้ของบางส่วน (partial delivery) ผู้เล่นเห็นข้อความแจ้งแยกต่างหาก ไม่ถูกเงียบเป็น success และของที่จ่ายไปแล้วไม่ถูกย้อนคืน (กันจ่ายซ้ำ)\n- **จำนวนถูกปัดเป็นจำนวนเต็มก่อนเสมอ** — ของแนบที่เป็นเศษส่วนหรือติดลบเข้าไม่ถึงกระเป๋าผู้เล่น\n- **คีย์ผู้เล่นเป็น identifier ถาวรเสมอ** ไม่ใช่ server id\n- **เพดาน `Config.MaxMails` ไม่ลบจดหมายที่ยังไม่ได้รับของ** — ล้นแล้วทิ้งฉบับที่รับของไปแล้วหรือหมดอายุแล้วก่อน (เก่าสุดก่อน) ฉบับที่แค่อ่านแล้วแต่ยังไม่ได้รับของและยังไม่หมดอายุ ของแนบยังอยู่ ไม่ถูกลบ\n- **รับทั้งหมด = 1 action ไม่ใช่ N** — วนจ่ายด้วยตรรกะเดียวกับกดรับทีละฉบับ เฉพาะกล่องที่เปิดแท็บอยู่ (จดหมาย\u002Fตู้นิรภัยไม่ปนกัน) ฉบับที่กระเป๋าไม่พอถูกข้าม ยังอยู่ให้กดรับใหม่ทีหลัง ไม่มีฉบับไหนถูกจ่ายซ้ำ\n- **ลบได้เฉพาะจดหมายที่ไม่มีของค้างรับ** — ต้องรับของก่อน (หรือไม่มีของแนบตั้งแต่แรก) — ข้อยกเว้นคือจดหมายที่หมดอายุแล้ว ลบได้เสมอเพราะรับของไม่ได้อีกต่อไปแล้ว (ของตกเป็นโมฆะ) — mail id ที่ client ส่งมาถูกมองหาเฉพาะในลิสต์ของผู้เล่นคนนั้นเองเท่านั้น\n- **`\u002Fredeem` และ event รับโค้ดใช้ throttle + ล็อกเดียวกัน** — สแปมคำสั่งรัว ๆ ไม่ทำให้ได้ของหลายรอบ ฟังก์ชันรับโค้ดเองก็ single-flight ต่อคน กันสอง call ชนกันแม้สลับไปใช้ storage แบบ await\n- **คีย์ `Config.Codes` ถูกปรับให้ตรงรูปแบบอัตโนมัติตอนเริ่ม** — พิมพ์คีย์ตัวเล็กหรือผสมมาก็ไม่ตกหล่นเงียบ ๆ (มีคำเตือนใน console ถ้าต้องปรับ)\n- จำกัด 1 ครั้ง\u002Fวินาที\u002Fคนต่อ action (`open`\u002F`read`\u002F`claim`\u002F`claimAll`\u002F`delete`\u002F`redeem` แยก bucket)\n\n```bash\npip install lupa\npython tools\u002Flua-test\u002Fx3d_mailbox_check.py\n```\n\n## ตั้งค่า (`config.lua`)\n\n| ค่า | ทำอะไร |\n|---|---|\n| `Config.Command` \u002F `Config.Key` | คำสั่งเปิด (`\u002Fmailbox`) และปุ่มลัด (`F7`) |\n| `Config.MaxMails` | เก็บต่อคนได้กี่ฉบับ |\n| `Config.AdminAce` | ace ที่ใช้สั่ง `\u002Fmailsend` `\u002Fmailsendall` |\n| `Config.Storage.File` \u002F `.FlushSeconds` | ที่เก็บไฟล์ JSON และความถี่ flush |\n| `Config.ItemLabels` \u002F `Config.AccountLabels` | ชื่อไทยที่โชว์ในกล่องจดหมาย |\n| `Config.ItemImage` | path รูปไอเทมของ inventory ที่เซิร์ฟใช้ (`{item}` = ชื่อไอเทม), ว่าง = ไม่โชว์รูป |\n| `Config.ExpiryWarnHours` | จดหมายเหลือเวลาน้อยกว่านี้ (ชั่วโมง) โชว์นับถอยหลังสีแดงในพาเนล (ค่าเริ่มต้น 24) |\n| `Config.CanCarryExport` | export ของ inventory ที่เซิร์ฟใช้ สำหรับเช็กว่ากระเป๋ารับไหว — ว่าง = ใช้ ESX `canCarryItem` · **ขึ้น \"กระเป๋าเต็ม\" ทั้งที่ยังว่าง ให้ตั้งค่านี้** |\n\n- `Config.DefaultExpireDays` — จดหมายที่ส่งโดยไม่ระบุวันหมดอายุ จะหมดอายุเมื่อครบกี่วันที่ตั้งไว้ (ตู้นิรภัยไม่หมดอายุ)\n- `Config.CheckCarry` — `false` = รับของได้แม้กระเป๋าเต็ม\n- `Config.NotifyUnreadOnJoin` — แจ้งจำนวนจดหมายที่ยังไม่อ่านตอนผู้เล่นโหลดเข้าเกม\n- ชื่อไอเทมที่ไม่มีใน `Config.ItemLabels` จะใช้ชื่อจากเฟรมเวิร์กแทน\n\n## โค้ดรับของ (redeem code)\n\nผู้เล่นพิมพ์ `\u002Fredeem \u003Cโค้ด>` หรือกรอกโค้ดในช่องบนพาเนลกล่องจดหมายเลยก็ได้ แล้วของจะถูก **ส่งเป็นจดหมาย** เข้ากล่อง — กระเป๋าเต็มก็ไม่มีวันหาย เพราะไปรออยู่ในจดหมาย\n\nโค้ดถาวรใส่ใน `config.lua`:\n\n```lua\nConfig.Codes = {\n    WELCOME2026 = {\n        maxUses       = 0,        -- 0 = ไม่จำกัดจำนวนครั้งทั้งเซิร์ฟ\n        oncePerPlayer = true,     -- คนละครั้งเดียว (ค่าเริ่มต้น)\n        title         = 'ยินดีต้อนรับ',\n        items         = { { item = 'bread', count = 2 } },\n        money         = { { account = 'bank', amount = 1000 } },\n    },\n    EVENTONLY = {\n        maxUses = 100,            -- 100 คนแรกเท่านั้น\n        expires = 1790000000,     -- เวลา unix ที่โค้ดหมดอายุ\n        box     = 'safe',         -- ส่งเข้าตู้นิรภัยแทนกล่องจดหมาย (ไม่บังคับ, ค่าเริ่มต้น 'mail')\n        money   = { { account = 'money', amount = 5000 } },\n    },\n}\n```\n\nสร้างโค้ดตอนรัน (หายเมื่อรีสตาร์ท) จาก resource อื่น:\n\n```lua\nexports['x3d_mailbox']:AddCode('EVENT2026', { maxUses = 50, money = { { account = 'bank', amount = 2000 } } })\nexports['x3d_mailbox']:RemoveCode('EVENT2026')\nexports['x3d_mailbox']:GetCodeUsage('EVENT2026')   --> { uses = 12, by = { ['license:xxx'] = true } }\nexports['x3d_mailbox']:Redeem(src, 'EVENT2026')    --> ok, reason\n\nAddEventHandler('x3d_mailbox:onRedeem', function(src, code, def) end)\n```\n\nยอดใช้โค้ดเก็บอยู่ในที่เดียวกับจดหมาย (คีย์ระบบ `__redeem`) — อยู่ครบหลังรีสตาร์ท และคำสั่งกระจายจดหมายทั้งเซิร์ฟไม่แตะคีย์นี้\n\n## ช่วยเหลือ\n\nDiscord: discord.gg\u002Fx3d-developer · เว็บ: x3d-developer.com\n","สคริป FiveM กล่องจดหมาย + โค้ดรับของ (Redeem Code) ฟรี","สคริป FiveM ฟรี กล่องจดหมายออฟไลน์ + โค้ดรับของ \u002Fredeem ของรางวัลส่งเป็นจดหมาย กระเป๋าเต็มก็ไม่หาย จำกัดสิทธิ์ต่อคน ไม่ต้องลงฐานข้อมูล ใช้ได้ทุกเฟรมเวิร์ก",[56,59,61,63,65,67],{"kind":57,"url":58},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002F5f0e2bffeb5847dd.png",{"kind":57,"url":60},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002Fecae52ada3262923.png",{"kind":57,"url":62},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002Fdfbe3182ca82566c.png",{"kind":57,"url":64},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002F3b10675e2258a5ab.png",{"kind":57,"url":66},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002Fa1d612aa5b9a172d.png",{"kind":57,"url":68},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fmedia\u002F2f18c7395c42734f.png",[70,72,76,80],{"version":45,"released_at":46,"changelog_md":71},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":73,"released_at":74,"changelog_md":75},"1.7.0","2026-10-12T03:25:54.186504Z","### 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### Added\n- `SendMail` also accepts the shape other mailboxes use (`subject`, `cash`\u002F`bank`, `items = {{ name, count }}`, `expiresInDays`) — moving off an old mailbox is a rename of the export\n- `Config.Storage.Driver = 'oxmysql'` keeps mail in table `x3d_mailbox` (created automatically; no `@oxmysql` include needed)\n- `Config.DefaultExpireDays` (mail without an expiry expires after N days; the safe never expires), `Config.CheckCarry` (false = claim even with a full bag), `Config.NotifyUnreadOnJoin` (unread count when a player loads in)\n### Fixed\n- Item names fall back to the framework's item label when `Config.ItemLabels` has no entry\n- Claims were refused on servers whose inventory replaces ESX's (ESX's stale weight vetoed every item); the carry check now asks `Config.CanCarryExport` first everywhere, including inside item delivery",{"version":77,"released_at":78,"changelog_md":79},"1.4.0","2026-09-20T10:38:20.840557Z","### Added\r\n- Safe box: a second mail channel (`box = 'safe'` on any mail, `SendMail`\u002Fredeem codes accept it, defaults to `'mail'`) with its own unread count, its own Receive All (never touches the other box), and its own tab + badge in the panel\r\n- `GetUnread(src, box)` accepts an optional box to scope the count; omitted, it still counts every box like before\r\n\r\n### Fixed\r\n- **Critical:** `\u002Fredeem` bypassed the rate limit entirely (only the net event was throttled) — same-tick command spam could drain a whole `maxUses` pool from one player; the command now shares `doRedeem`'s throttle with the net event, and `Mail.Redeem` itself is single-flight per identifier so a concurrent call (including a direct `exports.x3d_mailbox:Redeem` from another resource) can't race a still-in-flight redeem even once storage starts yielding\r\n- **Critical:** a `Config.Codes` key not already matching the case `\u002Fredeem` compares against (uppercase unless `caseSensitive = true`) was silently unredeemable — keys are now normalised once at boot, with a console warning naming any key that had to change\r\n- Delete now shares the same `InFlight` lock as claim\u002FclaimAll, closing a window where a delete and a claim on the same list could interleave under a storage adapter that doesn't cache in memory (e.g. the documented oxmysql swap)\r\n- A partial delivery (some attachments paid, some failed) now tells the player with its own message (`partial_delivery`) instead of staying silent — the mail is still never reverted, so what already landed is never paid twice\r\n- An expired mail with unclaimed attachments could never be deleted or trimmed by `Config.MaxMails` — its reward is already forfeit once it expires, so it's now deletable and gets reaped by the cap like a claimed mail\r\n- `x3d_mailbox:read` had no throttle bucket — it's rate-limited like every other action now\r\n- `Mail.Add` stored the caller's `items`\u002F`money` tables by reference — `SendMailAll` and a `Config.Codes` entry reused across redemptions could alias into storage; both are now copied on the way in",{"version":81,"released_at":82,"changelog_md":83},"1.0.0","2026-09-19T19:05:37.383308Z","### Added\n- Offline mailbox: mails with title, body, sender, optional expiry, item and money attachments\n- Exports `SendMail(target, mail)`, `SendMailAll(mail)`, `GetMails(src)`, `GetUnread(src)`\n- Server-internal events `x3d_mailbox:onSend(identifier, mail)` and `x3d_mailbox:onClaim(src, mail, ok)`\n- Nuxt 4 panel, `\u002Fmailbox` command and F7 keybind\n- Admin commands `\u002Fmailsend` and `\u002Fmailsendall`, gated by the `x3d_mailbox.admin` ace\n- Claim-once ordering: the claimed flag is written to storage before payout, with an `InFlight` per-identifier lock against simultaneous claims\n- Reward payout wrapped in `pcall` so a broken item\u002Faccount can't leave a player permanently unable to claim\n- Attachment counts floored to whole numbers before every capacity check and payout\n- JSON file storage by default, with a commented oxmysql swap and `install.sql`\n- Four `addons\u002F` adapter files (framework, notify, reward, storage) with ESX defaults and QBCore\u002Fox_lib examples\n- `Config.ItemLabels` \u002F `Config.AccountLabels` for Thai display names",{"html":85,"headings":86},"\u003Ch2>กล่องจดหมายออฟไลน์ พร้อมของแนบ — ฟรี ไม่ต้องลงฐานข้อมูล\u003C\u002Fh2>\n\u003Cp>ผู้เล่นออกจากเกมไปแล้ว แต่ยังอยากได้ของรางวัลกิจกรรม ของชดเชย หรือข้อความจากแอดมิน — \u003Ccode>x3d_mailbox\u003C\u002Fcode> ให้ส่งจดหมายพร้อมของแนบรอไว้ได้ ผู้เล่นมาเปิดรับเองตอนไหนก็ได้ ผ่านแผง Nuxt 4 UI พร้อมใช้ ต่อกับเฟรมเวิร์กไหนก็ได้ผ่านไฟล์ adapter\u003C\u002Fp>\n\u003Chr>\n\u003Ch3 id=\"ฟีเจอร์\">ฟีเจอร์\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>[+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\u003C\u002Fli>\n\u003Cli>[+] ส่งจดหมายพร้อมของแนบให้คนออฟไลน์ หรือทุกคนในเมืองได้\u003C\u002Fli>\n\u003Cli>[+] แนบไอเทมหลายชิ้น และเงินเขียว เงินแดง ธนาคาร ในฉบับเดียว\u003C\u002Fli>\n\u003Cli>[+] ตั้งวันหมดอายุจดหมายได้ มีเตือนสีแดง ตั้งอายุเริ่มต้นเองได้\u003C\u002Fli>\n\u003Cli>[+] แยกแท็บจดหมาย \u002F ตู้นิรภัย นับ unread แยกกัน\u003C\u002Fli>\n\u003Cli>[+] โค้ดรับของ \u002Fredeem จำกัดจำนวนครั้ง คนละครั้ง ตั้งวันหมดอายุได้\u003C\u002Fli>\n\u003Cli>[+] กระเป๋าเต็มของก็ไม่หาย เพราะไปรออยู่ในจดหมาย\u003C\u002Fli>\n\u003Cli>[+] กดรับทั้งหมดในคลิกเดียว กันรับซ้ำ กันสแปมรับของ\u003C\u002Fli>\n\u003Cli>[+] แจ้งจำนวนจดหมายค้างตอนเข้าเกม\u003C\u002Fli>\n\u003Cli>[+] เก็บเป็นไฟล์ JSON ไม่ต้องลงฐานข้อมูล หรือสลับเป็น MySQL ได้\u003C\u002Fli>\n\u003Cli>[+] ย้ายมาจากกล่องจดหมายเจ้าอื่นง่าย SendMail รับรูปแบบเดิม\u003C\u002Fli>\n\u003Cli>[+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch3 id=\"ส่งของแนบได้ทั้งไอเทมและเงิน\">ส่งของแนบได้ทั้งไอเทมและเงิน\u003C\u002Fh3>\n\u003Cp>\u003Ccode>SendMail\u003C\u002Fcode>\u002F\u003Ccode>SendMailAll\u003C\u002Fcode> แนบไอเทมหลายชิ้น เงินหลายบัญชี (\u003Ccode>money\u003C\u002Fcode>, \u003Ccode>bank\u003C\u002Fcode>, \u003Ccode>black_money\u003C\u002Fcode>, หรือบัญชีอื่นของเฟรมเวิร์กคุณ) ในจดหมายฉบับเดียวได้ ตั้งวันหมดอายุได้ ตั้งชื่อผู้ส่งเองได้\u003C\u002Fp>\n\u003Cp>ย้ายมาจากกล่องจดหมายตัวอื่น? \u003Ccode>SendMail\u003C\u002Fcode> รับรูปแบบที่กล่องจดหมายเจ้าอื่นใช้ด้วย (\u003Ccode>subject\u003C\u002Fcode>, \u003Ccode>cash\u003C\u002Fcode>\u002F\u003Ccode>bank\u003C\u002Fcode>, \u003Ccode>items = {{ name, count }}\u003C\u002Fcode>, \u003Ccode>expiresInDays\u003C\u002Fcode>) แค่เปลี่ยนชื่อ export ก็ย้ายได้เลย\u003C\u002Fp>\n\u003Ch3 id=\"ต่อกับเฟรมเวิร์กไหนก็ได้\">ต่อกับเฟรมเวิร์กไหนก็ได้\u003C\u002Fh3>\n\u003Cp>4 ไฟล์ใน \u003Ccode>addons\u002F\u003C\u002Fcode> — framework, notify, reward, storage — ค่าเริ่มต้นทำงานกับ ESX ได้ทันที ไม่มี ESX ก็ยังทำงานแบบ standalone ได้ (ace เท่านั้น) มีตัวอย่าง QBCore \u002F ox_lib คอมเมนต์ไว้ให้คัดลอกทับ\u003C\u002Fp>\n\u003Ch3 id=\"ไม่ต้องลงฐานข้อมูล\">ไม่ต้องลงฐานข้อมูล\u003C\u002Fh3>\n\u003Cp>เก็บข้อมูลเป็นไฟล์ JSON ในตัว resource เอง โหลดครั้งเดียว flush ทุก 30 วินาทีและตอนผู้เล่นออก\u002Fresource หยุดแบบปกติ — เซิร์ฟเวอร์ล่มกลางคันตรง ๆ ไม่ได้เสียของแนบ ความเสี่ยงจริงคือตรงข้าม: จดหมายที่ถูกรับในช่วง flush ล่าสุดที่ยังไม่ทัน (≤30 วินาที) ของแนบจ่ายผ่านเฟรมเวิร์กไปแล้ว แต่ธง \u003Ccode>claimed\u003C\u002Fcode> บนดิสก์ยังตามไม่ทัน รีสตาร์ทแล้วจดหมายฉบับเดิมอาจถูกรับซ้ำจ่ายซ้ำได้ อยากได้ MySQL สำหรับเซิร์ฟเวอร์ใหญ่? ตั้ง \u003Ccode>Config.Storage.Driver = 'oxmysql'\u003C\u002Fcode> ก็เก็บลงตาราง \u003Ccode>x3d_mailbox\u003C\u002Fcode> ให้เอง สร้างตารางอัตโนมัติ ไม่ต้อง include \u003Ccode>@oxmysql\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch3 id=\"รับซ้ำไม่ได้-ของพังไม่ล็อกผู้เล่นค้าง\">รับซ้ำไม่ได้ ของพังไม่ล็อกผู้เล่นค้าง\u003C\u002Fh3>\n\u003Cp>ธงรับของถูกเขียนลง storage ก่อนจ่ายของทุกครั้ง event รับซ้ำที่มาพร้อมกันไม่มีทางจ่ายสองรอบ ถ้าไอเทมพิมพ์ผิดจนจ่ายของพัง จดหมายก็ยังถูกทำเครื่องหมายว่ารับแล้ว ไม่ค้างให้กดซ้ำได้ไม่รู้จบ จำนวนของแนบถูกปัดเป็นจำนวนเต็มก่อนเสมอ เพดานจำนวนจดหมายไม่มีวันลบฉบับที่ยังไม่ได้รับของทิ้ง\u003C\u002Fp>\n\u003Ch3 id=\"โค้ดรับของ-redeem-code-ในตัว\">โค้ดรับของ (Redeem Code) ในตัว\u003C\u002Fh3>\n\u003Cp>แจกโค้ดต้อนรับ โค้ดกิจกรรม หรือโค้ดชดเชยได้เลยโดยไม่ต้องลงสคริปอื่น ผู้เล่นพิมพ์ \u003Ccode>\u002Fredeem &lt;โค้ด&gt;\u003C\u002Fcode> หรือกรอกโค้ดในช่องบนพาเนลกล่องจดหมาย ของรางวัลทั้งไอเทมและเงินจะ\u003Cstrong>ส่งเป็นจดหมาย\u003C\u002Fstrong>เข้ากล่อง กระเป๋าเต็มก็ไม่หาย และเลือกให้ส่งเข้าแท็บตู้นิรภัยแทนได้\u003C\u002Fp>\n\u003Cul>\n\u003Cli>ตั้งโค้ดถาวรใน \u003Ccode>Config.Codes\u003C\u002Fcode>: จำกัดจำนวนครั้งทั้งเซิร์ฟ (\u003Ccode>maxUses\u003C\u002Fcode>) หนึ่งครั้งต่อคน (\u003Ccode>oncePerPlayer\u003C\u002Fcode>) และวันหมดอายุ (\u003Ccode>expires\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>สร้างโค้ดชั่วคราวจากสคริปอื่นผ่าน export (\u003Ccode>AddCode\u003C\u002Fcode>, \u003Ccode>RemoveCode\u003C\u002Fcode>, \u003Ccode>GetCodeUsage\u003C\u002Fcode>) เช่นโค้ดไลฟ์สตรีมหรือโค้ดอีเวนต์\u003C\u002Fli>\n\u003Cli>ยอดใช้โค้ดอยู่ครบหลังรีสตาร์ท และ \u003Ccode>\u002Fredeem\u003C\u002Fcode> ใช้ throttle กับล็อกเดียวกับการกดรับของ สแปมรัว ๆ ก็ได้ของครั้งเดียว\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"ต้องมี\">ต้องมี\u003C\u002Fh3>\n\u003Cp>ไม่มี · ไม่ต้องใช้ฐานข้อมูล ไม่ต้องใช้เฟรมเวิร์ก ไม่มีไลเซนส์ · วางแล้ว \u003Ccode>ensure\u003C\u002Fcode> ได้เลย\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ฟรี\u003C\u002Fstrong> · แก้โค้ดได้ตามใจ · ขอแค่อย่านำไปขายต่อและอย่าอัปโหลดใหม่ในชื่อตัวเอง\u003C\u002Fp>\n",[87,90,92,94,96,99,102],{"id":88,"text":88,"level":89},"ฟีเจอร์",2,{"id":91,"text":91,"level":89},"ส่งของแนบได้ทั้งไอเทมและเงิน",{"id":93,"text":93,"level":89},"ต่อกับเฟรมเวิร์กไหนก็ได้",{"id":95,"text":95,"level":89},"ไม่ต้องลงฐานข้อมูล",{"id":97,"text":98,"level":89},"รับซ้ำไม่ได้-ของพังไม่ล็อกผู้เล่นค้าง","รับซ้ำไม่ได้ ของพังไม่ล็อกผู้เล่นค้าง",{"id":100,"text":101,"level":89},"โค้ดรับของ-redeem-code-ในตัว","โค้ดรับของ (Redeem Code) ในตัว",{"id":103,"text":103,"level":89},"ต้องมี",[105,110,114,118,122,126],{"src":106,"full":107,"srcset":108,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F41093a2b62.1280.webp 1280w","(max-width: 760px) calc(50vw - 30px), 380px",{"src":111,"full":112,"srcset":113,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F4141894349.1280.webp 1280w",{"src":115,"full":116,"srcset":117,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F7300a19703.1280.webp 1280w",{"src":119,"full":120,"srcset":121,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F1f9e40462f.1280.webp 1280w",{"src":123,"full":124,"srcset":125,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F68014e76d3.1280.webp 1280w",{"src":127,"full":128,"srcset":129,"sizes":109},"\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.960.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.1280.webp","\u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.480.webp 480w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.640.webp 640w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.960.webp 960w, \u002Fimg\u002Fmedia\u002Fx3d-mailbox\u002F6be9dcedf8.1280.webp 1280w",{"items":131,"page":906,"size":907,"total":907},[132,168,189,218,240,269,302,327,354,384,409,435,463,490,518,546,570,590,613,640,670,695,719,743,764,792,817,838,861,864,885],{"id":133,"slug":134,"name":135,"summary":136,"price_thb":137,"license_mode":138,"cover_key":139,"cover_url":140,"category_slugs":141,"tags":144,"latest_version":163,"latest_released_at":164,"published_at":165,"has_docs":48,"config":166,"rent_price_satang":167},"6bdadea7-4316-4a4a-a38e-87c5e841077d","x3d-replay","X3D Replay (ดูย้อนหลัง)","BETA ราคาพิเศษ · บันทึกผู้เล่นทุกคนอัตโนมัติ ดูย้อนหลังในเกมได้ทุกวินาที กล้อง 4 แบบ ไทม์ไลน์ยิง\u002Fตาย ปุ่มที่กด สคริปต์ที่ใช้ จับ macro",59900,"shop_license","public\u002Fproducts\u002Fx3d-replay\u002Fcover.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-replay\u002Fcover.jpg",[142,143],"anticheat","admin",[27,145,146,147,148,149,150,151,152,153,154,155,156,157,142,158,159,160,161,162],"ESX Legacy","replay","fivem replay script","replay system","รีเพลย์","ดูย้อนหลัง","ย้อนดูผู้เล่น","บันทึกผู้เล่น","เคสรีพอร์ต","จับโกง","จับมาโคร","macro detection","กันโปร","แอดมิน","admin tool","demo recorder","spectate","BETA","1.0.2","2026-10-14T06:14:23.677549Z","2026-10-14T06:14:23.700289Z","owners",12000,{"id":169,"slug":170,"name":171,"summary":172,"price_thb":137,"license_mode":138,"cover_key":173,"cover_url":174,"category_slugs":175,"tags":176,"latest_version":81,"latest_released_at":187,"published_at":188,"has_docs":48,"config":166,"rent_price_satang":167},"ff948fa9-6fc5-410e-b952-ee88b15f0c9d","x3d-anticheat","X3D Anti-Cheat (กันโปร)","BETA ราคาพิเศษ ร่วมทดสอบได้ · แอนตี้โกงเก็บหลักฐานก่อนแบน: Discord + ภาพหน้าจอ + แบน HWID + ล็อกบัญชี Steam\u002FDiscord + กัน event spam ด้วย 2 บรรทัด","public\u002Fproducts\u002Fx3d-anticheat\u002Fcover\u002Fd90612eed4448164.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-anticheat\u002Fcover\u002Fd90612eed4448164.jpg",[142],[27,31,177,142,178,179,180,157,181,182,183,184,185,186],"แอนตี้โกง","ป้องกันแฮก","กันโกง","HWID ban","ภาพหลักฐาน","ล็อกบัญชี Steam Discord","แบนเครื่อง","คิวยศ Discord","กัน event สแปม","แอนตี้โกง ESX","2026-09-16T09:45:51.78533Z","2026-09-16T09:46:00.05928Z",{"id":190,"slug":191,"name":192,"summary":193,"price_thb":194,"license_mode":138,"cover_key":195,"cover_url":196,"category_slugs":197,"tags":201,"latest_version":214,"latest_released_at":215,"published_at":216,"has_docs":48,"config":166,"rent_price_satang":217},"47a33337-7dcf-4a78-b056-4b3e324a648d","x3d-slots","X3D สล็อต 1024 ทาง","สล็อตคาสเคด 1,024 ทาง สไตล์มาห์จอง RTP 97.5% คิดผลบนเซิร์ฟเวอร์ กันโกง พร้อมฟรีสปิน ตัวคูณ และซีนแจ็กพอต",250000,"public\u002Fproducts\u002Fx3d-slots\u002Fcover\u002Fd09c2066a6ea2968.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-slots\u002Fcover\u002Fd09c2066a6ea2968.jpg",[198,199,200],"casino","economy","entertainment",[27,31,202,203,198,204,205,206,207,208,209,210,211,212,213],"คาสิโน","สล็อต","slot","มินิเกม","minigame","RTP 97.5%","มาห์จอง","คาสเคด","ฟรีสปิน","ตู้สล็อต","ซื้อฟีเจอร์","ปรับ RTP","1.1.4","2026-10-12T17:13:01.863556Z","2026-09-14T15:28:02.281478Z",50000,{"id":219,"slug":220,"name":221,"summary":222,"price_thb":20,"license_mode":21,"cover_key":223,"cover_url":224,"category_slugs":225,"tags":227,"latest_version":237,"latest_released_at":238,"published_at":239,"has_docs":48,"config":49,"rent_price_satang":50},"1fb91794-3e8b-4955-bc54-dc6b1491912e","x3d-mapevents","X3D Map Events (อีเวนต์บนแผนที่)","แผงอีเวนต์บนหน้าแผนที่ pause menu ฟรี: ชื่อ + เวลานับถอยหลัง คลิกเพื่อตั้งจุดนำทาง สคริปต์อื่นส่งอีเวนต์เข้ามาได้เหมือนส่งแจ้งเตือน แอดมินสร้างอีเวนต์เองได้","public\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg",[226,25],"hud",[228,229,230,231,232,233,234,235,236,34,28],"อีเวนต์","อีเวนต์บนแผนที่","แผนที่","จุดนำทาง","นับถอยหลัง","pause menu","map events","event","waypoint","1.0.3","2026-10-12T17:13:20.327337Z","2026-10-12T04:21:56.480796Z",{"id":241,"slug":242,"name":243,"summary":244,"price_thb":20,"license_mode":21,"cover_key":245,"cover_url":246,"category_slugs":247,"tags":249,"latest_version":266,"latest_released_at":267,"published_at":268,"has_docs":48,"config":49,"rent_price_satang":50},"58697b89-cbe5-4b1f-8a29-c5289727202e","x3d-weaponskins","X3D Weapon Skins (สกินอาวุธ)","สกินอาวุธแบบสะสม ESX ฟรี สกินเป็นอาวุธ add-on ผูกกับปืนหลัก ใช้ไอเทมปลดล็อกเข้าคลัง ใส่\u002Fถอดได้ ดาเมจเท่าเดิม แปลงกลับเป็นไอเทมไปเทรดได้ มีเอฟเฟกต์ตอนถือ","public\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg",[25,248],"inventory",[250,251,252,253,254,255,256,257,258,259,27,34,28,260,261,262,263,264,265],"weapon skins","สกินอาวุธ","สกินอาวุธ fivem","สกินปืน","gun skin","weapon skin fivem","คลังสกิน","เทรดสกิน","skin collection","x3d_inventory","ปลดล็อกสกิน","สกินสะสม","เอฟเฟกต์อาวุธ","ความหายากสกิน","สกิน add-on","แปลงสกินเป็นไอเทม","1.1.2","2026-10-12T17:13:35.599698Z","2026-10-10T11:46:16.716284Z",{"id":270,"slug":271,"name":272,"summary":273,"price_thb":20,"license_mode":21,"cover_key":274,"cover_url":275,"category_slugs":276,"tags":278,"latest_version":163,"latest_released_at":300,"published_at":301,"has_docs":48,"config":49,"rent_price_satang":50},"d82d8eb1-ed6a-43e3-86ef-24e45ae2b39d","x3d-damage","X3D Damage (ดาเมจอาวุธ)","ตั้งดาเมจอาวุธเองทุกชิ้น พร้อมเอฟเฟกต์ เลือดออก ช้า สตัน ล้ม ดูดเลือด รองรับสกินอาวุธ ใช้ได้ทั้ง ESX และ standalone","public\u002Fproducts\u002Fx3d-damage\u002Fcover\u002F8ce8864c16843fe6.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-damage\u002Fcover\u002F8ce8864c16843fe6.jpg",[25,277],"gangs",[279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,27,31,34,28,294,295,296,297,298,299],"weapon damage","ดาเมจอาวุธ","ดาเมจปืน","fivem weapon damage","damage script","headshot","headshot kill","เลือดออก","bleed","สตัน","stun","lifesteal","ดูดเลือด","เมืองปืน","pvp","ทะลุเกราะ","ดาเมจเสริม","ปิดท่าต่อยหนัก","ปรับดาเมจ","ทำให้ช้า","กันกระโดดหลบ","2026-10-12T17:14:19.289254Z","2026-10-10T11:45:52.279629Z",{"id":303,"slug":304,"name":305,"summary":306,"price_thb":20,"license_mode":21,"cover_key":307,"cover_url":308,"category_slugs":309,"tags":311,"latest_version":163,"latest_released_at":325,"published_at":326,"has_docs":48,"config":49,"rent_price_satang":50},"93def22a-9501-4b66-bdf0-158cc6a0093c","x3d-vehiclestorage","X3D Vehicle Storage (ท้ายรถ)","ท้ายรถสำหรับ ESX ใช้หน้าจอกระเป๋า x3d_inventory น้ำหนักตามประเภท\u002Fรุ่นรถ เฉพาะเจ้าของ รถงาน และแอดมินเปิดดูได้ ฟรี","public\u002Fproducts\u002Fx3d-vehiclestorage\u002Fcover\u002F2c2d97cb47678e1b.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-vehiclestorage\u002Fcover\u002F2c2d97cb47678e1b.jpg",[248,310],"garage",[312,313,314,315,316,317,318,259,27,34,28,319,320,321,322,323,324],"trunk","ท้ายรถ","ท้ายรถ fivem","vehicle storage","trunk inventory","esx trunk","เก็บของในรถ","ตู้ท้ายรถ","รถงาน","กล่องเก็บของหน้ารถ","น้ำหนักท้ายรถ","ล็อกรถ","เปิดท้ายรถ","2026-10-12T17:14:46.845123Z","2026-10-05T04:28:52.749188Z",{"id":328,"slug":329,"name":330,"summary":331,"price_thb":20,"license_mode":21,"cover_key":332,"cover_url":333,"category_slugs":334,"tags":336,"latest_version":163,"latest_released_at":352,"published_at":353,"has_docs":48,"config":49,"rent_price_satang":50},"b642bb91-9f6d-4c3c-8830-e594c2a92fcb","x3d-vault","X3D Vault (ตู้เซฟแก๊ง)","ตู้เซฟ ESX ใช้หน้าจอกระเป๋า x3d_inventory ตู้ส่วนตัวมีเลเวล แชร์ให้เพื่อน ตู้หน่วยงานตามอาชีพ ฟรี","public\u002Fproducts\u002Fx3d-vault\u002Fcover\u002F72ea3a88a64e0034.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-vault\u002Fcover\u002F72ea3a88a64e0034.jpg",[248,335],"jobs",[337,338,339,340,341,342,343,344,259,27,34,28,345,346,347,348,349,350,351],"vault","stash","ตู้เซฟ","ตู้เก็บของ","ตู้เซฟ fivem","esx stash","job vault","ตู้หน่วยงาน","ตู้เซฟแก๊ง","ตู้ส่วนตัว","แชร์ตู้","อัปเกรดตู้","ตู้เซฟตำรวจ","ตู้เซฟอาชีพ","ลิมิตตู้","2026-10-12T17:15:03.928293Z","2026-10-05T04:28:43.828514Z",{"id":355,"slug":356,"name":357,"summary":358,"price_thb":20,"license_mode":21,"cover_key":359,"cover_url":360,"category_slugs":361,"tags":362,"latest_version":381,"latest_released_at":382,"published_at":383,"has_docs":48,"config":49,"rent_price_satang":50},"70fa1474-294a-49ad-91cb-1de0ab4dc8d8","x3d-adminpanel","X3D Admin Panel (เมนูแอดมิน)","แผงแอดมิน FiveM ฟรี ครบในหน้าเดียว ผู้เล่น แบน\u002Fเตือน จับบัญชีสำรอง กระเป๋า ไอเทม รถ อากาศ บันทึกการใช้งาน และเมนูของสคริปต์ X3D","public\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg",[143],[363,364,365,366,367,368,183,369,370,371,372,373,161,374,27,31,34,28,375,376,377,378,379,380],"admin panel","admin menu","แผงแอดมิน","เมนูแอดมิน","เมนูแอดมิน fivem","fivem admin menu","token ban","จับบัญชีสำรอง","alt detection","txadmin","noclip","log","แอดมินไทย","ยึดไอเทม","ประวัติแบน","โน้ตแอดมิน","นำเข้า txAdmin","บทบาทแอดมิน","1.0.5","2026-10-12T17:15:53.66615Z","2026-10-05T04:11:47.352812Z",{"id":385,"slug":386,"name":387,"summary":388,"price_thb":20,"license_mode":21,"cover_key":389,"cover_url":390,"category_slugs":391,"tags":392,"latest_version":214,"latest_released_at":407,"published_at":408,"has_docs":48,"config":49,"rent_price_satang":50},"d76ff7ae-ded6-4f39-b63f-734181952698","x3d-inventory","X3D Inventory (กระเป๋า)","กระเป๋าไอเทม ESX ฟรี ตัวหนังสือไทยใหญ่ ช่องลัด 1–9 บันทึกกับตัวละคร ความจุขยายด้วยคูปอง ต่อตู้เซฟ\u002Fท้ายรถได้ทุกสคริปต์","public\u002Fproducts\u002Fx3d-inventory\u002Fcover\u002Ffc3857e556cf31f3.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-inventory\u002Fcover\u002Ffc3857e556cf31f3.jpg",[248,226],[248,393,394,395,396,397,398,399,400,401,27,34,28,402,403,404,405,406],"กระเป๋า","กระเป๋า fivem","ui กระเป๋า","esx inventory","inventory fivem","ช่องลัด","hotbar","ไอเทม","nui","คูปองขยายช่อง","คูปองน้ำหนัก","ความหายากไอเทม","ค้นกระเป๋า","จำกัดน้ำหนัก","2026-10-12T17:16:22.733967Z","2026-10-05T04:10:14.693356Z",{"id":410,"slug":411,"name":412,"summary":413,"price_thb":20,"license_mode":21,"cover_key":414,"cover_url":415,"category_slugs":416,"tags":417,"latest_version":214,"latest_released_at":433,"published_at":434,"has_docs":48,"config":49,"rent_price_satang":50},"f782bbab-0321-4d3f-832f-797a2aa198f5","x3d-fortune","X3D Fortune (หมอดู)","หมอดูฟรีสำหรับ ESX: ดวงรายวัน ราศีจากวันเกิด เซียมซี 28 ใบ ไพ่ยิปซี 22 ใบ 9 หัวข้อ และดวงรายเดือนเปิดไพ่ 10 ใบ","public\u002Fproducts\u002Fx3d-fortune\u002Fcover\u002Fab130eeac9fbc029.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-fortune\u002Fcover\u002Fab130eeac9fbc029.jpg",[200],[418,419,420,421,422,423,424,425,426,27,34,28,427,428,429,430,431,432],"หมอดู","ดูดวง","เซียมซี","ไพ่ยิปซี","tarot","ราศี","ดวงรายวัน","fortune teller","npc","ดวงรายเดือน","ไพ่ทาโร่","เลขมงคล","สีมงคล","ไพ่กลับหัว","จุดหมอดู","2026-10-12T17:16:40.12128Z","2026-09-26T14:59:27.315955Z",{"id":436,"slug":437,"name":438,"summary":439,"price_thb":20,"license_mode":21,"cover_key":440,"cover_url":441,"category_slugs":442,"tags":443,"latest_version":460,"latest_released_at":461,"published_at":462,"has_docs":48,"config":49,"rent_price_satang":50},"9cb293aa-8b2c-447d-b810-3a7e385f6e81","x3d-banking","X3D Banking (ธนาคาร)","ธนาคารและตู้ ATM ฟรีสำหรับ ESX: ฝาก ถอน โอนด้วย ID ผู้เล่น ประวัติรายการ ใช้ได้ทุกตู้บนแผนที่ เซิร์ฟเวอร์เช็คทุกรายการ","public\u002Fproducts\u002Fx3d-banking\u002Fcover\u002Fe7e66ab29819a980.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-banking\u002Fcover\u002Fe7e66ab29819a980.jpg",[199],[444,445,446,447,448,449,450,451,452,453,27,34,28,454,455,456,457,458,459],"banking","ธนาคาร","ระบบธนาคาร","atm","ตู้ atm","โอนเงิน","โอนด้วยเบอร์โทร","esx banking","bank script","ประวัติรายการ","ถอนด่วน","วงเงินโอน","สาขาธนาคาร","ฝากเงิน","ถอนเงิน","เพิ่มตู้ ATM","1.1.8","2026-10-12T17:16:55.98941Z","2026-09-26T14:59:08.07128Z",{"id":464,"slug":465,"name":466,"summary":467,"price_thb":20,"license_mode":21,"cover_key":468,"cover_url":469,"category_slugs":470,"tags":471,"latest_version":214,"latest_released_at":488,"published_at":489,"has_docs":48,"config":49,"rent_price_satang":50},"c72d91e0-6bcd-4fae-bde9-0e140e02b0cb","x3d-music","X3D Music (ลำโพง)","ลำโพงบูมบ็อกซ์ฟรีสำหรับ ESX: วางบนพื้นหรือติดบนรถ เปิดเพลง YouTube คิวเพลงร่วมกัน เสียงเบาลงตามระยะ ลำโพงยังอยู่หลังรีสตาร์ท","public\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg",[200],[472,473,474,475,476,477,478,479,480,481,27,34,28,482,483,484,485,486,487],"boombox","ลำโพง","ลำโพงเปิดเพลง","เปิดเพลง youtube","music script","fivem music","xsound","youtube","คิวเพลง","ติดบนรถ","ลำโพงติดรถ","เปิดเพลงในรถ","ฟังเพลงด้วยกัน","เพลงร่วมกัน","ลำโพงวางพื้น","จำกัดลำโพง","2026-10-12T17:17:14.482272Z","2026-09-26T14:56:09.091062Z",{"id":491,"slug":492,"name":493,"summary":494,"price_thb":20,"license_mode":21,"cover_key":495,"cover_url":496,"category_slugs":497,"tags":498,"latest_version":515,"latest_released_at":516,"published_at":517,"has_docs":48,"config":49,"rent_price_satang":50},"6125d85f-eaff-45cb-90cd-9db4d66e7954","x3d-respawn","X3D Respawn (หน้าจอตาย)","หน้าจอตายฟรี: ปุ่มเรียกหมอ หมอออนไลน์ต้องรอหมอ จุดเกิดใหม่ ชุบตัวเอง สรุปการตาย และเก็บสถานะตายตอนออกเกม","public\u002Fproducts\u002Fx3d-respawn\u002Fcover\u002F1af99658aa5089b2.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-respawn\u002Fcover\u002F1af99658aa5089b2.jpg",[226],[499,500,501,502,503,504,505,506,507,508,509,27,34,28,510,511,512,513,514],"respawn","หน้าจอตาย","death screen","เรียกหมอ","call ems","ambulance","esx_ambulancejob","ชุบตัวเอง","จุดเกิดใหม่","dispatch","สรุปการตาย","รอหมอ","กันหนีตาย","ปุ่มเรียกหมอ","เกิดใหม่เมือง","ชุดปฐมพยาบาล","1.1.3","2026-10-12T17:17:26.33517Z","2026-09-25T16:14:21.42282Z",{"id":519,"slug":520,"name":521,"summary":522,"price_thb":20,"license_mode":21,"cover_key":523,"cover_url":524,"category_slugs":525,"tags":526,"latest_version":515,"latest_released_at":544,"published_at":545,"has_docs":48,"config":49,"rent_price_satang":50},"879a5a5d-5b22-4fb5-9274-6ac3ee631904","x3d-phone","X3D Phone (โทรศัพท์)","โทรศัพท์มือถือฟรีสำหรับ ESX: โทรผ่าน pma-voice, SMS แชร์ตำแหน่ง, ธนาคารมือถือ, กล้องถ่ายรูปเก็บในเซิร์ฟเอง, Buzz และ Dark Chat","public\u002Fproducts\u002Fx3d-phone\u002Fcover\u002F9e0b9e2f9bc7352d.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-phone\u002Fcover\u002F9e0b9e2f9bc7352d.jpg",[226],[527,528,529,530,531,532,533,508,534,535,536,537,538,27,34,28,539,540,541,502,542,543],"phone","โทรศัพท์","โทรศัพท์ fivem","esx phone","phone script","sms","pma-voice","แจ้งเหตุ","ธนาคารมือถือ","buzz","dark chat","กล้อง","เบอร์หน่วยงาน","ออกบิล","แชร์ตำแหน่ง","กล้องโทรศัพท์","ไอเทมโทรศัพท์","2026-10-12T17:18:13.372348Z","2026-09-25T15:32:10.424119Z",{"id":547,"slug":548,"name":549,"summary":550,"price_thb":20,"license_mode":21,"cover_key":551,"cover_url":552,"category_slugs":553,"tags":554,"latest_version":515,"latest_released_at":567,"published_at":568,"has_docs":569,"config":21,"rent_price_satang":50},"6705aca9-39b7-48ad-a39b-0dc4a906dd70","x3d-safe","X3D Safe Cracking (เจาะตู้เซฟ)","มินิเกมหมุนเจาะตู้เซฟ หมุนหน้าปัดด้วย A\u002FD กด E ตอนตรงจุด เรียกด้วย export เดียว","public\u002Fproducts\u002Fx3d-safe\u002Fcover\u002F410a110f32490438.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-safe\u002Fcover\u002F410a110f32490438.jpg",[277,25],[555,556,339,557,205,206,558,559,31,560,34,28,561,562,563,564,565,566],"safe cracking","เจาะตู้เซฟ","หมุนตู้เซฟ","มินิเกม fivem","export","crime","หมุนหน้าปัด","ตู้เซฟธนาคาร","ตู้เซฟร้าน","ตู้เซฟบ้าน","ไม่ต้องใช้ ESX","มินิเกม A\u002FD","2026-10-12T17:18:34.435941Z","2026-09-24T03:53:28.3285Z",false,{"id":571,"slug":572,"name":573,"summary":574,"price_thb":20,"license_mode":21,"cover_key":575,"cover_url":576,"category_slugs":577,"tags":578,"latest_version":587,"latest_released_at":588,"published_at":589,"has_docs":569,"config":21,"rent_price_satang":50},"d5bcab3a-9189-4813-9b17-6b34f3a16584","x3d-lockpick","X3D Lockpick (งัดล็อก)","มินิเกมงัดล็อก หมุนหาจุดด้วย WASD เรียกด้วย export เดียว ใช้กับสคริปต์อะไรก็ได้","public\u002Fproducts\u002Fx3d-lockpick\u002Fcover\u002Fc36242cb20a32b3b.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-lockpick\u002Fcover\u002Fc36242cb20a32b3b.jpg",[277,25],[579,580,581,205,206,558,559,31,560,34,28,582,583,584,585,586],"lockpick","งัดล็อก","สะเดาะกุญแจ","งัดประตูบ้าน","งัดรถ","หมุดล็อก","มินิเกม WASD","ปรับความยาก","1.1.1","2026-10-12T17:18:46.115275Z","2026-09-24T03:53:14.231073Z",{"id":591,"slug":592,"name":593,"summary":594,"price_thb":20,"license_mode":21,"cover_key":595,"cover_url":596,"category_slugs":597,"tags":599,"latest_version":610,"latest_released_at":611,"published_at":612,"has_docs":48,"config":49,"rent_price_satang":50},"65d3b2da-6dba-4cd0-9907-06b8e6e54994","x3d-houserobbery","X3D House Robbery (งัดบ้าน)","งัดบ้าน — งัดประตู ค้นของตามพื้น เจาะตู้เซฟ มีคูลดาวน์ต่อหลัง แถมมินิเกมครบในซิปเดียว","public\u002Fproducts\u002Fx3d-houserobbery\u002Fcover\u002F73f596dab6db196a.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-houserobbery\u002Fcover\u002F73f596dab6db196a.jpg",[598,277],"housing",[600,601,602,603,604,339,579,205,277,605,598,560,27,34,28,606,556,607,608,609],"งัดบ้าน","ปล้นบ้าน","house robbery","robbery","ปล้น","แก๊ง","คีย์การ์ด","เงินแดง","จุดค้นของ","ปล้นบ้านคูลดาวน์","1.2.4","2026-10-12T17:19:03.056031Z","2026-09-24T03:48:06.633278Z",{"id":614,"slug":615,"name":616,"summary":617,"price_thb":20,"license_mode":21,"cover_key":618,"cover_url":619,"category_slugs":620,"tags":621,"latest_version":637,"latest_released_at":638,"published_at":639,"has_docs":48,"config":49,"rent_price_satang":50},"5532c49c-d819-4dda-b8a0-71514a14df31","x3d-selldrug","X3D Sell Drug (งานขายยา)","งานขายของผิดกฎหมาย ผู้รับซื้อลับสุ่มโผล่ตามแมพ มีเวลาจำกัด จ่ายเป็นเงินดำ มีระบบจุด10 ใช้ได้ทั้ง ESX และ standalone","public\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg",[277,199],[622,623,624,625,626,627,628,629,277,605,560,27,34,28,630,631,632,633,634,635,607,636],"ขายยา","งานขายยา","sell drug","drug selling","ของผิดกฎหมาย","เงินดำ","black money","ผู้รับซื้อ","จุด10","จุดสิบ","จุดขายยา","ขายของจุด10","ขายของลับ","ฟอกเงิน","ผู้รับซื้อรายใหญ่","1.2.6","2026-10-12T17:19:19.018788Z","2026-09-24T03:39:03.703963Z",{"id":641,"slug":642,"name":643,"summary":644,"price_thb":20,"license_mode":21,"cover_key":645,"cover_url":646,"category_slugs":647,"tags":648,"latest_version":266,"latest_released_at":668,"published_at":669,"has_docs":569,"config":49,"rent_price_satang":50},"8e4dcdf4-7c70-4185-a3c9-15bb5328c457","x3d-useitem","X3D Use Item (ไอเทมใช้ได้)","ยา ผ้าพันแผล AED เกราะ หมวกกันน็อค ซ่อมรถ กระสุน กล่องสุ่ม อาหารพร้อมบัฟ — ไอเทมใช้ได้ครบชุด ต้องการแค่ ESX","public\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg",[248,25],[649,650,651,652,653,654,655,656,657,658,659,660,661,27,34,28,662,663,664,665,666,667],"use item","ไอเทมใช้ได้","usable items","ยา","ผ้าพันแผล","aed","ชุบคนล้ม","ซ่อมรถ","กระสุน","กล่องสุ่ม","อาหาร","เสื้อเกราะ","หมวกกันน็อค","บัฟอาหาร","ชุดซ่อมรถ","เติมกระสุน","ยืมเสื้อเกราะ","ใช้ไอเทม","ไอเทมเติมเลือด","2026-10-12T17:19:33.653792Z","2026-09-24T02:05:34.038449Z",{"id":671,"slug":672,"name":673,"summary":674,"price_thb":20,"license_mode":21,"cover_key":675,"cover_url":676,"category_slugs":677,"tags":678,"latest_version":515,"latest_released_at":693,"published_at":694,"has_docs":569,"config":21,"rent_price_satang":50},"8c823bc1-1de6-41b6-bf82-146d5a55eeb5","x3d-progressbar","X3D Progress Bar (หลอดโหลด)","แถบความคืบหน้าธีมพีช ยกเลิกด้วย ESC นับเวลาถอยหลัง ล็อกปุ่มลัดให้อัตโนมัติ รองรับภาษาไทย","public\u002Fproducts\u002Fx3d-progressbar\u002Fcover\u002Ff6830df60f656452.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-progressbar\u002Fcover\u002Ff6830df60f656452.jpg",[226],[679,680,681,682,683,684,685,226,686,27,34,28,687,688,689,690,691,692],"progressbar","progress bar","แถบโหลด","แถบความคืบหน้า","esx_progressbar","esx progressbar","ui","ยกเลิก esc","หลอดโหลด","ฟอนต์ไทย","นับเวลาถอยหลัง","ล็อกปุ่มลัด","โปรเกรสบาร์","แทน esx_progressbar","2026-10-12T17:19:45.934106Z","2026-09-24T01:22:17.768991Z",{"id":696,"slug":697,"name":698,"summary":699,"price_thb":20,"license_mode":21,"cover_key":700,"cover_url":701,"category_slugs":702,"tags":703,"latest_version":266,"latest_released_at":717,"published_at":718,"has_docs":48,"config":49,"rent_price_satang":50},"63ce5efe-2f18-499e-a52b-8155a6cebb84","x3d-slide","X3D Slide (สไลด์)","สไลด์หลบไปข้างหน้าแบบเกมยิง กด Shift พร้อมปุ่มสไลด์ มีคูลดาวน์กันสแปม ตั้งค่าได้ใน config","public\u002Fproducts\u002Fx3d-slide\u002Fcover\u002F8c8383608791f58a.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-slide\u002Fcover\u002F8c8383608791f58a.jpg",[25],[704,705,706,707,708,709,710,711,31,27,34,28,712,713,714,715,716],"slide","สไลด์","slide fivem","ท่าสไลด์","หลบ","dodge","ท่าทาง","คูลดาวน์","สไลด์แบบเกมยิง","Shift สไลด์","ท่าหลบเกมยิง","ปุ่มสไลด์","ปรับแรงสไลด์","2026-10-12T17:20:03.227099Z","2026-09-24T01:21:56.84494Z",{"id":720,"slug":721,"name":722,"summary":723,"price_thb":20,"license_mode":21,"cover_key":724,"cover_url":725,"category_slugs":726,"tags":727,"latest_version":214,"latest_released_at":741,"published_at":742,"has_docs":48,"config":49,"rent_price_satang":50},"9b62b8ed-5911-47a8-b695-3320a6183758","x3d-notify","X3D Notify (แจ้งเตือน)","การ์ดแจ้งเตือน 9 ตำแหน่ง ใส่ไอคอนไอเทมกับกรอบระดับความหายากได้ รองรับภาษาไทยเต็มรูปแบบ","public\u002Fproducts\u002Fx3d-notify\u002Fcover\u002F4a9cbdcedd86a149.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-notify\u002Fcover\u002F4a9cbdcedd86a149.jpg",[226],[728,729,730,731,732,733,685,226,688,734,27,34,28,735,736,737,738,739,740],"notify","notification","แจ้งเตือน","แจ้งเตือน fivem","esx_notify","esx notify","ไอคอนไอเทม","การ์ดแจ้งเตือน","กรอบความหายาก","แจ้งเตือน 9 ตำแหน่ง","สีในข้อความ","แทน esx_notify","แจ้งเตือนไอเทม","2026-10-12T17:20:21.047259Z","2026-09-24T01:21:40.547491Z",{"id":744,"slug":745,"name":746,"summary":747,"price_thb":20,"license_mode":21,"cover_key":748,"cover_url":749,"category_slugs":750,"tags":751,"latest_version":381,"latest_released_at":762,"published_at":763,"has_docs":48,"config":21,"rent_price_satang":50},"e6dc80f3-4f29-4d01-bffa-eba6829c6497","x3d-loadingscreen","X3D Loading Screen (หน้าโหลด)","หน้าโหลดสไตล์เทอร์มินัล มีปุ่ม ENTER WORLD ให้ผู้เล่นกดเองก่อนลงเมือง ไฟล์ HTML เดียว ไม่ต้อง build","public\u002Fproducts\u002Fx3d-loadingscreen\u002Fcover\u002F32f1538b8e18f4db.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-loadingscreen\u002Fcover\u002F32f1538b8e18f4db.jpg",[226],[752,753,754,755,756,757,685,31,27,34,28,758,759,687,760,761],"loading screen","หน้าโหลด","หน้าโหลด fivem","loadingscreen","esx_loadingscreen","enter world","ปุ่มเข้าเมือง","หน้าโหลดเทอร์มินัล","พื้นหลังวิดีโอ","เพลงหน้าโหลด","2026-10-12T17:20:39.269405Z","2026-09-24T00:50:19.336351Z",{"id":765,"slug":766,"name":767,"summary":768,"price_thb":20,"license_mode":21,"cover_key":769,"cover_url":770,"category_slugs":771,"tags":773,"latest_version":789,"latest_released_at":790,"published_at":791,"has_docs":48,"config":21,"rent_price_satang":50},"37f7d9db-f90d-4eed-861b-922da1072932","es-extended","ESX Legacy Core — X3D Build","es_extended ที่เร็วขึ้น กันข้อมูลผู้เล่นหาย และล็อกเศรษฐกิจก่อนรีสตาร์ท ลงทับตัวเดิมได้เลย ชื่อ resource เหมือนเดิมทุกอย่าง","public\u002Fproducts\u002Fes-extended\u002Fcover\u002Fa0b783dc4bf383e9.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fes-extended\u002Fcover\u002Fa0b783dc4bf383e9.jpg",[772],"optimization",[27,774,775,776,777,778,779,780,781,782,34,28,783,784,785,786,787,788],"es_extended","esx legacy","esx core","esx_core","framework","core","esx ฟรี","ดาวน์โหลด esx","esx legacy 1.13","กันข้อมูลหาย","กันดูป","audit log","เซฟผู้เล่น","esx fork","กันตกทะลุแมพ","1.13.6","2026-10-12T17:20:52.726747Z","2026-09-23T13:28:50.819982Z",{"id":793,"slug":794,"name":795,"summary":796,"price_thb":20,"license_mode":21,"cover_key":797,"cover_url":798,"category_slugs":799,"tags":800,"latest_version":814,"latest_released_at":815,"published_at":816,"has_docs":48,"config":49,"rent_price_satang":50},"7c86bf83-0df0-4e59-ab59-461ac4a2bff8","x3d-skin","X3D ตกแต่งตัวละคร","หน้าตกแต่งตัวละคร 77 ช่อง กล้องหมุนซูม ท่าโพส ไฟส่องหน้า ไม่ต้องลง skinchanger ไม่ต้องลงฐานข้อมูล ต่อกับเฟรมเวิร์กไหนก็ได้","public\u002Fproducts\u002Fx3d-skin\u002Fcover\u002Fdb520ac6e2e3d502.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-skin\u002Fcover\u002Fdb520ac6e2e3d502.jpg",[226],[27,31,801,802,803,804,805,806,807,34,28,808,809,810,811,812,813],"ตกแต่งตัวละคร","skin","character customization","skin creator","แต่งตัวละคร","ร้านเสื้อผ้า","ร้านตัดผม","ตู้เสื้อผ้า","ร้านเสริมสวย","ร้านหน้ากาก","ท่าโพส","แต่งหน้า","ไม่ต้องใช้ skinchanger","1.5.4","2026-10-12T17:21:14.159219Z","2026-09-22T04:02:41.988907Z",{"id":818,"slug":819,"name":820,"summary":821,"price_thb":20,"license_mode":21,"cover_key":822,"cover_url":823,"category_slugs":824,"tags":825,"latest_version":214,"latest_released_at":836,"published_at":837,"has_docs":48,"config":49,"rent_price_satang":50},"7337afbc-ca0d-4071-9de4-2cc04bd1b4e6","x3d-menu","X3D เมนูหลัก","เมนูหลักของเซิร์ฟ — การ์ดระบบ ประกาศ อีเวนต์มีช่วงเวลา คู่มือเมือง และหน้าตั้งค่าของผู้เล่น ไม่ต้องลงฐานข้อมูล ต่อกับเฟรมเวิร์กไหนก็ได้","public\u002Fproducts\u002Fx3d-menu\u002Fcover\u002F8a1dbb30861b0387.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fcover\u002F8a1dbb30861b0387.jpg",[226],[27,31,826,827,828,829,228,830,34,28,831,832,833,834,835],"เมนูหลัก","main menu","menu","ประกาศ","คู่มือเมือง","เมนูเมือง","กฎเมือง","เมนู F4","ตั้งค่าผู้เล่น","แบนเนอร์อีเวนต์","2026-10-12T17:21:29.681926Z","2026-09-21T04:20:29.437521Z",{"id":839,"slug":840,"name":841,"summary":842,"price_thb":20,"license_mode":21,"cover_key":843,"cover_url":844,"category_slugs":845,"tags":846,"latest_version":858,"latest_released_at":859,"published_at":860,"has_docs":48,"config":49,"rent_price_satang":50},"7a9dd386-11c0-4f21-8c2e-cfa7dc24d15d","x3d-dailylogin","X3D Daily Login (เช็คอินรายวัน)","เช็คอินรายวัน สตรีค + ตารางรางวัลแก้เองได้ทั้งหมด ฟรี ไม่ต้องลงฐานข้อมูล กระเป๋าเต็มไม่เสียของ ต่อกับเฟรมเวิร์กไหนก็ได้","public\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg",[25],[27,31,847,848,849,850,851,34,28,852,853,854,855,856,857,44],"เช็คอินรายวัน","daily login","daily reward","สตรีค","รางวัลรายวัน","ล็อคอินรายวัน","รางวัลค้างรับ","รับย้อนหลัง","โบนัสเวลาเล่น","รางวัลเข้าเกม","เช็คชื่อรายวัน","1.4.3","2026-10-12T17:21:47.885233Z","2026-09-20T10:37:48.155794Z",{"id":16,"slug":17,"name":18,"summary":19,"price_thb":20,"license_mode":21,"cover_key":22,"cover_url":23,"category_slugs":862,"tags":863,"latest_version":45,"latest_released_at":46,"published_at":47,"has_docs":48,"config":49,"rent_price_satang":50},[25],[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],{"id":865,"slug":866,"name":867,"summary":868,"price_thb":20,"license_mode":21,"cover_key":869,"cover_url":870,"category_slugs":871,"tags":872,"latest_version":515,"latest_released_at":883,"published_at":884,"has_docs":48,"config":49,"rent_price_satang":50},"fd28d581-12ee-43b8-9dfb-aa18defe53be","x3d-carry","X3D Carry (อุ้มศพ)","ระบบอุ้มผู้เล่นฟรี — อุ้มศพ แย่งศพ อุ้มพาดบ่า ขี่หลัง ศพอุ้มได้ไม่ต้องขอ คนเป็นต้องขออนุญาตก่อน เซิร์ฟเวอร์ตัดสินทุกอย่าง UI ภาษาไทย","public\u002Fproducts\u002Fx3d-carry\u002Fcover\u002F133f7c2c2d80c8a5.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-carry\u002Fcover\u002F133f7c2c2d80c8a5.jpg",[25],[27,31,873,874,875,34,28,876,877,878,879,880,881,882],"อุ้มศพ","carry","อุ้มผู้เล่น","แย่งศพ","แบกผู้เล่น","ขี่หลัง","อุ้มพาดบ่า","ลากศพ","เมืองแก๊ง","อุ้มเพื่อน","2026-10-12T17:22:50.777785Z","2026-09-16T13:52:19.956202Z",{"id":886,"slug":887,"name":888,"summary":889,"price_thb":20,"license_mode":21,"cover_key":890,"cover_url":891,"category_slugs":892,"tags":893,"latest_version":163,"latest_released_at":904,"published_at":905,"has_docs":48,"config":49,"rent_price_satang":50},"12cb8b4e-b8db-4ad1-a8a2-bd0679aabec5","x3d-environment","X3D Environment (ล้างแมพ)","ล้างแมพให้สะอาด ฟรี ไฟล์เดียว — ปิด NPC รถ AI scenario กล้อง idle ล้างคราบเลือด ลอยยาง รอยกระสุน และรอยแผลบนตัวผู้เล่น","public\u002Fproducts\u002Fx3d-environment\u002Fcover\u002F7aa9b73e2efb1416.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-environment\u002Fcover\u002F7aa9b73e2efb1416.jpg",[772],[27,31,894,772,895,896,897,34,28,898,899,900,901,902,903],"ล้างแมพ","ลดแลค","เพิ่ม FPS","ปิด NPC","ปิดรถ AI","ล้างคราบเลือด","ลบลอยยาง","ปิดกล้อง idle","ลบ NPC","แมพโล่ง","2026-10-12T17:23:03.418375Z","2026-09-16T09:49:13.991696Z",1,31,[909,915,921,926],{"slug":910,"title":911,"description":912,"date":913,"updated":914,"focused":48},"fivem-admin-panel-free","เมนูแอดมิน FiveM ฟรี (แผงแอดมิน): แบนด้วย token จับบัญชีสำรอง ดูกระเป๋าผู้เล่น log ทุกระบบ — ใช้คู่กับ txAdmin ยังไง","X3D Admin Panel แผงแอดมิน FiveM ฟรีสำหรับ ESX และ standalone: จัดการผู้เล่น ส่องแบบล่องหน ดูกระเป๋าและอาวุธ แจกเงิน\u002Fไอเทม แบนด้วย identifier + token ของเครื่องจนบัญชีสำรองเข้าไม่ได้ ฐานข้อมูลผู้เล่น log เงิน ไอเทม แชต ยศและสิทธิ์ นำเข้าแบนจาก txAdmin และแบ่งงานกับ txAdmin ยังไงให้ไม่ซ้ำ","2026-10-05","2026-10-14",{"slug":916,"title":917,"description":918,"date":919,"updated":920,"focused":48},"fivem-weapon-skins-damage","สกินอาวุธ FiveM ฟรี + ระบบดาเมจปืน: คลังสกินที่เทรดได้ ตั้งดาเมจ headshot เลือดออก สตัน สำหรับเมืองแนวปืน","ระบบสกินอาวุธ FiveM ESX ฟรี (X3D Weapon Skins) ปลดล็อกสกินด้วยไอเทมเข้าคลังถาวร ดาเมจเท่าอาวุธหลัก แปลงกลับเป็นไอเทมไปเทรดหรือขายได้ และระบบดาเมจปืนฟรี (X3D Damage) ตั้งดาเมจรายอาวุธ โดนหัวตาย เลือดออก ช้า สตัน ล้ม ดูดเลือด ใช้กับ ESX และ standalone พร้อมวิธีเพิ่มสกินใหม่และข้อควรรู้เรื่องกันโปร","2026-10-10","2026-10-11",{"slug":922,"title":923,"description":924,"date":925,"updated":914,"focused":569},"fivem-scripts-guide","สคริป FiveM คืออะไร มีกี่แบบ และเลือกอย่างไรให้เซิร์ฟไม่หน่วง","คู่มือสคริป FiveM ฉบับเข้าใจง่าย: ประเภทสคริป (HUD, อาชีพ, คาสิโน, แอนตี้โกง, ล้างแมพ) ความต่าง ESX\u002FQBCore\u002FStandalone และวิธีเลือกให้เหมาะกับเซิร์ฟของคุณ","2026-09-16",{"slug":927,"title":928,"description":929,"date":930,"updated":914,"focused":569},"open-fivem-server-budget","เปิดเซิฟ FiveM กี่บาท ใช้อะไรบ้าง — งบและสคริปที่ต้องมี ตั้งแต่ 32 คนถึงเมือง 2,000 คน (2026)","รวมสคริปที่จำเป็นสำหรับเปิดเซิร์ฟเวอร์ FiveM 2026 พร้อมงบ 3 สเกล: เริ่มต้น 32–64 คน, เปิดสาธารณะ 128–500 คน, เมืองใหญ่ 1,000–2,048 คน (Element Club Platinum, เครื่อง dedicated, เสียงแยก, DB แยก, ทีมงาน) ตัวไหนใช้ของฟรีได้ ตัวไหนควรจ่าย ตัวไหนต้องเขียนใหม่เมื่อคนถึงสองพัน","2026-09-15",1792316304919]