This Node.js script automates the creation of custom map DLC packages for Grand Theft Auto V. It simplifies the process of bundling your individual mapping projects into playable DLCs, handling the complex RPF packing and XML generation based on a tested structure.
- 🚀 Automated Folder Detection: Automatically scans the
inputmapsdirectory for all your individual mapping project folders. - 🏷️ Flexible Naming: Generates DLC names, RPF names, and XML identifiers directly from your input folder names, allowing for unique and descriptive DLCs.
- 📦 Single RPF Bundling: Consolidates all your mapping assets (
.ymap,.ymf,.ytyp,.ydr,.ytd,.ybn) into a single RPF archive ([your-map-name].rpf) for each DLC. - ⚙️ Correct DLC Structure: Creates a
dlc.rpffor each map, containingcontent.xml,setup2.xml, and your packed map RPF within the%PLATFORM%folder, following a structure known to load correctly. - 🧹 Automatic Cleanup: Removes all temporary files and folders generated during the process, leaving only the final DLC package.
- 🌐 Cross-Platform: Built with Node.js, making it compatible with macOS and Windows.
- 🔧
gtautil.exeIncluded: The necessarygtautil.exetool is already provided in theutils/folder.
This tool is designed to assist in packaging your custom mapping assets for Grand Theft Auto V. The responsibility for the content you package and its usage lies entirely with you.
- Unlicensed/Leaked Assets: Using unlicensed, leaked, or otherwise unauthorized assets is strictly prohibited by many platforms, including RageMP's Terms of Service. Such actions can lead to severe consequences, including permanent bans for your server and personal accounts.
- Copyright Infringement: Ensure you have the necessary rights or permissions for all assets included in your mapping projects. Distributing copyrighted material without authorization is illegal.
By using this script, you acknowledge and accept full responsibility for any legal or platform-specific repercussions that may arise from the content you choose to package and distribute. The developers of this script are not liable for any misuse or consequences.
Before you begin, ensure you have the following installed:
- Node.js: Download and install from nodejs.org. This script requires Node.js to run.
-
Clone the Repository:
git clone https://github.com/raisen1337/MapDLCMaker.git cd MapDLCMaker -
Verify
gtautil.exe: Ensure thatgtautil.exeis present in theutils/folder within the cloned repository. It should already be there. -
Create
inputmapsDirectory: In the root of theMapDLCMakerdirectory (wheremapping.jsis located), create a new folder namedinputmaps.MapDLCMaker/ ├── mapping.js ├── utils/ │ └── gtautil.exe └── inputmaps/ <-- Create this folder -
Organize Your Mapping Projects: Place each of your individual mapping projects into separate subfolders inside the
inputmapsdirectory. Each subfolder should contain all the.ymap,.ymf,.ytyp,.ydr,.ytd,.ybnfiles related to that specific map.MapDLCMaker/ └── inputmaps/ ├── My Awesome Map/ │ ├── my_awesome_map.ymap │ ├── my_awesome_map_lod.ymap │ ├── my_awesome_map.ytyp │ └── custom_texture.ytd ├── Another-Map-V2/ │ ├── another_map.ymap │ └── prop_model.ydr └── Some_Other_Location/ └── ... (more map files)
-
Open your Terminal/Command Prompt: Navigate to the
MapDLCMakerdirectory:cd E:\vehutils\MapDLCMaker # Or wherever you cloned the repo
-
Run the Script:
node index.js
-
Monitor the Output: The script will scan the
inputmapsdirectory, process each subfolder, and output progress messages to the console. It will log warnings if any input directories are not found or are inaccessible, skipping them gracefully. -
Find Your DLCs: Once the script completes, your generated DLC packages will be located in the
output/directory, with each map having its own uniquely named folder (e.g.,output/dlc_my_awesome_map/).
For each mapping folder you place in inputmaps/, the script will create a new folder in output/ with a name like dlc_[your-map-name-sanitized]. Inside this folder, you will find your final dlc.rpf with the following internal structure:
output/
└── dlc_my_awesome_map/
└── dlc.rpf
├── content.xml
├── setup2.xml
└── %PLATFORM%/
└── my_awesome_map.rpf
├── my_awesome_map.ymap
├── my_awesome_map_lod.ymap
├── my_awesome_map.ytyp
└── custom_texture.ytd
└── prop_model.ydr
└── ... (all other mapping files directly at the root of this RPF)
You can find the latest version of this script and contribute on GitHub: https://github.com/raisen1337/MapDLCMaker