[{"data":1,"prerenderedAt":906},["ShallowReactive",2],{"site":3,"docs-slug-site":15,"docs-product-en-x3d-menu":21,"docs-products-en":83,"docs-html-en-x3d-menu":863},{"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":48,"latest_released_at":49,"published_at":50,"has_docs":51,"config":52,"rent_price_satang":53,"description_md":54,"docs_md":55,"seo_title":56,"seo_description":57,"media":58,"versions":72},"7337afbc-ca0d-4071-9de4-2cc04bd1b4e6","x3d-menu","X3D Main Menu","A server main menu: system cards, announcements, timed events, an in-game guidebook and per-player settings. No database, any framework.",0,"none","public\u002Fproducts\u002Fx3d-menu\u002Fcover\u002F8a1dbb30861b0387.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fcover\u002F8a1dbb30861b0387.jpg",[31],"hud",[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"esx","standalone","เมนูหลัก","main menu","menu","ประกาศ","อีเวนต์","คู่มือเมือง","ฟรี","free","เมนูเมือง","กฎเมือง","เมนู F4","ตั้งค่าผู้เล่น","แบนเนอร์อีเวนต์","1.1.4","2026-10-12T17:21:29.681926Z","2026-09-21T04:20:29.437521Z",true,"public",null,"# A main menu with systems, announcements, events, a guide and player settings — free, no database required\r\n\r\nEvery server needs a main menu — a single grid of cards players can click instead of memorizing commands, timed announcements and events on the home tab, a categorized rules\u002Fguide tab, and a settings tab other scripts can add switches to. `x3d_menu` does all of it in one resource, through a ready-made Nuxt 4 panel.\r\n\r\n---\r\n\r\n## Features\r\n\r\n- [+] Easy setup: tune everything in config, or set it through the web builder\r\n- [+] System cards that open other scripts' commands, hidden if the resource is not running\r\n- [+] Pin favorites and search systems, with a separate quick-shortcut grid\r\n- [+] Home-tab announcements with your own image, color and order\r\n- [+] Events with a start and end time that disappear on their own\r\n- [+] A categorized city guide with a search box\r\n- [+] Admins edit announcements, events and the guide in-game, no restart\r\n- [+] Other scripts can add switches to the player settings tab\r\n- [+] Players pick the peach \u002F jade theme, their own color and Thai\u002FEnglish\r\n- [+] Discord, YouTube and Facebook links on the home tab\r\n- [+] No database and no framework needed, with an optional MySQL switch\r\n- [+] Hook into other scripts through addons\u002F\r\n\r\n---\r\n\r\n## System cards split into \"systems\" and \"convenience\", auto-hidden when their resource isn't installed\r\n\r\nAdd cards through `Config.Systems` or the runtime export `RegisterSystem`. Each card can bind to its own `resource` — if that resource isn't `started`, the card hides itself automatically, no manual cleanup needed. `category` splits full-feature cards (`'system'`) from pin\u002Fquick-toggle style shortcuts (`'qol'`) into their own grid. The command a card fires comes from a server-side cache only — it never trusts a command string sent by the panel itself.\r\n\r\n## Announcements, time-windowed events, a categorized guide — edited from admin commands, no restart\r\n\r\nEvents take `start_at`\u002F`end_at`; once outside that window they disappear from the panel even with `is_active` on. The home-tab banner tells you itself whether an event is \"starting soon\", \"N days left\", or \"live\". Everything (systems\u002Fannouncements\u002Fevents\u002Fguide) seeds from `config.lua` only the first time the resource starts — after that, edit it through the admin commands `\u002Fmenusystem` `\u002Fmenuevent` `\u002Fmenuannouncement` `\u002Fmenuguide`: add\u002Fedit\u002Fremove\u002Flist, no server restart needed.\r\n\r\n## Player settings: peach\u002Fjade theme, a custom color, and switches any script can add\r\n\r\n`RegisterSetting` adds a toggle\u002Fselect\u002Fslider switch to the settings tab from any resource. The player's actual value lives client-side in KVP, then replicates up to `LocalPlayer.state` so another resource can read it instantly through the `GetSetting` export or the state bag directly, plus an `x3d_menu:onSetting` hook that fires whenever a player changes anything.\r\n\r\n## No database required\r\n\r\nAdmin-managed content (systems\u002Fannouncements\u002Fevents\u002Fguide) is stored as a JSON file inside the resource itself, flushed every 30 seconds and on player drop \u002F a graceful stop. Need MySQL for a busier server? Swap four functions in one file for the commented oxmysql block, and run the included `install.sql`.\r\n\r\n## Requirements\r\n\r\nNone. No database, no framework, no license. Drop it in and `ensure` it.\r\n\r\n**Free** · modify it as you like · just don't resell it or re-upload it under another name.\r\n","## Installation\n\n1. Unzip and **rename the folder to `x3d_menu`** (other scripts call the exports by this name)\n2. Drop it in `resources\u002F`\n3. Add to `server.cfg`:\n\n```\nensure x3d_menu\n```\n\nNo database, no framework, no license. Works on ESX, QBCore and standalone.\n\nOpen it with **F4** or `\u002Fmenu`.\n\n## Systems (the \"Systems\" tab)\n\nCards that fire another script's command. They come from `Config.Systems` (seeded once) or from the `RegisterSystem` export at runtime:\n\n| field | what it does |\n|---|---|\n| `system_id` | Unique key — used for favourites and as the id `\u002Fmenusystem edit\\|remove` looks up |\n| `label` \u002F `description` \u002F `icon` | Card text and its heroicons icon |\n| `command` | The command fired on click — omit it and the card is not clickable |\n| `resource` | The resource this card belongs to — the card is hidden while it is not `started` (unless `always_show`) |\n| `always_show` | Show regardless of the resource state |\n| `category` | `'system'` (default) renders in the full grid; `'qol'` renders in its own \"convenience\" grid. Anything else is rejected |\n| `sort_order` | Ascending |\n\nThe command actually executed comes from the client's cache of what the server just sent — a command string posted by the NUI is never trusted.\n\nShipped examples: `x3d_mailbox` and `x3d_dailylogin` cards (hidden unless those resources are installed) and a working `qol` card that clears your waypoint.\n\nFavourites (the star on a card) are per player and stored client-side.\n\n## Announcements and events (the \"Home\" tab)\n\n`Config.Announcements` — cards with `title`, `content`, `image_url`, `color`, `is_active`, `sort_order`.\n\n`Config.Events` — the banner at the top, with `start_at` \u002F `end_at` as unix seconds; omit one side for no bound. An event outside its window never renders even with `is_active = true` (the server filters before sending), and the banner reads \"starting\", \"N days left\" or \"running\" from the current time.\n\nBoth are seeded from config once and edited afterwards with `\u002Fmenuannouncement` and `\u002Fmenuevent`.\n\n## Guidebook (the \"Guide\" tab)\n\n`Config.Guide` — rows with `category`, `title`, `content`, `image_url`, `is_active`, `sort_order`. The panel groups by `category` and adds a search box. Edit with `\u002Fmenuguide`.\n\n## Settings (the \"Settings\" tab)\n\n`Config.Settings` is the spec of which controls to draw — not the player's values. Another resource can add one at runtime:\n\n```lua\nexports['x3d_menu']:RegisterSetting('General', {\n    id = 'show_minimap', label = 'Show minimap', type = 'toggle', default_value = true,\n})\nexports['x3d_menu']:RegisterSetting('Graphics', {\n    id = 'quality', label = 'Effect quality', type = 'select', default_value = 'high',\n    options = { { value = 'low', label = 'Low' }, { value = 'high', label = 'High' } },\n})\n```\n\n`type` is `'toggle'`, `'select'` or `'slider'` (`min`\u002F`max` for a slider). A duplicate `id` is rejected, and the reserved ids `theme`, `custom_color` and `favorites` cannot be registered over. A newly registered spec is broadcast to clients immediately so its default becomes readable without the player opening the panel.\n\nIn the panel itself: th\u002Fen language (kept in the browser's `localStorage` — it is the panel's own language, it never goes through the server), the peach\u002Fjade themes and a custom accent colour. Every player gets all of them; no theme is locked behind an item.\n\n## Where the data lives — two places, two jobs\n\n**Per player** (theme, custom colour, toggle\u002Fselect\u002Fslider values, favourites) — client-side only, in resource KVP, republished to `LocalPlayer.state` under `x3dmenu:\u003Cid>`. Another resource reads it server-side through the `GetSetting` export or `Player(src).state['x3dmenu:\u003Cid>']` directly. It is `nil` until that player has a value for that id.\n\n**Admin-managed content** (systems, announcements, events, guidebook) — server-side through the storage adapter: one JSON file (`Config.Storage.File`, default `data\u002Fmenu.json`), loaded once at resource start, written back every `Config.Storage.FlushSeconds`, on player drop and on a graceful stop. A corrupt file is preserved as `data\u002Fmenu.broken.json` and the store starts empty. `Config.Systems` \u002F `Config.Events` \u002F `Config.Announcements` \u002F `Config.Guide` are imported into storage **only the first time the resource runs** — editing `config.lua` afterwards changes nothing, use the admin commands.\n\nTo use MySQL for the admin content instead (player data stays in client KVP either way):\n\n1. Run `install.sql` through oxmysql\n2. Open `addons\u002Fstorage\u002Fserver.lua`, scroll to the bottom and copy the oxmysql block over the four `Storage.Get\u002FSet\u002FAll\u002FFlush` functions above it\n\n## Exports\n\n```lua\n-- a new system card — returns false on a duplicate system_id, an incomplete def,\n-- or a category that is not 'system' or 'qol'\nexports['x3d_menu']:RegisterSystem({\n    system_id = 'my_shop', label = 'Shop', description = 'Buy supplies',\n    icon = 'i-heroicons-shopping-cart', command = 'openmyshop', resource = 'my_shop',\n    always_show = false, is_active = true, sort_order = 5, category = 'system',\n})\n\nexports['x3d_menu']:RegisterSetting(section, def)   --> boolean\nexports['x3d_menu']:GetSetting(src, 'show_hud')     --> the value, or nil if never set\n```\n\n## Hook — server-internal, not a net event\n\n```lua\nAddEventHandler('x3d_menu:onSetting', function(src, id, value)\n    if id == 'show_hud' then\n        print(('player %s set show_hud = %s'):format(src, tostring(value)))\n    end\nend)\n```\n\nIt fires whenever any player changes anything under `x3dmenu:*`, including `theme`, `custom_color` and `favorites`, not only the ids declared in `Config.Settings`.\n\n## Admin commands\n\nFour collections (`systems`, `events`, `announcements`, `guide`). Always available from the server console; an in-game player needs the ace in `Config.AdminAce` (default `x3d_menu.admin`):\n\n```\n\u002Fmenusystem add \u003Cjson>          -- json needs system_id and label\n\u002Fmenusystem edit \u003Csystem_id> \u003Cjson>\n\u002Fmenusystem remove \u003Csystem_id>\n\u002Fmenusystem list\n\n\u002Fmenuevent add \u003Cjson>           -- json needs title\n\u002Fmenuevent edit \u003Cid> \u003Cjson>\n\u002Fmenuevent remove \u003Cid>\n\u002Fmenuevent list\n\n\u002Fmenuannouncement add \u003Cjson>    -- json needs title\n\u002Fmenuannouncement edit \u003Cid> \u003Cjson>\n\u002Fmenuannouncement remove \u003Cid>\n\u002Fmenuannouncement list\n\n\u002Fmenuguide add \u003Cjson>           -- json needs title, content and category\n\u002Fmenuguide edit \u003Cid> \u003Cjson>\n\u002Fmenuguide remove \u003Cid>\n\u002Fmenuguide list\n```\n\n`add` and `edit` validate the fields the panel indexes — a row missing one is refused and nothing is written. `edit` cannot move a row onto an id that already exists. `remove`\u002F`edit` on an unknown id answer \"not found\" instead of throwing. `list` prints the collection's raw JSON and mutates nothing.\n\n## Safety, backed by tests\n\n- **A card's command comes from the server's own cache**, never from a string the NUI posted\n- **Every admin row is validated before it is written**, on `add` and on the merged result of an `edit`\n- **The reserved ids (`theme`, `custom_color`, `favorites`) cannot be registered or written over**, server-side and client-side\n- **Every request answers, even when refused** — one call per second per player per action, and a player's throttle buckets are cleared the moment they disconnect\n- **The storage key is always a stable identifier**, never a server id\n\n```bash\npip install lupa\npython tools\u002Flua-test\u002Fx3d_menu_check.py\n```\n\n## Config (`config.lua`)\n\n| Key | What it does |\n|---|---|\n| `Config.Locale` | Default language of the Lua-side strings (`th`\u002F`en`) — separate from the panel's own language |\n| `Config.Command` \u002F `Config.Key` | The open command (`\u002Fmenu`) and the key binding (`F4`) |\n| `Config.AdminAce` | The ace required for `\u002Fmenusystem`, `\u002Fmenuevent`, `\u002Fmenuannouncement`, `\u002Fmenuguide` |\n| `Config.Storage.File` \u002F `.FlushSeconds` | Where the admin content is written and how often |\n| `Config.SocialLinks` | The social links on the home tab |\n| `Config.Systems` \u002F `Config.Events` \u002F `Config.Announcements` \u002F `Config.Guide` | Seed data, imported into storage once |\n| `Config.Settings` | The spec of the controls in the settings tab |\n\n## Not ported from the original\n\nThis is a dependency-free port, so the original's Discord avatar and image uploads, its buff display, its PVP-shard toggle and its item-gated themes are not here — each of them needed a resource this product deliberately does not require.\n\n## Support\n\nDiscord: discord.gg\u002Fx3d-developer · Web: x3d-developer.com\n","Free FiveM Main Menu Script, No Database","Free FiveM main menu: system cards, announcements, timed events, an in-game guidebook, per-player settings and themes. No database, admins edit in game.",[59,62,64,66,68,70],{"kind":60,"url":61},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002Fdf5554e733bb3344.png",{"kind":60,"url":63},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002Fb69a7d2d674141e6.png",{"kind":60,"url":65},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002Fac244d9e6dbda554.png",{"kind":60,"url":67},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002F6d4299351032214d.png",{"kind":60,"url":69},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002F60886675555c9c64.png",{"kind":60,"url":71},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-menu\u002Fmedia\u002F4a5b1d1684d6d441.png",[73,75,79],{"version":48,"released_at":49,"changelog_md":74},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":76,"released_at":77,"changelog_md":78},"1.1.1","2026-10-12T03:26:17.490932Z","### 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":80,"released_at":81,"changelog_md":82},"1.0.0","2026-09-21T04:20:20.653667Z","### Added\n- Main menu panel (`\u002Fmenu`, F4) ported from cc_menu: home with announcements and a timed event banner, systems grid with favourites, guidebook with categories and search, settings tab\n- Systems come from `Config.Systems` or the `RegisterSystem` export, split into the full `system` grid and the `qol` convenience grid, hidden automatically while their resource is not started\n- Events carry a `start_at`\u002F`end_at` window and are filtered server-side, so an out-of-window event never reaches the panel\n- Settings spec from `Config.Settings` plus the `RegisterSetting` export, with `toggle`, `select` and `slider` controls; a newly registered spec is broadcast so its default is readable without the player opening the panel\n- Per-player theme, custom colour, setting values and favourites live in client KVP and are republished to `LocalPlayer.state` under `x3dmenu:\u003Cid>`, readable server-side through `GetSetting(src, id)` or the state bag directly\n- Admin-managed content (systems, announcements, events, guidebook) lives in the storage adapter: a JSON file by default, with an oxmysql block shipped commented in the same file\n- Admin commands `\u002Fmenusystem`, `\u002Fmenuevent`, `\u002Fmenuannouncement`, `\u002Fmenuguide` with `add`, `edit`, `remove` and `list`, gated by the `x3d_menu.admin` ace and always available from the console\n- Server event `x3d_menu:onSetting(src, id, value)` for reacting to a player's choice\n- Every net event resolves `source` itself, is rate limited per action per second, validates its arguments before use and always answers; a card's command is taken from the server's cache, never from the NUI",{"items":84,"page":861,"size":862,"total":862},[85,121,142,170,191,220,253,278,305,335,360,386,414,441,469,497,521,540,563,590,620,645,669,693,714,742,767,770,794,819,840],{"id":86,"slug":87,"name":88,"summary":89,"price_thb":90,"license_mode":91,"cover_key":92,"cover_url":93,"category_slugs":94,"tags":97,"latest_version":116,"latest_released_at":117,"published_at":118,"has_docs":51,"config":119,"rent_price_satang":120},"6bdadea7-4316-4a4a-a38e-87c5e841077d","x3d-replay","X3D Replay","BETA pricing. Records every player, every session. Watch it back in game: 4 cameras, kill\u002Fdeath timeline, pressed keys, script usage, macro flags.",59900,"shop_license","public\u002Fproducts\u002Fx3d-replay\u002Fcover.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-replay\u002Fcover.jpg",[95,96],"anticheat","admin",[33,98,99,100,101,102,103,104,105,106,107,108,109,110,95,111,112,113,114,115],"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":122,"slug":123,"name":124,"summary":125,"price_thb":90,"license_mode":91,"cover_key":126,"cover_url":127,"category_slugs":128,"tags":129,"latest_version":80,"latest_released_at":140,"published_at":141,"has_docs":51,"config":119,"rent_price_satang":120},"ff948fa9-6fc5-410e-b952-ee88b15f0c9d","x3d-anticheat","X3D Anti-Cheat","BETA pricing, join the testing. Evidence-first anti-cheat: Discord embeds with screenshots, HWID bans, Steam\u002FDiscord account lock, two-line event guard.","public\u002Fproducts\u002Fx3d-anticheat\u002Fcover\u002Fd90612eed4448164.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-anticheat\u002Fcover\u002Fd90612eed4448164.jpg",[95],[33,34,130,95,131,132,133,110,134,135,136,137,138,139],"แอนตี้โกง","ป้องกันแฮก","กันโกง","HWID ban","ภาพหลักฐาน","ล็อกบัญชี Steam Discord","แบนเครื่อง","คิวยศ Discord","กัน event สแปม","แอนตี้โกง ESX","2026-09-16T09:45:51.78533Z","2026-09-16T09:46:00.05928Z",{"id":143,"slug":144,"name":145,"summary":146,"price_thb":147,"license_mode":91,"cover_key":148,"cover_url":149,"category_slugs":150,"tags":154,"latest_version":48,"latest_released_at":167,"published_at":168,"has_docs":51,"config":119,"rent_price_satang":169},"47a33337-7dcf-4a78-b056-4b3e324a648d","x3d-slots","X3D Slots 1024 Ways","1,024-way cascading slot, Mahjong style, 97.5% RTP. Server-authoritative spins, anti-exploit, with free spins, multipliers and big-win scenes.",250000,"public\u002Fproducts\u002Fx3d-slots\u002Fcover\u002Fd09c2066a6ea2968.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-slots\u002Fcover\u002Fd09c2066a6ea2968.jpg",[151,152,153],"casino","economy","entertainment",[33,34,155,156,151,157,158,159,160,161,162,163,164,165,166],"คาสิโน","สล็อต","slot","มินิเกม","minigame","RTP 97.5%","มาห์จอง","คาสเคด","ฟรีสปิน","ตู้สล็อต","ซื้อฟีเจอร์","ปรับ RTP","2026-10-12T17:13:01.863556Z","2026-09-14T15:28:02.281478Z",50000,{"id":171,"slug":172,"name":173,"summary":174,"price_thb":26,"license_mode":27,"cover_key":175,"cover_url":176,"category_slugs":177,"tags":179,"latest_version":188,"latest_released_at":189,"published_at":190,"has_docs":51,"config":52,"rent_price_satang":53},"1fb91794-3e8b-4955-bc54-dc6b1491912e","x3d-mapevents","X3D Map Events","Free event panel on the pause-menu map: name + countdown, click to set a waypoint. Other scripts push events like notifications; admins can create their own.","public\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg",[31,178],"gameplay",[39,180,181,182,183,184,185,186,187,41,42],"อีเวนต์บนแผนที่","แผนที่","จุดนำทาง","นับถอยหลัง","pause menu","map events","event","waypoint","1.0.3","2026-10-12T17:13:20.327337Z","2026-10-12T04:21:56.480796Z",{"id":192,"slug":193,"name":194,"summary":195,"price_thb":26,"license_mode":27,"cover_key":196,"cover_url":197,"category_slugs":198,"tags":200,"latest_version":217,"latest_released_at":218,"published_at":219,"has_docs":51,"config":52,"rent_price_satang":53},"58697b89-cbe5-4b1f-8a29-c5289727202e","x3d-weaponskins","X3D Weapon Skins","Free collectible ESX weapon skins: each skin is an add-on weapon tied to its base gun. Unlock with an item, same damage, tradable, held-weapon effects.","public\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-weaponskins\u002Fcover\u002F25e3c37b23545ec8.jpg",[178,199],"inventory",[201,202,203,204,205,206,207,208,209,210,33,41,42,211,212,213,214,215,216],"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":221,"slug":222,"name":223,"summary":224,"price_thb":26,"license_mode":27,"cover_key":225,"cover_url":226,"category_slugs":227,"tags":229,"latest_version":116,"latest_released_at":251,"published_at":252,"has_docs":51,"config":52,"rent_price_satang":53},"d82d8eb1-ed6a-43e3-86ef-24e45ae2b39d","x3d-damage","X3D Damage","Set every weapon's damage yourself, with bleed, slow, stun, knockdown and lifesteal effects. Weapon skins supported. ESX or standalone.","public\u002Fproducts\u002Fx3d-damage\u002Fcover\u002F8ce8864c16843fe6.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-damage\u002Fcover\u002F8ce8864c16843fe6.jpg",[178,228],"gangs",[230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,33,34,41,42,245,246,247,248,249,250],"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":254,"slug":255,"name":256,"summary":257,"price_thb":26,"license_mode":27,"cover_key":258,"cover_url":259,"category_slugs":260,"tags":262,"latest_version":116,"latest_released_at":276,"published_at":277,"has_docs":51,"config":52,"rent_price_satang":53},"93def22a-9501-4b66-bdf0-158cc6a0093c","x3d-vehiclestorage","X3D Vehicle Storage","Free ESX trunk storage on the x3d_inventory screen: capacity by vehicle class and model, owner-only access, job cars and an admin view.","public\u002Fproducts\u002Fx3d-vehiclestorage\u002Fcover\u002F2c2d97cb47678e1b.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-vehiclestorage\u002Fcover\u002F2c2d97cb47678e1b.jpg",[199,261],"garage",[263,264,265,266,267,268,269,210,33,41,42,270,271,272,273,274,275],"trunk","ท้ายรถ","ท้ายรถ fivem","vehicle storage","trunk inventory","esx trunk","เก็บของในรถ","ตู้ท้ายรถ","รถงาน","กล่องเก็บของหน้ารถ","น้ำหนักท้ายรถ","ล็อกรถ","เปิดท้ายรถ","2026-10-12T17:14:46.845123Z","2026-10-05T04:28:52.749188Z",{"id":279,"slug":280,"name":281,"summary":282,"price_thb":26,"license_mode":27,"cover_key":283,"cover_url":284,"category_slugs":285,"tags":287,"latest_version":116,"latest_released_at":303,"published_at":304,"has_docs":51,"config":52,"rent_price_satang":53},"b642bb91-9f6d-4c3c-8830-e594c2a92fcb","x3d-vault","X3D Vault","Free ESX vaults on the x3d_inventory screen: player vaults with levels and sharing, job vaults per society, Thai and English.","public\u002Fproducts\u002Fx3d-vault\u002Fcover\u002F72ea3a88a64e0034.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-vault\u002Fcover\u002F72ea3a88a64e0034.jpg",[199,286],"jobs",[288,289,290,291,292,293,294,295,210,33,41,42,296,297,298,299,300,301,302],"vault","stash","ตู้เซฟ","ตู้เก็บของ","ตู้เซฟ fivem","esx stash","job vault","ตู้หน่วยงาน","ตู้เซฟแก๊ง","ตู้ส่วนตัว","แชร์ตู้","อัปเกรดตู้","ตู้เซฟตำรวจ","ตู้เซฟอาชีพ","ลิมิตตู้","2026-10-12T17:15:03.928293Z","2026-10-05T04:28:43.828514Z",{"id":306,"slug":307,"name":308,"summary":309,"price_thb":26,"license_mode":27,"cover_key":310,"cover_url":311,"category_slugs":312,"tags":313,"latest_version":332,"latest_released_at":333,"published_at":334,"has_docs":51,"config":52,"rent_price_satang":53},"70fa1474-294a-49ad-91cb-1de0ab4dc8d8","x3d-adminpanel","X3D Admin Panel","A free all-in-one FiveM admin panel: players, bans and warnings, alt detection, bags, items, vehicles, weather, player logs and menus for X3D scripts.","public\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg",[96],[314,315,316,317,318,319,136,320,321,322,323,324,114,325,33,34,41,42,326,327,328,329,330,331],"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":336,"slug":337,"name":338,"summary":339,"price_thb":26,"license_mode":27,"cover_key":340,"cover_url":341,"category_slugs":342,"tags":343,"latest_version":48,"latest_released_at":358,"published_at":359,"has_docs":51,"config":52,"rent_price_satang":53},"d76ff7ae-ded6-4f39-b63f-734181952698","x3d-inventory","X3D Inventory","Free ESX inventory with big readable text, hotkeys 1–9 saved per character, coupon-based capacity and a storage panel for any vault or trunk script.","public\u002Fproducts\u002Fx3d-inventory\u002Fcover\u002Ffc3857e556cf31f3.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-inventory\u002Fcover\u002Ffc3857e556cf31f3.jpg",[199,31],[199,344,345,346,347,348,349,350,351,352,33,41,42,353,354,355,356,357],"กระเป๋า","กระเป๋า fivem","ui กระเป๋า","esx inventory","inventory fivem","ช่องลัด","hotbar","ไอเทม","nui","คูปองขยายช่อง","คูปองน้ำหนัก","ความหายากไอเทม","ค้นกระเป๋า","จำกัดน้ำหนัก","2026-10-12T17:16:22.733967Z","2026-10-05T04:10:14.693356Z",{"id":361,"slug":362,"name":363,"summary":364,"price_thb":26,"license_mode":27,"cover_key":365,"cover_url":366,"category_slugs":367,"tags":368,"latest_version":48,"latest_released_at":384,"published_at":385,"has_docs":51,"config":52,"rent_price_satang":53},"f782bbab-0321-4d3f-832f-797a2aa198f5","x3d-fortune","X3D Fortune","Free ESX fortune teller: daily horoscope, zodiac from your birthday, 28 siamsi sticks, 22-card tarot on 9 topics and a 10-card monthly spread.","public\u002Fproducts\u002Fx3d-fortune\u002Fcover\u002Fab130eeac9fbc029.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-fortune\u002Fcover\u002Fab130eeac9fbc029.jpg",[153],[369,370,371,372,373,374,375,376,377,33,41,42,378,379,380,381,382,383],"หมอดู","ดูดวง","เซียมซี","ไพ่ยิปซี","tarot","ราศี","ดวงรายวัน","fortune teller","npc","ดวงรายเดือน","ไพ่ทาโร่","เลขมงคล","สีมงคล","ไพ่กลับหัว","จุดหมอดู","2026-10-12T17:16:40.12128Z","2026-09-26T14:59:27.315955Z",{"id":387,"slug":388,"name":389,"summary":390,"price_thb":26,"license_mode":27,"cover_key":391,"cover_url":392,"category_slugs":393,"tags":394,"latest_version":411,"latest_released_at":412,"published_at":413,"has_docs":51,"config":52,"rent_price_satang":53},"9cb293aa-8b2c-447d-b810-3a7e385f6e81","x3d-banking","X3D Banking","Free ESX bank and ATM: deposit, withdraw, transfer by player ID, transaction history, every ATM on the map, every action checked on the server.","public\u002Fproducts\u002Fx3d-banking\u002Fcover\u002Fe7e66ab29819a980.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-banking\u002Fcover\u002Fe7e66ab29819a980.jpg",[152],[395,396,397,398,399,400,401,402,403,404,33,41,42,405,406,407,408,409,410],"banking","ธนาคาร","ระบบธนาคาร","atm","ตู้ atm","โอนเงิน","โอนด้วยเบอร์โทร","esx banking","bank script","ประวัติรายการ","ถอนด่วน","วงเงินโอน","สาขาธนาคาร","ฝากเงิน","ถอนเงิน","เพิ่มตู้ ATM","1.1.8","2026-10-12T17:16:55.98941Z","2026-09-26T14:59:08.07128Z",{"id":415,"slug":416,"name":417,"summary":418,"price_thb":26,"license_mode":27,"cover_key":419,"cover_url":420,"category_slugs":421,"tags":422,"latest_version":48,"latest_released_at":439,"published_at":440,"has_docs":51,"config":52,"rent_price_satang":53},"c72d91e0-6bcd-4fae-bde9-0e140e02b0cb","x3d-music","X3D Music","Free ESX boombox: place it on the ground or mount it on a car, play YouTube with a shared queue and distance falloff; speakers survive restarts.","public\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-music\u002Fcover\u002Fce445e0d251f7540.jpg",[153],[423,424,425,426,427,428,429,430,431,432,33,41,42,433,434,435,436,437,438],"boombox","ลำโพง","ลำโพงเปิดเพลง","เปิดเพลง youtube","music script","fivem music","xsound","youtube","คิวเพลง","ติดบนรถ","ลำโพงติดรถ","เปิดเพลงในรถ","ฟังเพลงด้วยกัน","เพลงร่วมกัน","ลำโพงวางพื้น","จำกัดลำโพง","2026-10-12T17:17:14.482272Z","2026-09-26T14:56:09.091062Z",{"id":442,"slug":443,"name":444,"summary":445,"price_thb":26,"license_mode":27,"cover_key":446,"cover_url":447,"category_slugs":448,"tags":449,"latest_version":466,"latest_released_at":467,"published_at":468,"has_docs":51,"config":52,"rent_price_satang":53},"6125d85f-eaff-45cb-90cd-9db4d66e7954","x3d-respawn","X3D Respawn","Free death screen: Call EMS button, wait for medics when they are online, respawn points, self-revive, a death summary and death kept across relogs.","public\u002Fproducts\u002Fx3d-respawn\u002Fcover\u002F1af99658aa5089b2.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-respawn\u002Fcover\u002F1af99658aa5089b2.jpg",[31],[450,451,452,453,454,455,456,457,458,459,460,33,41,42,461,462,463,464,465],"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":470,"slug":471,"name":472,"summary":473,"price_thb":26,"license_mode":27,"cover_key":474,"cover_url":475,"category_slugs":476,"tags":477,"latest_version":466,"latest_released_at":495,"published_at":496,"has_docs":51,"config":52,"rent_price_satang":53},"879a5a5d-5b22-4fb5-9274-6ac3ee631904","x3d-phone","X3D Phone","Free ESX smartphone: pma-voice calls, SMS with location sharing, mobile banking, a camera with self-hosted photos, Buzz and anonymous Dark Chat.","public\u002Fproducts\u002Fx3d-phone\u002Fcover\u002F9e0b9e2f9bc7352d.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-phone\u002Fcover\u002F9e0b9e2f9bc7352d.jpg",[31],[478,479,480,481,482,483,484,459,485,486,487,488,489,33,41,42,490,491,492,453,493,494],"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":498,"slug":499,"name":500,"summary":501,"price_thb":26,"license_mode":27,"cover_key":502,"cover_url":503,"category_slugs":504,"tags":505,"latest_version":466,"latest_released_at":518,"published_at":519,"has_docs":520,"config":27,"rent_price_satang":53},"6705aca9-39b7-48ad-a39b-0dc4a906dd70","x3d-safe","X3D Safe Cracking","A dial-cracking minigame: turn with A and D, press E on the notch. One export, no dependencies.","public\u002Fproducts\u002Fx3d-safe\u002Fcover\u002F410a110f32490438.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-safe\u002Fcover\u002F410a110f32490438.jpg",[228,178],[506,507,290,508,158,159,509,510,34,511,41,42,512,513,514,515,516,517],"safe cracking","เจาะตู้เซฟ","หมุนตู้เซฟ","มินิเกม fivem","export","crime","หมุนหน้าปัด","ตู้เซฟธนาคาร","ตู้เซฟร้าน","ตู้เซฟบ้าน","ไม่ต้องใช้ ESX","มินิเกม A\u002FD","2026-10-12T17:18:34.435941Z","2026-09-24T03:53:28.3285Z",false,{"id":522,"slug":523,"name":524,"summary":525,"price_thb":26,"license_mode":27,"cover_key":526,"cover_url":527,"category_slugs":528,"tags":529,"latest_version":76,"latest_released_at":538,"published_at":539,"has_docs":520,"config":27,"rent_price_satang":53},"d5bcab3a-9189-4813-9b17-6b34f3a16584","x3d-lockpick","X3D Lockpick","A lockpick minigame felt out with WASD, called with one export and usable from any script.","public\u002Fproducts\u002Fx3d-lockpick\u002Fcover\u002Fc36242cb20a32b3b.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-lockpick\u002Fcover\u002Fc36242cb20a32b3b.jpg",[228,178],[530,531,532,158,159,509,510,34,511,41,42,533,534,535,536,537],"lockpick","งัดล็อก","สะเดาะกุญแจ","งัดประตูบ้าน","งัดรถ","หมุดล็อก","มินิเกม WASD","ปรับความยาก","2026-10-12T17:18:46.115275Z","2026-09-24T03:53:14.231073Z",{"id":541,"slug":542,"name":543,"summary":544,"price_thb":26,"license_mode":27,"cover_key":545,"cover_url":546,"category_slugs":547,"tags":549,"latest_version":560,"latest_released_at":561,"published_at":562,"has_docs":51,"config":52,"rent_price_satang":53},"65d3b2da-6dba-4cd0-9907-06b8e6e54994","x3d-houserobbery","X3D House Robbery","Pick the door, search the floor, crack the safe, with a cooldown per house and both minigames in the same zip.","public\u002Fproducts\u002Fx3d-houserobbery\u002Fcover\u002F73f596dab6db196a.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-houserobbery\u002Fcover\u002F73f596dab6db196a.jpg",[548,228],"housing",[550,551,552,553,554,290,530,158,228,555,548,511,33,41,42,556,507,557,558,559],"งัดบ้าน","ปล้นบ้าน","house robbery","robbery","ปล้น","แก๊ง","คีย์การ์ด","เงินแดง","จุดค้นของ","ปล้นบ้านคูลดาวน์","1.2.4","2026-10-12T17:19:03.056031Z","2026-09-24T03:48:06.633278Z",{"id":564,"slug":565,"name":566,"summary":567,"price_thb":26,"license_mode":27,"cover_key":568,"cover_url":569,"category_slugs":570,"tags":571,"latest_version":587,"latest_released_at":588,"published_at":589,"has_docs":51,"config":52,"rent_price_satang":53},"5532c49c-d819-4dda-b8a0-71514a14df31","x3d-selldrug","X3D Sell Drug","Shady buyers appear around the map on a timer and pay in black money. Runs on ESX or standalone.","public\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-selldrug\u002Fcover\u002F38844a64037d78d6.jpg",[228,152],[572,573,574,575,576,577,578,579,228,555,511,33,41,42,580,581,582,583,584,585,557,586],"ขายยา","งานขายยา","sell drug","drug selling","ของผิดกฎหมาย","เงินดำ","black money","ผู้รับซื้อ","จุด10","จุดสิบ","จุดขายยา","ขายของจุด10","ขายของลับ","ฟอกเงิน","ผู้รับซื้อรายใหญ่","1.2.6","2026-10-12T17:19:19.018788Z","2026-09-24T03:39:03.703963Z",{"id":591,"slug":592,"name":593,"summary":594,"price_thb":26,"license_mode":27,"cover_key":595,"cover_url":596,"category_slugs":597,"tags":598,"latest_version":217,"latest_released_at":618,"published_at":619,"has_docs":520,"config":52,"rent_price_satang":53},"8e4dcdf4-7c70-4185-a3c9-15bb5328c457","x3d-useitem","X3D Use Item","Painkillers, bandages, AED, armor, helmet, repair kits, ammo, loot boxes and buff food in one system that needs only ESX.","public\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg",[199,178],[599,600,601,602,603,604,605,606,607,608,609,610,611,33,41,42,612,613,614,615,616,617],"use item","ไอเทมใช้ได้","usable items","ยา","ผ้าพันแผล","aed","ชุบคนล้ม","ซ่อมรถ","กระสุน","กล่องสุ่ม","อาหาร","เสื้อเกราะ","หมวกกันน็อค","บัฟอาหาร","ชุดซ่อมรถ","เติมกระสุน","ยืมเสื้อเกราะ","ใช้ไอเทม","ไอเทมเติมเลือด","2026-10-12T17:19:33.653792Z","2026-09-24T02:05:34.038449Z",{"id":621,"slug":622,"name":623,"summary":624,"price_thb":26,"license_mode":27,"cover_key":625,"cover_url":626,"category_slugs":627,"tags":628,"latest_version":466,"latest_released_at":643,"published_at":644,"has_docs":520,"config":27,"rent_price_satang":53},"8c823bc1-1de6-41b6-bf82-146d5a55eeb5","x3d-progressbar","X3D Progress Bar","A peach-themed progress bar with ESC to cancel, a countdown, an automatic hotkey lock, and a bundled Thai font.","public\u002Fproducts\u002Fx3d-progressbar\u002Fcover\u002Ff6830df60f656452.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-progressbar\u002Fcover\u002Ff6830df60f656452.jpg",[31],[629,630,631,632,633,634,635,31,636,33,41,42,637,638,639,640,641,642],"progressbar","progress bar","แถบโหลด","แถบความคืบหน้า","esx_progressbar","esx progressbar","ui","ยกเลิก esc","หลอดโหลด","ฟอนต์ไทย","นับเวลาถอยหลัง","ล็อกปุ่มลัด","โปรเกรสบาร์","แทน esx_progressbar","2026-10-12T17:19:45.934106Z","2026-09-24T01:22:17.768991Z",{"id":646,"slug":647,"name":648,"summary":649,"price_thb":26,"license_mode":27,"cover_key":650,"cover_url":651,"category_slugs":652,"tags":653,"latest_version":217,"latest_released_at":667,"published_at":668,"has_docs":51,"config":52,"rent_price_satang":53},"63ce5efe-2f18-499e-a52b-8155a6cebb84","x3d-slide","X3D Slide","A shooter-style forward slide on Shift plus one key, with a cooldown to stop spam. Fully configurable, nothing else needed.","public\u002Fproducts\u002Fx3d-slide\u002Fcover\u002F8c8383608791f58a.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-slide\u002Fcover\u002F8c8383608791f58a.jpg",[178],[654,655,656,657,658,659,660,661,34,33,41,42,662,663,664,665,666],"slide","สไลด์","slide fivem","ท่าสไลด์","หลบ","dodge","ท่าทาง","คูลดาวน์","สไลด์แบบเกมยิง","Shift สไลด์","ท่าหลบเกมยิง","ปุ่มสไลด์","ปรับแรงสไลด์","2026-10-12T17:20:03.227099Z","2026-09-24T01:21:56.84494Z",{"id":670,"slug":671,"name":672,"summary":673,"price_thb":26,"license_mode":27,"cover_key":674,"cover_url":675,"category_slugs":676,"tags":677,"latest_version":48,"latest_released_at":691,"published_at":692,"has_docs":51,"config":52,"rent_price_satang":53},"9b62b8ed-5911-47a8-b695-3320a6183758","x3d-notify","X3D Notify","Notification cards in nine positions, with item icons and rarity frames, and full Thai support.","public\u002Fproducts\u002Fx3d-notify\u002Fcover\u002F4a9cbdcedd86a149.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-notify\u002Fcover\u002F4a9cbdcedd86a149.jpg",[31],[678,679,680,681,682,683,635,31,638,684,33,41,42,685,686,687,688,689,690],"notify","notification","แจ้งเตือน","แจ้งเตือน fivem","esx_notify","esx notify","ไอคอนไอเทม","การ์ดแจ้งเตือน","กรอบความหายาก","แจ้งเตือน 9 ตำแหน่ง","สีในข้อความ","แทน esx_notify","แจ้งเตือนไอเทม","2026-10-12T17:20:21.047259Z","2026-09-24T01:21:40.547491Z",{"id":694,"slug":695,"name":696,"summary":697,"price_thb":26,"license_mode":27,"cover_key":698,"cover_url":699,"category_slugs":700,"tags":701,"latest_version":332,"latest_released_at":712,"published_at":713,"has_docs":51,"config":27,"rent_price_satang":53},"e6dc80f3-4f29-4d01-bffa-eba6829c6497","x3d-loadingscreen","X3D Loading Screen","A terminal-style loading screen with an ENTER WORLD button the player presses before spawning. One HTML file, no build step.","public\u002Fproducts\u002Fx3d-loadingscreen\u002Fcover\u002F32f1538b8e18f4db.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-loadingscreen\u002Fcover\u002F32f1538b8e18f4db.jpg",[31],[702,703,704,705,706,707,635,34,33,41,42,708,709,637,710,711],"loading screen","หน้าโหลด","หน้าโหลด fivem","loadingscreen","esx_loadingscreen","enter world","ปุ่มเข้าเมือง","หน้าโหลดเทอร์มินัล","พื้นหลังวิดีโอ","เพลงหน้าโหลด","2026-10-12T17:20:39.269405Z","2026-09-24T00:50:19.336351Z",{"id":715,"slug":716,"name":717,"summary":718,"price_thb":26,"license_mode":27,"cover_key":719,"cover_url":720,"category_slugs":721,"tags":723,"latest_version":739,"latest_released_at":740,"published_at":741,"has_docs":51,"config":27,"rent_price_satang":53},"37f7d9db-f90d-4eed-861b-922da1072932","es-extended","ESX Legacy Core — X3D Build","A faster es_extended that stops player saves going corrupt, autosaves every 10 minutes and freezes the economy before a restart. Drop-in, same resource name.","public\u002Fproducts\u002Fes-extended\u002Fcover\u002Fa0b783dc4bf383e9.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fes-extended\u002Fcover\u002Fa0b783dc4bf383e9.jpg",[722],"optimization",[33,724,725,726,727,728,729,730,731,732,41,42,733,734,735,736,737,738],"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":743,"slug":744,"name":745,"summary":746,"price_thb":26,"license_mode":27,"cover_key":747,"cover_url":748,"category_slugs":749,"tags":750,"latest_version":764,"latest_released_at":765,"published_at":766,"has_docs":51,"config":52,"rent_price_satang":53},"7c86bf83-0df0-4e59-ab59-461ac4a2bff8","x3d-skin","X3D Character Skin","A 77-slot character editor with an orbiting camera, poses and lighting. No skinchanger, no database, any framework.","public\u002Fproducts\u002Fx3d-skin\u002Fcover\u002Fdb520ac6e2e3d502.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-skin\u002Fcover\u002Fdb520ac6e2e3d502.jpg",[31],[33,34,751,752,753,754,755,756,757,41,42,758,759,760,761,762,763],"ตกแต่งตัวละคร","skin","character customization","skin creator","แต่งตัวละคร","ร้านเสื้อผ้า","ร้านตัดผม","ตู้เสื้อผ้า","ร้านเสริมสวย","ร้านหน้ากาก","ท่าโพส","แต่งหน้า","ไม่ต้องใช้ skinchanger","1.5.4","2026-10-12T17:21:14.159219Z","2026-09-22T04:02:41.988907Z",{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":768,"tags":769,"latest_version":48,"latest_released_at":49,"published_at":50,"has_docs":51,"config":52,"rent_price_satang":53},[31],[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],{"id":771,"slug":772,"name":773,"summary":774,"price_thb":26,"license_mode":27,"cover_key":775,"cover_url":776,"category_slugs":777,"tags":778,"latest_version":791,"latest_released_at":792,"published_at":793,"has_docs":51,"config":52,"rent_price_satang":53},"7a9dd386-11c0-4f21-8c2e-cfa7dc24d15d","x3d-dailylogin","X3D Daily Login","Free daily check-in with streaks and a fully editable reward table, no database required, a full bag never costs the reward, works with any framework.","public\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-dailylogin\u002Fcover\u002Fffcad7901926aa67.jpg",[178],[33,34,779,780,781,782,783,41,42,784,785,786,787,788,789,790],"เช็คอินรายวัน","daily login","daily reward","สตรีค","รางวัลรายวัน","ล็อคอินรายวัน","รางวัลค้างรับ","รับย้อนหลัง","โบนัสเวลาเล่น","รางวัลเข้าเกม","เช็คชื่อรายวัน","ไม่ต้องใช้ฐานข้อมูล","1.4.3","2026-10-12T17:21:47.885233Z","2026-09-20T10:37:48.155794Z",{"id":795,"slug":796,"name":797,"summary":798,"price_thb":26,"license_mode":27,"cover_key":799,"cover_url":800,"category_slugs":801,"tags":802,"latest_version":816,"latest_released_at":817,"published_at":818,"has_docs":51,"config":52,"rent_price_satang":53},"83c7d7cb-bde4-45e3-a552-d7e377e4dc5d","x3d-mailbox","X3D Mailbox","Free offline mailbox with item and money attachments plus \u002Fredeem codes, no database required — Mail and Safe tabs, any framework through adapter files.","public\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mailbox\u002Fcover\u002F743a9e72c1ae8d6d.jpg",[178],[33,42,803,804,34,805,806,41,807,808,809,810,811,812,813,814,815,790],"mailbox","redeem code","กล่องจดหมาย","ของแนบ","รีดีมโค้ด","ส่งของออฟไลน์","โค้ดรับของ","กรอกโค้ดรับของ","จดหมายออฟไลน์","ส่งของให้คนออฟไลน์","โค้ดแจกของ","แจกของกิจกรรม","ของชดเชย","1.7.2","2026-10-12T17:22:30.892527Z","2026-09-19T19:05:39.140076Z",{"id":820,"slug":821,"name":822,"summary":823,"price_thb":26,"license_mode":27,"cover_key":824,"cover_url":825,"category_slugs":826,"tags":827,"latest_version":466,"latest_released_at":838,"published_at":839,"has_docs":51,"config":52,"rent_price_satang":53},"fd28d581-12ee-43b8-9dfb-aa18defe53be","x3d-carry","X3D Carry","Free player carry script: carry and steal bodies, fireman carry and piggyback, consent before carrying the living, fully server authoritative, no dependencies.","public\u002Fproducts\u002Fx3d-carry\u002Fcover\u002F133f7c2c2d80c8a5.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-carry\u002Fcover\u002F133f7c2c2d80c8a5.jpg",[178],[33,34,828,829,830,41,42,831,832,833,834,835,836,837],"อุ้มศพ","carry","อุ้มผู้เล่น","แย่งศพ","แบกผู้เล่น","ขี่หลัง","อุ้มพาดบ่า","ลากศพ","เมืองแก๊ง","อุ้มเพื่อน","2026-10-12T17:22:50.777785Z","2026-09-16T13:52:19.956202Z",{"id":841,"slug":842,"name":843,"summary":844,"price_thb":26,"license_mode":27,"cover_key":845,"cover_url":846,"category_slugs":847,"tags":848,"latest_version":116,"latest_released_at":859,"published_at":860,"has_docs":51,"config":52,"rent_price_satang":53},"12cb8b4e-b8db-4ad1-a8a2-bd0679aabec5","x3d-environment","X3D Environment","Free one-file map cleaner: no NPCs, no AI traffic, no scenarios, no idle cam, and blood, tire marks and wounds wiped away.","public\u002Fproducts\u002Fx3d-environment\u002Fcover\u002F7aa9b73e2efb1416.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-environment\u002Fcover\u002F7aa9b73e2efb1416.jpg",[722],[33,34,849,722,850,851,852,41,42,853,854,855,856,857,858],"ล้างแมพ","ลดแลค","เพิ่ม FPS","ปิด NPC","ปิดรถ AI","ล้างคราบเลือด","ลบลอยยาง","ปิดกล้อง idle","ลบ NPC","แมพโล่ง","2026-10-12T17:23:03.418375Z","2026-09-16T09:49:13.991696Z",1,31,{"html":864,"headings":865},"\u003Ch2 id=\"installation\">Installation\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Unzip and \u003Cstrong>rename the folder to \u003Ccode>x3d_menu\u003C\u002Fcode>\u003C\u002Fstrong> (other scripts call the exports by this name)\u003C\u002Fli>\n\u003Cli>Drop it in \u003Ccode>resources\u002F\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Add to \u003Ccode>server.cfg\u003C\u002Fcode>:\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>ensure x3d_menu\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>No database, no framework, no license. Works on ESX, QBCore and standalone.\u003C\u002Fp>\n\u003Cp>Open it with \u003Cstrong>F4\u003C\u002Fstrong> or \u003Ccode>\u002Fmenu\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"systems-the-systems-tab\">Systems (the &quot;Systems&quot; tab)\u003C\u002Fh2>\n\u003Cp>Cards that fire another script's command. They come from \u003Ccode>Config.Systems\u003C\u002Fcode> (seeded once) or from the \u003Ccode>RegisterSystem\u003C\u002Fcode> export at runtime:\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>field\u003C\u002Fth>\n\u003Cth>what it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>system_id\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Unique key — used for favourites and as the id \u003Ccode>\u002Fmenusystem edit|remove\u003C\u002Fcode> looks up\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>label\u003C\u002Fcode> \u002F \u003Ccode>description\u003C\u002Fcode> \u002F \u003Ccode>icon\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Card text and its heroicons icon\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>command\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The command fired on click — omit it and the card is not clickable\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>resource\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The resource this card belongs to — the card is hidden while it is not \u003Ccode>started\u003C\u002Fcode> (unless \u003Ccode>always_show\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>always_show\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Show regardless of the resource state\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>category\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>'system'\u003C\u002Fcode> (default) renders in the full grid; \u003Ccode>'qol'\u003C\u002Fcode> renders in its own &quot;convenience&quot; grid. Anything else is rejected\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>sort_order\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Ascending\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>The command actually executed comes from the client's cache of what the server just sent — a command string posted by the NUI is never trusted.\u003C\u002Fp>\n\u003Cp>Shipped examples: \u003Ccode>x3d_mailbox\u003C\u002Fcode> and \u003Ccode>x3d_dailylogin\u003C\u002Fcode> cards (hidden unless those resources are installed) and a working \u003Ccode>qol\u003C\u002Fcode> card that clears your waypoint.\u003C\u002Fp>\n\u003Cp>Favourites (the star on a card) are per player and stored client-side.\u003C\u002Fp>\n\u003Ch2 id=\"announcements-and-events-the-home-tab\">Announcements and events (the &quot;Home&quot; tab)\u003C\u002Fh2>\n\u003Cp>\u003Ccode>Config.Announcements\u003C\u002Fcode> — cards with \u003Ccode>title\u003C\u002Fcode>, \u003Ccode>content\u003C\u002Fcode>, \u003Ccode>image_url\u003C\u002Fcode>, \u003Ccode>color\u003C\u002Fcode>, \u003Ccode>is_active\u003C\u002Fcode>, \u003Ccode>sort_order\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Ccode>Config.Events\u003C\u002Fcode> — the banner at the top, with \u003Ccode>start_at\u003C\u002Fcode> \u002F \u003Ccode>end_at\u003C\u002Fcode> as unix seconds; omit one side for no bound. An event outside its window never renders even with \u003Ccode>is_active = true\u003C\u002Fcode> (the server filters before sending), and the banner reads &quot;starting&quot;, &quot;N days left&quot; or &quot;running&quot; from the current time.\u003C\u002Fp>\n\u003Cp>Both are seeded from config once and edited afterwards with \u003Ccode>\u002Fmenuannouncement\u003C\u002Fcode> and \u003Ccode>\u002Fmenuevent\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"guidebook-the-guide-tab\">Guidebook (the &quot;Guide&quot; tab)\u003C\u002Fh2>\n\u003Cp>\u003Ccode>Config.Guide\u003C\u002Fcode> — rows with \u003Ccode>category\u003C\u002Fcode>, \u003Ccode>title\u003C\u002Fcode>, \u003Ccode>content\u003C\u002Fcode>, \u003Ccode>image_url\u003C\u002Fcode>, \u003Ccode>is_active\u003C\u002Fcode>, \u003Ccode>sort_order\u003C\u002Fcode>. The panel groups by \u003Ccode>category\u003C\u002Fcode> and adds a search box. Edit with \u003Ccode>\u002Fmenuguide\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"settings-the-settings-tab\">Settings (the &quot;Settings&quot; tab)\u003C\u002Fh2>\n\u003Cp>\u003Ccode>Config.Settings\u003C\u002Fcode> is the spec of which controls to draw — not the player's values. Another resource can add one at runtime:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-lua\">exports['x3d_menu']:RegisterSetting('General', {\n    id = 'show_minimap', label = 'Show minimap', type = 'toggle', default_value = true,\n})\nexports['x3d_menu']:RegisterSetting('Graphics', {\n    id = 'quality', label = 'Effect quality', type = 'select', default_value = 'high',\n    options = { { value = 'low', label = 'Low' }, { value = 'high', label = 'High' } },\n})\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>type\u003C\u002Fcode> is \u003Ccode>'toggle'\u003C\u002Fcode>, \u003Ccode>'select'\u003C\u002Fcode> or \u003Ccode>'slider'\u003C\u002Fcode> (\u003Ccode>min\u003C\u002Fcode>\u002F\u003Ccode>max\u003C\u002Fcode> for a slider). A duplicate \u003Ccode>id\u003C\u002Fcode> is rejected, and the reserved ids \u003Ccode>theme\u003C\u002Fcode>, \u003Ccode>custom_color\u003C\u002Fcode> and \u003Ccode>favorites\u003C\u002Fcode> cannot be registered over. A newly registered spec is broadcast to clients immediately so its default becomes readable without the player opening the panel.\u003C\u002Fp>\n\u003Cp>In the panel itself: th\u002Fen language (kept in the browser's \u003Ccode>localStorage\u003C\u002Fcode> — it is the panel's own language, it never goes through the server), the peach\u002Fjade themes and a custom accent colour. Every player gets all of them; no theme is locked behind an item.\u003C\u002Fp>\n\u003Ch2 id=\"where-the-data-lives-two-places-two-jobs\">Where the data lives — two places, two jobs\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Per player\u003C\u002Fstrong> (theme, custom colour, toggle\u002Fselect\u002Fslider values, favourites) — client-side only, in resource KVP, republished to \u003Ccode>LocalPlayer.state\u003C\u002Fcode> under \u003Ccode>x3dmenu:&lt;id&gt;\u003C\u002Fcode>. Another resource reads it server-side through the \u003Ccode>GetSetting\u003C\u002Fcode> export or \u003Ccode>Player(src).state['x3dmenu:&lt;id&gt;']\u003C\u002Fcode> directly. It is \u003Ccode>nil\u003C\u002Fcode> until that player has a value for that id.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Admin-managed content\u003C\u002Fstrong> (systems, announcements, events, guidebook) — server-side through the storage adapter: one JSON file (\u003Ccode>Config.Storage.File\u003C\u002Fcode>, default \u003Ccode>data\u002Fmenu.json\u003C\u002Fcode>), loaded once at resource start, written back every \u003Ccode>Config.Storage.FlushSeconds\u003C\u002Fcode>, on player drop and on a graceful stop. A corrupt file is preserved as \u003Ccode>data\u002Fmenu.broken.json\u003C\u002Fcode> and the store starts empty. \u003Ccode>Config.Systems\u003C\u002Fcode> \u002F \u003Ccode>Config.Events\u003C\u002Fcode> \u002F \u003Ccode>Config.Announcements\u003C\u002Fcode> \u002F \u003Ccode>Config.Guide\u003C\u002Fcode> are imported into storage \u003Cstrong>only the first time the resource runs\u003C\u002Fstrong> — editing \u003Ccode>config.lua\u003C\u002Fcode> afterwards changes nothing, use the admin commands.\u003C\u002Fp>\n\u003Cp>To use MySQL for the admin content instead (player data stays in client KVP either way):\u003C\u002Fp>\n\u003Col>\n\u003Cli>Run \u003Ccode>install.sql\u003C\u002Fcode> through oxmysql\u003C\u002Fli>\n\u003Cli>Open \u003Ccode>addons\u002Fstorage\u002Fserver.lua\u003C\u002Fcode>, scroll to the bottom and copy the oxmysql block over the four \u003Ccode>Storage.Get\u002FSet\u002FAll\u002FFlush\u003C\u002Fcode> functions above it\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"exports\">Exports\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-lua\">-- a new system card — returns false on a duplicate system_id, an incomplete def,\n-- or a category that is not 'system' or 'qol'\nexports['x3d_menu']:RegisterSystem({\n    system_id = 'my_shop', label = 'Shop', description = 'Buy supplies',\n    icon = 'i-heroicons-shopping-cart', command = 'openmyshop', resource = 'my_shop',\n    always_show = false, is_active = true, sort_order = 5, category = 'system',\n})\n\nexports['x3d_menu']:RegisterSetting(section, def)   --&gt; boolean\nexports['x3d_menu']:GetSetting(src, 'show_hud')     --&gt; the value, or nil if never set\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"hook-server-internal-not-a-net-event\">Hook — server-internal, not a net event\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-lua\">AddEventHandler('x3d_menu:onSetting', function(src, id, value)\n    if id == 'show_hud' then\n        print(('player %s set show_hud = %s'):format(src, tostring(value)))\n    end\nend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>It fires whenever any player changes anything under \u003Ccode>x3dmenu:*\u003C\u002Fcode>, including \u003Ccode>theme\u003C\u002Fcode>, \u003Ccode>custom_color\u003C\u002Fcode> and \u003Ccode>favorites\u003C\u002Fcode>, not only the ids declared in \u003Ccode>Config.Settings\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"admin-commands\">Admin commands\u003C\u002Fh2>\n\u003Cp>Four collections (\u003Ccode>systems\u003C\u002Fcode>, \u003Ccode>events\u003C\u002Fcode>, \u003Ccode>announcements\u003C\u002Fcode>, \u003Ccode>guide\u003C\u002Fcode>). Always available from the server console; an in-game player needs the ace in \u003Ccode>Config.AdminAce\u003C\u002Fcode> (default \u003Ccode>x3d_menu.admin\u003C\u002Fcode>):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002Fmenusystem add &lt;json&gt;          -- json needs system_id and label\n\u002Fmenusystem edit &lt;system_id&gt; &lt;json&gt;\n\u002Fmenusystem remove &lt;system_id&gt;\n\u002Fmenusystem list\n\n\u002Fmenuevent add &lt;json&gt;           -- json needs title\n\u002Fmenuevent edit &lt;id&gt; &lt;json&gt;\n\u002Fmenuevent remove &lt;id&gt;\n\u002Fmenuevent list\n\n\u002Fmenuannouncement add &lt;json&gt;    -- json needs title\n\u002Fmenuannouncement edit &lt;id&gt; &lt;json&gt;\n\u002Fmenuannouncement remove &lt;id&gt;\n\u002Fmenuannouncement list\n\n\u002Fmenuguide add &lt;json&gt;           -- json needs title, content and category\n\u002Fmenuguide edit &lt;id&gt; &lt;json&gt;\n\u002Fmenuguide remove &lt;id&gt;\n\u002Fmenuguide list\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>add\u003C\u002Fcode> and \u003Ccode>edit\u003C\u002Fcode> validate the fields the panel indexes — a row missing one is refused and nothing is written. \u003Ccode>edit\u003C\u002Fcode> cannot move a row onto an id that already exists. \u003Ccode>remove\u003C\u002Fcode>\u002F\u003Ccode>edit\u003C\u002Fcode> on an unknown id answer &quot;not found&quot; instead of throwing. \u003Ccode>list\u003C\u002Fcode> prints the collection's raw JSON and mutates nothing.\u003C\u002Fp>\n\u003Ch2 id=\"safety-backed-by-tests\">Safety, backed by tests\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>A card's command comes from the server's own cache\u003C\u002Fstrong>, never from a string the NUI posted\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Every admin row is validated before it is written\u003C\u002Fstrong>, on \u003Ccode>add\u003C\u002Fcode> and on the merged result of an \u003Ccode>edit\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The reserved ids (\u003Ccode>theme\u003C\u002Fcode>, \u003Ccode>custom_color\u003C\u002Fcode>, \u003Ccode>favorites\u003C\u002Fcode>) cannot be registered or written over\u003C\u002Fstrong>, server-side and client-side\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Every request answers, even when refused\u003C\u002Fstrong> — one call per second per player per action, and a player's throttle buckets are cleared the moment they disconnect\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The storage key is always a stable identifier\u003C\u002Fstrong>, never a server id\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-bash\">pip install lupa\npython tools\u002Flua-test\u002Fx3d_menu_check.py\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"config-config-lua\">Config (\u003Ccode>config.lua\u003C\u002Fcode>)\u003C\u002Fh2>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.Locale\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Default language of the Lua-side strings (\u003Ccode>th\u003C\u002Fcode>\u002F\u003Ccode>en\u003C\u002Fcode>) — separate from the panel's own language\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.Command\u003C\u002Fcode> \u002F \u003Ccode>Config.Key\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The open command (\u003Ccode>\u002Fmenu\u003C\u002Fcode>) and the key binding (\u003Ccode>F4\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.AdminAce\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The ace required for \u003Ccode>\u002Fmenusystem\u003C\u002Fcode>, \u003Ccode>\u002Fmenuevent\u003C\u002Fcode>, \u003Ccode>\u002Fmenuannouncement\u003C\u002Fcode>, \u003Ccode>\u002Fmenuguide\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.Storage.File\u003C\u002Fcode> \u002F \u003Ccode>.FlushSeconds\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Where the admin content is written and how often\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.SocialLinks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The social links on the home tab\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.Systems\u003C\u002Fcode> \u002F \u003Ccode>Config.Events\u003C\u002Fcode> \u002F \u003Ccode>Config.Announcements\u003C\u002Fcode> \u002F \u003Ccode>Config.Guide\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Seed data, imported into storage once\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Config.Settings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The spec of the controls in the settings tab\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"not-ported-from-the-original\">Not ported from the original\u003C\u002Fh2>\n\u003Cp>This is a dependency-free port, so the original's Discord avatar and image uploads, its buff display, its PVP-shard toggle and its item-gated themes are not here — each of them needed a resource this product deliberately does not require.\u003C\u002Fp>\n\u003Ch2 id=\"support\">Support\u003C\u002Fh2>\n\u003Cp>Discord: discord.gg\u002Fx3d-developer · Web: x3d-developer.com\u003C\u002Fp>\n",[866,870,873,876,879,882,885,888,891,894,897,900,903],{"id":867,"text":868,"level":869},"installation","Installation",2,{"id":871,"text":872,"level":869},"systems-the-systems-tab","Systems (the \"Systems\" tab)",{"id":874,"text":875,"level":869},"announcements-and-events-the-home-tab","Announcements and events (the \"Home\" tab)",{"id":877,"text":878,"level":869},"guidebook-the-guide-tab","Guidebook (the \"Guide\" tab)",{"id":880,"text":881,"level":869},"settings-the-settings-tab","Settings (the \"Settings\" tab)",{"id":883,"text":884,"level":869},"where-the-data-lives-two-places-two-jobs","Where the data lives — two places, two jobs",{"id":886,"text":887,"level":869},"exports","Exports",{"id":889,"text":890,"level":869},"hook-server-internal-not-a-net-event","Hook — server-internal, not a net event",{"id":892,"text":893,"level":869},"admin-commands","Admin commands",{"id":895,"text":896,"level":869},"safety-backed-by-tests","Safety, backed by tests",{"id":898,"text":899,"level":869},"config-config-lua","Config (config.lua)",{"id":901,"text":902,"level":869},"not-ported-from-the-original","Not ported from the original",{"id":904,"text":905,"level":869},"support","Support",1792316314484]