[{"data":1,"prerenderedAt":896},["ShallowReactive",2],{"site":3,"docs-slug-site":15,"docs-product-th-x3d-dailylogin":21,"docs-products-th":86,"docs-html-th-x3d-dailylogin":867},{"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":49,"latest_released_at":50,"published_at":51,"has_docs":52,"config":53,"rent_price_satang":54,"description_md":55,"docs_md":56,"seo_title":57,"seo_description":58,"media":59,"versions":71},"7a9dd386-11c0-4f21-8c2e-cfa7dc24d15d","x3d-dailylogin","X3D Daily Login (เช็คอินรายวัน)","เช็คอินรายวัน สตรีค + ตารางรางวัลแก้เองได้ทั้งหมด ฟรี ไม่ต้องลงฐานข้อมูล กระเป๋าเต็มไม่เสียของ ต่อกับเฟรมเวิร์กไหนก็ได้",0,"none","public\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg",[31],"gameplay",[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"esx","standalone","เช็คอินรายวัน","daily login","daily reward","สตรีค","รางวัลรายวัน","ฟรี","free","ล็อคอินรายวัน","รางวัลค้างรับ","รับย้อนหลัง","โบนัสเวลาเล่น","รางวัลเข้าเกม","เช็คชื่อรายวัน","ไม่ต้องใช้ฐานข้อมูล","1.4.3","2026-10-12T17:21:47.885233Z","2026-09-20T10:37:48.155794Z",true,"public",null,"# เช็คอินรายวัน ที่ผู้เล่นไม่มีวันเสียของ\n\nเข้าเกมมากดรับรางวัล สตรีคเดินต่อทุกวัน ขาดวันแล้วจะรีเซ็ตหรือนับต่อก็เลือกได้ · ตารางรางวัลแก้เองทั้งหมด · **ไม่ต้องลงอะไรเพิ่มเลย** ไม่ต้องใช้ฐานข้อมูล ทำงานกับ ESX ได้ทันที และทำงานแบบ standalone ได้ถ้าไม่มีเฟรมเวิร์ก (ต่อ QBCore เองได้ผ่าน adapter ที่เตรียมไว้ให้)\n\n---\n\n## ฟีเจอร์\n\n- [+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\n- [+] ตารางรางวัลกี่วันก็ได้ จะวนตารางใหม่หรือจบก็ได้\n- [+] รางวัลผสมได้ ไอเทม เงินเขียว\u002Fธนาคาร\u002Fเงินแดง อาวุธ โทเคน\n- [+] ขาดวันแล้วสตรีครีเซ็ตหรือนับต่อ เลือกได้\n- [+] เปิดรับย้อนหลังได้ ตั้งจำนวนวันที่ตามเก็บเอง\n- [+] โบนัสเล่นครบ N ชั่วโมง ปลดล็อกรางวัลหรือรับวันถัดไปทันที\n- [+] หลายแทร็กพร้อมกัน ตั้งช่วงเวลาเปิดปิดกิจกรรม หรือจบในตัวได้\n- [+] กดรับเอง รับอัตโนมัติ หรือเปิดหน้าต่างให้เองตอนเข้าเกม\n- [+] กระเป๋าเต็มรางวัลไม่หาย เก็บเป็นรางวัลค้างรับ ตั้งลิมิตได้\n- [+] กันกดรับซ้ำ จ่ายครั้งเดียว ไม่กินวันเปล่า\n- [+] ส่งรางวัลเข้ากล่องจดหมาย x3d_mailbox (ตู้นิรภัย) แทนกระเป๋าได้\n- [+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\n\n---\n\n## กระเป๋าเต็มก็ไม่เสียรางวัล\n\nกระเป๋าเต็มตอนกดรับ ระบบเก็บรางวัลไว้ให้เป็น **รางวัลค้างรับ** ของคนนั้นเอง วันยังถูกนับ สตรีคเดินต่อ แล้วค่อยมากดรับทีหลังตอนมีที่ว่างจากหน้าต่างเดิม — ไม่ต้องพึ่งระบบอื่น ไม่มีทางที่รางวัลจะหายไปเฉย ๆ\n\n## ปลอดภัยแบบเดียวกับระบบเงิน\n\n- กดรับซ้ำจ่ายครั้งเดียว — ตัดวันก่อนจ่ายเสมอ และมีล็อกกันกดซ้ำในจังหวะเดียวกัน\n- จ่ายไม่สำเร็จเลย = คืนวันให้ผู้เล่นกดใหม่ ไม่ใช่กินวันแล้วเงียบ\n- จำนวนของถูกปัดเป็นจำนวนเต็มและรวมแถวซ้ำก่อนเช็กกระเป๋าเสมอ\n- จำกัด 1 ครั้ง\u002Fวินาที\u002Fคน ทั้งการเปิดหน้าต่างและการกดรับ\n- เส้นแบ่งวันคิดจากเวลาเซิร์ฟเวอร์ตาม `Config.TimezoneOffset` ไม่ใช่เวลาเครื่องผู้เล่น\n\n## ต่อกับ inventory ของคุณได้จริง\n\nเซิร์ฟที่เปลี่ยน inventory (x3d_inventory \u002F ox_inventory \u002F NC) ตัวเลขน้ำหนักของ ESX จะเพี้ยนจนรางวัลถูกปฏิเสธว่า \"กระเป๋าเต็ม\" ทั้งที่ยังว่าง — ตั้ง `Config.CanCarryExport` ชี้ไปที่ export ของ inventory จริง จบ และใส่ path รูปไอเทมของคุณเองได้ด้วย\n\n## ปรับได้ทุกอย่าง\n\nตารางรางวัลกี่วันก็ได้ วนตารางหรือจบก็ได้ · รับเองหรือรับอัตโนมัติตอนเข้าเกม · ชื่อไอเทม\u002Fชื่อบัญชีภาษาไทย · เก็บข้อมูลเป็นไฟล์ JSON ในตัว หรือสลับไปใช้ oxmysql ด้วยการคัดลอกบล็อกที่เตรียมไว้ให้แล้ว\n\n**ฟรี** · แก้โค้ดได้ตามใจ · ขอแค่อย่านำไปขายต่อและอย่าอัปโหลดใหม่ในชื่อตัวเอง\n\n- **ถ้ามี X3D Admin Panel (ไม่บังคับ):** แก้ปฏิทินรางวัลแยกตามแทร็ก เพิ่ม\u002Fปิด\u002Fตั้งเวลาแทร็กสำหรับเทศกาล แก้ระดับโบนัสเวลาเล่น และดูประวัติการรับ มีผลทันทีไม่ต้องรีสตาร์ท ไม่มีแผงก็ทำงานเหมือนเดิม\n- **แทร็กแบบจบในตัว:** ตั้ง `loop` แยกต่อแทร็ก เช่นปฏิทิน 31 วันของผู้เล่นใหม่ที่จบหลังวันสุดท้าย ส่วนปฏิทินหลักวนต่อตามปกติ\n- **ส่งรางวัลเข้ากล่องจดหมาย:** ส่งไอเทมและเงินเข้าตู้นิรภัยของ X3D Mailbox แทนใส่กระเป๋าได้\n- **เปิดเองและแจ้งเตือน:** เปิดหน้าต่างครั้งเดียวต่อการเชื่อมต่อหลังหน่วงเวลา และแจ้งรางวัลที่รับให้อัตโนมัติทุกชิ้น\n","## การติดตั้ง\n\n1. แตกไฟล์แล้ว **เปลี่ยนชื่อโฟลเดอร์เป็น `x3d_dailylogin`** (สคริปต์อื่นเรียก export ด้วยชื่อนี้)\n2. วางใน `resources\u002F`\n3. เพิ่มใน `server.cfg`:\n\n```\nensure x3d_dailylogin\n```\n\nไม่ต้องใช้ฐานข้อมูล ไม่มีไลเซนส์ · ทำงานกับ ESX ได้ทันที และทำงานแบบ standalone ได้ถ้าไม่มีเฟรมเวิร์ก (QBCore ต้องต่อ adapter เองก่อน)\n\nเปิดหน้าต่างด้วย **F6** หรือพิมพ์ `\u002Fdailylogin` — หรือปล่อยให้เปิดเอง (`Config.AutoOpen = true` ค่าเริ่มต้น) ตอนมีอะไรให้กด\n\nตัวเลือกเปิดหน้าต่างอัตโนมัติใน `config.lua`:\n\n- `Config.AutoOpen = 'always'` — เปิดครั้งเดียวต่อการเชื่อมต่อ (หลัง `Config.AutoDelay`) ไม่เปิดซ้ำทุกครั้งที่เกิดใหม่\n- `Config.AutoDelay` — เวลาหน่วงก่อนเปิด\n- `Config.AutoNotify` — แจ้งรางวัลที่รับอัตโนมัติทุกชิ้น (ชื่อรางวัล + แทร็กและวันที่)\n\n## ตารางรางวัล\n\nแก้ที่ `config.lua` — จะกี่วันก็ได้ ใส่ `items`\u002F`money`\u002F`weapon`\u002F`token` ผสมกันได้\n\n```lua\nConfig.Rewards = {\n    [1] = { money = { { account = 'money', amount = 500 } } },\n    [2] = { items = { { item = 'bread', count = 2 } } },\n    [3] = { weapon = { { name = 'WEAPON_PISTOL', ammo = 30 } } },\n    [7] = { money = { { account = 'bank', amount = 5000 } }, label = 'รางวัลครบสัปดาห์' },\n}\n\nConfig.LoopRewards = true   -- ครบตารางแล้ววนกลับไปรับของวันแรกอีกครั้ง (key ไม่ต้องเรียงติดกันก็ได้ — ตัวอย่างนี้มีแค่ 3 วัน วันที่ 7 จะมาถึงตอนกดรับครั้งที่ 3)\nConfig.ResetOnMiss = true   -- ขาดวันแล้วสตรีคกลับไปเริ่มที่ 1\nConfig.AutoClaim   = false  -- true = รับให้อัตโนมัติตอนเข้าเกม\n```\n\nอยากมีหลายชุดพร้อมกัน (ปฏิทินปกติ + กิจกรรมเปิดตัวจำกัดเวลา) ตั้ง `Config.Tracks` — แต่ละแทร็กมีสตรีค\u002Fรางวัลค้างรับเป็นของตัวเอง มี `from`\u002F`to` (unix) กำหนดช่วงเวลาเปิดได้ ไม่ตั้งเลย = ทำงานแทร็กเดียวเหมือนเดิม\n\n- `loop` แยกต่อแทร็กใน `Config.Tracks` (ไม่ตั้ง = ใช้ `Config.LoopRewards`): ตั้ง `loop = false` ได้แทร็กแบบครั้งเดียว เช่นปฏิทิน 31 วันของผู้เล่นใหม่ที่จบหลังวันสุดท้าย\n- `Config.TokenLabels` — ชื่อที่อ่านง่ายสำหรับรางวัลโทเคน\n- `Config.Mailbox` + `Reward.ToMailbox` — ส่งไอเทม\u002Fเงินของรางวัลนั้นเข้ากล่องจดหมาย (ค่าเริ่มต้นคือตู้นิรภัยของ x3d_mailbox) แทนใส่กระเป๋า\n- **ถ้าใช้ X3D Admin Panel:** ที่แก้ในแผงเก็บไว้ใน storage key `__admin` และทับ `Config.Rewards` \u002F `Config.Tracks` \u002F `Config.PlaytimeBonusHours` ตอนเริ่มเซิร์ฟ — config ใช้เป็นค่าตั้งต้นครั้งแรกเท่านั้น ส่วน `Daily.Rebuild()` สร้างตารางรางวัลใหม่จาก `Config` ตอนรันไทม์\n\n## โบนัสเวลาเล่น\n\nเล่นครบ N ชั่วโมงในวันนี้ปลดล็อกรางวัลอีกชุดให้กดเอง (แยกจากปฏิทิน, นับต่อได้ข้าม reconnect):\n\n```lua\nConfig.PlaytimeBonusHours = {\n    [2] = { money = { { account = 'money', amount = 300 } } },\n    [5] = { money = { { account = 'bank', amount = 800 } } },\n}\n```\n\nว่างเปล่า = ปิดฟีเจอร์นี้ ไม่โชว์ในหน้าต่างเลย\n\n`Config.PlaytimeMode = 'extra_day'` — แต่ละระดับของโบนัสเวลาเล่นจะรับวันถัดไปของทุกแทร็กที่เปิดอยู่พร้อมกัน แทนที่จะเป็นรางวัลแยก\n\n## เส้นแบ่งวัน\n\n```lua\nConfig.TimezoneOffset = 7 * 3600   -- ไทย GMT+7\n```\n\nคิดจากเวลาเซิร์ฟเวอร์ ไม่ใช่เวลาเครื่องผู้เล่น — ผู้เล่นหมุนนาฬิกาเครื่องตัวเองไม่ช่วยอะไร\n\n## รับย้อนหลัง (ปิดไว้เป็นค่าเริ่มต้น)\n\nขาดไปหลายวันแล้วอยากให้ตามเก็บรางวัลวันที่พลาดได้ เปิดใน `config.lua`:\n\n```lua\nConfig.BackClaim = {\n    enabled = true,\n    maxDays = 3,     -- ตามเก็บย้อนหลังได้ไกลสุด 3 วัน\n}\n```\n\n| สถานการณ์ | ปิด (ค่าเริ่มต้น) | เปิด maxDays = 3 |\n|---|---|---|\n| ขาด 3 วันแล้วกลับมา | กด 1 ครั้ง ได้รางวัลของวันนี้ วันที่ขาดหายไปเลย | กดได้ 4 ครั้ง ไล่เก็บวันที่ขาดทีละวันจนถึงวันนี้ |\n| ขาด 9 วันแล้วกลับมา | เหมือนเดิม กดครั้งเดียว | ตามเก็บได้แค่ 3 วันหลังสุด + วันนี้ |\n| ผู้เล่นใหม่ที่เพิ่งกดครั้งแรก | เริ่มวันนี้ | เริ่มวันนี้เหมือนกัน ไม่แจกวันย้อนหลังที่ไม่เคยเล่น |\n\nตามเก็บทีละวันแปลว่า **สตรีคไม่ขาด** เพราะวันถูกตัดต่อเนื่องกัน · หน้าต่างจะบอกว่าเหลือให้ตามเก็บอีกกี่วัน\n\n## กระเป๋าเต็มตอนกดรับ\n\nรางวัลไม่หาย และไม่เสียวัน — ระบบเก็บไว้เป็น **รางวัลค้างรับ** ของผู้เล่นคนนั้น ไปกดรับทีหลังตอนมีที่ว่างได้จากหน้าต่างเดิม\n\n| ค่า | ผลลัพธ์ |\n|---|---|\n| `Config.HoldWhenFull = true` (ค่าเริ่มต้น) | เก็บเป็นรางวัลค้างรับ ตัดวันตามปกติ สตรีคเดินต่อ |\n| `Config.HoldWhenFull = false` | ไม่ตัดวัน ผู้เล่นเคลียร์กระเป๋าแล้วมากดใหม่ |\n| `Config.MaxPending` | เก็บค้างได้สูงสุดกี่ชุดต่อคน (ค่าเริ่มต้น 10) ถึงเพดานแล้วจะไม่ตัดวันให้ |\n\nรางวัลค้างรับเก็บอยู่ในตัว x3d_dailylogin เอง **ไม่ยุ่งกับกล่องจดหมาย** (กล่องจดหมายเป็นของทีมงานและโค้ดรับของ)\n\n```lua\nexports['x3d_dailylogin']:GetPending(src)            --> รายการค้างรับ\nexports['x3d_dailylogin']:ClaimPending(src, 1)       --> ok, reason\n\nAddEventHandler('x3d_dailylogin:onPending', function(src, entry, ok, trackId) end)\n```\n\n## เซิร์ฟที่ใช้ inventory ของตัวเอง\n\n| ค่า | ใช้ทำอะไร |\n|---|---|\n| `Config.CanCarryExport` | export ของ inventory จริงที่ใช้เช็กว่ากระเป๋ารับไหว — **ขึ้น \"กระเป๋าเต็ม\" ทั้งที่ยังว่าง ให้ตั้งค่านี้** (ตัวเลขน้ำหนักของ ESX จะเพี้ยนเมื่อ inventory อื่นเป็นคนคุม) |\n| `Config.ItemImage` | path รูปไอเทมของ inventory ที่ใช้ (`{item}` = ชื่อไอเทม), ว่าง = ไม่โชว์รูป |\n| `Config.ItemLabels` \u002F `Config.AccountLabels` | ชื่อไทยของไอเทมและบัญชีเงิน |\n\nตัวอย่างที่เตรียมไว้ให้แล้วใน `config.lua`: x3d_inventory, ox_inventory, qb-inventory\n\n## เรียกจาก resource อื่น\n\n```lua\nexports['x3d_dailylogin']:GetStreak(src, trackId)   --> number — trackId ไม่ใส่ = 'default'\nexports['x3d_dailylogin']:CanClaim(src, trackId)    --> true \u002F false\nexports['x3d_dailylogin']:Claim(src, trackId)       --> ok, reason\nexports['x3d_dailylogin']:ClaimPlaytime(src, hours) --> ok, reason\n\nAddEventHandler('x3d_dailylogin:onClaim', function(src, streak, reward, ok, trackId)\n    -- ok = false แปลว่าจ่ายได้ไม่ครบ (บางชิ้นไม่เข้า) — จดหมายเหตุไว้เช็กได้ (listener เก่าที่ไม่รับ trackId ยังใช้ได้ปกติ)\n    print(('ผู้เล่น %s รับรางวัลวันที่ %d ของแทร็ก %s (ครบ: %s)'):format(src, streak, trackId, tostring(ok)))\nend)\n```\n\n## คำสั่งแอดมิน\n\n`\u002Fdailyreset \u003Cserver id>` — ล้างสตรีค วันล่าสุด และรางวัลค้างรับทั้งหมดของผู้เล่นคนนั้นทิ้ง ใช้ตอนต้องแก้ปัญหาให้ผู้เล่น ไม่ใช่ของเล่น เรียกจากคอนโซลได้เสมอ เรียกจากผู้เล่นในเกมต้องมี ace `Config.AdminAce` (ค่าเริ่มต้น `x3d_dailylogin.admin`) คำสั่งส่งข้อมูลที่ล้างแล้วไปอัปเดตหน้าจอเป้าหมายเฉย ๆ ไม่แย่งโฟกัส — ปฏิทินจะโชว์ข้อมูลใหม่ก็ต่อเมื่อผู้เล่นคนนั้นเปิดหน้าต่างอยู่ก่อนแล้วเท่านั้น ไม่ได้เปิดปฏิทินขึ้นมาให้เอง\n\n## เก็บข้อมูลด้วย oxmysql แทนไฟล์ JSON\n\nค่าเริ่มต้นเก็บใน `data\u002Fdailylogin.json` ไม่ต้องใช้ฐานข้อมูลเลย · อยากใช้ฐานข้อมูล: เปิด `addons\u002Fstorage\u002Fserver.lua` คัดลอกบล็อก oxmysql ท้ายไฟล์ทับสี่ฟังก์ชันด้านบน แล้วรัน `install.sql`\n\nการเซฟ: ทุก 30 วินาที (`Config.Storage.FlushSeconds`), ตอนผู้เล่นออก และตอนปิด resource แบบปกติ · เซิร์ฟดับกะทันหันจะเสียได้มากที่สุดแค่ช่วงที่ยังไม่ได้เซฟ\n\n## ช่วยเหลือ\n\nDiscord: discord.gg\u002Fx3d-developer · เว็บ: x3d-developer.com\n","สคริปต์เช็คอินรายวัน FiveM ฟรี พร้อมสตรีค","สคริปต์ FiveM ฟรี ระบบเช็คอินรายวันพร้อมสตรีคและตารางรางวัลแก้เองได้ ไม่ต้องลงฐานข้อมูล ต่อกับเฟรมเวิร์กไหนก็ได้ กระเป๋าเต็มไม่เสียรางวัล ทดสอบ 49 เคส",[60,63,65,67,69],{"kind":61,"url":62},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fmedia\u002Faf63b761b443b974.png",{"kind":61,"url":64},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fmedia\u002Fb5026093f5d59f28.png",{"kind":61,"url":66},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fmedia\u002F207d4f9572b33005.png",{"kind":61,"url":68},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fmedia\u002F4139bf7de3314fd7.png",{"kind":61,"url":70},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fmedia\u002Fa2cbf95b87dd92e7.png",[72,74,78,82],{"version":49,"released_at":50,"changelog_md":73},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":75,"released_at":76,"changelog_md":77},"1.4.1","2026-10-12T03:25:11.338905Z","### 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)",{"version":79,"released_at":80,"changelog_md":81},"1.4.0","2026-10-05T03:00:08.391317Z","### Added\r\n- Optional x3d_adminpanel menu (`admin.lua`): edit the reward calendar per track, add\u002Fdisable\u002Fschedule tracks for festivals, edit playtime bonus tiers and browse claim history, all applied live without a restart; runs the same as before when the panel is not installed\r\n- Panel edits are stored in the storage key `__admin` and override `Config.Rewards`\u002F`Config.Tracks`\u002F`Config.PlaytimeBonusHours` at boot (the config only seeds the first run)\r\n- `Daily.Rebuild()` rebuilds the reward tables from `Config` at runtime\r\n- Per-track `loop` in `Config.Tracks` (unset = `Config.LoopRewards`): a one-time track such as a 31-day new-player calendar ends after its last day while the regular calendar keeps repeating\r\n- `Config.TokenLabels` shows a readable name for token rewards\r\n- `Config.AutoOpen = 'always'`, `Config.AutoDelay`, `Config.AutoNotify`: open once per connection after a delay and notify each auto-claimed reward (reward name + track and day)\r\n- `Config.PlaytimeMode = 'extra_day'`: each playtime tier claims the next day of every active track at once\r\n- `Config.Mailbox` + `Reward.ToMailbox`: send items\u002Fmoney to a mailbox (x3d_mailbox safe by default) instead of the bag\r\n- Calendar footer shows the event period, where rewards go, today's auto-claimed days and playtime progress; tabs show progress against the track length and a check mark when finished\r\n### Fixed\r\n- A finished one-time track counted as claimable, so the panel opened on every spawn and the calendar jumped back to day 1 with no stamps\r\n- Auto-claim\u002Fauto-open ran again on every respawn; it now runs once per connection\r\n- Days claimed today now get the stamp animation when the calendar opens, not only after a manual click\r\n### Changed\r\n- Item names on the calendar fall back to the framework's item label when `Config.ItemLabels` has no entry, instead of showing the raw key",{"version":83,"released_at":84,"changelog_md":85},"1.2.1","2026-09-20T10:37:46.445431Z","### Fixed\r\n- Playtime bonus tiers could be claimed twice by sending the same tier once as an integer and once as a float (e.g. `2` then `2.0`) — the reward lookup, the claimed flag and the in-flight lock now all derive from one floored integer, and a non-integer or unconfigured tier is refused cleanly\r\n- `Daily.Claim`\u002F`Daily.ClaimPending` threw a script error (no toast) instead of answering when `trackId` was not a string, since it was concatenated into the lock key before being validated\r\n- `Config.PlaytimeBonusHours = nil` (documented as \"feature off\") produced a misleading `deliver_failed` instead of a clean refusal\r\n- The last few seconds of a session's playtime, between the last periodic tick and a disconnect, are now credited instead of lost\r\n### Changed\r\n- README\u002Fdocs corrected: `\u002Fdailyreset` only refreshes a target's calendar if it is already open, it does not force the panel open",{"items":87,"page":865,"size":866,"total":866},[88,124,146,175,197,226,259,284,311,341,366,392,420,447,475,503,527,547,570,597,627,652,676,700,721,749,774,795,798,823,844],{"id":89,"slug":90,"name":91,"summary":92,"price_thb":93,"license_mode":94,"cover_key":95,"cover_url":96,"category_slugs":97,"tags":100,"latest_version":119,"latest_released_at":120,"published_at":121,"has_docs":52,"config":122,"rent_price_satang":123},"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",[98,99],"anticheat","admin",[33,101,102,103,104,105,106,107,108,109,110,111,112,113,98,114,115,116,117,118],"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":125,"slug":126,"name":127,"summary":128,"price_thb":93,"license_mode":94,"cover_key":129,"cover_url":130,"category_slugs":131,"tags":132,"latest_version":143,"latest_released_at":144,"published_at":145,"has_docs":52,"config":122,"rent_price_satang":123},"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",[98],[33,34,133,98,134,135,136,113,137,138,139,140,141,142],"แอนตี้โกง","ป้องกันแฮก","กันโกง","HWID ban","ภาพหลักฐาน","ล็อกบัญชี Steam Discord","แบนเครื่อง","คิวยศ Discord","กัน event สแปม","แอนตี้โกง ESX","1.0.0","2026-09-16T09:45:51.78533Z","2026-09-16T09:46:00.05928Z",{"id":147,"slug":148,"name":149,"summary":150,"price_thb":151,"license_mode":94,"cover_key":152,"cover_url":153,"category_slugs":154,"tags":158,"latest_version":171,"latest_released_at":172,"published_at":173,"has_docs":52,"config":122,"rent_price_satang":174},"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",[155,156,157],"casino","economy","entertainment",[33,34,159,160,155,161,162,163,164,165,166,167,168,169,170],"คาสิโน","สล็อต","slot","มินิเกม","minigame","RTP 97.5%","มาห์จอง","คาสเคด","ฟรีสปิน","ตู้สล็อต","ซื้อฟีเจอร์","ปรับ RTP","1.1.4","2026-10-12T17:13:01.863556Z","2026-09-14T15:28:02.281478Z",50000,{"id":176,"slug":177,"name":178,"summary":179,"price_thb":26,"license_mode":27,"cover_key":180,"cover_url":181,"category_slugs":182,"tags":184,"latest_version":194,"latest_released_at":195,"published_at":196,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183,31],"hud",[185,186,187,188,189,190,191,192,193,40,41],"อีเวนต์","อีเวนต์บนแผนที่","แผนที่","จุดนำทาง","นับถอยหลัง","pause menu","map events","event","waypoint","1.0.3","2026-10-12T17:13:20.327337Z","2026-10-12T04:21:56.480796Z",{"id":198,"slug":199,"name":200,"summary":201,"price_thb":26,"license_mode":27,"cover_key":202,"cover_url":203,"category_slugs":204,"tags":206,"latest_version":223,"latest_released_at":224,"published_at":225,"has_docs":52,"config":53,"rent_price_satang":54},"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",[31,205],"inventory",[207,208,209,210,211,212,213,214,215,216,33,40,41,217,218,219,220,221,222],"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":227,"slug":228,"name":229,"summary":230,"price_thb":26,"license_mode":27,"cover_key":231,"cover_url":232,"category_slugs":233,"tags":235,"latest_version":119,"latest_released_at":257,"published_at":258,"has_docs":52,"config":53,"rent_price_satang":54},"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",[31,234],"gangs",[236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,33,34,40,41,251,252,253,254,255,256],"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":260,"slug":261,"name":262,"summary":263,"price_thb":26,"license_mode":27,"cover_key":264,"cover_url":265,"category_slugs":266,"tags":268,"latest_version":119,"latest_released_at":282,"published_at":283,"has_docs":52,"config":53,"rent_price_satang":54},"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",[205,267],"garage",[269,270,271,272,273,274,275,216,33,40,41,276,277,278,279,280,281],"trunk","ท้ายรถ","ท้ายรถ fivem","vehicle storage","trunk inventory","esx trunk","เก็บของในรถ","ตู้ท้ายรถ","รถงาน","กล่องเก็บของหน้ารถ","น้ำหนักท้ายรถ","ล็อกรถ","เปิดท้ายรถ","2026-10-12T17:14:46.845123Z","2026-10-05T04:28:52.749188Z",{"id":285,"slug":286,"name":287,"summary":288,"price_thb":26,"license_mode":27,"cover_key":289,"cover_url":290,"category_slugs":291,"tags":293,"latest_version":119,"latest_released_at":309,"published_at":310,"has_docs":52,"config":53,"rent_price_satang":54},"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",[205,292],"jobs",[294,295,296,297,298,299,300,301,216,33,40,41,302,303,304,305,306,307,308],"vault","stash","ตู้เซฟ","ตู้เก็บของ","ตู้เซฟ fivem","esx stash","job vault","ตู้หน่วยงาน","ตู้เซฟแก๊ง","ตู้ส่วนตัว","แชร์ตู้","อัปเกรดตู้","ตู้เซฟตำรวจ","ตู้เซฟอาชีพ","ลิมิตตู้","2026-10-12T17:15:03.928293Z","2026-10-05T04:28:43.828514Z",{"id":312,"slug":313,"name":314,"summary":315,"price_thb":26,"license_mode":27,"cover_key":316,"cover_url":317,"category_slugs":318,"tags":319,"latest_version":338,"latest_released_at":339,"published_at":340,"has_docs":52,"config":53,"rent_price_satang":54},"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",[99],[320,321,322,323,324,325,139,326,327,328,329,330,117,331,33,34,40,41,332,333,334,335,336,337],"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":342,"slug":343,"name":344,"summary":345,"price_thb":26,"license_mode":27,"cover_key":346,"cover_url":347,"category_slugs":348,"tags":349,"latest_version":171,"latest_released_at":364,"published_at":365,"has_docs":52,"config":53,"rent_price_satang":54},"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",[205,183],[205,350,351,352,353,354,355,356,357,358,33,40,41,359,360,361,362,363],"กระเป๋า","กระเป๋า fivem","ui กระเป๋า","esx inventory","inventory fivem","ช่องลัด","hotbar","ไอเทม","nui","คูปองขยายช่อง","คูปองน้ำหนัก","ความหายากไอเทม","ค้นกระเป๋า","จำกัดน้ำหนัก","2026-10-12T17:16:22.733967Z","2026-10-05T04:10:14.693356Z",{"id":367,"slug":368,"name":369,"summary":370,"price_thb":26,"license_mode":27,"cover_key":371,"cover_url":372,"category_slugs":373,"tags":374,"latest_version":171,"latest_released_at":390,"published_at":391,"has_docs":52,"config":53,"rent_price_satang":54},"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",[157],[375,376,377,378,379,380,381,382,383,33,40,41,384,385,386,387,388,389],"หมอดู","ดูดวง","เซียมซี","ไพ่ยิปซี","tarot","ราศี","ดวงรายวัน","fortune teller","npc","ดวงรายเดือน","ไพ่ทาโร่","เลขมงคล","สีมงคล","ไพ่กลับหัว","จุดหมอดู","2026-10-12T17:16:40.12128Z","2026-09-26T14:59:27.315955Z",{"id":393,"slug":394,"name":395,"summary":396,"price_thb":26,"license_mode":27,"cover_key":397,"cover_url":398,"category_slugs":399,"tags":400,"latest_version":417,"latest_released_at":418,"published_at":419,"has_docs":52,"config":53,"rent_price_satang":54},"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",[156],[401,402,403,404,405,406,407,408,409,410,33,40,41,411,412,413,414,415,416],"banking","ธนาคาร","ระบบธนาคาร","atm","ตู้ atm","โอนเงิน","โอนด้วยเบอร์โทร","esx banking","bank script","ประวัติรายการ","ถอนด่วน","วงเงินโอน","สาขาธนาคาร","ฝากเงิน","ถอนเงิน","เพิ่มตู้ ATM","1.1.8","2026-10-12T17:16:55.98941Z","2026-09-26T14:59:08.07128Z",{"id":421,"slug":422,"name":423,"summary":424,"price_thb":26,"license_mode":27,"cover_key":425,"cover_url":426,"category_slugs":427,"tags":428,"latest_version":171,"latest_released_at":445,"published_at":446,"has_docs":52,"config":53,"rent_price_satang":54},"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",[157],[429,430,431,432,433,434,435,436,437,438,33,40,41,439,440,441,442,443,444],"boombox","ลำโพง","ลำโพงเปิดเพลง","เปิดเพลง youtube","music script","fivem music","xsound","youtube","คิวเพลง","ติดบนรถ","ลำโพงติดรถ","เปิดเพลงในรถ","ฟังเพลงด้วยกัน","เพลงร่วมกัน","ลำโพงวางพื้น","จำกัดลำโพง","2026-10-12T17:17:14.482272Z","2026-09-26T14:56:09.091062Z",{"id":448,"slug":449,"name":450,"summary":451,"price_thb":26,"license_mode":27,"cover_key":452,"cover_url":453,"category_slugs":454,"tags":455,"latest_version":472,"latest_released_at":473,"published_at":474,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183],[456,457,458,459,460,461,462,463,464,465,466,33,40,41,467,468,469,470,471],"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":476,"slug":477,"name":478,"summary":479,"price_thb":26,"license_mode":27,"cover_key":480,"cover_url":481,"category_slugs":482,"tags":483,"latest_version":472,"latest_released_at":501,"published_at":502,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183],[484,485,486,487,488,489,490,465,491,492,493,494,495,33,40,41,496,497,498,459,499,500],"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":504,"slug":505,"name":506,"summary":507,"price_thb":26,"license_mode":27,"cover_key":508,"cover_url":509,"category_slugs":510,"tags":511,"latest_version":472,"latest_released_at":524,"published_at":525,"has_docs":526,"config":27,"rent_price_satang":54},"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",[234,31],[512,513,296,514,162,163,515,516,34,517,40,41,518,519,520,521,522,523],"safe cracking","เจาะตู้เซฟ","หมุนตู้เซฟ","มินิเกม fivem","export","crime","หมุนหน้าปัด","ตู้เซฟธนาคาร","ตู้เซฟร้าน","ตู้เซฟบ้าน","ไม่ต้องใช้ ESX","มินิเกม A\u002FD","2026-10-12T17:18:34.435941Z","2026-09-24T03:53:28.3285Z",false,{"id":528,"slug":529,"name":530,"summary":531,"price_thb":26,"license_mode":27,"cover_key":532,"cover_url":533,"category_slugs":534,"tags":535,"latest_version":544,"latest_released_at":545,"published_at":546,"has_docs":526,"config":27,"rent_price_satang":54},"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",[234,31],[536,537,538,162,163,515,516,34,517,40,41,539,540,541,542,543],"lockpick","งัดล็อก","สะเดาะกุญแจ","งัดประตูบ้าน","งัดรถ","หมุดล็อก","มินิเกม WASD","ปรับความยาก","1.1.1","2026-10-12T17:18:46.115275Z","2026-09-24T03:53:14.231073Z",{"id":548,"slug":549,"name":550,"summary":551,"price_thb":26,"license_mode":27,"cover_key":552,"cover_url":553,"category_slugs":554,"tags":556,"latest_version":567,"latest_released_at":568,"published_at":569,"has_docs":52,"config":53,"rent_price_satang":54},"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",[555,234],"housing",[557,558,559,560,561,296,536,162,234,562,555,517,33,40,41,563,513,564,565,566],"งัดบ้าน","ปล้นบ้าน","house robbery","robbery","ปล้น","แก๊ง","คีย์การ์ด","เงินแดง","จุดค้นของ","ปล้นบ้านคูลดาวน์","1.2.4","2026-10-12T17:19:03.056031Z","2026-09-24T03:48:06.633278Z",{"id":571,"slug":572,"name":573,"summary":574,"price_thb":26,"license_mode":27,"cover_key":575,"cover_url":576,"category_slugs":577,"tags":578,"latest_version":594,"latest_released_at":595,"published_at":596,"has_docs":52,"config":53,"rent_price_satang":54},"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",[234,156],[579,580,581,582,583,584,585,586,234,562,517,33,40,41,587,588,589,590,591,592,564,593],"ขายยา","งานขายยา","sell drug","drug selling","ของผิดกฎหมาย","เงินดำ","black money","ผู้รับซื้อ","จุด10","จุดสิบ","จุดขายยา","ขายของจุด10","ขายของลับ","ฟอกเงิน","ผู้รับซื้อรายใหญ่","1.2.6","2026-10-12T17:19:19.018788Z","2026-09-24T03:39:03.703963Z",{"id":598,"slug":599,"name":600,"summary":601,"price_thb":26,"license_mode":27,"cover_key":602,"cover_url":603,"category_slugs":604,"tags":605,"latest_version":223,"latest_released_at":625,"published_at":626,"has_docs":526,"config":53,"rent_price_satang":54},"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",[205,31],[606,607,608,609,610,611,612,613,614,615,616,617,618,33,40,41,619,620,621,622,623,624],"use item","ไอเทมใช้ได้","usable items","ยา","ผ้าพันแผล","aed","ชุบคนล้ม","ซ่อมรถ","กระสุน","กล่องสุ่ม","อาหาร","เสื้อเกราะ","หมวกกันน็อค","บัฟอาหาร","ชุดซ่อมรถ","เติมกระสุน","ยืมเสื้อเกราะ","ใช้ไอเทม","ไอเทมเติมเลือด","2026-10-12T17:19:33.653792Z","2026-09-24T02:05:34.038449Z",{"id":628,"slug":629,"name":630,"summary":631,"price_thb":26,"license_mode":27,"cover_key":632,"cover_url":633,"category_slugs":634,"tags":635,"latest_version":472,"latest_released_at":650,"published_at":651,"has_docs":526,"config":27,"rent_price_satang":54},"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",[183],[636,637,638,639,640,641,642,183,643,33,40,41,644,645,646,647,648,649],"progressbar","progress bar","แถบโหลด","แถบความคืบหน้า","esx_progressbar","esx progressbar","ui","ยกเลิก esc","หลอดโหลด","ฟอนต์ไทย","นับเวลาถอยหลัง","ล็อกปุ่มลัด","โปรเกรสบาร์","แทน esx_progressbar","2026-10-12T17:19:45.934106Z","2026-09-24T01:22:17.768991Z",{"id":653,"slug":654,"name":655,"summary":656,"price_thb":26,"license_mode":27,"cover_key":657,"cover_url":658,"category_slugs":659,"tags":660,"latest_version":223,"latest_released_at":674,"published_at":675,"has_docs":52,"config":53,"rent_price_satang":54},"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",[31],[661,662,663,664,665,666,667,668,34,33,40,41,669,670,671,672,673],"slide","สไลด์","slide fivem","ท่าสไลด์","หลบ","dodge","ท่าทาง","คูลดาวน์","สไลด์แบบเกมยิง","Shift สไลด์","ท่าหลบเกมยิง","ปุ่มสไลด์","ปรับแรงสไลด์","2026-10-12T17:20:03.227099Z","2026-09-24T01:21:56.84494Z",{"id":677,"slug":678,"name":679,"summary":680,"price_thb":26,"license_mode":27,"cover_key":681,"cover_url":682,"category_slugs":683,"tags":684,"latest_version":171,"latest_released_at":698,"published_at":699,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183],[685,686,687,688,689,690,642,183,645,691,33,40,41,692,693,694,695,696,697],"notify","notification","แจ้งเตือน","แจ้งเตือน fivem","esx_notify","esx notify","ไอคอนไอเทม","การ์ดแจ้งเตือน","กรอบความหายาก","แจ้งเตือน 9 ตำแหน่ง","สีในข้อความ","แทน esx_notify","แจ้งเตือนไอเทม","2026-10-12T17:20:21.047259Z","2026-09-24T01:21:40.547491Z",{"id":701,"slug":702,"name":703,"summary":704,"price_thb":26,"license_mode":27,"cover_key":705,"cover_url":706,"category_slugs":707,"tags":708,"latest_version":338,"latest_released_at":719,"published_at":720,"has_docs":52,"config":27,"rent_price_satang":54},"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",[183],[709,710,711,712,713,714,642,34,33,40,41,715,716,644,717,718],"loading screen","หน้าโหลด","หน้าโหลด fivem","loadingscreen","esx_loadingscreen","enter world","ปุ่มเข้าเมือง","หน้าโหลดเทอร์มินัล","พื้นหลังวิดีโอ","เพลงหน้าโหลด","2026-10-12T17:20:39.269405Z","2026-09-24T00:50:19.336351Z",{"id":722,"slug":723,"name":724,"summary":725,"price_thb":26,"license_mode":27,"cover_key":726,"cover_url":727,"category_slugs":728,"tags":730,"latest_version":746,"latest_released_at":747,"published_at":748,"has_docs":52,"config":27,"rent_price_satang":54},"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",[729],"optimization",[33,731,732,733,734,735,736,737,738,739,40,41,740,741,742,743,744,745],"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":750,"slug":751,"name":752,"summary":753,"price_thb":26,"license_mode":27,"cover_key":754,"cover_url":755,"category_slugs":756,"tags":757,"latest_version":771,"latest_released_at":772,"published_at":773,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183],[33,34,758,759,760,761,762,763,764,40,41,765,766,767,768,769,770],"ตกแต่งตัวละคร","skin","character customization","skin creator","แต่งตัวละคร","ร้านเสื้อผ้า","ร้านตัดผม","ตู้เสื้อผ้า","ร้านเสริมสวย","ร้านหน้ากาก","ท่าโพส","แต่งหน้า","ไม่ต้องใช้ skinchanger","1.5.4","2026-10-12T17:21:14.159219Z","2026-09-22T04:02:41.988907Z",{"id":775,"slug":776,"name":777,"summary":778,"price_thb":26,"license_mode":27,"cover_key":779,"cover_url":780,"category_slugs":781,"tags":782,"latest_version":171,"latest_released_at":793,"published_at":794,"has_docs":52,"config":53,"rent_price_satang":54},"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",[183],[33,34,783,784,785,786,185,787,40,41,788,789,790,791,792],"เมนูหลัก","main menu","menu","ประกาศ","คู่มือเมือง","เมนูเมือง","กฎเมือง","เมนู F4","ตั้งค่าผู้เล่น","แบนเนอร์อีเวนต์","2026-10-12T17:21:29.681926Z","2026-09-21T04:20:29.437521Z",{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":796,"tags":797,"latest_version":49,"latest_released_at":50,"published_at":51,"has_docs":52,"config":53,"rent_price_satang":54},[31],[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],{"id":799,"slug":800,"name":801,"summary":802,"price_thb":26,"license_mode":27,"cover_key":803,"cover_url":804,"category_slugs":805,"tags":806,"latest_version":820,"latest_released_at":821,"published_at":822,"has_docs":52,"config":53,"rent_price_satang":54},"83c7d7cb-bde4-45e3-a552-d7e377e4dc5d","x3d-mailbox","X3D Mailbox (โค้ดรับของ)","กล่องจดหมายออฟไลน์พร้อมของแนบ + โค้ดรับของ \u002Fredeem ฟรี ไม่ต้องลงฐานข้อมูล — ส่งไอเทมและเงินให้ผู้เล่นที่ออฟไลน์ แยกแท็บจดหมาย\u002Fตู้นิรภัย ต่อได้ทุกเฟรมเวิร์ก","public\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg",[31],[33,41,807,808,34,809,810,40,811,812,813,814,815,816,817,818,819,48],"mailbox","redeem code","กล่องจดหมาย","ของแนบ","รีดีมโค้ด","ส่งของออฟไลน์","โค้ดรับของ","กรอกโค้ดรับของ","จดหมายออฟไลน์","ส่งของให้คนออฟไลน์","โค้ดแจกของ","แจกของกิจกรรม","ของชดเชย","1.7.2","2026-10-12T17:22:30.892527Z","2026-09-19T19:05:39.140076Z",{"id":824,"slug":825,"name":826,"summary":827,"price_thb":26,"license_mode":27,"cover_key":828,"cover_url":829,"category_slugs":830,"tags":831,"latest_version":472,"latest_released_at":842,"published_at":843,"has_docs":52,"config":53,"rent_price_satang":54},"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",[31],[33,34,832,833,834,40,41,835,836,837,838,839,840,841],"อุ้มศพ","carry","อุ้มผู้เล่น","แย่งศพ","แบกผู้เล่น","ขี่หลัง","อุ้มพาดบ่า","ลากศพ","เมืองแก๊ง","อุ้มเพื่อน","2026-10-12T17:22:50.777785Z","2026-09-16T13:52:19.956202Z",{"id":845,"slug":846,"name":847,"summary":848,"price_thb":26,"license_mode":27,"cover_key":849,"cover_url":850,"category_slugs":851,"tags":852,"latest_version":119,"latest_released_at":863,"published_at":864,"has_docs":52,"config":53,"rent_price_satang":54},"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",[729],[33,34,853,729,854,855,856,40,41,857,858,859,860,861,862],"ล้างแมพ","ลดแลค","เพิ่ม FPS","ปิด NPC","ปิดรถ AI","ล้างคราบเลือด","ลบลอยยาง","ปิดกล้อง idle","ลบ NPC","แมพโล่ง","2026-10-12T17:23:03.418375Z","2026-09-16T09:49:13.991696Z",1,31,{"html":868,"headings":869},"\u003Ch2 id=\"การติดตั้ง\">การติดตั้ง\u003C\u002Fh2>\n\u003Col>\n\u003Cli>แตกไฟล์แล้ว \u003Cstrong>เปลี่ยนชื่อโฟลเดอร์เป็น \u003Ccode>x3d_dailylogin\u003C\u002Fcode>\u003C\u002Fstrong> (สคริปต์อื่นเรียก export ด้วยชื่อนี้)\u003C\u002Fli>\n\u003Cli>วางใน \u003Ccode>resources\u002F\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>เพิ่มใน \u003Ccode>server.cfg\u003C\u002Fcode>:\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>ensure x3d_dailylogin\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>ไม่ต้องใช้ฐานข้อมูล ไม่มีไลเซนส์ · ทำงานกับ ESX ได้ทันที และทำงานแบบ standalone ได้ถ้าไม่มีเฟรมเวิร์ก (QBCore ต้องต่อ adapter เองก่อน)\u003C\u002Fp>\n\u003Cp>เปิดหน้าต่างด้วย \u003Cstrong>F6\u003C\u002Fstrong> หรือพิมพ์ \u003Ccode>\u002Fdailylogin\u003C\u002Fcode> — หรือปล่อยให้เปิดเอง (\u003Ccode>Config.AutoOpen = true\u003C\u002Fcode> ค่าเริ่มต้น) ตอนมีอะไรให้กด\u003C\u002Fp>\n\u003Cp>ตัวเลือกเปิดหน้าต่างอัตโนมัติใน \u003Ccode>config.lua\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>Config.AutoOpen = 'always'\u003C\u002Fcode> — เปิดครั้งเดียวต่อการเชื่อมต่อ (หลัง \u003Ccode>Config.AutoDelay\u003C\u002Fcode>) ไม่เปิดซ้ำทุกครั้งที่เกิดใหม่\u003C\u002Fli>\n\u003Cli>\u003Ccode>Config.AutoDelay\u003C\u002Fcode> — เวลาหน่วงก่อนเปิด\u003C\u002Fli>\n\u003Cli>\u003Ccode>Config.AutoNotify\u003C\u002Fcode> — แจ้งรางวัลที่รับอัตโนมัติทุกชิ้น (ชื่อรางวัล + แทร็กและวันที่)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"ตารางรางวัล\">ตารางรางวัล\u003C\u002Fh2>\n\u003Cp>แก้ที่ \u003Ccode>config.lua\u003C\u002Fcode> — จะกี่วันก็ได้ ใส่ \u003Ccode>items\u003C\u002Fcode>\u002F\u003Ccode>money\u003C\u002Fcode>\u002F\u003Ccode>weapon\u003C\u002Fcode>\u002F\u003Ccode>token\u003C\u002Fcode> ผสมกันได้\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">Config.Rewards = {\n    [1] = { money = { { account = 'money', amount = 500 } } },\n    [2] = { items = { { item = 'bread', count = 2 } } },\n    [3] = { weapon = { { name = 'WEAPON_PISTOL', ammo = 30 } } },\n    [7] = { money = { { account = 'bank', amount = 5000 } }, label = 'รางวัลครบสัปดาห์' },\n}\n\nConfig.LoopRewards = true   -- ครบตารางแล้ววนกลับไปรับของวันแรกอีกครั้ง (key ไม่ต้องเรียงติดกันก็ได้ — ตัวอย่างนี้มีแค่ 3 วัน วันที่ 7 จะมาถึงตอนกดรับครั้งที่ 3)\nConfig.ResetOnMiss = true   -- ขาดวันแล้วสตรีคกลับไปเริ่มที่ 1\nConfig.AutoClaim   = false  -- true = รับให้อัตโนมัติตอนเข้าเกม\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>อยากมีหลายชุดพร้อมกัน (ปฏิทินปกติ + กิจกรรมเปิดตัวจำกัดเวลา) ตั้ง \u003Ccode>Config.Tracks\u003C\u002Fcode> — แต่ละแทร็กมีสตรีค\u002Fรางวัลค้างรับเป็นของตัวเอง มี \u003Ccode>from\u003C\u002Fcode>\u002F\u003Ccode>to\u003C\u002Fcode> (unix) กำหนดช่วงเวลาเปิดได้ ไม่ตั้งเลย = ทำงานแทร็กเดียวเหมือนเดิม\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>loop\u003C\u002Fcode> แยกต่อแทร็กใน \u003Ccode>Config.Tracks\u003C\u002Fcode> (ไม่ตั้ง = ใช้ \u003Ccode>Config.LoopRewards\u003C\u002Fcode>): ตั้ง \u003Ccode>loop = false\u003C\u002Fcode> ได้แทร็กแบบครั้งเดียว เช่นปฏิทิน 31 วันของผู้เล่นใหม่ที่จบหลังวันสุดท้าย\u003C\u002Fli>\n\u003Cli>\u003Ccode>Config.TokenLabels\u003C\u002Fcode> — ชื่อที่อ่านง่ายสำหรับรางวัลโทเคน\u003C\u002Fli>\n\u003Cli>\u003Ccode>Config.Mailbox\u003C\u002Fcode> + \u003Ccode>Reward.ToMailbox\u003C\u002Fcode> — ส่งไอเทม\u002Fเงินของรางวัลนั้นเข้ากล่องจดหมาย (ค่าเริ่มต้นคือตู้นิรภัยของ x3d_mailbox) แทนใส่กระเป๋า\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ถ้าใช้ X3D Admin Panel:\u003C\u002Fstrong> ที่แก้ในแผงเก็บไว้ใน storage key \u003Ccode>__admin\u003C\u002Fcode> และทับ \u003Ccode>Config.Rewards\u003C\u002Fcode> \u002F \u003Ccode>Config.Tracks\u003C\u002Fcode> \u002F \u003Ccode>Config.PlaytimeBonusHours\u003C\u002Fcode> ตอนเริ่มเซิร์ฟ — config ใช้เป็นค่าตั้งต้นครั้งแรกเท่านั้น ส่วน \u003Ccode>Daily.Rebuild()\u003C\u002Fcode> สร้างตารางรางวัลใหม่จาก \u003Ccode>Config\u003C\u002Fcode> ตอนรันไทม์\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"โบนัสเวลาเล่น\">โบนัสเวลาเล่น\u003C\u002Fh2>\n\u003Cp>เล่นครบ N ชั่วโมงในวันนี้ปลดล็อกรางวัลอีกชุดให้กดเอง (แยกจากปฏิทิน, นับต่อได้ข้าม reconnect):\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">Config.PlaytimeBonusHours = {\n    [2] = { money = { { account = 'money', amount = 300 } } },\n    [5] = { money = { { account = 'bank', amount = 800 } } },\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>ว่างเปล่า = ปิดฟีเจอร์นี้ ไม่โชว์ในหน้าต่างเลย\u003C\u002Fp>\n\u003Cp>\u003Ccode>Config.PlaytimeMode = 'extra_day'\u003C\u002Fcode> — แต่ละระดับของโบนัสเวลาเล่นจะรับวันถัดไปของทุกแทร็กที่เปิดอยู่พร้อมกัน แทนที่จะเป็นรางวัลแยก\u003C\u002Fp>\n\u003Ch2 id=\"เส้นแบ่งวัน\">เส้นแบ่งวัน\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-lua\">Config.TimezoneOffset = 7 * 3600   -- ไทย GMT+7\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>คิดจากเวลาเซิร์ฟเวอร์ ไม่ใช่เวลาเครื่องผู้เล่น — ผู้เล่นหมุนนาฬิกาเครื่องตัวเองไม่ช่วยอะไร\u003C\u002Fp>\n\u003Ch2 id=\"รับย้อนหลัง-ปิดไว้เป็นค่าเริ่มต้น\">รับย้อนหลัง (ปิดไว้เป็นค่าเริ่มต้น)\u003C\u002Fh2>\n\u003Cp>ขาดไปหลายวันแล้วอยากให้ตามเก็บรางวัลวันที่พลาดได้ เปิดใน \u003Ccode>config.lua\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">Config.BackClaim = {\n    enabled = true,\n    maxDays = 3,     -- ตามเก็บย้อนหลังได้ไกลสุด 3 วัน\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>สถานการณ์\u003C\u002Fth>\n\u003Cth>ปิด (ค่าเริ่มต้น)\u003C\u002Fth>\n\u003Cth>เปิด maxDays = 3\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>ขาด 3 วันแล้วกลับมา\u003C\u002Ftd>\n\u003Ctd>กด 1 ครั้ง ได้รางวัลของวันนี้ วันที่ขาดหายไปเลย\u003C\u002Ftd>\n\u003Ctd>กดได้ 4 ครั้ง ไล่เก็บวันที่ขาดทีละวันจนถึงวันนี้\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ขาด 9 วันแล้วกลับมา\u003C\u002Ftd>\n\u003Ctd>เหมือนเดิม กดครั้งเดียว\u003C\u002Ftd>\n\u003Ctd>ตามเก็บได้แค่ 3 วันหลังสุด + วันนี้\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ผู้เล่นใหม่ที่เพิ่งกดครั้งแรก\u003C\u002Ftd>\n\u003Ctd>เริ่มวันนี้\u003C\u002Ftd>\n\u003Ctd>เริ่มวันนี้เหมือนกัน ไม่แจกวันย้อนหลังที่ไม่เคยเล่น\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>ตามเก็บทีละวันแปลว่า \u003Cstrong>สตรีคไม่ขาด\u003C\u002Fstrong> เพราะวันถูกตัดต่อเนื่องกัน · หน้าต่างจะบอกว่าเหลือให้ตามเก็บอีกกี่วัน\u003C\u002Fp>\n\u003Ch2 id=\"กระเป๋าเต็มตอนกดรับ\">กระเป๋าเต็มตอนกดรับ\u003C\u002Fh2>\n\u003Cp>รางวัลไม่หาย และไม่เสียวัน — ระบบเก็บไว้เป็น \u003Cstrong>รางวัลค้างรับ\u003C\u002Fstrong> ของผู้เล่นคนนั้น ไปกดรับทีหลังตอนมีที่ว่างได้จากหน้าต่างเดิม\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>ค่า\u003C\u002Fth>\n\u003Cth>ผลลัพธ์\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.HoldWhenFull = true\u003C\u002Fcode> (ค่าเริ่มต้น)\u003C\u002Ftd>\n\u003Ctd>เก็บเป็นรางวัลค้างรับ ตัดวันตามปกติ สตรีคเดินต่อ\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.HoldWhenFull = false\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>ไม่ตัดวัน ผู้เล่นเคลียร์กระเป๋าแล้วมากดใหม่\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.MaxPending\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>เก็บค้างได้สูงสุดกี่ชุดต่อคน (ค่าเริ่มต้น 10) ถึงเพดานแล้วจะไม่ตัดวันให้\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>รางวัลค้างรับเก็บอยู่ในตัว x3d_dailylogin เอง \u003Cstrong>ไม่ยุ่งกับกล่องจดหมาย\u003C\u002Fstrong> (กล่องจดหมายเป็นของทีมงานและโค้ดรับของ)\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">exports['x3d_dailylogin']:GetPending(src)            --&gt; รายการค้างรับ\nexports['x3d_dailylogin']:ClaimPending(src, 1)       --&gt; ok, reason\n\nAddEventHandler('x3d_dailylogin:onPending', function(src, entry, ok, trackId) end)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"เซิร์ฟที่ใช้-inventory-ของตัวเอง\">เซิร์ฟที่ใช้ inventory ของตัวเอง\u003C\u002Fh2>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>ค่า\u003C\u002Fth>\n\u003Cth>ใช้ทำอะไร\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.CanCarryExport\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>export ของ inventory จริงที่ใช้เช็กว่ากระเป๋ารับไหว — \u003Cstrong>ขึ้น &quot;กระเป๋าเต็ม&quot; ทั้งที่ยังว่าง ให้ตั้งค่านี้\u003C\u002Fstrong> (ตัวเลขน้ำหนักของ ESX จะเพี้ยนเมื่อ inventory อื่นเป็นคนคุม)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.ItemImage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>path รูปไอเทมของ inventory ที่ใช้ (\u003Ccode>{item}\u003C\u002Fcode> = ชื่อไอเทม), ว่าง = ไม่โชว์รูป\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.ItemLabels\u003C\u002Fcode> \u002F \u003Ccode>Config.AccountLabels\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>ชื่อไทยของไอเทมและบัญชีเงิน\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>ตัวอย่างที่เตรียมไว้ให้แล้วใน \u003Ccode>config.lua\u003C\u002Fcode>: x3d_inventory, ox_inventory, qb-inventory\u003C\u002Fp>\n\u003Ch2 id=\"เรียกจาก-resource-อื่น\">เรียกจาก resource อื่น\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-lua\">exports['x3d_dailylogin']:GetStreak(src, trackId)   --&gt; number — trackId ไม่ใส่ = 'default'\nexports['x3d_dailylogin']:CanClaim(src, trackId)    --&gt; true \u002F false\nexports['x3d_dailylogin']:Claim(src, trackId)       --&gt; ok, reason\nexports['x3d_dailylogin']:ClaimPlaytime(src, hours) --&gt; ok, reason\n\nAddEventHandler('x3d_dailylogin:onClaim', function(src, streak, reward, ok, trackId)\n    -- ok = false แปลว่าจ่ายได้ไม่ครบ (บางชิ้นไม่เข้า) — จดหมายเหตุไว้เช็กได้ (listener เก่าที่ไม่รับ trackId ยังใช้ได้ปกติ)\n    print(('ผู้เล่น %s รับรางวัลวันที่ %d ของแทร็ก %s (ครบ: %s)'):format(src, streak, trackId, tostring(ok)))\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"คำสั่งแอดมิน\">คำสั่งแอดมิน\u003C\u002Fh2>\n\u003Cp>\u003Ccode>\u002Fdailyreset &lt;server id&gt;\u003C\u002Fcode> — ล้างสตรีค วันล่าสุด และรางวัลค้างรับทั้งหมดของผู้เล่นคนนั้นทิ้ง ใช้ตอนต้องแก้ปัญหาให้ผู้เล่น ไม่ใช่ของเล่น เรียกจากคอนโซลได้เสมอ เรียกจากผู้เล่นในเกมต้องมี ace \u003Ccode>Config.AdminAce\u003C\u002Fcode> (ค่าเริ่มต้น \u003Ccode>x3d_dailylogin.admin\u003C\u002Fcode>) คำสั่งส่งข้อมูลที่ล้างแล้วไปอัปเดตหน้าจอเป้าหมายเฉย ๆ ไม่แย่งโฟกัส — ปฏิทินจะโชว์ข้อมูลใหม่ก็ต่อเมื่อผู้เล่นคนนั้นเปิดหน้าต่างอยู่ก่อนแล้วเท่านั้น ไม่ได้เปิดปฏิทินขึ้นมาให้เอง\u003C\u002Fp>\n\u003Ch2 id=\"เก็บข้อมูลด้วย-oxmysql-แทนไฟล์-json\">เก็บข้อมูลด้วย oxmysql แทนไฟล์ JSON\u003C\u002Fh2>\n\u003Cp>ค่าเริ่มต้นเก็บใน \u003Ccode>data\u002Fdailylogin.json\u003C\u002Fcode> ไม่ต้องใช้ฐานข้อมูลเลย · อยากใช้ฐานข้อมูล: เปิด \u003Ccode>addons\u002Fstorage\u002Fserver.lua\u003C\u002Fcode> คัดลอกบล็อก oxmysql ท้ายไฟล์ทับสี่ฟังก์ชันด้านบน แล้วรัน \u003Ccode>install.sql\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>การเซฟ: ทุก 30 วินาที (\u003Ccode>Config.Storage.FlushSeconds\u003C\u002Fcode>), ตอนผู้เล่นออก และตอนปิด resource แบบปกติ · เซิร์ฟดับกะทันหันจะเสียได้มากที่สุดแค่ช่วงที่ยังไม่ได้เซฟ\u003C\u002Fp>\n\u003Ch2 id=\"ช่วยเหลือ\">ช่วยเหลือ\u003C\u002Fh2>\n\u003Cp>Discord: discord.gg\u002Fx3d-developer · เว็บ: x3d-developer.com\u003C\u002Fp>\n",[870,873,875,876,878,881,883,886,889,891,894],{"id":871,"text":871,"level":872},"การติดตั้ง",2,{"id":874,"text":874,"level":872},"ตารางรางวัล",{"id":45,"text":45,"level":872},{"id":877,"text":877,"level":872},"เส้นแบ่งวัน",{"id":879,"text":880,"level":872},"รับย้อนหลัง-ปิดไว้เป็นค่าเริ่มต้น","รับย้อนหลัง (ปิดไว้เป็นค่าเริ่มต้น)",{"id":882,"text":882,"level":872},"กระเป๋าเต็มตอนกดรับ",{"id":884,"text":885,"level":872},"เซิร์ฟที่ใช้-inventory-ของตัวเอง","เซิร์ฟที่ใช้ inventory ของตัวเอง",{"id":887,"text":888,"level":872},"เรียกจาก-resource-อื่น","เรียกจาก resource อื่น",{"id":890,"text":890,"level":872},"คำสั่งแอดมิน",{"id":892,"text":893,"level":872},"เก็บข้อมูลด้วย-oxmysql-แทนไฟล์-json","เก็บข้อมูลด้วย oxmysql แทนไฟล์ JSON",{"id":895,"text":895,"level":872},"ช่วยเหลือ",1792316306431]