[{"data":1,"prerenderedAt":89},["ShallowReactive",2],{"site":3,"config-slug-site":15,"config-product-en-x3d-useitem":21,"config-public-x3d-useitem":84},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"site":16,"contact":18,"seo":19,"payment":20},{"name":5,"host":6,"default_locale":7,"locales":17},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"id":22,"slug":23,"name":24,"summary":25,"price_thb":26,"license_mode":27,"cover_key":28,"cover_url":29,"category_slugs":30,"tags":33,"latest_version":56,"latest_released_at":57,"published_at":58,"has_docs":59,"config":60,"rent_price_satang":61,"description_md":62,"docs_md":12,"seo_title":63,"seo_description":64,"media":65,"versions":77},"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.",0,"none","public\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fcover\u002Fe007251b171e6791.jpg",[31,32],"inventory","gameplay",[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],"use item","ไอเทมใช้ได้","usable items","ยา","ผ้าพันแผล","aed","ชุบคนล้ม","ซ่อมรถ","กระสุน","กล่องสุ่ม","อาหาร","เสื้อเกราะ","หมวกกันน็อค","esx","ฟรี","free","บัฟอาหาร","ชุดซ่อมรถ","เติมกระสุน","ยืมเสื้อเกราะ","ใช้ไอเทม","ไอเทมเติมเลือด","1.1.2","2026-10-12T17:19:33.653792Z","2026-09-24T02:05:34.038449Z",false,"public",null,"Every consumable in one script — medicine, bandages, an AED, repair kits, ammo, loot boxes and buff food.\n\n**Works with ESX or standalone.** No ox_lib, no particular inventory.\n\n---\n\n## Features\n\n- [+] Easy to set up: tune everything in config, or edit it from the web builder\n- [+] Meds and bandages heal a percentage, with percent and time set per item\n- [+] AED revives a nearby downed player, with radius and CPR time you set\n- [+] Plug in your own death screen by setting the revive event\n- [+] Repair kit with its own radius and repair time\n- [+] Ammo tops up the weapon in hand, limited per type, with a cap you set\n- [+] Loot boxes open several at a time, with a per-use maximum\n- [+] Food heals and applies timed buffs through any buff system\n- [+] Body armor as a consumable vest, or a rental one limited to an area\n- [+] Helmet worn as real clothing, blocks critical hits\n- [+] Anti-spam lock, checked on the server: no item, no effect\n- [+] Optional bag-space check before opening a box, switch it in config\n\n---\n\n## What is in it\n\n| Group | What it does |\n|---|---|\n| **Meds \u002F bandages** | Heal a percentage of health, with an animation and a medical bag prop |\n| **AED** | CPR that revives a downed player nearby, with the range checked server-side |\n| **Repair kit** | Fixes body, engine and tyres while preserving dirt level and fuel |\n| **Ammo** | Tops up the weapon in hand, capped per type |\n| **Loot boxes** | Open several at once, with an optional bag-space check first |\n| **Food** | Heals and applies timed buffs through any buff system |\n| **Body armor** | Raises armor, in a consumable vest and a rental one limited to an area |\n| **Helmet** | Worn as real clothing, blocks critical hits, breaks when shot, and survives a relog |\n\n---\n\n## Safe by construction\n\nEvery use is checked on the server:\n\n- **An in-flight lock** — one action at a time per player; spamming the key does nothing\n- **The item is verified before it is taken**, never taken first and checked after\n- **Distance is re-checked at the end, not only at the start** — start CPR and run off and it fails\n- **The client saying \"done\" is not enough** — the server re-checks timing and conditions itself\n\n---\n\n## Fits what you already run\n\nEverything is detected, and nothing is required:\n\n- **Progress bar** — ox_lib if present, then esx_progressbar, otherwise it draws its own with natives\n- **Notifications** — esx_notify, then ox_lib, then the game's own feed\n- **Buffs** — `x3d_useitem:effect` fires every time, so any buff system can listen\n- **Reviving** — point `Config.ReviveEvent` at your death screen, `esx_ambulancejob:revive` included\n- **Fuel** — the repair kit keeps the fuel level and dirt as they were, no fuel script needed\n\n---\n\n## Making it yours\n\nEvery item lives in `shared\u002Fconfig.lua`, add or remove as you like. All text sits in `locales.lua` in Thai and English, switched with `Config.Locale`.\n","Free FiveM usable items — meds, AED, repair, ammo","A usable item system for ESX: medicine, bandages, an AED that revives downed players, repair kits, ammo, loot boxes and buff food. ESX is all it needs.",[66,69,71,73,75],{"kind":67,"url":68},"image","\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fmedia\u002F4d71fd9041881612.png",{"kind":67,"url":70},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fmedia\u002F3fd2d4739ef057a4.png",{"kind":67,"url":72},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fmedia\u002F4c3e39cbdd2744cb.png",{"kind":67,"url":74},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fmedia\u002Fb07e1f1a9fa14e09.png",{"kind":67,"url":76},"\u002Fapi\u002Fv1\u002Fmedia\u002Fpublic\u002Fproducts\u002Fx3d-useitem\u002Fmedia\u002F3f0d768fc8af6157.png",[78,80],{"version":56,"released_at":57,"changelog_md":79},"### Changed\n\n- Store images now carry English captions for the English store page",{"version":81,"released_at":82,"changelog_md":83},"1.0.0","2026-09-24T02:05:26.834437Z","First public release.\r\n\r\n### Added\r\n\r\n- Meds and bandages, an AED that revives a downed player, body armor, a helmet, repair kits, ammo top-ups, loot boxes and food with timed buffs\r\n- The helmet is worn as real clothing through the skinchanger API, blocks critical hits, breaks when shot, and is restored on relog from player metadata\r\n- `isHelmetOn` and `helmetBroken` exports let a damage script drive the break\r\n- `Config.ReviveEvent` points the AED at any death-screen system, and falls back to a full heal when left unset\r\n- `x3d_useitem:effect` fires for every food buff so any buff system can listen\r\n- `addons\u002Fprogress` picks ox_lib, then a progress bar resource, then draws its own with natives, which makes ox_lib optional\r\n- Notifications fall through esx_notify, ox_lib and the game's own feed\r\n- `locales.lua` with Thai and English, selected by `Config.Locale`\r\n- `Config.CheckBagSpace` takes the name of an inventory that exposes CheckItemFit, and is off by default\r\n\r\n### Notes\r\n\r\n- Server-side: an in-flight lock per player, the item verified before it is consumed, and distance re-checked when the action completes rather than only when it starts",{"slug":23,"version":56,"latest_version":56,"files":85,"options":61},[86],{"path":87,"content":88},"shared\u002Fconfig.lua","Config = {}\n\n-- ===== ทั่วไป \u002F General =====\n\n-- เฟรมเวิร์ก: 'auto' หาเองจาก es_extended · 'esx' บังคับ ESX · 'standalone' ไม่ใช้เฟรมเวิร์ก\n-- Framework: 'auto' detects es_extended · 'esx' forces ESX · 'standalone' uses no framework\nConfig.Framework = 'auto'\n\n-- ภาษาของข้อความทั้งหมด ('th' หรือ 'en') · ข้อความอยู่ใน locales.lua\n-- Language of every message ('th' or 'en') · texts live in locales.lua\nConfig.Locale = 'th'\n\n-- ===== ชุบผู้เล่นที่ล้ม \u002F Reviving downed players =====\n\n-- ไอเทมชุบ (aed) จะสั่งสคริปต์หน้าจอตายให้ปลุกคนขึ้นมา\n-- false (ค่าเริ่มต้น) = ไม่ผูกกับระบบไหนเลย เติมเลือดให้เต็มและลุกขึ้นเองในตัว\n-- ใช้ระบบหน้าจอตายของคุณเองก็ใส่ชื่ออีเวนต์ เช่น\n--   Config.ReviveEvent = 'esx_ambulancejob:revive'\n-- The revive item (aed) asks your death-screen script to wake the player up\n-- false (default) = hook into nothing: heals to full and stands the player up by itself\n-- To use your own death-screen script, put its event name, e.g.\n--   Config.ReviveEvent = 'esx_ambulancejob:revive'\nConfig.ReviveEvent = false\n\n-- ===== ระบบรีสตาร์ท \u002F Restart lock =====\n\n-- ระบบล็อกเศรษฐกิจก่อนรีสตาร์ท (เช่น esx_restart) — ใส่ชื่อ GlobalState key ที่ระบบนั้น\n-- ตั้ง .lock = true ตอนใกล้รีสตาร์ท เช่น Config.RestartLockState = 'restartlock'\n-- ไม่ได้ใช้ระบบไหนก็ปล่อย false ไว้ (ไม่ล็อก)\n-- Pre-restart economy lock (e.g. esx_restart) — put the GlobalState key that system uses\n-- It sets .lock = true near a restart, e.g. Config.RestartLockState = 'restartlock'\n-- Not using one? leave false (no lock)\nConfig.RestartLockState = false\n\n-- ===== กล่องไอเทม \u002F Loot boxes =====\n\n-- เช็กช่องกระเป๋าก่อนเปิดกล่อง — ใส่ชื่อ resource inventory ที่มี export CheckItemFit(src, item, count)\n-- เช่น Config.CheckBagSpace = 'ox_inventory' · ไม่ใส่ (false) ระบบจะเปิดให้เลย (ของล้นกระเป๋าเป็นเรื่องของ inventory เอง)\n-- Check bag space before opening a box — put the inventory resource that has export CheckItemFit(src, item, count)\n-- e.g. Config.CheckBagSpace = 'ox_inventory' · false = open straight away (overflow is the inventory's job)\nConfig.CheckBagSpace = false\n\n-- ===== ยา \u002F ผ้าพันแผล \u002F Medicine and bandages =====\n\n-- ท่าทางตอนใช้ยา \u002F animation while healing\nConfig.HealAnim = {\n    dict = 'anim@heists@narcotics@funding@gang_idle',\n    clip = 'gang_chatting_idle01',\n}\n\n-- พรอพที่ถือตอนใช้ยา \u002F prop held while healing\nConfig.HealProp = {\n    model  = 'xm_prop_smug_crate_s_medical',\n    bone   = 60309,\n    offset = vector3(0.06, -0.06, 0.05),\n    rot    = vector3(-110.0, 0.0, 0.0),\n}\n\n-- ไอเทมเติมเลือด: pct = สัดส่วนที่เติม (0.20 = 20%) · duration = เวลา (ms) · prop = ถือพรอพไหม\n-- Healing items: pct = share healed (0.20 = 20%) · duration = time (ms) · prop = hold the prop or not\n-- เช่น \u002F e.g. ['medkit'] = { pct = 0.50, duration = 5000, prop = true }\nConfig.Heal = {\n    ['painkiller'] = { pct = 0.20, duration = 3500, prop = true },\n    ['bandage']    = { pct = 0.10, duration = 3500, prop = false },\n}\n\n-- ===== ชุบคนล้ม (AED) \u002F Revive (AED) =====\n\n-- ท่าปั๊มหัวใจ · pumpInterval = ช่วงเวลาระหว่างการกด (ms)\n-- CPR animation · pumpInterval = time between compressions (ms)\nConfig.ReviveAnim = {\n    dict         = 'mini@cpr@char_a@cpr_str',\n    clip         = 'cpr_pumpchest',\n    pumpInterval = 500,\n}\n\n-- รัศมี (เมตร) ที่หาคนล้มรอบตัว \u002F radius (meters) to look for a downed player\nConfig.ReviveRadius = 3.0\n\n-- ไอเทมชุบ: duration = เวลาปั๊มหัวใจ (ms)\n-- Revive items: duration = CPR time (ms)\n-- เช่น \u002F e.g. ['aed_mini'] = { duration = 7000 }\nConfig.Revive = {\n    ['aed']       = { duration = 9000 },\n    ['aed_super'] = { duration = 5000 },\n}\n\n-- ===== ชุดซ่อมรถ \u002F Repair kit =====\n\n-- ท่าซ่อมรถ \u002F repair animation\nConfig.FixAnim = {\n    dict = 'mini@repair',\n    clip = 'fixing_a_ped',\n}\n\n-- ไอเทมซ่อมรถ: duration = เวลา (ms) · radius = รัศมีหารถ (เมตร)\n-- Repair items: duration = time (ms) · radius = reach to find the car (meters)\n-- เช่น \u002F e.g. ['fixkit_pro'] = { duration = 8000, radius = 5.0 }\nConfig.Fix = {\n    ['fixkit'] = { duration = 15000, radius = 5.0 },\n}\n\n-- ===== กระสุน \u002F Ammo =====\n\n-- ท่าเติมกระสุน \u002F reload animation\nConfig.AmmoAnim = {\n    dict = 'anim@weapons@pistol@revolver_str',\n    clip = 'reload_aim',\n    ms   = 1000,\n}\n\n-- กระสุนสูงสุดต่ออาวุธ (เติมเกินนี้ไม่ได้) \u002F max ammo per weapon (cannot top up past this)\nConfig.MaxAmmo = 250\n\n-- ไอเทมกระสุน: amount = จำนวนที่เติม · weapons = จำกัดเฉพาะอาวุธเหล่านี้ (ไม่ใส่ = ทุกอาวุธ)\n-- Ammo items: amount = rounds added · weapons = limit to these weapons (omit = any weapon)\n-- เช่น \u002F e.g. ['ammo_box'] = { amount = 60 }\nConfig.Ammo = {\n    ['speed_loader'] = { amount = 6,  weapons = { WEAPON_REVOLVER = true, WEAPON_REVOLVER_MK2 = true } },\n    ['ammo_box']     = { amount = 60 },\n}\n\n-- ===== กล่องสุ่ม \u002F Boxes =====\n\n-- เปิดกล่องได้สูงสุดกี่ใบต่อครั้ง \u002F max boxes opened in one use\nConfig.BoxMaxPerUse = 10\n\n-- กล่อง: ชื่อกล่อง = รายการ { ไอเทมที่ได้, จำนวน } ต่อกล่องหนึ่งใบ\n-- Boxes: box item = list of { item received, count } per box\n-- เช่น \u002F e.g. ['box_cement'] = { { 'cement', 100 } }\nConfig.Boxes = {\n    ['box_cement']       = { { 'cement',       100 } },\n    ['box_ingot_gold']   = { { 'ingot_gold',   100 } },\n    ['box_ingot_steel']  = { { 'ingot_steel',  100 } },\n    ['box_ingot_copper'] = { { 'ingot_copper', 100 } },\n    ['box_wood_plank']   = { { 'wood_plank',   100 } },\n    ['box_gem_diamond']  = { { 'gem_diamond',  100 } },\n    ['box_gem_ruby']     = { { 'gem_ruby',     100 } },\n    ['fight_pack']       = { { 'painkiller', 20 }, { 'vest', 20 }, { 'aed', 3 } },\n}\n\n-- ท่าเปิดกล่อง \u002F box-opening animation\nConfig.BoxAnim = {\n    dict = 'anim@heists@ornate_bank@grab_cash',\n    clip = 'grab',\n    ms   = 1200,\n}\n\n-- ===== อาหารและบัฟ \u002F Food and buffs =====\n\n-- ท่ากิน\u002Fดื่ม: ms = เวลา \u002F eat and drink animations: ms = time\nConfig.ConsumeAnims = {\n    eat   = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger_fp', ms = 3000 },\n    drink = { dict = 'mp_player_intdrink',      clip = 'loop_bottle',                 ms = 2500 },\n}\n\n-- อาหาร: anim = ท่า · heal = สัดส่วนเลือดที่เติม · effects = บัฟ { ชนิด, ค่า, วินาที }\n-- Food: anim = animation · heal = share of health restored · effects = buffs { kind, value, seconds }\n-- เช่น \u002F e.g. ['bread'] = { anim = 'eat', heal = 0.05, effects = { { 'regen', 1, 60 } } }\nConfig.Food = {\n    ['food_lunchbox'] = { anim = 'eat',   heal = 0.10, effects = { { 'regen', 3, 300 } } },\n    ['drink_water']   = { anim = 'drink', heal = 0.00, effects = { { 'regen', 2, 180 } } },\n    ['milk']          = { anim = 'drink', heal = 0.05, effects = { { 'defense', 0.05, 300 } } },\n    ['meal_basic']    = { anim = 'eat',   heal = 0.20, effects = { { 'regen', 5, 600 } } },\n    ['meal_hearty']   = { anim = 'eat',   heal = 0.35, effects = { { 'regen', 5, 900 }, { 'damage', 0.05, 900 } } },\n    ['meal_feast']    = { anim = 'eat',   heal = 0.50, effects = { { 'regen', 8, 1200 }, { 'damage', 0.08, 1200 }, { 'defense', 0.08, 1200 } } },\n}\n\n-- ===== เกราะกับหมวกกันน็อค \u002F Armor and helmet =====\nConfig.Armor = {\n    -- เสื้อเกราะ ใช้แล้วหาย \u002F consumable vest, gone after use\n    vest = { item = 'vest', armor = 100 },\n\n    -- เสื้อเกราะให้ยืม ใช้ซ้ำได้ แต่จำกัดพื้นที่\n    -- zoneExport = ชื่อ resource ที่มี export คืน true\u002Ffalse ว่าอยู่ในพื้นที่ไหม\n    -- false = ใช้ได้ทุกที่ · ไม่มีไอเทมนี้ก็ปล่อยไว้ ระบบจะไม่ลงทะเบียนให้\n    -- Rental vest, reusable but limited to an area\n    -- zoneExport = resource whose export returns true\u002Ffalse for \"inside the area\"\n    -- false = usable anywhere · if you do not have this item just leave it, it will not be registered\n    rental = { item = 'vest_training', armor = 100, zoneExport = false, zoneFn = 'checkInZoneTraining' },\n\n    -- หมวกกันน็อค ใส่เป็นเสื้อผ้าจริง กันคริติคอล แตกได้เมื่อโดนยิงหัว\n    -- ตัวเลขคือ drawable\u002Ftexture ของช่อง helmet ในร่าง freemode\n    -- Helmet worn as real clothing, blocks critical hits, breaks when shot in the head\n    -- The numbers are the drawable\u002Ftexture of the helmet slot on the freemode ped\n    helmet = {\n        item   = 'helmet',\n        male   = { helmet_1 = 90, helmet_2 = 0 },\n        female = { helmet_1 = 89, helmet_2 = 0 },\n    },\n}\n",1792316315741]