Tools needed :
For GTAUtil, check Releases section on github and take the latest version. You will need basic knowledge of commandline stuff.
(Hold Shift while doing right-click to show the ‘open in powershell’ option)
-
Download CodeWalker and GTAUtil, add GTAUtil to your PATH variable
-
Find interior informations by position
gtautil find --position 441,-983,30
ymap: hei_dt1_19_interior_0_heist_police_dlc_milo_.ymap
ytyp => hei_dlc_heist_police.ytyp
mlo => hei_heist_police_dlc
position => 442.4296,-985.067,29.88529
rotation => 0,0,0,1
room => limbo
room => PH_ARMOURY_ROOM
room => PH_LOBBY_ROOM
room => PH_OFFICE_ROOM
room => PH_CORRIDOR01_ROOM
room => PH_MUSTER_ROOM
room => PH_STAIRWELL_ROOM
room => PH_LOCKER_ROOM
-
Create a a project folder and copy hei_dlc_heist_police.ytyp to this folder
-
Extract mlo entities to separate ymaps
gtautil extractentities --name police --ytyp .\hei_dlc_heist_police.ytyp --position 442.4296,-985.067,29.88529 --rotation 0,0,0,1
- Add some entities to the target room ymap in CodeWalker (Make sure the right ymap is selected in the project window)
(don’t touch limbo, just load it to see the base interior mapping)
I HIGHLY recommend to load one room at a time in CodeWalker to avoid mistakes
- Inject ymaps back to mlo
gtautil injectentities -x --name police --ytyp .\hei_dlc_heist_police.ytyp --ymap '.\police\*.ymap' --position 442.4296,-985.067,29.88529 --rotation 0,0,0,1
-
Copy generated ytyp to a stream folder, the ytyp must be renamed to match the original ytyp name, in this case it is hei_dlc_heist_police.ytyp
-
Restart your server and run fivem
Interior now contains your new entities
To make your props static (frozen), put the flag 32 on them
If you duplicate a prop, make sure you set the guid of the new prop to 0. A random unique guid will be assigned by GTAUtil. Duplicate guids will make your props disappear.
The -x parameter means “Remove entities not found in ymaps” so if you delete something you must put the -x paramater in the injectentities command
If the interior is not loaded by default like the hospital you have to load the IPL via script.
for an ymap named mymap.ymap you have to create a client script and put this in it
Citizen.CreateThread(function()
RequestIpl('mymap')
end)
You can ignore these steps if you are able to see the interior ingame.