Clothing, EUP, and asset policy
Clothing and EUP (police, medical, and other uniform variations) are among the most requested additions, and among the easiest to do badly. Done wrong they balloon your download size, hurt streaming memory, and can put you on the wrong side of asset licensing. This lesson builds one tiny streamed resource so you can see the mechanism for real, then teaches you how to keep packs fast and clean.
Build it
Make the resource folder
Inside your server's resources folder, create this layout. The stream/ folder name is not optional. FiveM scans a folder with exactly that name and auto-registers whatever asset files it finds inside.
resources/qu_stream_proof/
fxmanifest.lua
server.lua
stream/
qu_proof.ytyp
For this proof you do not need a real .ytyp. Any placeholder file with that name lets the manifest line resolve and the resource start. When you swap in a real clothing or prop pack later, the real .ydd, .ytd, and .ytyp files go in this same stream/ folder.
Write fxmanifest.lua
Open fxmanifest.lua and paste this:
fx_version 'cerulean'
game 'gta5'
server_script 'server.lua'
data_file 'DLC_ITYP_REQUEST' 'stream/qu_proof.ytyp'
No lua54 'yes' line. As of June 2025 that directive is deprecated and ignored: Lua 5.4 is the only Lua runtime, so you leave it out. The data_file line is the part that matters for streaming. It tells the game to load a prop type definition (a .ytyp) from your stream/ folder. Without it, prop packs register their meshes but the game never knows the prop type exists.
Write the proof line
Open server.lua and paste this. It listens for the resource starting and prints one line confirming the stream/ folder went live:
AddEventHandler('onResourceStart', function(resourceName)
if resourceName ~= GetCurrentResourceName() then return end
print('[qu_stream_proof] streaming registered, stream/ folder is live')
end)
The print is what proves the resource loaded and reached the point where its stream is live. The onResourceStart event fires once, on the server, the moment this resource finishes starting. We guard it with the check so we only react to our own start, not every other resource on the server.
Keep reading the full lesson
Sign in to start, then unlock every step of this lesson and the full FiveM School with a membership.
- How it works
- If something went wrong
- What you can do now
- Try it yourself
The remainder of Clothing, EUP, and asset policy is available to FiveM School members.