[{"data":1,"prerenderedAt":77},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-en-x3d-mapevents":21,"config-public-x3d-mapevents":72},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"site":16,"contact":18,"seo":19,"payment":20},{"name":5,"host":6,"default_locale":7,"locales":17},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":30,"tags":33,"latest_version":45,"latest_released_at":46,"published_at":47,"has_docs":48,"config":49,"rent_price_satang":50,"description_md":51,"docs_md":52,"seo_title":53,"seo_description":54,"media":55,"versions":65},"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.",0,"none","public\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fcover\u002F8e738f2dfcf0ea2f.jpg",[31,32],"hud","gameplay",[34,35,36,37,38,39,40,41,42,43,44],"อีเวนต์","อีเวนต์บนแผนที่","แผนที่","จุดนำทาง","นับถอยหลัง","pause menu","map events","event","waypoint","ฟรี","free","1.0.3","2026-10-12T17:13:20.327337Z","2026-10-12T04:21:56.480796Z",true,"public",null,"A free event panel on the pause-menu map. Open the map and see what is happening right now, how long it has left, and set a waypoint to it with one click.\n\nFits any city style (school \u002F community \u002F RP) and works with ESX or standalone.\n\n---\n\n## Features\n\n- [+] Easy setup: tune everything in config, or set it from the web builder\n- [+] The panel shows only while the pause menu is open, so it never crowds the screen\n- [+] Name + countdown, the timer turns red near the end, finished events vanish\n- [+] Click an event with a spot to set the waypoint, click again to clear it\n- [+] Events with a spot get a blip of the same name, which you can turn off\n- [+] Set the row count, position, panel size and when the timer turns red\n- [+] Other scripts push events by export: server for everyone, client for one player\n- [+] Admins create events from the admin menu, and admin events survive a restart\n- [+] Works with X3D Selldrug out of the box: the big-buyer event shows with its timer\n- [+] Thai \u002F English, switch with Config.Locale\n\n---\n\n## Requirements\n\n- Nothing else to install. ESX or standalone.\n- `x3d_adminpanel` (optional, to create events from the admin panel)\n","## Installation\n\n1. Put the `x3d_mapevents` folder in `resources\u002F`\n2. Add to `server.cfg` **before** any script that sends events:\n\n```\nensure x3d_mapevents\n```\n\nNo database, nothing else to install. Open the pause menu while an event is live and the panel shows bottom-left.\n\n## Settings (`config.lua`)\n\n| Key | Default | What it does |\n|---|---|---|\n| `Config.Locale` | `'th'` | Language `'th'` \u002F `'en'` |\n| `Config.MaxRows` | `5` | Most rows, soonest-ending first |\n| `Config.HotSeconds` | `300` | Under this many seconds the timer turns red |\n| `Config.Position` | `{ left = 28, bottom = 175 }` | Offset from the bottom-left (pixels of a 1080-high screen); the default sits above the map's scale bar |\n| `Config.Scale` | `0.75` | Panel size |\n| `Config.Clickable` | `true` | Click a row to set \u002F clear the waypoint (the map still pans and zooms). `false` = read-only panel, navigate through the game's blip list |\n| `Config.Blip` | `{ sprite = 38, colour = 5, scale = 0.9, shortRange = false, flash = false }` | Default blip for events with a spot |\n| `Config.WaypointRadius` | `75.0` | A waypoint within this many metres marks the row as navigated |\n| `Config.AdminSave` | `true` | Admin-made events survive a restart |\n| `Config.MaxDuration` | 7 days | Longest allowed event (typo guard) |\n| `Config.Debug` | `false` | `true` = `\u002Fmapevents_test` adds sample events for you only |\n\n## Sending events from other scripts\n\n```lua\n-- server: everyone sees it (late joiners too)\nexports.x3d_mapevents:Add({\n    id = 'my_event',                                -- same id = replace\n    title = { th = 'ผู้รับซื้อรายใหญ่', en = 'Big Buyer' }, -- or a single string\n    sub = { th = 'ปิดใน', en = 'Closes in' },         -- second line (optional)\n    icon = 'drug',          -- star flag crown fire money market car drug alert clock, or an image URL\n    color = 'amber',        -- amber red violet green blue\n    duration = 15 * 60,     -- seconds, or endsAt = unix time instead\n    coords = vector3(x, y, z), -- leave out = name and timer only\n    blip = false,           -- false = no blip (the source script has one) or { sprite, colour, scale, flash }\n})\nexports.x3d_mapevents:Remove('my_event')\nexports.x3d_mapevents:Has('my_event')\n\n-- client: this player only (e.g. a job cooldown)\nexports.x3d_mapevents:AddLocal({ id = 'cooldown', title = 'Work again', duration = 300 })\nexports.x3d_mapevents:RemoveLocal('cooldown')\n```\n\nFinished events disappear from the panel and the map on their own. If this resource restarts, events sent by other scripts are gone (admin events stay).\n\n## X3D admin panel (optional)\n\nWith `x3d_adminpanel` on the server you get a \"Map events\" menu: see live events, create one (Thai\u002FEnglish name, minutes, use where you stand, icon), extend +10 min and delete.\n\n## X3D Selldrug\n\nX3D Selldrug 1.2.4+ sends its big-buyer event through `Hooks.OnEventBuyer` (in its `addons\u002Fhooks\u002Fserver.lua`) with no setup.\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| Thai blip names show boxes | The bundled `stream\u002Ffont4thai.gfx` must load; do not delete the `stream` folder |\n| The panel covers another pause tab | The panel shows on every pause tab; move it with `Config.Position` |\n| Timers are off | Times follow the server clock (unix time); keep the server clock correct |\n","Free FiveM Map Events Script with Countdown and Waypoint","Free FiveM script: live events on the pause-menu map with a countdown and click-to-waypoint. Push events with one export.",[56,59,61,63],{"kind":57,"url":58},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fmedia\u002Fac0176609c9cc720.png",{"kind":57,"url":60},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fmedia\u002F42298f3372f0c07d.png",{"kind":57,"url":62},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fmedia\u002Fb969df54e669d387.png",{"kind":57,"url":64},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-mapevents\u002Fmedia\u002F6608b5dd3d0f7840.png",[66,68],{"version":45,"released_at":46,"changelog_md":67},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":69,"released_at":70,"changelog_md":71},"1.0.1","2026-10-12T04:21:53.768127Z","### Fixed\n\n- Store package: the resource folder is named `x3d_mapevents`",{"slug":23,"version":45,"latest_version":45,"files":73,"options":50},[74],{"path":75,"content":76},"config.lua","-- ===============================================================\n--  X3D Map Events — ตั้งค่า \u002F settings\n--  แผงอีเวนต์บนหน้าแผนที่ (pause menu): ชื่อ + เวลานับถอยหลัง + blip นำทาง\n--  Event panel on the pause-menu map: name + countdown + a blip to set a waypoint\n-- ===============================================================\n\nConfig = {}\n\n-- ===== ภาษา \u002F Language =====\n\nConfig.Locale = 'th'                  -- ภาษา 'th' | 'en' \u002F language 'th' | 'en'\n\n\n-- ===== แผง \u002F Panel =====\nConfig.MaxRows = 5                    -- แถวสูงสุดบนแผง (เรียงตามเวลาที่จะหมดก่อน) \u002F most rows shown, soonest-ending first\nConfig.HotSeconds = 300               -- เหลือน้อยกว่านี้ (วินาที) ตัวเลขเป็นสีแดง \u002F under this many seconds the timer turns red\n-- ระยะจากมุมซ้ายล่างของจอ หน่วยพิกเซลบนจอสูง 1080 (จออื่นย่อขยายตามความสูงให้เอง)\n-- ค่าเริ่มต้นวางเหนือแถบสเกลกับชื่อพื้นที่ของแผนที่เกม\n-- Offset from the bottom-left corner in pixels of a 1080-high screen (other sizes scale by height)\n-- The default sits above the map's own scale bar and zone name\nConfig.Position = { left = 28, bottom = 175 }\nConfig.Scale = 0.75                   -- ขนาดแผง (1.0 = ใหญ่สุด) \u002F panel size (1.0 = largest)\n-- true = คลิกแถวที่มีพิกัดเพื่อตั้ง\u002Fยกเลิกจุดนำทาง (แผนที่ยังลาก\u002Fซูมได้ระหว่างนั้น)\n-- true = click a row with a spot to set \u002F clear the waypoint (the map still pans and zooms)\nConfig.Clickable = true\n\n\n-- ===== blip \u002F Blip =====\n-- อีเวนต์ที่มีพิกัดได้ blip ชื่อเดียวกัน จึงขึ้นในรายการ blip ขวาของแผนที่: ↑↓ เลือก แล้ว Enter = จุดนำทาง\n-- สคริปต์ที่มี blip ของตัวเองอยู่แล้วส่ง blip = false ได้ (แผงยังรู้ตำแหน่งไว้บอกระยะ)\n-- Events with coords get a blip with the same name, so they appear in the map's blip list: arrow keys + Enter = waypoint\n-- Scripts that already draw their own blip can pass blip = false (the panel still knows the spot for the distance)\n-- blip ค่าเริ่มต้นของอีเวนต์ที่มีพิกัด (shortRange = เห็นเมื่ออยู่ใกล้, flash = กะพริบ) \u002F Default blip for events with coords (shortRange = only when near, flash = blinking)\nConfig.Blip = { sprite = 38, colour = 5, scale = 0.9, shortRange = false, flash = false }\nConfig.WaypointRadius = 75.0          -- จุดนำทางห่างจากอีเวนต์ไม่เกินนี้ (เมตร) = แถวนั้นขึ้น \"ตั้งจุดนำทางแล้ว\" \u002F a waypoint within this many metres marks that row as navigated\n\n\n-- ===== แอดมิน \u002F Admin =====\nConfig.AdminSave = true               -- อีเวนต์ที่แอดมินสร้างจากแผง x3d_adminpanel อยู่ต่อหลังรีสตาร์ท \u002F admin-made events (x3d_adminpanel) survive a restart\nConfig.MaxDuration = 7 * 24 * 3600    -- อีเวนต์ยาวสุด (วินาที) กันพิมพ์ผิด \u002F longest allowed event in seconds (typo guard)\n\n-- ===== ดีบัก \u002F Debug =====\n\nConfig.Debug = false                  -- true = \u002Fmapevents_test เพิ่มอีเวนต์ตัวอย่าง (เห็นคนเดียว) \u002F adds sample events for you only\n",1792316314757]