Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!

    1. Red Dead Redemption 2

      1. Gameplay
      2. Missions
      3. Help & Support
    2. Red Dead Online

      1. Gameplay
      2. Find Lobbies & Outlaws
      3. Help & Support
    1. Crews & Posses

      1. Recruitment
    2. Events

    1. GTA Online

      1. After Hours
      2. Find Lobbies & Players
      3. Guides & Strategies
      4. Vehicles
      5. Content Creator
      6. Help & Support
    2. Grand Theft Auto Series

    3. GTA Next

    4. GTA V

      1. PC
      2. Guides & Strategies
      3. Help & Support
    5. GTA IV

      1. Episodes from Liberty City
      2. Multiplayer
      3. Guides & Strategies
      4. Help & Support
      5. GTA Mods
    6. GTA Chinatown Wars

    7. GTA Vice City Stories

    8. GTA Liberty City Stories

    9. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    10. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    11. GTA III

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    12. Top Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    13. Wiki

      1. Merchandising
    1. GTA Modding

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    3. Featured Mods

      1. DYOM
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Red Dead Redemption

    2. Rockstar Games

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Programming
      5. Movies & TV
      6. Music
      7. Sports
      8. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. News

    2. Forum Support

    3. Site Suggestions

Sign in to follow this  
ckacmaster

[Full Tutorial] Making a .oiv vehicle installer

Recommended Posts

ckacmaster

Hello all, this is my second post here so I figure I'll make it count.

Note: Throughout the post I will refer to OpenIV installers and .oiv installers - Info can be found here

In this tutorial, I'll show you how to make a .oiv installer for your mod. .oiv installers make it easier for the users to install mods, rather than users attempting to follow the readme file which can involve editing handling files and replacing dlclist.xml constantly, OpenIV installers allow the user to click install and have everything done without them doing much of anything. As a result, users will more likely choose the easier .oiv route and get you more downloads because they don't want to do the work of manually installing another mod.

From a developers perspective, .oiv files appear to be more work than they're worth on the surface, however in my opinion the pros of OpenIV installers outweigh the cons. For starters, OpenIV installers are much cleaner than the manual installations, especially for add-on vehicles, the reason being most manual install mods come with dlclist.xml and instruct the user to replace the original dlclist.xml with the provided one in the mod. In doing so, the user also removes in game access to all their other add-on vehicles. OpenIV installers, on the other hand, append data to the end of the dlclist file and do not affect previous entries in the file. Additionally, OpenIV installers are very easy to update once you have them created, I will go more in depth later on in the post.

With that said, let's begin.

Step One

Creating the required files

Create a folder which will contain your installer files, I named mine "Install." Inside the folder, make a file called assembly.xmlIf you want your installer to have an icon, get an image that is exactly 128x128px, name it icon.png and place it in the Install folder Last but not least, create a folder called content within the main folder (Install in my case) Your folder will (hopefully) end up looking like this:

Files and Folders appropriately placed within Install folder

Step Two

Setting up your assembly.xml file

Open up assembly.xml in your favourite text editor (Notepad or Visual Studio will work)

