<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: FiveM MLOs</title>
    <description>The latest articles on DEV Community by FiveM MLOs (@fivemmlos).</description>
    <link>https://dev.to/fivemmlos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4169191%2F1f7c580f-061c-463e-8b97-9188d9afeb1d.png</url>
      <title>DEV Community: FiveM MLOs</title>
      <link>https://dev.to/fivemmlos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fivemmlos"/>
    <language>en</language>
    <item>
      <title>How to Set Up a Bar or Nightclub Job on a FiveM Roleplay Server</title>
      <dc:creator>FiveM MLOs</dc:creator>
      <pubDate>Wed, 07 Oct 2026 22:34:04 +0000</pubDate>
      <link>https://dev.to/fivemmlos/how-to-set-up-a-bar-or-nightclub-job-on-a-fivem-roleplay-server-3pld</link>
      <guid>https://dev.to/fivemmlos/how-to-set-up-a-bar-or-nightclub-job-on-a-fivem-roleplay-server-3pld</guid>
      <description>&lt;p&gt;A bar or nightclub is one of the few places on a FiveM roleplay server where police, gangs, medics and ordinary civilians end up in the same room on purpose. Done well, it becomes the social centre of the city. This post covers the planning side of a bar job: the interior, the job setup, how drinks get stocked and sold, events and staff roles. It stays framework-agnostic, so the ideas apply whether you run QBCore, ESX or something else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the venue, not the script
&lt;/h2&gt;

&lt;p&gt;The building decides how the job plays, so pick it before you pick any job resource. Walk through the interior on a test server and look for these zones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A bar counter&lt;/strong&gt; long enough for two people to serve at once, with space for a register marker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A storage room or back area&lt;/strong&gt; where a stash or fridge marker can sit away from customers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A manager's office&lt;/strong&gt; for the boss menu, money handling and private conversations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A floor or seating area&lt;/strong&gt; big enough for a crowd during events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A DJ booth or small stage&lt;/strong&gt;, if you want live events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A controlled entrance&lt;/strong&gt;, so security staff have a door to stand at.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A small tavern with a counter, booths and a back room suits a neighbourhood bar; a nightclub needs a bigger floor and a separate VIP area. Browsing a few &lt;a href="https://fivemmlos.com/product-category/fivem-bar/" rel="noopener noreferrer"&gt;FiveM bar MLOs&lt;/a&gt; side by side is a quick way to compare counter length and floor space before you commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it a whitelisted job
&lt;/h2&gt;

&lt;p&gt;Bars work best as a whitelisted job with an owner who hires staff, rather than a job anyone can pick at city hall. An owner keeps opening hours consistent and handles staff who stop showing up.&lt;/p&gt;

&lt;p&gt;Every framework stores jobs a little differently. On ESX, jobs and their grades live in the &lt;code&gt;jobs&lt;/code&gt; and &lt;code&gt;job_grades&lt;/code&gt; database tables, and the jobs table has a whitelisted flag. On QBCore, jobs are defined in the core's shared jobs file, and whether a job shows up as a public option depends on your city hall config. A QBCore-style entry looks roughly like this (check the exact format against the version you run):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'nightclub'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Nightclub'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;defaultDuty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;offDutyPay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;grades&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'0'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Barback'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Bartender'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Security'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Manager'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Owner'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;isboss&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep &lt;code&gt;offDutyPay&lt;/code&gt; off so staff only earn while clocked in, and keep the hourly pay modest. The real income should come from serving players, not from standing behind the counter idle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design the stock and selling flow
&lt;/h2&gt;

&lt;p&gt;The loop that keeps a bar alive is simple: staff buy or make stock, serve it to players, and the business keeps the profit. A few decisions shape how that feels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where stock comes from.&lt;/strong&gt; The simplest version is a supplier marker where staff buy bottles with business funds. A richer version has staff mix drinks from ingredients at a crafting station, which gives them something to do between customers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How players pay.&lt;/strong&gt; Payment that goes through a register or billing menu works better than cash handed over in a corner. It keeps money in the business account and gives the owner a record of sales.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server-side checks.&lt;/strong&gt; Whatever script you use, the server should confirm that the person selling is clocked in, standing near the counter and actually has the item. Never let the client decide the price or the payout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What drinks do.&lt;/strong&gt; A short visual effect for alcohol is fun; ten minutes of heavy screen blur is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan events, not just opening hours
&lt;/h2&gt;

