Repository navigation
Modding with Unlimiter
[WORK IN PROGRESS. TODO: Check all available attributes for each part, sort them by category and backport whatever is possible from MW ULv4 for parity.]
In this section, you will find some key points to build mods which utilize Unlimiter's features.
Car-specific configuration is done through CARNAME.ini and _General.ini.
- _General.ini contains the default values and used for cars without any configuration.
- CARNAME.ini is specific to the car that shares its name with.
- To start, just copy _General.ini as CARNAME.ini and modify the options as you want.
- Or you can start with an empty file and add the sections and options you need manually.
NFSU2 Unlimiter adds a bunch of part attributes (vanilla and custom) to allow more customization for your cars. Modders can add attributes to their parts via Binarius' Modder Mode.
Attributes marked with a + are custom and should get added by using Add Custom Attribute feature of Binarius.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| TEXTUREHASH | Key | Sets a custom menu icon for the part. Allows texture names. | VISUAL_PART_NLGXZEF | |
| COST | + | Integer | Sets the cost of the part for career mode. | 1337 |
| REP | + | Integer | Sets the rep (visual rating) of the part for career mode. | 727 |
You need to add these attributes to the very first part if you want to use them with paired parts.
These attributes are useful if you want to use different values per body kit instead of the fixed values in CarTypeInfo.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| FRONT_TIRE_OFFSET | + | Floating | Adds offset (like spacers) to the front wheels. [meters] | 0.025 |
| REAR_TIRE_OFFSET | + | Floating | Adds offset (like spacers) to the rear wheels. [meters] | 0.05 |
| DOORLINE | + | Key | Replaces doorline texture to get used with this body kit. Requires the part to have an upgrade level. | CARNAME_DOORLINE_CUSTOM_WIDEBODY |
| DOORLINE_MASK | + | Key | Replaces doorline texture to get used with this body kit. Requires the part to have an upgrade level. | CARNAME_DOORLINE_CUSTOM_WIDEBODY_MASK |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| DOORLINE | + | Key | Replaces doorline texture to get used with this body kit. Requires the part to have an upgrade level. | CARNAME_DOORLINE_CUSTOM_KIT |
| DOORLINE_MASK | + | Key | Replaces doorline texture to get used with this body kit. Requires the part to have an upgrade level. | CARNAME_DOORLINE_CUSTOM_KIT_MASK |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| FRONT_TIRE_OFFSET | + | Floating | Adds offset (like spacers) to the front wheels. [meters] | 0.025 |
| REAR_TIRE_OFFSET | + | Floating | Adds offset (like spacers) to the rear wheels. [meters] | 0.05 |
Interior parts can replace the CARNAME_INTERIOR texture with anything else.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| TEXTURE_NAME | Key | Sets the texture to replace the one used for the interior. Its normal map will also get replaced. | CARNAME_STYLE03_INTERIOR |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| UNPAINTABLE | Boolean | Sets if the part is paintable. If not added, vanilla defaults will get applied. (Upgrade Level 0-2 = True, 3 = False) | False |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| UNPAINTABLE | Boolean | Sets if the part is paintable. If not added, vanilla defaults will get applied. (Upgrade Level 0-2 = True, 3 = False) | False | |
| NEON | + | Boolean | Sets if the part can have neons. If not added, vanilla defaults will get applied. (Upgrade Level 0-2 = False, 3 = True) | False |
Since Unlimiter v4, attachments can be used to replace textures using the general texture replacement table of a car (utilized by most of the parts).
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| TEXTURE_NAME_OLD | + | Key | Sets a texture to get replaced when this part is installed. Also replaces normal map of the same texture for the first 5 attachment slots. (DAMAGE_FRONT/LEFT/RIGHT/REAR/TOP) | CARNAME_MISC |
| TEXTURE_NAME | Key | Sets the texture to replace the one specified with TEXTURE_NAME_OLD. | CARNAME_STYLE03_MISC |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| RED | Integer | Sets the red amount of the flare color for LEFT_BRAKELIGHT position marker. [0-255] | 65 | |
| GREEN | Integer | Sets the green amount of the flare color for LEFT_BRAKELIGHT position marker. [0-255] | 120 | |
| BLUE | Integer | Sets the blue amount of the flare color for LEFT_BRAKELIGHT position marker. [0-255] | 84 | |
| DISPRED | Integer | Sets the red amount of the flare color for CENTRE_BRAKELIGHT position marker. [0-255] | 65 | |
| DISPGREEN | Integer | Sets the green amount of the flare color for CENTRE_BRAKELIGHT position marker. [0-255] | 120 | |
| DISPBLUE | Integer | Sets the blue amount of the flare color for CENTRE_BRAKELIGHT position marker. [0-255] | 84 | |
| RED2 | Integer | Sets the red amount of the flare color for RIGHT_BRAKELIGHT position marker. [0-255] | 65 | |
| GREEN2 | Integer | Sets the green amount of the flare color for RIGHT_BRAKELIGHT position marker. [0-255] | 120 | |
| BLUE2 | Integer | Sets the blue amount of the flare color for RIGHT_BRAKELIGHT position marker. [0-255] | 84 | |
| REDR | + | Integer | Sets the red amount of the flare color for LEFT_REVERSE position marker. [0-255] | 10 |
| GREENR | + | Integer | Sets the green amount of the flare color for LEFT_REVERSE position marker. [0-255] | 120 |
| BLUER | + | Integer | Sets the blue amount of the flare color for LEFT_REVERSE position marker. [0-255] | 180 |
| REDR2 | + | Integer | Sets the red amount of the flare color for RIGHT_REVERSE position marker. [0-255] | 10 |
| GREENR2 | + | Integer | Sets the green amount of the flare color for RIGHT_REVERSE position marker. [0-255] | 120 |
| BLUER2 | + | Integer | Sets the blue amount of the flare color for RIGHT_REVERSE position marker. [0-255] | 180 |
| TEXTURE_NAME | Key | Sets the texture used for this style of taillights. CARNAME prefix is required while state (ON/OFF/ONF/DAMAGE0) and GLASS suffixes aren't. This texture is mapped to any part via BRAKELIGHT_LEFT and BRAKELIGHT_RIGHT dynamic texture names while converting the car to allow switching between states. | CARNAME_STYLE02_BRAKELIGHT | |
| TEXTURE_NAME_REVERSE | + | Key | Sets the texture used by reverse lights. If not enabled in car's config file, the game will keep using the brakelight texture and dynamic switching will not work. If not set, the game will use the default name (CARNAME_REVERSE_ON/OFF/DAMAGE0). This texture is mapped to any part via REVERSE_LEFT and REVERSE_RIGHT dynamic texture names while converting the car to allow switching between states. | CARNAME_STYLE02_REVERSE |
| TEXTURE_NAME_CENTRE | + | Key | Sets the texture used by centre brakelight. If not enabled in car's config file, the game will keep using the brakelight texture. If not set, the game will use the default name (CARNAME_CENTRE_BRAKELIGHT_ON/OFF/DAMAGE0). This texture is mapped to any part via BRAKELIGHT_CENTRE dynamic texture name while converting the car to allow switching between states. | CARNAME_STYLE02_CENTRE_BRAKELIGHT |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| RED | Integer | Sets the red amount of the flare color for LEFT_HEADLIGHT position marker. [0-255] | 180 | |
| GREEN | Integer | Sets the green amount of the flare color for LEFT_HEADLIGHT position marker. [0-255] | 60 | |
| BLUE | Integer | Sets the blue amount of the flare color for LEFT_HEADLIGHT position marker. [0-255] | 40 | |
| DISPRED | Integer | Sets the red amount of the flare color for CENTRE_HEADLIGHT position marker. [0-255] | 90 | |
| DISPGREEN | Integer | Sets the green amount of the flare color for CENTRE_HEADLIGHT position marker. [0-255] | 30 | |
| DISPBLUE | Integer | Sets the blue amount of the flare color for CENTRE_HEADLIGHT position marker. [0-255] | 20 | |
| RED2 | Integer | Sets the red amount of the flare color for RIGHT_HEADLIGHT position marker. [0-255] | 180 | |
| GREEN2 | Integer | Sets the green amount of the flare color for RIGHT_HEADLIGHT position marker. [0-255] | 60 | |
| BLUE2 | Integer | Sets the blue amount of the flare color for RIGHT_HEADLIGHT position marker. [0-255] | 40 | |
| US_PARKING_LIGHTS | + | Boolean | Forces front signals (FRONT_LEFT/RIGHT_SIGNAL) on with headlights. They will still blink when they are used as turn signals / hazard lights. | True |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| LED | + | Boolean | Hides tubes rendered via position markers. Also hides the part from Engine, Trunk and Cabin Neon categories. | True |
| TEXTURE_NAME | Key | Sets a custom neon texture to use. If not set, CARSHADOW_NEON is used as neon and CARSHADOW_NEON_CUT is used as the static car shadow. | CARSHAOW_NEON_LED |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| LANGUAGEHASH | Key | Sets the name of the rim. If not set, the debug name will get used. | PN_RIM_OEM_STEELIE |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| COLOR0LANGUAGEHASH | Key | Replaces Change Vinyl Colors text while painting the vinyl. | VINYL_COLOR_FILL | |
| COLOR1LANGUAGEHASH | Key | Replaces Change Vinyl Colors text while painting the vinyl. | VINYL_COLOR_OUTLINE | |
| COLOR2LANGUAGEHASH | Key | Replaces Change Vinyl Colors text while painting the vinyl. | VINYL_COLOR_DETAILS | |
| COLOR3LANGUAGEHASH | Key | Replaces Change Vinyl Colors text while painting the vinyl. | VINYL_COLOR_EXTRA |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| NUM_DECALS | Integer | Declares number of slots to install decals onto this decal dummy part. If not set, it's 1 for windows, 1 or 2 (according to layout) for quarter panels and 6 for doors. | 4 |
It uses VINYL_PAINT part group by default so you have the same options as the vinyl colors.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| RED | Integer | Sets the red amount of the flame color. [0-255] | 180 | |
| GREEN | Integer | Sets the green amount of the flame color. [0-255] | 60 | |
| BLUE | Integer | Sets the blue amount of the flame color. [0-255] | 40 |
- The very first part (VINYL_L1_COLOR01) in the list is considered stock as it is too dark to provide a custom color.
- It also customizes Nitrous Gauge color on HUD if the NOSGaugeColorFromExhaustFlame option is enabled in NFSU2UnlimiterSettings.ini.
- Uses its own AcidEmitter called XES_NOS_FlameA_UL with group CARFX_NITRO_UL and texture SFX_FIREB_UL.
It uses VINYL_PAINT part group by default so you have the same options as the vinyl colors.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| RED | Integer | Sets the red amount of the flame color. [0-255] | 180 | |
| GREEN | Integer | Sets the green amount of the flame color. [0-255] | 60 | |
| BLUE | Integer | Sets the blue amount of the flame color. [0-255] | 40 |
- The very first part (VINYL_L1_COLOR01) in the list is considered stock as it is too dark to provide a custom color.
Since v4.0.0.800, License Plates have given their own texture replacement table. These set of attributes let you customize them further.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| TEXTURE_NAME | Key | Sets a custom main/background texture to use. If not set, LICENSE_PLATE or the texture assigned to the model itself is used as default. | LICENSE_PLATE_CUSTOM | |
| TEXTURE_NAME_FRAME | + | Key | Sets a custom frame texture to use. If not set, LICENSE_PLATE_FRAME or the texture assigned to the model itself is used as default. | LICENSE_PLATE_FRAME |
| TEXTURE_NAME_STICKERS | + | Key | Sets a custom stickers texture to use. If not set, LICENSE_PLATE_STICKERS or the texture assigned to the model itself is used as default. | LICENSE_PLATE_STICKERS |
| TEXTURE_NAME_CHAR_PREFIX | + | Key | Sets a custom prefix for the character textures to use. If not set, LP_CHAR is used as default. | LP_CHAR |
| MORPHTARGET_NUM | Integer | Declares number of customizable aspect of this license plate. First 2 is used for frame and stickers (not yet implemented) and the rest is used for characters. | 9 |
This texture replacement table adds 12 dynamic texture names to assign while compiling a geometry for your license plate part(s):
- LICENSE_PLATE
- LICENSE_PLATE_FRAME
- LICENSE_PLATE_STICKERS
- LICENSE_PLATE_DIGIT1-9 (Gets replaced with (TEXTURE_NAME_CHAR_PREFIX)_x/DASH by the first few characters in the driver/profile name. The name gets centered if it's shorter than the number of allowed characters. For example: A part with MORPHTARGET_NUM set to 11 will show TEST as ..TEST...)
This feature allows you to hide/replace other parts with the part you install. For example, it can be used to make front/rear-end swaps.
Part Linking has many custom attributes that you can apply.
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| SWAPSLOT_{SLOT} | + | Key | Sets a filter key for the target part slot. When you install this part, the part is in the will get checked first if it matches the filter. If not, first available part that matches the filter will get installed. | FACELIFT |
| HIDESLOT_{SLOT} | + | Boolean | Hides the part applied onto the target part slot. The slot also gets hidden from the menus. | True |
| Attribute Name | Custom? | Type | Description | Example |
|---|---|---|---|---|
| HIDE_MENU & HIDEMENU | + | Boolean | The part is hidden from the customization menu. | True |
| SWAPSLOT_FILTER & SWAPSLOT_FILTER_x (x = 0-9) | + | Key | Filter to match the one from the main part before applying the swap. A part can have multiple filters. The part will be available if any of the filters given via this attribute matches with the one from the main part. | FACELIFT |
You need to replace {SLOT} with a Car Slot ID Name without including the CARSLOTID_ prefix.
- For example, if you want your part to have a filter for the headlights, you need to add the attribute with name SWAPSLOT_HEADLIGHT instead of SWAPSLOT_CARSLOTID_HEADLIGHT.