Copy and paste the below: (If you aren't familiar with XML, you can learn more here)

<?xml version="1.0" encoding="UTF-8"?>
<package version="2.1" id="{1234ABC5-6D7E-8F89-G873-11QG279GFF85}" target="Five">
<!-- Package version is the version of installer (MUST BE  2.1, NOT 2.0!), OpenIV uses this to determine how to install your mod. 2.0 is standard. id is the **unique** identifier for your installer. You can easily generate a GUID with any of the following sites: http://www.guidgen.com/, https://www.uuidgenerator.net/ or https://www.guidgenerator.com/-->
	<metadata>
		<name>Example Installer</name> <!-- The name of the mod -->
		<version>
			<major>1</major> <!-- The version of your mod, current settings are 1.0 = [major].[minor]-->
			<minor>0</minor>
			<tag>Beta</tag> <!--The tag on the mod, can be Beta, Alpha, Test etc;-->
		</version>
		<author>
			<displayName>Ckacmaster</displayName> <!-- Insert your name here -->
		</author>
		<description><![CDATA[A Bugatti Veyron 16.4]]></description> <!-- Mod description which goes between the CDATA[] brackets-->
	</metadata>
	<colors>
		<headerBackground useBlackTextColor="False">$FF272727</headerBackground>
<!-- useBlackText is if you want the mod name and such to be black rather than white. "$FF272727" is the background color of the header shown to the user while they're installing the mod. It is also the backdrop for the mod name in OpenIV. -->
		<iconBackground>$FF2E2E2E</iconBackground> <!-- The background color of the icon area -->
	</colors>
	<content>
<!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->
	</content>
</package>

Step Three

Populating the content folder

Find your mod files, for the sake of this tutorial, I will be providing examples of a replacement adder (Bugatti) and an add on ninef (Audi R8 PPI). I choose to format my files in this manner because I find it easiest to navigate through and manage. To each his own.

  • ModName (folder)
    • Vehicles (folder)
      • YFT and YTD files
    • Extras (folder)
      • All extra files (vehicle modification yfts for example)

When you've got your mod files sorted to your liking, place the mod folder inside the content folder you created earlier. Note: you can place mod files such as .yft and .ytd files directly in the content directory if you like

 

You should end up with something along the lines of:

 Content folder

 The adder folder is the replacement Bugatti folder, and the r8ppi folder is for the add on R8 which will be used later on 

adder folder

 

 vehicles folder 

Good beans 👍

Step Four

Completing the assembly.xml

Navigate back to your assembly.xml file and open it with your favourite text editor. (I prefer VS2017) Find this line and make some space below it like I did;

	<content>
<!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->
    
    
	</content>

Now we can tell OpenIV what to do to install the mod. Following the readme provided by the mod developer Aitgamers - Mister Brooks, this mod needs to be installed in x64e.rpf. The mod also needs to modify the vehicles.meta and handling.meta files - we will cover doing that as well. To start, we need to tell OpenIV to open x64e.rpf for us so we can install to it. We also need to advise OpenIV to create the x64e.rpf file if it doesn't already exist provided the user chooses the OpenIV option to install the mod to their mods folder. This can be accomplished through the following line

<archive path="x64e.rpf" createIfNotExist="True" type="RPF7"> </archive>

The type="RPF7" in the above is the version of RPF we are extracting. It will always be RPF7 for GTAV. The full path where the files will be installed is x64e.rpf\levels\gta5\vehicles.rpf, therefore we need to specify the vehicles.rpf to archive as well, format your code like this:

<content>
<!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->

    <archive path="x64e.rpf" createIfNotExist="True" type="RPF7">
      <archive path="levels\gta5\vehicles.rpf" createIfNotExist="True" type="RPF7">


      </archive>
    </archive>
    
</content>

Now we can add our files in the appropriate manner.

<content>
<!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->

    <archive path="x64e.rpf" createIfNotExist="True" type="RPF7">
      <archive path="levels\gta5\vehicles.rpf" createIfNotExist="True" type="RPF7">
        <add source="adder/vehicles/adder.yft">adder.yft</add>
        <add source="adder/vehicles/adder.ytd">adder.ytd</add>
        <add source="adder/vehicles/adder_hi.yft">adder_hi.yft</add>

<!-- Add a file (replace the stock file). source will be the location of your mod files in relation to the content directory, where the file name between the "> <" will be the target file you are replacing in the current directory relative to the archive you are in (x64e.rpf\levels\gta5\vehcicles.rpf) is the location that i'm saving the above mod files as per the readme. -->

      </archive>
    </archive>    

</content>

If all you need or want to do than that's all folks. If you need to install an addon vehicle, and edit .meta + .xml files, the ride is just beginning (just kidding, we're almost done)

Step Five

Editing .xml and .meta files

For my first mod, I will need to edit two files; vehicles.meta and handling.meta If you are looking specifically to add your add on car to the dlclist.xml, then feel free to click here for a shortcut.

Back to assembly.xml; we will need to open up update.rpf and write the code to open and edit the vehicles.meta file as mentioned in the mod's readme file. To quote Mister Brooks in his mod's readme file; "now search for <PovCameraOffset x="0.000000" y="-0.190000" z="0.630000" /> replace it with this <PovCameraOffset x="0.000000" y="-0.190000" z="0.570000" />" We will accomplish this by writing:

	<content>
