[{"data":1,"prerenderedAt":119},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-en-x3d-adminpanel":21,"config-public-x3d-adminpanel":102},{"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":57,"latest_released_at":58,"published_at":59,"has_docs":60,"config":61,"rent_price_satang":62,"description_md":63,"docs_md":64,"seo_title":65,"seo_description":66,"media":67,"versions":83},"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.",0,"none","public\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fcover\u002F5cb8420f481eee28.jpg",[31],"admin",[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56],"admin panel","admin menu","แผงแอดมิน","เมนูแอดมิน","เมนูแอดมิน fivem","fivem admin menu","แบนเครื่อง","token ban","จับบัญชีสำรอง","alt detection","txadmin","noclip","spectate","log","esx","standalone","ฟรี","free","แอดมินไทย","ยึดไอเทม","ประวัติแบน","โน้ตแอดมิน","นำเข้า txAdmin","บทบาทแอดมิน","1.0.5","2026-10-12T17:15:53.66615Z","2026-10-05T04:11:47.352812Z",true,"public",null,"# An admin panel your staff can live in\r\n\r\nEverything an admin needs in one panel, opened with **PAGEUP** or `\u002Fx3dadmin` · large, readable Thai or English · works with ESX out of the box and standalone too (`Config.Framework`) · **free**\r\n\r\n---\r\n\r\n## Features\r\n\r\n- [+] Easy setup: tune everything in config, or set it from the web builder\r\n- [+] Online list with job, money and ping; goto, bring, revive, heal, freeze, kick\r\n- [+] View a player's bag and weapons, hold to take items back\r\n- [+] Give or take cash, bank, black money, items and weapons, with a per-give limit\r\n- [+] Bans matched on identifiers + machine tokens; new accounts join the old ban\r\n- [+] Player database: playtime, ban history, notes, accounts on the same machine\r\n- [+] Import old txAdmin bans and warnings, and undo it\r\n- [+] Noclip, spawn\u002Ffix\u002Fdelete vehicles, weather and time for the whole city\r\n- [+] Money, item, job and chat logs with retention days you set\r\n- [+] Owner \u002F admin \u002F moderator roles, or build your own\r\n- [+] Players report to admins with \u002Freport, with a cooldown against spam\r\n- [+] Set ESX job and group from one menu, only groups below your own\r\n\r\n---\r\n\r\n## Manage players\r\n\r\n- Online list with job, money, ping and who is down\r\n- Go to, bring, invisible spectate, revive, heal, freeze, kick\r\n- **View a player's bag and weapons**, hold to take items back\r\n- Give or take money, items and weapons for one player or everyone online\r\n\r\n- **Set job and group (ESX)**: set an online player's job and grade, and their ESX group — you can only grant a group below your own, and the usual rank guard applies\r\n\r\n## Bans that actually keep people out\r\n\r\n- Bans and warnings with a reason and a length, revocable any time\r\n- Matched on identifiers and **machine tokens** — a fresh account on the same PC still can't join, and the new account is added to the ban\r\n- **Player database**: everyone who ever joined, playtime, ban history, admin notes and accounts sharing a machine\r\n- Coming from txAdmin? Import its bans and warnings in one click, and undo it\r\n\r\n## Admin tools\r\n\r\nNoclip · name tags · player blips · god mode · invisible · teleport to waypoint · spawn\u002Ffix\u002Fdelete vehicles · weather and time for everyone (or let the panel run the city's clock) · announcements · `\u002Freport` inbox · start\u002Fstop\u002Frestart resources · emergency buttons (save everyone, pull everyone out of instances, teleport everyone, store every vehicle)\r\n\r\n## Logs from every system\r\n\r\nMoney, items, jobs, chat, joins\u002Fleaves and every admin action, searchable per player · old rows pruned automatically · can also show another system's log table\r\n\r\n## Roles and permissions\r\n\r\nOwner \u002F superadmin \u002F admin \u002F moderator, or build your own roles in the panel · nobody can act on an equal or higher rank · every action is permission-checked on the server and logged\r\n\r\n## Menus for X3D scripts\r\n\r\nX3D scripts add their own pages to the panel — edit the daily login calendar, send mail, create redeem codes — and changes apply instantly, no restart\r\n\r\n**Free** · no license key, works right after install · please don't resell it or re-upload it under your name\r\n\r\nPages available today include the daily login calendar, tracks and playtime tiers, buyer spots for X3D Sell Drug, and house status for X3D House Robbery.\r\n","## Installation\n\n1. Extract and put the `x3d_adminpanel` folder in `resources\u002F`\n2. Add to `server.cfg` after `oxmysql` (and `es_extended` on ESX):\n\n```\nensure x3d_adminpanel\nadd_ace resource.x3d_adminpanel command.saveall allow\n```\n\nDatabase tables are created on first start (`install.sql` is included if you prefer to run it yourself) · open the panel with **PAGEUP** or `\u002Fx3dadmin` (change it in `config\u002Fconfig.lua`)\n\n## Who can open it\n\n- **ESX:** the `superadmin` and `admin` groups get the matching role automatically (`Config.GroupRoles` in `config\u002Fconfig.roles.lua`)\n- **ACE:** `add_ace identifier.license:xxxx x3d_admin.role.owner allow` (works on ESX and standalone)\n- **In the panel:** the owner adds people to roles or creates new roles under \"Roles & permissions\"\n\nDefault roles: owner (100) · superadmin (80) · admin (60) · moderator (40) — nobody can act on an equal or higher rank\n\n## Config files\n\n| File | What it sets |\n|---|---|\n| `config\u002Fconfig.lua` | Language, open command\u002Fkey, theme, framework |\n| `config\u002Fconfig.tools.lua` | Item\u002Fweapon pictures, city weather\u002Ftime, emergency teleport points, vehicle storage hook, give limits, `\u002Freport` |\n| `config\u002Fconfig.logs.lua` | Logged categories, retention, other log tables to prune\u002Fshow |\n| `config\u002Fconfig.sanctions.lua` | Ban matching, ban lengths, the banned message, the txAdmin file, resources that may not be stopped |\n| `config\u002Fconfig.roles.lua` | Default roles and permissions |\n\nThe ESX \"Player job \u002F group\" menu lists groups in `Config.Tools.EsxGroups`, lowest first — an admin can only give a group below their own.\n\n## Item and weapon pictures\n\nSet your inventory's picture path in `config\u002Fconfig.tools.lua` — `{item}` = name as-is, `{lower}` = lowercased:\n\n```lua\nConfig.Tools.ItemImage = 'nui:\u002F\u002Fox_inventory\u002Fweb\u002Fimages\u002F{item}.png'\nConfig.Tools.WeaponImage = 'nui:\u002F\u002Fox_inventory\u002Fweb\u002Fimages\u002F{item}.png'\n```\n\nThe file lists the paths for x3d_inventory, ox, qb, qs, ps and esx_inventoryhud.\n\n## Bans\n\nBans match identifiers + machine tokens (`Config.Sanctions.matchTokens`) and add new accounts from the same machine to the existing ban (`spreadOnEvade`) · IPs are not used by default (`matchIp`) · import from txAdmin: copy `txData\u002Fdefault\u002Fdata\u002FplayersDB.json` into the `x3d_adminpanel` folder, then hold \"import from txAdmin\" on the \"Bans & warnings\" page (FiveM blocks reading files outside resource folders), then delete the copy — it holds every player's identifiers · offline admins keep their rank from panel roles, ACE or the ESX group (`usersTable`)\n\n## Weather and time\n\n`Config.Tools.WorldSync.Enabled = true` lets the panel run weather and time for the whole city (instead of another weather script) · other scripts can read the in-game time:\n\n```lua\nlocal hour = exports.x3d_adminpanel:GetGameHour()\nlocal h, m = exports.x3d_adminpanel:GetGameTime()\n```\n\n## Logs\n\nThe panel records money, items, jobs, chat and joins\u002Fleaves from ESX plus X3D scripts' own logs · any script can send one:\n\n```lua\nTriggerEvent('x3d_admin:log', 'sell', source, { item = 'bread', amount = 5 })\n```\n\n## Menus from your own scripts\n\nA script registers a menu with `TriggerEvent('x3d_admin:register', schema)` plus an exported handler — see `x3d_dailylogin\u002Fadmin.lua` and `x3d_mailbox\u002Fadmin.lua` for tables, forms, the reward calendar and log pages.\n\nClient exports `Open()` and `Close()` let another script hand off to a field tool and then come back to the panel.\n","Free FiveM Admin Panel with Bans and Alt Detection","Free FiveM admin panel for ESX and standalone: token bans, alt detection, bag viewer, item giving, money\u002Fitem\u002Fchat logs and live X3D menus.",[68,71,73,75,77,79,81],{"kind":69,"url":70},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002Fa8b4fcda1d50ec58.png",{"kind":69,"url":72},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002Fa266e7edaa96d7ba.png",{"kind":69,"url":74},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002Fb623083bef5c06db.png",{"kind":69,"url":76},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002F72a08f24d46ffa45.png",{"kind":69,"url":78},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002F2584f42377bcb10c.png",{"kind":69,"url":80},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002Fefd57453f410e436.png",{"kind":69,"url":82},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-adminpanel\u002Fmedia\u002F3ba32c3c0e6bb9aa.png",[84,86,90,94,98],{"version":57,"released_at":58,"changelog_md":85},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":87,"released_at":88,"changelog_md":89},"1.0.3","2026-10-12T03:21:02.223729Z","### Changed\n\n- UI font is now Kanit (one family for Thai and English), bundled inside the script; the Thai font now really loads in game (FiveM's browser dropped the old font declaration and fell back to a system font)\n- New store images",{"version":91,"released_at":92,"changelog_md":93},"1.0.2","2026-10-11T15:19:02.02017Z","### Added\n\n- \"Player job \u002F group\" menu (ESX): set an online player's job + grade and ESX group; you can only give a group below your own (`Config.Tools.EsxGroups`, lowest first), and the usual rank guard applies\n- Client exports `Open()` \u002F `Close()` so other scripts can hand off to a field tool and come back to the panel",{"version":95,"released_at":96,"changelog_md":97},"1.0.1","2026-10-10T22:06:57.972624Z","### Removed\n- License key: the panel is free and works right after install, no key from the store needed",{"version":99,"released_at":100,"changelog_md":101},"1.0.0","2026-10-05T04:11:45.972011Z","### Added\n- Dashboard: online\u002Fadmins\u002Fdead counts, joins and logs in the last 24 h, a 24 h online graph, self tools (noclip, name tags, blips, god, invisible, teleport to waypoint), announcements, give to everyone, emergency buttons (save everyone, pull out of instances, teleport everyone, store every vehicle)\n- Online players: goto, bring, spectate, revive, heal, freeze, kick, bag and weapon viewer with take-back, give\u002Ftake money, items and weapons, ban\u002Fwarn\n- Player database: every connect with identifiers and machine tokens, alt detection, playtime, ban\u002Fwarning history, admin notes\n- Bans and warnings enforced at connect on identifiers + tokens, evading accounts added to the ban, revoke, txAdmin import and undo\n- Player reports (`\u002Freport`), vehicles (spawn\u002Ffix\u002Fdelete), weather and time (or full city clock via `WorldSync`, `GetGameHour`\u002F`GetGameTime` exports), all items\u002Fall weapons pages with pictures, resource start\u002Fstop\u002Frestart\n- Logs hub for ESX money\u002Fitems\u002Fjobs\u002Fchat\u002Fjoins and X3D scripts, retention, extra tables to prune, an optional external log table view\n- Roles and permissions (config + panel-made roles, ACE, ESX groups), rank guard on every player action, server-side checks and an audit row for every action\n- Module API for X3D scripts (`x3d_admin:register`, `x3d_admin:log`) with table, form, reward calendar and log pages\n- Thai and English",{"slug":23,"version":57,"latest_version":57,"files":103,"options":62},[104,107,110,113,116],{"path":105,"content":106},"config\u002Fconfig.logs.lua","-- ===== บันทึกการใช้งาน \u002F Activity logs =====\r\n\r\nConfig.Logs = {\r\n    -- ปิดหมวดที่ไม่อยากเก็บ (ใส่ false) — ห้ามปิด money.\u002Fitem. ถ้าอยากตรวจย้อนหลังได้\r\n    -- Disable a category with false — keep money.\u002Fitem. on if you want an audit trail\r\n    categories = {\r\n        ['player.'] = true,\r\n        ['money.'] = true,\r\n        ['item.'] = true,\r\n        ['job.'] = true,\r\n        ['group.'] = true,\r\n        ['chat'] = true,\r\n        ['admin.'] = true,\r\n    },\r\n\r\n    -- เก็บกี่วันต่อหมวด (default = หมวดที่ไม่ได้ระบุ)\r\n    -- Days to keep per category (default = everything not listed)\r\n    retentionDays = {\r\n        default = 90,\r\n        ['admin.'] = 180,\r\n        ['chat'] = 30,\r\n    },\r\n\r\n    -- ตารางอื่นในฐานข้อมูลที่ให้แผงล้างแถวเก่าให้ด้วย (วันละครั้ง ทีละ 5000 แถว)\r\n    --   table\u002Fcolumn = ชื่อตาราง\u002Fคอลัมน์เวลา · days = เก็บกี่วัน · epoch = true ถ้าคอลัมน์เก็บเป็นเลข unix\r\n    --   where = เงื่อนไขเพิ่ม (SQL) เช่น \"claimed = 1\" — ใส่เฉพาะตารางที่เป็น log เท่านั้น\r\n    -- Other database tables the panel also prunes (daily, 5000 rows per batch)\r\n    --   table\u002Fcolumn = table \u002F time column · days = days to keep · epoch = true if the column holds unix seconds\r\n    --   where = extra SQL condition, e.g. \"claimed = 1\" — list log tables only\r\n    -- { table = 'TB_SOME_LOG', column = 'created_at', days = 90 },\r\n    extraTables = {},\r\n\r\n    -- อ่าน log ของอีกระบบในหน้าบันทึกการใช้งาน (อ่านอย่างเดียว) เช่นตาราง log ของ es_extended ที่แก้แล้ว\r\n    --   label = ชื่อแท็บ · table = ชื่อตาราง · ช่องที่เหลือ = ชื่อคอลัมน์ (data = JSON) · nil = ปิด\r\n    -- Show another system's log table on the logs page (read-only), e.g. a patched es_extended log table\r\n    --   label = tab name · table = table name · the rest = column names (data = JSON) · nil = off\r\n    -- external = {\r\n    --     label = { th = 'บันทึกเซิร์ฟ', en = 'Server log' },\r\n    --     table = 'TB_CC_SERVER_LOG', time = 'ts', identifier = 'identifier', name = 'name',\r\n    --     kind = 'kind', resource = 'resource', data = 'data',\r\n    --     id = 'id',   -- คอลัมน์เลขแถว (เรียงใหม่สุดก่อน) \u002F row-number column (newest first)\r\n    -- },\r\n    external = nil,\r\n\r\n    -- จำนวนแถวที่รอเขียนได้สูงสุด เกินแล้วทิ้งหมวด lowPriority ก่อน\r\n    -- Max queued rows; when full, lowPriority categories are dropped first\r\n    queueMax = 20000,\r\n    -- หมวดที่ทิ้งก่อนเมื่อคิวเต็ม \u002F Categories dropped first when the queue is full\r\n    lowPriority = { 'chat' },\r\n\r\n    -- เก็บพิกัดผู้เล่นทุกแถว\r\n    -- Store the player's coordinates on every row\r\n    coords = true,\r\n\r\n    -- เก็บ IP ตอนเข้าเซิร์ฟ (ข้อมูลส่วนบุคคล ค่าเริ่มปิด)\r\n    -- Store the IP on join (personal data, off by default)\r\n    storeIp = false,\r\n}\r\n",{"path":108,"content":109},"config\u002Fconfig.lua","Config = Config or {}\r\n\r\n-- ===== ระบบ \u002F System =====\r\n\r\n-- เฟรมเวิร์ก: 'auto' (เจอ es_extended ใช้ ESX) | 'esx' | 'standalone'\r\n-- Framework: 'auto' (ESX when es_extended exists) | 'esx' | 'standalone'\r\nConfig.Framework = 'auto'\r\n\r\n-- ภาษาบนแผง: 'th' หรือ 'en'\r\n-- Panel language: 'th' or 'en'\r\nConfig.Locale = 'th'\r\n\r\n-- ===== การเปิดแผง \u002F Opening the panel =====\r\n\r\n-- คำสั่งเปิดแผง (พิมพ์ในแชตหรือกดปุ่มด้านล่าง)\r\n-- Command that opens the panel (chat or the key below)\r\nConfig.OpenCommand = 'x3dadmin'\r\n\r\n-- ปุ่มเริ่มต้น ผู้เล่นเปลี่ยนเองได้ใน Settings > Key Bindings > FiveM\r\n-- Default key; players can rebind it in Settings > Key Bindings > FiveM\r\nConfig.OpenKey = 'PAGEUP'\r\n\r\n-- ===== หน้าตา \u002F Look =====\r\n\r\n-- ธีมสี: 'amber' (ค่าเริ่ม) หรือ 'jade'\r\n-- Color theme: 'amber' (default) or 'jade'\r\nConfig.Theme = 'amber'\r\n\r\n-- เบลอฉากเกมด้านหลังแผง\r\n-- Blur the game world behind the panel\r\nConfig.Blur = true\r\n\r\n-- true = แผงไม่ปิดเองตอนแอดมินตาย\r\n-- true = keep the panel open when the admin dies\r\nConfig.StayOpenOnDeath = false\r\n",{"path":111,"content":112},"config\u002Fconfig.roles.lua","-- ===== บทบาท \u002F Roles =====\r\n\r\n-- บทบาทเริ่มต้น — แก้เพิ่มได้ในแผง (หน้า Role) ค่าในแผงจะทับค่าที่นี่\r\n-- Default roles — editable in the panel (Roles page); panel edits override these\r\n-- priority: สูงกว่า = ใหญ่กว่า จัดการคนที่ priority เท่าหรือสูงกว่าไม่ได้\r\n-- priority: higher = more senior; nobody can manage someone at the same or higher priority\r\n-- perms: '*' = ทุกอย่าง, 'logs.*' = ทุกสิทธิ์ที่ขึ้นต้นด้วย logs.\r\n-- perms: '*' = everything, 'logs.*' = every permission starting with logs.\r\n-- เช่น \u002F e.g. mod = { priority = 40, label = { th = 'ผู้ดูแล', en = 'Moderator' }, perms = { 'logs.view' } }\r\nConfig.Roles = {\r\n    owner      = { priority = 100, label = { th = 'เจ้าของ', en = 'Owner' },        perms = { '*' } },\r\n    superadmin = { priority = 80,  label = { th = 'ซูเปอร์แอดมิน', en = 'Superadmin' }, perms = { 'tools.*', 'mod.*', 'logs.*', 'roles.view' } },\r\n    admin      = { priority = 60,  label = { th = 'แอดมิน', en = 'Admin' },          perms = { 'tools.*', 'mod.*', 'logs.view' } },\r\n    mod        = { priority = 40,  label = { th = 'ผู้ดูแล', en = 'Moderator' },      perms = { 'tools.dashboard.view', 'tools.players.*', 'tools.self.*', 'tools.reports.*', 'tools.playerdb.view', 'tools.sanctions.view', 'tools.sanctions.warn', 'logs.view' } },\r\n    helper     = { priority = 20,  label = { th = 'ผู้ช่วย', en = 'Helper' },         perms = { 'tools.reports.*' } },\r\n}\r\n\r\n-- ===== กลุ่ม ESX → บทบาท \u002F ESX group → role =====\r\n\r\n-- กลุ่ม ESX → บทบาท (ใช้เมื่อไม่มีการตั้งในแผงหรือ ACE)\r\n-- ESX group → role (used when neither the panel nor ACE assigns one)\r\n-- ACE: add_ace identifier.license:xxxx x3d_admin.role.owner allow\r\nConfig.GroupRoles = {\r\n    superadmin = 'superadmin',\r\n    admin = 'admin',\r\n}\r\n",{"path":114,"content":115},"config\u002Fconfig.sanctions.lua","Config = Config or {}\n\n-- ===== แบน \u002F เตือน \u002F Bans and warnings =====\n\n-- แบน\u002Fเตือน\u002Fฐานข้อมูลผู้เล่น (ฝั่ง server เท่านั้น)\n-- Bans \u002F warnings \u002F player database (server only)\nConfig.Sanctions = {\n    -- แบนจับคู่ด้วย identifier + token ของเครื่อง (กันเปลี่ยนบัญชีมาเข้าใหม่)\n    -- Bans match on identifiers + hardware tokens (stops coming back on a new account)\n    matchTokens = true,\n\n    -- คนที่โดนแบนเข้ามาด้วยบัญชีใหม่แต่เครื่องเดิม = เพิ่ม identifier ใหม่เข้าแบนเดิมด้วย\n    -- A banned player returning on a new account but the same machine adds the new identifiers to the ban\n    spreadOnEvade = true,\n\n    -- จับคู่ IP ด้วยไหม (IP เปลี่ยนได้\u002Fใช้ร่วมกันได้ ค่าเริ่มปิด)\n    -- Match on IP too (IPs change and are shared; off by default)\n    matchIp = false,\n\n    -- ระยะเวลาแบนที่ให้เลือกในแผง (นาที, 0 = ถาวร)\n    -- Ban lengths offered in the panel (minutes, 0 = permanent)\n    durations = { 60, 360, 1440, 4320, 10080, 43200, 0 },\n\n    -- นำเข้าแบน\u002Fเตือนจาก txAdmin: คัดลอก txData\u002Fdefault\u002Fdata\u002FplayersDB.json มาไว้ในโฟลเดอร์สคริปต์นี้ แล้วกดนำเข้าในแผง\n    -- (FiveM ไม่ให้สคริปต์อ่านไฟล์นอกโฟลเดอร์รีซอร์ส) ชื่อไฟล์ในโฟลเดอร์นี้:\n    -- Import txAdmin bans\u002Fwarnings: copy txData\u002Fdefault\u002Fdata\u002FplayersDB.json into this script's folder, then press import in the panel\n    -- (FiveM blocks scripts from reading outside resource folders). File name inside this folder:\n    -- ลบไฟล์ทิ้งหลังนำเข้า (มี identifier\u002FIP ของผู้เล่นทุกคน)\n    -- Delete it after importing (it holds every player's identifiers\u002FIPs)\n    txAdminFile = 'playersDB.json',\n\n    -- ตารางผู้ใช้ของ ESX (อ่านกลุ่มของคนที่ออฟไลน์ เพื่อกันแอดมินยศต่ำแบนคนยศสูง)\n    -- ESX users table (reads offline players' groups so lower admins can't ban seniors)\n    usersTable = 'users',\n\n    -- ข้อความตอนผู้เล่นที่ถูกแบนพยายามเข้า ({reason} {expires} {id})\n    -- Message shown to a banned player trying to join ({reason} {expires} {id})\n    banMessage = {\n        th = 'คุณถูกแบนจากเซิร์ฟเวอร์นี้\\nเหตุผล: {reason}\\nหมดเวลา: {expires}\\nรหัสแบน: #{id}',\n        en = 'You are banned from this server\\nReason: {reason}\\nExpires: {expires}\\nBan ID: #{id}',\n    },\n    -- คำที่แสดงแทนเวลาหมดแบนเมื่อแบนถาวร\n    -- Word shown as the expiry of a permanent ban\n    permanent = { th = 'ถาวร', en = 'Never' },\n}\n\n-- ===== รีซอร์สที่ป้องกัน \u002F Protected resources =====\n\n-- รีซอร์สที่หน้าจัดการรีซอร์สห้ามหยุด\u002Fรีสตาร์ท (หยุดแล้วเซิร์ฟพัง)\n-- Resources the resource page may never stop\u002Frestart (stopping them breaks the server)\n-- เช่น \u002F e.g. 'my_core_resource'\nConfig.ProtectedResources = {\n    'x3d_adminpanel', 'oxmysql', 'es_extended', 'mysql-async', 'ox_lib', 'sessionmanager', 'spawnmanager',\n    'hardcap', 'monitor', 'yarn', 'webpack',\n}\n",{"path":117,"content":118},"config\u002Fconfig.tools.lua","Config = Config or {}\nConfig.Tools = {}\n\n-- ===== รูปไอเทม \u002F Item pictures =====\n\n-- ที่อยู่รูปไอเทม\u002Fอาวุธที่แผงใช้แสดง — ใส่ตาม inventory ที่เซิร์ฟใช้\n--   {item} = ชื่อตามจริง · {lower} = ตัวพิมพ์เล็ก · '' = โชว์ไอคอนแทน\n-- Picture paths the panel shows for items\u002Fweapons — match your server's inventory\n--   {item} = name as-is · {lower} = lowercased · '' = show an icon instead\n--\n--   x3d_inventory     item   'nui:\u002F\u002Fx3d_inventory\u002Fweb\u002Fbuild\u002Fimg\u002Fitems\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fx3d_inventory\u002Fweb\u002Fbuild\u002Fimg\u002Fitems\u002Fr_{lower}.png'\n--   ox_inventory      item   'nui:\u002F\u002Fox_inventory\u002Fweb\u002Fimages\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fox_inventory\u002Fweb\u002Fimages\u002F{item}.png'\n--   qb-inventory      item   'nui:\u002F\u002Fqb-inventory\u002Fhtml\u002Fimages\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fqb-inventory\u002Fhtml\u002Fimages\u002F{lower}.png'\n--   qs-inventory      item   'nui:\u002F\u002Fqs-inventory\u002Fhtml\u002Fimages\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fqs-inventory\u002Fhtml\u002Fimages\u002F{lower}.png'\n--   ps-inventory      item   'nui:\u002F\u002Fps-inventory\u002Fhtml\u002Fimages\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fps-inventory\u002Fhtml\u002Fimages\u002F{lower}.png'\n--   esx_inventoryhud  item   'nui:\u002F\u002Fesx_inventoryhud\u002Fhtml\u002Fimg\u002Fitems\u002F{item}.png'\n--                     weapon 'nui:\u002F\u002Fesx_inventoryhud\u002Fhtml\u002Fimg\u002Fitems\u002F{lower}.png'\n--   ไม่มีในลิสต์? เปิดโฟลเดอร์รูปของ inventory ที่ใช้ แล้วใส่ nui:\u002F\u002F\u003Cชื่อสคริปต์>\u002F\u003Cที่อยู่ไฟล์>\n--   Not listed? Open your inventory's picture folder and use nui:\u002F\u002F\u003Cresource>\u002F\u003Cpath>\nConfig.Tools.ItemImage = ''\nConfig.Tools.WeaponImage = ''\n\n-- ===== ชุบชีวิต \u002F Revive =====\n\n-- อีเวนต์ฝั่ง client ที่ยิงหลังชุบชีวิต ให้ระบบหมอของเซิร์ฟเคลียร์สถานะตาย ('' = ไม่ยิง)\n-- Client event fired after a revive so the server's ambulance script clears its death state ('' = none)\n-- ESX: 'esx_ambulancejob:revive' · ใช้สคริปต์หมออื่น เปลี่ยนเป็นอีเวนต์ revive ของสคริปต์นั้น\n-- ESX: 'esx_ambulancejob:revive' · other ambulance scripts: put their revive event here\nConfig.Tools.ReviveEvent = 'esx_ambulancejob:revive'\n\n-- ===== Noclip และชื่อบนหัว \u002F Noclip and name tags =====\n\n-- ความเร็ว noclip ปกติ \u002F ตอนกด SHIFT (เมตรต่อเฟรม)\n-- Noclip speed normal \u002F while holding SHIFT (meters per frame)\nConfig.Tools.NoclipSpeed = 0.75\nConfig.Tools.NoclipFastSpeed = 3.5\n\n-- ปุ่มลัด noclip (คำสั่ง \u002Fx3dnoclip) '' = ไม่ตั้ง ผู้เล่นตั้งเองใน Settings > Key Bindings > FiveM\n-- Noclip hotkey (command \u002Fx3dnoclip) '' = unbound; bind it in Settings > Key Bindings > FiveM\nConfig.Tools.NoclipKey = ''\n\n-- ระยะแสดงชื่อบนหัว (เมตร)\n-- Overhead name tag distance (meters)\nConfig.Tools.NametagDistance = 150.0\n\n-- ความถี่อัปเดต blip ผู้เล่นบนแผนที่ (มิลลิวินาที)\n-- Player map blip refresh interval (milliseconds)\nConfig.Tools.BlipInterval = 3000\n\n-- ===== แจกเงิน \u002F ไอเทม \u002F Giving money and items =====\n\n-- จำนวนสูงสุดต่อครั้งตอนแจกเงิน \u002F ไอเทม (Config.Tools.MaxMoney = เงิน, MaxItems = ไอเทม)\n-- Maximum amount per give for money \u002F items (MaxMoney = money, MaxItems = items)\nConfig.Tools.MaxMoney = 10000000\nConfig.Tools.MaxItems = 1000\n\n-- บัญชีเงินที่แจกได้จากแผง\n-- Money accounts the panel can give or take\nConfig.Tools.Accounts = { 'cash', 'bank', 'black_money' }\n\n-- ===== เตะ \u002F รายงาน \u002F กลุ่ม \u002F Kick, reports, groups =====\n\n-- เหตุผลเตะเริ่มต้น\n-- Default kick reason\nConfig.Tools.KickReason = { th = 'ถูกเตะโดยแอดมิน', en = 'Kicked by an admin' }\n\n-- คำสั่งแจ้งแอดมินของผู้เล่น เช่น \u002Freport รถหาย\n-- Player command that reports to admins, e.g. \u002Freport my car vanished\nConfig.Tools.ReportCommand = 'report'\n\n-- กลุ่ม ESX ที่ตั้งให้ผู้เล่นได้จากเมนู \"อาชีพ\u002Fกลุ่ม\" เรียงจากต่ำไปสูง: ตั้งได้เฉพาะกลุ่มที่ต่ำกว่ากลุ่มของตัวเอง (บทบาท owner ตั้งได้ทุกกลุ่ม)\n-- ESX groups the \"Job \u002F group\" menu can assign, lowest first: you can only give a group below your own (the owner role can give any)\nConfig.Tools.EsxGroups = { 'user', 'admin', 'superadmin' }\n\n-- เวลารอระหว่างแจ้ง (วินาที) \u002F Cooldown between reports (seconds)\nConfig.Tools.ReportCooldown = 60\n\n-- ===== ประกาศและแจ้งเตือน \u002F Announcements and alerts =====\n\n-- ประกาศค้างบนจอกี่วินาที\n-- Seconds an announcement stays on screen\nConfig.Tools.AnnounceSeconds = 8\n\n-- แจ้งแอดมินเมื่อผู้เล่นเข้า\u002Fออก (แอดมินแต่ละคนปิดเองได้ในแดชบอร์ด)\n-- Tell admins when players join or leave (each admin can turn it off on the dashboard)\nConfig.Tools.JoinLeaveNotify = true\n\n-- ===== เครื่องมือฉุกเฉิน \u002F Emergency tools =====\n\n-- จุดวาร์ปทุกคนตอนฉุกเฉิน (หน้าแดชบอร์ด) \u002F Emergency teleport-everyone points (dashboard)\n-- เช่น \u002F e.g. { id = 'legion', label = { th = 'ลานเลเจี้ยน', en = 'Legion Square' }, x = 195.17, y = -933.77, z = 30.69 }\nConfig.Tools.Towns = {\n    { id = 'legion', label = { th = 'ลานเลเจี้ยน', en = 'Legion Square' }, x = 195.17, y = -933.77, z = 30.69 },\n    { id = 'paleto', label = { th = 'เมืองพาเลโต้', en = 'Paleto Bay' }, x = -247.0, y = 6332.0, z = 32.4 },\n    { id = 'sandy', label = { th = 'แซนดี้ ชอร์ส', en = 'Sandy Shores' }, x = 1839.6, y = 3672.8, z = 34.3 },\n}\n\n-- ===== รถ \u002F Vehicles =====\n\n-- ปุ่ม \"เก็บรถทั้งเมือง\" เรียก export ของระบบโรงรถ — '' = ซ่อนปุ่ม\n--   export ต้องเก็บรถทุกคันในโลกเข้าโรงรถเอง แล้วคืนตารางผลลัพธ์ (ไม่บังคับ)\n-- The \"Store every vehicle\" button calls the garage script's export — '' hides the button\n--   the export must store every world vehicle itself and may return a result table\nConfig.Tools.StoreAllVehicles = { resource = '', export = '' }\n\n-- ชนิดรถของรุ่นที่ตรวจจากชื่อไม่ได้ (ต้องตรง vehicles.meta ไม่งั้นรถพัง\u002Fซิงก์เพี้ยน) — เพิ่มรถแอดออนประเภทนี้ได้\n-- Vehicle types for models that cannot be detected (must match vehicles.meta or the entity desyncs) — add addon models here\nConfig.Tools.VehicleTypes = {\n    trailers = 'trailer', trailers2 = 'trailer', trailers3 = 'trailer', trailers4 = 'trailer', trailers5 = 'trailer',\n    trailerlarge = 'trailer', trailerlogs = 'trailer', trailersmall = 'trailer', trailersmall2 = 'trailer',\n    tanker = 'trailer', tanker2 = 'trailer', tr2 = 'trailer', tr3 = 'trailer', tr4 = 'trailer', tvtrailer = 'trailer',\n    armytanker = 'trailer', armytrailer = 'trailer', armytrailer2 = 'trailer', baletrailer = 'trailer', boattrailer = 'trailer',\n    docktrailer = 'trailer', freighttrailer = 'trailer', graintrailer = 'trailer', proptrailer = 'trailer', raketrailer = 'trailer',\n    submersible = 'submarine', submersible2 = 'submarine', kosatka = 'submarine', avisa = 'submarine',\n}\n\n-- ===== เวลาและอากาศ \u002F Time and weather =====\n\n-- ตั้งอากาศ\u002Fเวลาจากแผง ปิด (false) ถ้าเซิร์ฟใช้สคริปต์อากาศอื่นอยู่แล้ว\n-- Weather\u002Ftime control from the panel; turn off (false) when another weather script runs\nConfig.Tools.WorldControl = true\n\n-- เวลา\u002Fอากาศพื้นฐานของทั้งเมือง (ใช้แทนสคริปต์อากาศ\u002Fเวลาตัวอื่น)\n--   Enabled = false → แผงแค่ทับชั่วคราว ปุ่ม \"คืนค่าเดิม\" ปล่อยให้สคริปต์อากาศของเซิร์ฟทำงานต่อ\n--   Enabled = true  → แผงคุมเวลา\u002Fอากาศตลอด ปุ่ม \"คืนค่าเดิม\" กลับมาที่ค่าด้านล่าง (เวลาเดินต่อ ไม่กระโดด)\n--   Weather = อากาศเริ่มต้น · StartHour = ชั่วโมงตอนเปิดเซิร์ฟ · MinutesPerDay = นาทีจริงต่อ 1 วันในเกม (GTA ปกติ 48)\n--   สคริปต์อื่นถามเวลาในเกมได้ที่ exports.x3d_adminpanel:GetGameHour() \u002F GetGameTime() → hour, minute\n-- Base weather\u002Ftime for the whole city (replaces another weather\u002Ftime script)\n--   Enabled = false → the panel only overrides; \"Reset\" hands control back to the server's weather script\n--   Enabled = true  → the panel always owns weather\u002Ftime; \"Reset\" returns to the values below (the clock keeps running)\n--   Weather = starting weather · StartHour = hour at server start · MinutesPerDay = real minutes per in-game day (GTA default 48)\n--   Other scripts read the in-game time with exports.x3d_adminpanel:GetGameHour() \u002F GetGameTime() → hour, minute\nConfig.Tools.WorldSync = {\n    -- เปิด = แผงคุมเวลา\u002Fอากาศตลอด \u002F true = the panel always owns weather and time\n    Enabled = false,\n    -- อากาศเริ่มต้น \u002F Starting weather\n    Weather = 'CLEAR',\n    -- ชั่วโมงตอนเปิดเซิร์ฟ \u002F Hour at server start\n    StartHour = 8,\n    -- นาทีจริงต่อ 1 วันในเกม \u002F Real minutes per in-game day\n    MinutesPerDay = 48,\n}\n\n-- อากาศที่เลือกได้\n-- Weather types the panel offers\nConfig.Tools.Weathers = { 'EXTRASUNNY', 'CLEAR', 'CLOUDS', 'OVERCAST', 'RAIN', 'THUNDER', 'CLEARING', 'SMOG', 'FOGGY', 'NEUTRAL', 'SNOW', 'SNOWLIGHT', 'BLIZZARD', 'XMAS', 'HALLOWEEN' }\n\n-- หมวดรถในหน้าเรียกรถ (ชื่อโมเดล) — พิมพ์ชื่อโมเดลอื่นเองในหน้าเรียกรถได้เสมอ\n-- Vehicle spawn categories (model names) — any other model can still be typed in\n-- เช่น \u002F e.g. { label = { th = 'สปอร์ต', en = 'Sports' }, models = { 'sultan', 'jester' } }\nConfig.Tools.VehicleCategories = {\n    { label = { th = 'ซูเปอร์คาร์', en = 'Super' }, models = { 'adder', 'zentorno', 't20', 'osiris', 'krieger', 'emerus' } },\n    { label = { th = 'สปอร์ต', en = 'Sports' }, models = { 'elegy2', 'sultan', 'jester', 'comet2', 'feltzer2', 'kuruma' } },\n    { label = { th = 'มัสเซิล', en = 'Muscle' }, models = { 'dominator', 'gauntlet', 'dukes', 'sabregt', 'vigero' } },\n    { label = { th = 'SUV \u002F ออฟโรด', en = 'SUV \u002F off-road' }, models = { 'baller2', 'granger', 'kamacho', 'sandking', 'mesa3' } },\n    { label = { th = 'มอเตอร์ไซค์', en = 'Motorcycles' }, models = { 'bati', 'akuma', 'sanchez', 'pcj', 'faggio' } },\n    { label = { th = 'หน่วยงาน', en = 'Emergency' }, models = { 'police', 'police3', 'ambulance', 'firetruk', 'riot' } },\n    { label = { th = 'อากาศยาน', en = 'Aircraft' }, models = { 'maverick', 'frogger', 'buzzard2', 'luxor', 'duster' } },\n    { label = { th = 'เรือ', en = 'Boats' }, models = { 'seashark', 'jetmax', 'dinghy', 'tropic' } },\n}\n",1792316314987]