&lt;p&gt;A bar with no reason to visit stays empty. Events give players a time and a reason to show up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A weekly club night with a staff DJ.&lt;/li&gt;
&lt;li&gt;Live music or open mic nights.&lt;/li&gt;
&lt;li&gt;Private bookings for gangs, businesses or birthday parties.&lt;/li&gt;
&lt;li&gt;Charity nights run with another business.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Post a schedule in your server's announcements or in-game news. Regular, predictable events build a crowd better than random openings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define clear staff roles
&lt;/h2&gt;

&lt;p&gt;Clear roles stop five people crowding the counter while nobody watches the door:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Owner:&lt;/strong&gt; hires and fires, sets prices, manages the business account and plans events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manager:&lt;/strong&gt; runs shifts when the owner is offline and handles complaints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bartenders:&lt;/strong&gt; serve drinks, take payments and restock the counter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; manages the door, the guest list and removing troublemakers, without turning every shift into a fight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DJ or performer:&lt;/strong&gt; runs the music and the event itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Write these down in a short handbook the owner can share with new staff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the technical basics
&lt;/h2&gt;

&lt;p&gt;Nightclubs often have more lights, props and moving parts than other interiors, so test the building with several players inside. Watch the client console for asset warnings, check that walls and floors have collision, and make sure doors work with your door lock resource. If the interior replaces a default building or sits on top of another map edit, sort out the conflict before launch. The &lt;a href="https://fivemmlos.com/how-to-install-fivem-mlo/" rel="noopener noreferrer"&gt;step-by-step install guide&lt;/a&gt; covers the manifest and &lt;code&gt;server.cfg&lt;/code&gt; side if you haven't added an interior before.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;A good bar job comes down to four things: a venue with the right zones, a whitelisted owner with clear staff roles, a stock loop that rewards actually serving players, and regular events. Get those right and you can swap scripts later without losing what makes the place work. If you are still choosing a building, &lt;a href="https://fivemmlos.com/" rel="noopener noreferrer"&gt;FiveM MLOs&lt;/a&gt; sorts its interiors into categories, so you can plan a bar alongside the rest of your city.&lt;/p&gt;

&lt;p&gt;What has worked for keeping bars busy on your server? Share it in the comments.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>gaming</category>
      <category>lua</category>
      <category>roleplay</category>
    </item>
    <item>
      <title>Why Your FiveM MLO Causes Texture Loss (and How to Check Before You Install It)</title>
      <dc:creator>FiveM MLOs</dc:creator>
      <pubDate>Wed, 07 Oct 2026 20:30:45 +0000</pubDate>
      <link>https://dev.to/fivemmlos/why-your-fivem-mlo-causes-texture-loss-and-how-to-check-before-you-install-it-149e</link>
      <guid>https://dev.to/fivemmlos/why-your-fivem-mlo-causes-texture-loss-and-how-to-check-before-you-install-it-149e</guid>
      <description>&lt;p&gt;If you run a FiveM roleplay server, sooner or later a player reports that the city "goes blurry" or that textures pop in around a certain building. In my experience the cause is often an MLO (a custom interior) that was built without much thought for streaming memory. This post walks through what to check in an MLO resource before you put it on a live server.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Know what is inside the resource
&lt;/h2&gt;

&lt;p&gt;A typical MLO resource looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my_mlo/
├── fxmanifest.lua
└── stream/
    ├── my_mlo.ytyp   -- archetype definitions, including the MLO interior
    ├── my_mlo.ymap   -- where the interior is placed in the world
    ├── my_mlo.ybn    -- collision
    ├── my_mlo.ydr    -- models
    └── my_mlo.ytd    -- textures
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And a minimal manifest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="n"&gt;fx_version&lt;/span&gt; &lt;span class="s1"&gt;'cerulean'&lt;/span&gt;
&lt;span class="n"&gt;game&lt;/span&gt; &lt;span class="s1"&gt;'gta5'&lt;/span&gt;

&lt;span class="n"&gt;this_is_a_map&lt;/span&gt; &lt;span class="s1"&gt;'yes'&lt;/span&gt;