<!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->

    <archive path="x64e.rpf" createIfNotExist="True" type="RPF7">
      <archive path="levels\gta5\vehicles.rpf" createIfNotExist="True" type="RPF7">
        <add source="adder/vehicles/adder.yft">adder.yft</add>
        <add source="adder/vehicles/adder.ytd">adder.ytd</add>
        <add source="adder/vehicles/adder_hi.yft">adder_hi.yft</add>
      </archive>
    </archive>
    
<!-- STEP FIVE BELOW-->
    <archive path="update\update.rpf" createIfNotExist="True" type="RPF7">
      <xml path="common/data/levels/gta5/vehicles.meta">
        <!--VEHICLES.META-->
        <replace xpath='/CVehicleModelInfo__InitDataList/InitDatas/Item[modelName="adder"]/PovCameraOffset'>
          <PovCameraOffset x="0.000000" y="-0.190000" z="0.570000" />
        </replace>
        <!--END VEHICLES.META-->
      </xml>
    </archive>
	</content>

You may notice my usage of [modelName="adder"] in the xpath property. I am selecting the adder item using xpathmore information is here

After we've changed the PovCameraOffset, all that's left to do is modify the handling.meta file. This time, the readme is telling me to replace the entire adder entry in handling.meta. I can accomplish this by writing the following:

<content>

    <!-- This is where we will be adding all of our mod files and installation info for OpenIV's eyes only -->

    <archive path="x64e.rpf" createIfNotExist="True" type="RPF7">
      <archive path="levels\gta5\vehicles.rpf" createIfNotExist="True" type="RPF7">
        <add source="adder/vehicles/adder.yft">adder.yft</add>
        <add source="adder/vehicles/adder.ytd">adder.ytd</add>
        <add source="adder/vehicles/adder_hi.yft">adder_hi.yft</add>
      </archive>
    </archive>


    <!-- STEP FIVE BELOW-->

    <archive path="update/update.rpf" createIfNotExist="True" type="RPF7">
      <!--UPDATE.RPF-->
      
      <xml path="common/data/levels/gta5/handling.meta">
        <!--VEHICLES.META-->
        <replace xpath='//Item[handlingName="ADDER"]'>
          <Item type="CHandlingData">
          <handlingName>ADDER</handlingName>
          <fMass value="1800.000000" />
          <fInitialDragCoeff value="7.800000" />
          <fPercentSubmerged value="85.000000" />
          <vecCentreOfMassOffset x="0.000000" y="0.000000" z="0.000000" />
          <vecInertiaMultiplier x="1.000000" y="1.300000" z="1.500000" />
          <fDriveBiasFront value="0.200000" />
          <nInitialDriveGears value="6" />
          <fInitialDriveForce value="0.700000" />
          <fDriveInertia value="0.650000" />
          <fClutchChangeRateScaleUpShift value="6.000000" />
          <fClutchChangeRateScaleDownShift value="6.000000" />
          <fInitialDriveMaxFlatVel value="300.000000" />
          <fBrakeForce value="2.500000" />
          <fBrakeBiasFront value="0.450000" />
          <fHandBrakeForce value="0.700000" />
          <fSteeringLock value="42.000000" />
          <fTractionCurveMax value="2.500000" />
          <fTractionCurveMin value="2.380000" />
          <fTractionCurveLateral value="22.500000" />
          <fTractionSpringDeltaMax value="0.150000" />
          <fLowSpeedTractionLossMult value="1.500000" />
          <fCamberStiffnesss value="0.000000" />
          <fTractionBiasFront value="0.485000" />
          <fTractionLossMult value="1.000000" />
          <fSuspensionForce value="2.860000" />
          <fSuspensionCompDamp value="1.400000" />
          <fSuspensionReboundDamp value="2.100000" />
          <fSuspensionUpperLimit value="0.120000" />
          <fSuspensionLowerLimit value="-0.100000" />
          <fSuspensionRaise value="0.000000" />
          <fSuspensionBiasFront value="0.500000" />
          <fAntiRollBarForce value="0.900000" />
          <fAntiRollBarBiasFront value="0.600000" />
          <fRollCentreHeightFront value="0.410000" />
          <fRollCentreHeightRear value="0.410000" />
          <fCollisionDamageMult value="0.700000" />
          <fWeaponDamageMult value="1.000000" />
          <fDeformationDamageMult value="0.700000" />
          <fEngineDamageMult value="1.500000" />
          <fPetrolTankVolume value="65.000000" />
          <fOilVolume value="5.000000" />
          <fSeatOffsetDistX value="0.000000" />
          <fSeatOffsetDistY value="0.000000" />
          <fSeatOffsetDistZ value="0.000000" />
          <nMonetaryValue value="80000" />
          <strModelFlags>440010</strModelFlags>
          <strHandlingFlags>0</strHandlingFlags>
          <strDamageFlags>0</strDamageFlags>
          <AIHandling>AVERAGE</AIHandling>
          <SubHandlingData>
            <Item type="CCarHandlingData">
              <fBackEndPopUpCarImpulseMult value="0.075000" />
              <fBackEndPopUpBuildingImpulseMult value="0.030000" />
              <fBackEndPopUpMaxDeltaSpeed value="0.250000" />
            </Item>
            <Item type="NULL" />
            <Item type="NULL" />
          </SubHandlingData>
          </Item>
        </replace>
        <!--END VEHICLES-->
      </xml>
      
      <xml path="common/data/levels/gta5/vehicles.meta">
        <!--VEHICLES.META-->
        <replace xpath='/CVehicleModelInfo__InitDataList/InitDatas/Item[modelName="adder"]/PovCameraOffset'>
          <PovCameraOffset x="0.000000" y="-0.190000" z="0.570000" />
        </replace>
        <!--END VEHICLES-->
      </xml>
      <!--END UPDATE.RPF-->
    </archive>
