MBT Malisling
MBT Malisling is a free FiveM script that turns every weapon interaction into a fully immersive roleplay experience. Starting from visible weapon props on your character, v2.0.0 expands into a complete weapon system: forensic shell casings, concealed carry detection, pat-down mechanics, weapon racks, vehicle trunk storage, ammo sharing, handoffs, and much more — all optional, all configurable.
This script is free and open source. You can find the source on GitHub and download it directly from our store.
Core Features
- Visible weapons — Equipped weapons rendered on your back, side, or melee slot — visible to all nearby players in sync
- Holster animations — Smooth draw and reholster animations per weapon class and slot
- Flashlight sync — Flashlight state saved in weapon metadata and restored automatically
- Weapon jamming — Durability-based jam chance; unjam by pressing the clear key multiple times
- Weapon throw — Physically throw your equipped weapon; it lands and becomes a lootable drop
- Weapon drop — On-death drop with visible prop, configurable despawn timer, and Discord logging
- Smart vehicle hiding — Weapon prop stays visible on motorcycles and roofless vehicles; hidden inside enclosed cars
- Per-job positions — Override weapon bone, position and holster animation per job (e.g. police hip holster)
v2.0.0 — New Modules
Every module below is independently toggleable in config.lua.
| Module | Description |
|---|---|
| Suppressor heat | Visual heat glow on suppressor during sustained fire (glow / light / particle) |
| Weapon inspect | Hold I to inspect your weapon — overlay shows serial, condition tier, custom name, and ammo count |
| Low ready | Toggle between back-sling and chest-ready position with a choreographed transition |
| Tactical sling | Visible sling strap prop on the torso while a long gun is slung; supports job variants |
| Weapon safety | Toggle fire safety (END) — disables firing while on safe; pill HUD indicator |
| Weapon name | Engrave a custom name on a weapon (saved in metadata, shown in inspect); configurable permission level |
| Weapon weight | Movement speed penalty for carrying multiple long guns (3 presets or full custom tuning) |
| Charge weapon | RP gesture to rack the slide or charge the bolt — animation broadcast to nearby players |
| Showcase poses | Cycle through static poses for screenshots or gunshop displays (/pose) |
| Vehicle trunk rack | Stow and retrieve a rifle from your vehicle trunk with animation and oxmysql persistence |
| Weapon rack | Fixed-location gun lockers rendered via GlobalState; optional item placement with mbt_gunrack item |
| Shell casings | Forensic shell casings per shot — persistent in-memory with serial and timestamp, collectible via ox_target |
| Weapon handoff | Pass a weapon directly to another player including all metadata (serial, condition, name) |
| Concealed carry | Hide weapons at the waistband; detection quality varies by clothing layer |
| Pat down | LEO frisk — lists all visible and concealed weapons; consent required (bypassed if cuffed) |
| Ammo sharing | Share ammo with a nearby player with an amount picker |
| Chain of custody | Forensic log of every player who carried a weapon by serial (oxmysql, shown in inspect) |
| Serials | Guarantee every weapon has a serial; supports MBT-XXXXXXXX or ox-like format |
| No-draw zones | Define zones (sphere / box / poly) where weapons cannot be drawn |
| Admin dashboard | /mbt_malisling — NUI panel for live feature toggling and zone management without server restart |
Supported Frameworks
| Framework | Supported |
|---|---|
| ESX | ✅ |
| QBCore | ✅ |
QBox (qbx_core) | ✅ New in v2 |
| OX Core | ✅ |
Supported Inventories
| Inventory | Support |
|---|---|
| ox_inventory | ✅ Full |
| qb-inventory | ✅ New in v2 |
Localization
Built-in locale files for English, Italian, and French. All labels are editable in locales/.
Preview
Check out the script in action on YouTube:
Known limitations
A slung weapon's flashlight follows the weapon in your hands. Put a rifle with the flashlight component on your back while the light is on, then toggle the light on a different weapon, and the slung one changes with it.
This is the engine, not the script: GTA ties a weapon object's flashlight rendering to a single flashlight state on the ped, so any SetFlashLightEnabled — from us or from any other resource — reaches every weapon object that ped owns, including props on the back. Re-asserting the light source per object, blocking the toggle control, monitoring and reverting, and drawing a custom light were all tried; each either broke the rendering, was bypassable, flickered, or left the physical lens flickering anyway. Fixing it properly means replacing the whole flashlight system. The flashlight's saved state across equip and relog is correct — it is only the live mirroring that bleeds.
On qb-inventory, prompts are a beat less immediate. ox_inventory fires native events we hook directly; qb has no equivalent, so that bridge polls the inventory for changes. Everything works, but expect slightly less snappy holster prompts. If you have the choice, pair this with ox_inventory.
How it works
When a player equips a weapon via inventory, the script creates a prop attached to the correct bone on the character model. Props are only spawned for players within FiveM sync scope — keeping performance low even on full servers.
Weapon slot type (side, back, back2, melee, melee2, melee3, extinguisher) is determined per weapon hash in data/weapons.lua, which you can customise. All modules communicate via ox_lib callbacks and statebags — no global network spam.