[{"data":1,"prerenderedAt":92},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-th-x3d-weaponskins":21,"config-public-x3d-weaponskins":84},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"site":16,"contact":18,"seo":19,"payment":20},{"name":5,"host":6,"default_locale":7,"locales":17},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":30,"tags":33,"latest_version":53,"latest_released_at":54,"published_at":55,"has_docs":56,"config":57,"rent_price_satang":58,"description_md":59,"docs_md":60,"seo_title":61,"seo_description":62,"media":63,"versions":73},"58697b89-cbe5-4b1f-8a29-c5289727202e","x3d-weaponskins","X3D Weapon Skins (สกินอาวุธ)","สกินอาวุธแบบสะสม ESX ฟรี สกินเป็นอาวุธ add-on ผูกกับปืนหลัก ใช้ไอเทมปลดล็อกเข้าคลัง ใส่\u002Fถอดได้ ดาเมจเท่าเดิม แปลงกลับเป็นไอเทมไปเทรดได้ มีเอฟเฟกต์ตอนถือ",0,"none","public\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg",[31,32],"gameplay","inventory",[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"weapon skins","สกินอาวุธ","สกินอาวุธ fivem","สกินปืน","gun skin","weapon skin fivem","คลังสกิน","เทรดสกิน","skin collection","x3d_inventory","esx","ฟรี","free","ปลดล็อกสกิน","สกินสะสม","เอฟเฟกต์อาวุธ","ความหายากสกิน","สกิน add-on","แปลงสกินเป็นไอเทม","1.1.2","2026-10-12T17:13:35.599698Z","2026-10-10T11:46:16.716284Z",true,"public",null,"# สกินอาวุธแบบสะสม ปลดล็อกด้วยไอเทม ใส่ได้ทันที\n\nระบบสกินอาวุธสำหรับ ESX Legacy ใช้ไอเทมสกินเพื่อปลดล็อกเข้าคลังถาวร เลือกใส่ให้อาวุธได้ทุกเมื่อ ดาเมจเท่าอาวุธหลักเสมอ\n\n---\n\n## ฟีเจอร์\n\n- [+] ตั้งค่าง่าย ปรับได้หมดใน config หรือตั้งผ่านเว็บได้เลย\n- [+] สกินเป็นอาวุธ add-on ผูกกับปืนหลัก ดาเมจเท่าปืนหลักเสมอ\n- [+] ใช้ไอเทมสกินปลดล็อกเข้าคลังถาวร ใส่หรือถอดได้ทุกเมื่อ\n- [+] กระสุน อุปกรณ์เสริม สีปืน ตามไปด้วยตอนเปลี่ยนสกิน\n- [+] คลังสกินโชว์ความคืบหน้าการสะสมรายอาวุธ มีการ์ดรางวัลตอนปลดล็อก\n- [+] ตั้งความหายากสกิน 0-5 เป็นสีกรอบ\n- [+] เทรดได้ กดค้างแปลงกลับเป็นไอเทม หรือผูกถาวรด้วย tradable = false\n- [+] ตั้งเอฟเฟกต์ตอนถือสกินเองได้ ไม่ใส่ = ไม่มี\n- [+] สกินที่อยู่กับคนไม่ได้ปลดล็อกกลายเป็นอาวุธปกติอัตโนมัติ\n- [+] เปิดคลังด้วย \u002Fskins ปุ่มลัด ไอเทม หรือ radial menu ของ ox_lib\n- [+] ผูกสกินกับอาวุธหลักได้ไม่จำกัดใน config โมเดลใช้ของเมืองเอง\n- [+] เขียนเชื่อมกับสคริปต์อื่นได้ที่ addons\u002F\n\n---\n\n## สกินคืออาวุธ add-on ของอาวุธหลัก\n\nสกินแต่ละตัวคืออาวุธ add-on ที่ผูกกับอาวุธหลัก เช่น `WEAPON_GOLDPOOLCUE` เป็นสกินของ `WEAPON_POOLCUE` โมเดลสตรีมเพิ่มเข้าไปใหม่ ไม่ทับไฟล์ปืนเดิม (ไม่ใช่แบบ replace) คนที่ไม่มีสกินยังเห็นและใช้ปืนปกติ\n\nตอนใส่สกิน ระบบสลับปืนในมือเป็นอาวุธ add-on ตัวนั้น กระสุน อุปกรณ์เสริม และสีปืนตามไปด้วย ถอดสกินก็สลับกลับเป็นอาวุธหลัก\n\nสคริปต์ไม่ได้แถมโมเดลสกิน ใช้โมเดลอาวุธ add-on ของเมืองคุณเอง แล้วผูกกับอาวุธหลักใน `config\u002Fskins.lua` ได้ไม่จำกัด\n\n## คลังสกินที่ดูแล้วอยากสะสม\n\nหน้าคลังโชว์สกินที่เลือกตัวใหญ่ เลือกจากแถบด้านล่าง ฝั่งซ้ายบอกความคืบหน้าการสะสมของแต่ละอาวุธ ปลดล็อกสกินใหม่มีการ์ดรางวัลพร้อมแสงและประกาย\n\n## เทรดได้ หรือผูกถาวร\n\nสกินที่เทรดได้ กดค้างเพื่อแปลงกลับเป็นไอเทมไปขายต่อ สกินที่ตั้ง `tradable = false` ใช้แล้วอยู่ในคลังตลอดไป สกินไม่หายแม้อาวุธหาย\n\n## ปลอดภัยฝั่งเซิร์ฟเวอร์\n\n- ทุกการปลดล็อก ใส่ และแปลงกลับ ตรวจที่เซิร์ฟเวอร์ ล็อกกันกดซ้ำ ไม่มีของซ้อน\n- สกินที่ไปอยู่กับคนที่ไม่ได้ปลดล็อก (ส่งให้ ทิ้ง เก็บตู้) กลายเป็นอาวุธปกติอัตโนมัติ\n- อุปกรณ์เสริมและสีของปืนไม่หายตอนเปลี่ยนสกิน\n\n## ต่อกับสคริปต์อื่น\n\nใช้คู่กับ X3D Inventory (คลิกขวา → เปลี่ยนสกิน, ป้ายสกินบนช่อง) และ X3D Damage (ดาเมจตามอาวุธหลัก) ได้ทันที หรือเปิดด้วย `\u002Fskins` กับกระเป๋าอื่น\n\n**ฟรี** · แก้โค้ดได้ตามใจ · ขอแค่อย่านำไปขายต่อและอย่าอัปโหลดใหม่ในชื่อตัวเอง\n","## การติดตั้ง\n\n1. วาง `x3d_weaponskins` ลง `resources\u002F` แล้วรัน `install.sql` (สร้างตาราง `x3d_weaponskins`)\n2. เพิ่ม `ensure x3d_weaponskins` หลัง `es_extended` (และหลังกระเป๋า)\n3. ใส่สกินของเซิร์ฟ (ด้านล่าง) แล้วรีสตาร์ทเซิร์ฟเวอร์ ผู้เล่นเข้าเกมใหม่ 1 ครั้งเพื่อโหลดโมเดลอาวุธใหม่\n\n## ปุ่มและคำสั่ง\n\n| | |\n|---|---|\n| `\u002Fskins` | เปิดคลังสกิน (`Config.Command` ว่าง = ปิด) |\n| `Config.Key` | ปุ่มลัดเริ่มต้นของคำสั่งเดียวกัน (ผู้เล่นเปลี่ยนได้) |\n| `Config.OpenItem` | ไอเทมที่ใช้แล้วเปิดคลังสกิน (ไอเทมไม่หาย) ใช้กับกระเป๋าที่รองรับ usable item ของ ESX ได้ทุกตัว (NC, ox, qs…) |\n| `Config.Radial` | `true` = มีเมนู \"สกินอาวุธ\" ใน radial menu ของ ox_lib |\n| ไอเทมสกิน | ใช้จากกระเป๋า แล้วปลดล็อกสกินและขึ้นการ์ดรางวัล |\n\n## ตั้งค่า (`config.lua`)\n\n| ตัวเลือก | ทำอะไร |\n|---|---|\n| `Config.Locale` | `th` หรือ `en` |\n| `Config.ImagePath` | ที่อยู่รูปสกิน `%s` = ชื่ออาวุธตัวเล็ก · ใช้กับ X3D Inventory: `nui:\u002F\u002Fx3d_inventory\u002Fweb\u002Fbuild\u002Fimg\u002Fitems\u002F%s.png` |\n| `Config.WeaponNames` | ชื่ออาวุธหลัก (ไม่ใส่ = ชื่อจาก ESX) |\n| `Config.SweepIntervalMs` | ทุกกี่ ms เปลี่ยนสกินที่ไม่ได้ปลดล็อกกลับเป็นอาวุธปกติ (`0` = ตอนเข้าเกมเท่านั้น) |\n| `Config.CloseEvents` \u002F `Config.RestartLockState` | ปิดหน้าจอเมื่อมี event ของเซิร์ฟ \u002F ห้ามทำรายการช่วงล็อกรีสตาร์ท |\n\n## สกิน (`config\u002Fskins.lua` คีย์ = ชื่ออาวุธ ESX ตัวพิมพ์ใหญ่)\n\nสกินแต่ละตัวคืออาวุธ add-on (ไม่ใช่ replace) ที่ผูกกับอาวุธหลักผ่าน `base` ปืนเดิมไม่ถูกทับ สคริปต์ไม่ได้แถมโมเดล ต้องสตรีมโมเดลอาวุธ add-on เอง\n\n| ค่า | ทำอะไร |\n|---|---|\n| `base` | อาวุธหลัก ดาเมจ น้ำหนัก กระสุน มาจากตัวนี้ |\n| `item` | ไอเทมที่ใช้ปลดล็อก |\n| `label` | `{ th = ..., en = ... }` |\n| `rarity` | 0-5 สีกรอบ |\n| `tradable` | `false` = ใช้แล้วผูกถาวร |\n| `vfx` | เอฟเฟกต์ตอนถือ (ไม่ใส่ = ไม่มี): `dict`, `name`, `color`, `scale`, `alpha`, `viewDistance`, `points` |\n\n`config\u002Fskins.lua` มีรายการตัวอย่าง `WEAPON_GOLDPOOLCUE` (ไม้คิวทองคำ) เปิดไว้ 1 รายการ ใช้เป็นแม่แบบ ถ้าเซิร์ฟยังไม่มีโมเดลและไอเทมนี้ ให้ลบหรือคอมเมนต์รายการนี้ออก\n\nเพิ่มสกินใหม่: สตรีมโมเดลอาวุธ add-on เอง (`weapons.meta` ฯลฯ) เพิ่มชื่ออาวุธใน es_extended `Config.Weapons` (ใส่ `components`\u002F`tints` ให้เหมือนอาวุธหลัก ไม่งั้นอาวุธที่ติดอุปกรณ์เสริมจะใส่สกินไม่ได้) เพิ่มไอเทมในตาราง `items` วางรูป `weapon_\u003Cชื่อ>.png` ตามที่ `Config.ImagePath` ชี้ เพิ่มแถวใน `config\u002Fskins.lua` แล้วรีสตาร์ทเซิร์ฟเวอร์\n\n## เปิดจากเมนูของคุณเอง\n\nเมนูไหนก็เปิดหน้าคลังได้ (F-menu, esx_context, ox_lib context, radial):\n\n```lua\nexports.x3d_weaponskins:Open()                  -- อาวุธทั้งหมด\nexports.x3d_weaponskins:Open('WEAPON_POOLCUE')  -- เปิดตรงไปที่อาวุธนั้น\n-- หรือ: TriggerEvent('x3d_weaponskins:open')\n```\n\nตัวอย่าง ox_lib context:\n\n```lua\n{ title = 'สกินอาวุธ', icon = 'gun', onSelect = function() exports.x3d_weaponskins:Open() end }\n```\n\n## จุดต่อ (`addons\u002Fhooks\u002F`)\n\n`Hooks.BeforeFocus()` (client) ทำงานก่อนหน้าคลังหรือการ์ดปลดล็อกจะเอาเมาส์ ปิดกระเป๋าหรือเมนูของคุณที่นี่ (X3D Inventory ปิดตัวเองให้แล้ว) เช่น `TriggerEvent('your_inventory:close')`\n\nฝั่งเซิร์ฟเวอร์: `Hooks.CanCarry(xPlayer, item, count)` กระเป๋ารับไอเทมสกินคืนได้ไหม ค่าเริ่มต้นใช้ ESX `canCarryItem` · ใช้กับ X3D Inventory: `return exports.x3d_inventory:CanCarryItemSrc(xPlayer.source, item, count)`\n\n## สำหรับสคริปต์อื่น\n\n- `GlobalState.x3dWeaponBase` = `{ [สกิน] = อาวุธหลัก }` ใช้นับสกินเป็นอาวุธหลัก (X3D Damage ใช้ให้อัตโนมัติ)\n- `GlobalState.x3dWeaponSkins` = `{ [สกิน] = { base, label, rarity } }` ให้กระเป๋าแสดงสกิน\n- event ฝั่ง client: `TriggerEvent('x3d_weaponskins:open', base)` เปิดหน้าจอ · `x3d_weaponskins:focus` ยิงก่อนเอาโฟกัส (ปิดหน้าจอของคุณ) · `x3d_weaponskins:swapped` (from, to) หลังเปลี่ยนสกิน\n- export ฝั่ง client: `exports.x3d_weaponskins:Open(base)`\n","สกินอาวุธ FiveM ESX ฟรี — คลังสกิน เทรดได้","ระบบสกินอาวุธ FiveM ESX ฟรี ปลดล็อกด้วยไอเทม เก็บถาวรในคลัง ใส่สกินให้อาวุธได้ทันที ดาเมจเท่าอาวุธหลัก แปลงกลับเป็นไอเทมเพื่อเทรด หรือผูกถาวร",[64,67,69,71],{"kind":65,"url":66},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fmedia\u002F73e1fb673f7be54c.png",{"kind":65,"url":68},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fmedia\u002F527df4be48ad2bb8.png",{"kind":65,"url":70},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fmedia\u002F76c411a7d0726416.png",{"kind":65,"url":72},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fmedia\u002Fddad633a3c5d2d80.png",[74,76,80],{"version":53,"released_at":54,"changelog_md":75},"### Added\n\n- `config\u002Fskins.lua` ships one live example skin (`WEAPON_GOLDPOOLCUE`) as the template for new entries; remove it if your server lacks that model and item\n\n### Changed\n\n- Store images now carry English captions for the English store page",{"version":77,"released_at":78,"changelog_md":79},"1.1.0","2026-10-10T12:58:51.670267Z","### Added\r\n- `Config.OpenItem`: an item that opens the collection, so inventories without a skin button (NC, ox, qs…) can open it\r\n- `Config.Radial`: \"Weapon skins\" entry in the ox_lib radial menu (no hard ox_lib dependency)\r\n- `Hooks.BeforeFocus` (client): close your own inventory or menu before the screen takes the mouse\r\n- Docs: open the screen from any menu with `exports.x3d_weaponskins:Open()`",{"version":81,"released_at":82,"changelog_md":83},"1.0.0","2026-10-10T11:46:16.709075Z","### Added\n- First release: collectible weapon skins for ESX Legacy\n- Skin items unlock a skin into the player's collection (`x3d_weaponskins` table); bound skins (`tradable = false`) stay forever\n- Collection screen (`\u002Fskins`, optional key, or from X3D Inventory's right-click): large preview, choice strip, collection progress per weapon\n- Equip keeps ammo, attachments and tint; refused when the skin's ESX weapon row cannot hold them\n- Hold to turn a tradable skin back into an item; a skin is never lost with the weapon\n- Unlock card with a warm glow and rising sparks; optional held-weapon particle effect seen by nearby players\n- Skins held by a player who never unlocked them (given, dropped, stored) turn back into the base weapon\n- `GlobalState.x3dWeaponBase` + `x3dWeaponSkins` for damage and inventory scripts; client events `x3d_weaponskins:open`, `:focus`, `:swapped`\n- Thai and English (`Config.Locale`)",{"slug":23,"version":53,"latest_version":53,"files":85,"options":58},[86,89],{"path":87,"content":88},"config.lua","-- ═══════════════════════════════════════════════════════════════\n--  x3d_weaponskins — ตั้งค่า \u002F settings\n--  สกินอาวุธแบบสะสม: ใช้ไอเทมปลดล็อกเข้าคลัง ใส่\u002Fถอด\u002Fแปลงกลับเป็นไอเทม\n--  Collectible weapon skins: an item unlocks a skin into the collection; equip, default look, back to item\n-- ═══════════════════════════════════════════════════════════════\nConfig = Config or {}\n\n-- ===== ทั่วไป \u002F General =====\n\n-- ภาษา 'th' | 'en' (ข้อความหน้าจออยู่ใน web\u002Fapp\u002Fi18n)\n-- Language 'th' | 'en' (screen text lives in web\u002Fapp\u002Fi18n)\nConfig.Locale = 'th'\n\n-- ===== วิธีเปิดคลัง \u002F Ways to open =====\n\n-- คำสั่งเปิดคลังสกิน ('' = ไม่มีคำสั่ง)\n-- Command that opens the skin collection ('' = no command)\nConfig.Command = 'skins'\n\n-- ปุ่มลัดเปิดคลังสกิน ('' = ไม่ผูกปุ่ม · ผู้เล่นเปลี่ยนได้ใน Settings > Key Bindings)\n-- Default key for the collection ('' = unbound · players can rebind in Settings > Key Bindings)\nConfig.Key = ''\n\n-- ไอเทมที่ใช้แล้วเปิดคลังสกิน ไม่หักไอเทม ('' = ไม่ใช้ · ต้องเพิ่มไอเทมในตาราง items เอง)\n-- Item that opens the collection when used, not consumed ('' = off · add the item to your items table)\nConfig.OpenItem = ''\n\n-- เพิ่มปุ่ม \"คลังสกิน\" ในเมนูวงกลม ox_lib (ต้องเปิด ox_lib ไว้ ไม่มี = ข้าม)\n-- Add a \"Weapon skins\" entry to the ox_lib radial menu (needs ox_lib started, skipped otherwise)\nConfig.Radial = false\n\n-- เปิดจากเมนูอื่น (F-menu, esx_context, ox_lib context…): เรียก exports.x3d_weaponskins:Open() หรือ TriggerEvent('x3d_weaponskins:open')\n-- ปิดกระเป๋า\u002Fเมนูของคุณก่อนเปิด: addons\u002Fhooks\u002Fclient.lua → Hooks.BeforeFocus\n-- Open from any other menu (F-menu, esx_context, ox_lib context…): call exports.x3d_weaponskins:Open() or TriggerEvent('x3d_weaponskins:open')\n-- Close your inventory\u002Fmenu first: addons\u002Fhooks\u002Fclient.lua → Hooks.BeforeFocus\n\n-- ===== รูปและชื่อ \u002F Pictures and names =====\n\n-- ที่อยู่รูปสกิน %s = ชื่ออาวุธตัวเล็ก (เช่น weapon_goldpoolcue) · ใช้รูปของกระเป๋าได้ เช่น 'nui:\u002F\u002Fx3d_inventory\u002Fweb\u002Fbuild\u002Fimg\u002Fitems\u002F%s.png'\n-- Skin picture path, %s = lowercase weapon name · may point at your inventory's pictures, e.g. 'nui:\u002F\u002Fx3d_inventory\u002Fweb\u002Fbuild\u002Fimg\u002Fitems\u002F%s.png'\nConfig.ImagePath = 'nui:\u002F\u002Fx3d_weaponskins\u002Fweb\u002Fbuild\u002Fimg\u002F%s.png'\n\n-- ชื่ออาวุธหลักที่ผู้เล่นเห็น (ไม่ใส่ = ใช้ชื่อจาก ESX) เช่น { WEAPON_POOLCUE = 'ไม้คิว' }\n-- Player-facing base weapon names (omit = the ESX label), e.g. { WEAPON_POOLCUE = 'Pool cue' }\nConfig.WeaponNames = {}\n\n-- ===== ความปลอดภัยและการปิดหน้าจอ \u002F Safety and closing =====\n\n-- ทุกกี่ ms ตรวจว่าใครถือสกินที่ไม่ได้ปลดล็อก (ได้จากการส่ง\u002Fทิ้ง\u002Fตู้) แล้วเปลี่ยนเป็นอาวุธปกติ (0 = ตรวจตอนเข้าเกมเท่านั้น)\n-- How often (ms) to turn skins held without an unlock (given, dropped, stored) back into the base weapon (0 = on join only)\nConfig.SweepIntervalMs = 10000\n\n-- event ฝั่ง client ที่ปิดหน้าจอนี้ (เช่น ตอนตาย \u002F ล็อกรีสตาร์ท) · esx:onPlayerDeath ปิดให้เสมอ\n-- Client events that close this screen (death, restart lock…) · esx:onPlayerDeath always closes it\nConfig.CloseEvents = {}\n\n-- ชื่อ GlobalState ที่บอกว่ากำลังล็อกรีสตาร์ท ({ lock = true }) · nil = ไม่ใช้\n-- GlobalState key that signals a restart lock ({ lock = true }) · nil = not used\nConfig.RestartLockState = nil\n",{"path":90,"content":91},"config\u002Fskins.lua","-- ═══════════════════════════════════════════════════════════════\n--  x3d_weaponskins — สกินอาวุธ \u002F weapon skins\n--  สกิน = อาวุธ add-on อีกตัวที่ใช้ดาเมจของอาวุธหลัก ใช้ไอเทมเพื่อปลดล็อกเข้าคลังสกินของผู้เล่น\n--  A skin = an add-on weapon that uses its base weapon's damage; using its item unlocks it into the player's collection\n--  คีย์ = ชื่ออาวุธ ESX ตัวพิมพ์ใหญ่ ต้องมีใน es_extended Config.Weapons และสตรีมโมเดลเอง\n--  Key = UPPERCASE ESX weapon name; it must exist in es_extended Config.Weapons and you stream the model yourself\n-- ═══════════════════════════════════════════════════════════════\n-- ===== รายการสกิน \u002F Skin list =====\n\n-- เช่น \u002F e.g. WEAPON_GOLDPOOLCUE = { base = 'WEAPON_POOLCUE', item = 'skin_goldpoolcue', label = { th = 'ไม้คิวทองคำ', en = 'Gold Pool Cue' }, rarity = 4, tradable = true }\n-- ตัวอย่างเต็มอยู่ในรายการแรกด้านล่าง \u002F full example in the first entry below\nConfig.Skins = {\n    -- ตัวอย่างจริง 1 รายการ: ต้องมี WEAPON_GOLDPOOLCUE ใน es_extended Config.Weapons + สตรีมโมเดล + ไอเทม skin_goldpoolcue\n    -- ไม่มีของพวกนี้ ลบหรือคอมเมนต์รายการนี้ออก (เป็นแม่แบบให้ปุ่ม \"+ เพิ่มรายการ\" บนเว็บ)\n    -- One real entry: needs WEAPON_GOLDPOOLCUE in es_extended Config.Weapons + a streamed model + the skin_goldpoolcue item\n    -- Without those, delete or comment it out (it is the template for the web builder's \"+ add row\")\n    WEAPON_GOLDPOOLCUE = {\n        base = 'WEAPON_POOLCUE',                 -- อาวุธหลัก (ดาเมจมาจากตัวนี้) \u002F base weapon (damage comes from it)\n        item = 'skin_goldpoolcue',               -- ไอเทมปลดล็อก \u002F unlock item\n        label = { th = 'ไม้คิวทองคำ', en = 'Gold Pool Cue' },\n        rarity = 4,                              -- 0–5 สีกรอบ \u002F frame colour\n        tradable = true,                         -- false = ใช้แล้วผูกถาวร \u002F false = bound forever once used\n        -- เอฟเฟกต์ตอนถือ (ไม่ใส่ = ไม่มี) · points = จุดบนตัวอาวุธ (x, y, z)\n        -- Effect while held (omit = none) · points = spots on the weapon (x, y, z)\n        vfx = { dict = 'core', name = 'ent_amb_sparking_wires', color = { 1.0, 0.65, 0.03 },\n                scale = 0.12, alpha = 0.85, viewDistance = 60.0,\n                points = { { 0, 0, 0.12 }, { 0, 0, 0.34 }, { 0, 0, 0.57 } } },\n    },\n}\n",1792316306774]