</content>

Adding on vehicles

dlclist.xml and files

Let's start with the files for installation. In this mod, I need to copy my dlc.rpf file from Install>content>r8ppi> to GTAV>mods>update>x64>dlcpacks>r8ppi

This can be done simply:

<content>
<add source="r8ppi/rpf">update/x64/dlcpacks/r8ppi/dlc.rpf</add>
</content>

Now we need to add the required data to dlclist.xml and extratitleupdatedata.meta: First, for dlclist.xml

<content>

<add source="r8ppi/dlc.rpf">update/x64/dlcpacks/r8ppi/dlc.rpf</add>

    <archive path="update/update.rpf" createIfNotExist="True" type="RPF7">
      <xml path="common/data/dlclist.xml">
        <add xpath="SMandatoryPacksData/Paths">
          <item>dlcpacks:\r8ppi\</item>
        </add>
      </xml>
    </archive>
</content>

Now, for extratitleupdatedata.meta

<content>

<add source="r8ppi/dlc.rpf">update/x64/dlcpacks/r8ppi/dlc.rpf</add>

    <archive path="update/update.rpf" createIfNotExist="True" type="RPF7">
      <xml path="common/data/dlclist.xml">
        <add xpath="SMandatoryPacksData/Paths">
          <item>dlcpacks:\r8ppi\</item>
        </add>
      </xml>
      <xml path ="common/data/extratitleupdatedata.meta">
        <add xpath="SExtraTitleUpdateData/Mounts">
          <Item type="SExtraTitleUpdateMount">
            <deviceName>dlc_r8ppi:/</deviceName>
            <path>update:/dlc_patch/r8ppi/</path>
          </Item>
        </add>
      </xml>
    </archive>
</content>

Making the actual .oiv file

It's simple: Compress your main folder (containing assembly.xml, icon and content) into .zip format and rename the .zipto .oiv

That's it!

If you would like more information, I've included some links below, including the entire tutorial on GitHub along with links the the mods used in the example.

If you want me to create a .oiv for your mod

Please PM me, or email me [email protected]

Links

Tutorial on GitHub

Audi R8 Mod by le_AK

Bugatti Veyron by Mister Brooks

Edited by ckacmaster
Fixed internal links

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • 1 User Currently Viewing
    0 Members, 0 Anonymous, 1 Guest

×

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.