&lt;span class="n"&gt;data_file&lt;/span&gt; &lt;span class="s1"&gt;'DLC_ITYP_REQUEST'&lt;/span&gt; &lt;span class="s1"&gt;'stream/my_mlo.ytyp'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the &lt;code&gt;.ytyp&lt;/code&gt; is not registered with &lt;code&gt;DLC_ITYP_REQUEST&lt;/code&gt;, the interior can fail to load properly or show up without its rooms and portals. That is the first thing to check when an interior looks "empty" or you can see through walls.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Check texture dictionary sizes
&lt;/h2&gt;

&lt;p&gt;The biggest performance issue I see is oversized &lt;code&gt;.ytd&lt;/code&gt; files. One 4096x4096 texture on a small prop adds up fast when a building has hundreds of them. The FiveM client warns in the console about oversized assets (roughly above 16 MB of physical memory), and those warnings are worth taking seriously.&lt;/p&gt;

&lt;p&gt;Quick checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the &lt;code&gt;.ytd&lt;/code&gt; in OpenIV or CodeWalker and look at texture resolutions. Floors and walls rarely need more than 1024 or 2048.&lt;/li&gt;
&lt;li&gt;Make sure textures are compressed (DXT1/DXT5 or BC7), not uncompressed A8R8G8B8.&lt;/li&gt;
&lt;li&gt;Look for duplicate textures shared across several &lt;code&gt;.ytd&lt;/code&gt; files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Rooms, portals and occlusion
&lt;/h2&gt;

&lt;p&gt;A proper MLO is split into rooms connected by portals. The game uses portals to decide what to render, so a well-built interior only draws the room you are in plus what you can see through doorways. A badly built one is a single giant room, which means everything gets drawn all the time.&lt;/p&gt;

&lt;p&gt;In CodeWalker, select the MLO and check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the interior split into several rooms, or is it one big room?&lt;/li&gt;
&lt;li&gt;Do the portals line up with real doorways and windows?&lt;/li&gt;
&lt;li&gt;Are entity sets used for optional props instead of everything being always on?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. LOD distances and the exterior
&lt;/h2&gt;

&lt;p&gt;Exterior shells with huge LOD distances get streamed from far away. For an interior that sits in a dense area such as Mission Row or Pillbox, that adds load on every client driving past. Check the &lt;code&gt;lodDist&lt;/code&gt; values in the &lt;code&gt;.ymap&lt;/code&gt; and keep them reasonable for the size of the building.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Test it on a clean server first
&lt;/h2&gt;

&lt;p&gt;Before an MLO goes live, I test it on a local server with only the base resources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start the resource and watch the client console for "oversized asset" warnings.&lt;/li&gt;
&lt;li&gt;Walk through every room and check for missing collision (falling through floors) and see-through walls.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;resmon&lt;/code&gt; while standing inside to make sure nothing script-side is spiking.&lt;/li&gt;
&lt;li&gt;Drive around the exterior at speed to see if textures pop in.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want a full step-by-step on the install side, there is a guide on &lt;a href="https://fivemmlos.com/how-to-install-fivem-mlo/" rel="noopener noreferrer"&gt;how to install a FiveM MLO&lt;/a&gt; that covers the manifest and &lt;code&gt;server.cfg&lt;/code&gt; part in more detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What to ask a seller before you buy
&lt;/h2&gt;

&lt;p&gt;If you are buying an interior rather than building one, ask the seller:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total streamed size of the resource and the largest &lt;code&gt;.ytd&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Whether it is split into rooms with portals.&lt;/li&gt;
&lt;li&gt;Whether it conflicts with any default interiors or popular map packs.&lt;/li&gt;
&lt;li&gt;Whether you get updates when game builds change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Business interiors like garages get used constantly on RP servers, so for something like a &lt;a href="https://fivemmlos.com/product-category/fivem-mechanic/" rel="noopener noreferrer"&gt;FiveM mechanic MLO&lt;/a&gt; it is worth being picky about performance. Stores such as &lt;a href="https://fivemmlos.com/" rel="noopener noreferrer"&gt;FiveM MLOs&lt;/a&gt; list interiors by category, which makes it easier to compare options before you commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Most "my server lags in this area" complaints come down to a few things: oversized textures, missing room and portal setup, and long LOD distances. Spending 15 minutes checking an MLO in CodeWalker before it goes live saves a lot of player complaints later.&lt;/p&gt;

&lt;p&gt;If you have other checks you run on interiors, drop them in the comments.&lt;/p&gt;

</description>
      <category>performance</category>
      <category>gamedev</category>
      <category>gta</category>
      <category>fivem</category>
    </item>
  </channel>
</rss>
