Log in to reply
 

Why hasn't there been a vehicle installer?



  • @GooD-NTS said in Why hasn't there been a vehicle installer?:

    So, then automatic vehicle installer will be the same, no?

    No. The whole point of a middleman solution, is to create reliable data. You don't create dumb middleman tools, you make them analyse, construct and rebuild variable input data into standardised data.

    What they take in might be unreliable, but what they put out is standardised. The only way that would be unreliable, is if they are built to an unreliable standard.

    @GooD-NTS said in Why hasn't there been a vehicle installer?:

    Yes, if the package created that way.

    So if I gave you an addon and said to you to build an OIV package that would merge that data with an unspecified secondary addon, with an unknown data structure, you could do it and they would merge without any problems?

    Would you care to take that up as a challenge? I'm not doubting it but I would like to see it in action.

    @GooD-NTS said in Why hasn't there been a vehicle installer?:

    I guess no, because this scenario is limited to vehicles only and OIV Package Installer is universal solution for all kind of mods.
    It will install package into mods folder if user says so, but it can't guess that you what something that mod author is not meant.

    And that is why you have intelligent middleman tools... They don't make guesses about what the author meant, because they know what the game requires and that's fundamentally the most important point.

    I mean, why have a situation where people are trying to find the correct location to install replace vehicles, when you can have something create a valid location for all replace vehicles and install them in there? Why have users install vehicles in two different ways, in two different places, when you can create a single point of focus where all vehicles can be reliably installed into?

    All replace vehicles can be added to the latest patchday folder and work. That means that they could be added to a custom built dlcpack that loads after the last patchday folder, and should still work... and should continue to work even if a new patchday folder is added to the game by Rockstar.



  • The issue is more with replacing cars, which I perfer to do. Yes I use a mods folder. I like to replace in game cars with real life equivalents when I mod cars, DLCs are fairly easy, but replace mods are really annoying to do. Going into the text files & replacing some line of code while trying not to fuck up, and when you want to do this with like 20+ car mods, it gets really fucking irritating, doing all that just to find out your game crashed.



  • @MobWulff I've never actually used a replace but what code do they get you to change?

    I did actually think it was a case of dropping 4 files into a folder but there is obviously more to this than I have seen.

    But if replace are such a pain, then why not simply install them as addons and then make the change in popgroups.ymt to replace the vehicles in there instead?



  • @LeeC2202 said in Why hasn't there been a vehicle installer?:

    @GooD-NTS said in Why hasn't there been a vehicle installer?:

    I mean if mod authors will use OIV packages more often users will not have to install anything manually.

    Many mod authors can't even tell users to put the files in the correct place, so nobody in their right mind is going to trust them to make OIV installations.

    Have a look how many mods there are that are still telling people to replace files in the original x64?.rpf files, that have been superseded in at least one patchday folder. Have a look at how many vehicle mods are still telling people to make changes to extratitleupdate.meta.

    What is going to happen when that advice ends up in a one-click solution? The answer is a lot of people are going to have a mods folder full of useless 2GB rpf files and cars that don't appear anywhere. Or they will end up with modified game files if they click the wrong button by mistake.

    All increased OIV usage would mean, is people would spend more time extracting everything from the OIV, so they could find out where things are really supposed to go and then doing it manually. Or to find out how many cars are really in that single car addon pack, that just happens to contain 6... or contains 1 but has the meta data for 15.

    OIV might be convenient but it's not trustworthy. You don't just dump an unknown quantity into your mods folder and hope for the best. Automating the installation of unreliable data, is a disaster waiting to happen.

    And then we have the updates, which might add a new folder that supersedes existing data versions, yet the OIV will install to the old location anyway... because it doesn't know any different.

    And that's without even considering them in their relevance to this topic...

    Can an OIV install an addon into an existing dlc.rpf and merge all the xml and meta files correctly, to allow the user to create addon packs made from multiple vehicles?

    Can it install a replace vehicle into your mods folder as an addon?

    These are the problems users have with vehicles and these are the problems that need solutions.

    ^^ Couldn't have said it better myself. :)



  • @LeeC2202 said in Why hasn't there been a vehicle installer?:

    @MobWulff I've never actually used a replace but what code do they get you to change?

    I did actually think it was a case of dropping 4 files into a folder but there is obviously more to this than I have seen.

    But if replace are such a pain, then why not simply install them as addons and then make the change in popgroups.ymt to replace the vehicles in there instead?

    It involves editing a lot of files over & over again, the way Rockstar made the game files makes it even more confusing as well. As for the popgroups file, I have literally no clue how to do as such.



  • @MobWulff Let me give you an example of how popgroups works, it might make it seem like the easier option.

    Imagine you have a vehicle that you have as an Addon called Donkey. As a Replace vehicle, it would replace the Mule. In popgroups.ymt, there is a section called VEH_LARGE_CITY and this contains all the vehicles that belong in that group, like this:

    <Item>
    	<Name>VEH_LARGE_CITY</Name>
    	<models>
    		<Item><Name>Pounder</Name><Variations type="NULL"/></Item>
    		<Item><Name>biff</Name><Variations type="NULL"/></Item>
    		<Item><Name>Mule</Name><Variations type="NULL"/></Item>
    		<Item><Name>taco</Name><Variations type="NULL"/></Item>
    	</models>
    	<flags>POPGROUP_AMBIENT POPGROUP_SCENARIO</flags>
    </Item>
    

    You can see the Mule in that list. So what you would do instead of replacing the vehicle files like a normal replace, is you would install the Donkey as an addon and in popgroups.ymt, you would change any reference for Mule, to Donkey... like this:

    <Item>
    	<Name>VEH_LARGE_CITY</Name>
    	<models>
    		<Item><Name>Pounder</Name><Variations type="NULL"/></Item>
    		<Item><Name>biff</Name><Variations type="NULL"/></Item>
    		<Item><Name>Donkey</Name><Variations type="NULL"/></Item>
    		<Item><Name>taco</Name><Variations type="NULL"/></Item>
    	</models>
    	<flags>POPGROUP_AMBIENT POPGROUP_SCENARIO</flags>
    </Item>
    

    That would make the Donkey spawn in traffic instead of the Mule.

    Or if you wanted them both, you could add another line in that section and add the Donkey entry as well.

    The only place where this doesn't work, is when the vehicles are actually in the map files as well and that is where you would need to use a full replace method. But if you just want to change what appears in general traffic, this is another option to do that.



  • @LeeC2202 that's helpful, thanks.



  • @LeeC2202 said in Why hasn't there been a vehicle installer?:

    So if I gave you an addon and said to you to build an OIV package that would merge that data with an unspecified secondary addon, with an unknown data structure, you could do it and they would merge without any problems?

    With specific secondary addon, with know data structure.
    So, no, it is not meets your requirements.



  • @MobWulff wow. has beeen a while since i saw your comment. :)

    edit : on the topic. there are OPENIV packaged files which mod creator's make sometimes. i personally don't like to use them. but yes, they can be very handy for common users. they are called .oiv package installers can be installed using openiv tools.



  • @FoxtrotDelta yeah I haven't played GTA for a while due to the amount of hackers, that & Rockstars way of servers is trash, pier-to-pier systems don't work, that's why no one uses it.



  • @MobWulff Good thing. we mod single player here :)



  • @FoxtrotDelta said in Why hasn't there been a vehicle installer?:

    @MobWulff wow. has beeen a while since i saw your comment. :)

    edit : on the topic. there are OPENIV packaged files which mod creator's make sometimes. i personally don't like to use them. but yes, they can be very handy for common users.

    Not really. When I was still a noobie, I had installed a few .OIV packages, only to find out, much later, that they had hosed part of my install. I'd say, especially new players should not use OIV packages, as you have no idea yet what is going on at the time (so you can't judge the 'sanity' of the to-be-installed files to begin with; that is, if you even knew how to open the package in the first place).

    EDIT: An OIV package is literally just a renamed ZIP file. So, always unpack it first, and carefully examine assembly.xml for any anomalies.



  • On the other hand, I recently rolled an OIV myself. It's basically just an adaptation of the QuantV installer, but sans the (insane) stuff where it deletes all your ENB ini files, shaders and directories (!). I added my dlclist.xml to it, and my gameconfig file, and a custom startup screen. So, all my ReQuant.OIV does now, is reinstall files in update.rpf (and in update.rpf only).

    So, when the new update.rpf arrives, I just need to re-apply my adapted OIV, and Bob's your uncle. :)

    P.S. And before you ask about my dlclist.xml, no, I'm not interested in these silly mini races, that can't be used in SP at all; so I'm not even going to load them.



  • What we need is this. Something basic to start. I could probably do it myself in PHP, but I don't know C or anything else that would useful. So when you open the software it will ask for the location of the vehicles.meta and handling.meta files. It will then analyze the first 5 lines of the file and verify that there are a total of 7 white spaces in the first file. There should be no whitespace after any of the '>' tags. An extra bit of whitespace increases the size of the file so doing this check would be a good practice. If whitespaces are found after any '>', it removes them. Once file integrity is verified to be free of errors. Each line beginning with '____<Item>' where ____ represents 4 spaces.

    <?xml version="1.0" encoding="UTF-8"?>
    <CVehicleModelInfo__InitDataList>
     <residentTxd>vehshare</residentTxd>
     <residentAnims />
     <InitDatas>
    

    It will then continue down until it reaches '____</Item>' and that will be the first item, it will continue this process until it reaches the last one and then verify the end of the file.

      <firstPersonDrivebyData>
        <Item>LOW_RAPIDGT_FRONT_LEFT</Item>
        <Item>LOW_RAPIDGT_FRONT_RIGHT</Item>
      </firstPersonDrivebyData>
    </Item>
    

    The end of the file should look like this, excluding the txdRelationships, there would be a second textarea within the program to add new relationships to the vehicles.meta. The handling.meta portion of the software would work the same way.


    </InitDatas>
      <txdRelationships>
     </txdRelationships>
    </CVehicleModelInfo__InitDataList>


  • @LeeC2202 Another question, can you add new lines in the popgroups file or does that not work?



  • @MobWulff said in Why hasn't there been a vehicle installer?:

    @LeeC2202 Another question, can you add new lines in the popgroups file or does that not work?

    Yep... that's how you get addons to spawn in traffic. You add them to the required sections in that file.



  • @JZersche said in Why hasn't there been a vehicle installer?:

    What we need is this. Something basic to start.

    Something like this perhaps? I am having problems with the rpf library and that's what's killing this tool right now.



  • @LeeC2202

    Something like that but more user-friendly. That is more of a manual creation, something to just append to the source file.

    Most car addons and replacement have a vehicles.meta with a single item for the car being replaced or added.

    <Item>
      <modelName>blista</modelName>
      <txdName>blista</txdName>
      <handlingId>BLISTA</handlingId>
      <gameName>BLISTA</gameName>
      <vehicleMakeName>DINKA</vehicleMakeName>
      <expressionDictName>null</expressionDictName>
      <expressionName>null</expressionName>
      <animConvRoofDictName>null</animConvRoofDictName>
      <animConvRoofName>null</animConvRoofName>
      <animConvRoofWindowsAffected />
      <ptfxAssetName>null</ptfxAssetName>
      <audioNameHash />
      <layout>LAYOUT_STD_LOWROOF</layout>
      <coverBoundOffsets>BLISTA_COVER_OFFSET_INFO</coverBoundOffsets>
      <explosionInfo>EXPLOSION_INFO_DEFAULT</explosionInfo>
      <scenarioLayout />
      <cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
      <aimCameraName>DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA</aimCameraName>
      <bonnetCameraName>VEHICLE_BONNET_CAMERA_LOW</bonnetCameraName>
      <povCameraName>DEFAULT_POV_CAMERA</povCameraName>
      <FirstPersonDriveByIKOffset x="0.000000" y="-0.060000" z="-0.020000" />
      <FirstPersonDriveByUnarmedIKOffset x="0.000000" y="-0.025000" z="0.000000" />
      <FirstPersonProjectileDriveByIKOffset x="0.000000" y="-0.100000" z="0.030000" />
      <FirstPersonProjectileDriveByPassengerIKOffset x="0.000000" y="-0.100000" z="0.030000" />
      <FirstPersonDriveByLeftPassengerIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerIKOffset x="0.000000" y="-0.060000" z="-0.020000" />
      <FirstPersonDriveByLeftPassengerUnarmedIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerUnarmedIKOffset x="0.000000" y="-0.035000" z="0.000000" />
      <FirstPersonMobilePhoneOffset x="0.100000" y="0.210000" z="0.530000" />
      <FirstPersonPassengerMobilePhoneOffset x="0.135000" y="0.165000" z="0.425000" />
      <PovCameraOffset x="0.000000" y="-0.175000" z="0.645000" />
      <PovCameraVerticalAdjustmentForRollCage value="0.000000" />
      <PovPassengerCameraOffset x="0.000000" y="0.000000" z="0.000000" />
      <vfxInfoName>VFXVEHICLEINFO_CAR_GENERIC</vfxInfoName>
      <shouldUseCinematicViewMode value="true" />
      <shouldCameraTransitionOnClimbUpDown value="false" />
      <shouldCameraIgnoreExiting value="false" />
      <AllowPretendOccupants value="true" />
      <AllowJoyriding value="true" />
      <AllowSundayDriving value="true" />
      <AllowBodyColorMapping value="true" />
      <wheelScale value="0.265000" />
      <wheelScaleRear value="0.265000" />
      <dirtLevelMin value="0.000000" />
      <dirtLevelMax value="0.700000" />
      <envEffScaleMin value="0.000000" />
      <envEffScaleMax value="1.000000" />
      <envEffScaleMin2 value="0.000000" />
      <envEffScaleMax2 value="1.000000" />
      <damageMapScale value="0.600000" />
      <damageOffsetScale value="1.000000" />
      <diffuseTint value="0x00FFFFFF" />
      <steerWheelMult value="1.000000" />
      <HDTextureDist value="5.000000" />
      <lodDistances content="float_array">
        10.000000	
        25.000000	
        65.000000	
        130.000000	
        500.000000	
        500.000000
      </lodDistances>
      <minSeatHeight value="0.881" />
      <identicalModelSpawnDistance value="20" />
      <maxNumOfSameColor value="10" />
      <defaultBodyHealth value="1000.000000" />
      <pretendOccupantsScale value="1.000000" />
      <visibleSpawnDistScale value="1.000000" />
      <trackerPathWidth value="2.000000" />
      <weaponForceMult value="1.000000" />
      <frequency value="50" />
      <swankness>SWANKNESS_2</swankness>
      <maxNum value="20" />
      <flags>FLAG_CAN_HAVE_NEONS FLAG_SPAWN_ON_TRAILER FLAG_AVERAGE_CAR FLAG_HAS_INTERIOR_EXTRAS</flags>
      <type>VEHICLE_TYPE_CAR</type>
      <plateType>VPT_FRONT_AND_BACK_PLATES</plateType>
      <dashboardType>VDT_TAILGATER</dashboardType>
      <vehicleClass>VC_COMPACT</vehicleClass>
      <wheelType>VWT_SPORT</wheelType>
      <trailers />
      <additionalTrailers />
      <drivers />
      <extraIncludes />
      <doorsWithCollisionWhenClosed />
      <driveableDoors />
      <bumpersNeedToCollideWithMap value="false" />
      <needsRopeTexture value="false" />
      <requiredExtras />
      <rewards />
      <cinematicPartCamera>
        <Item>WHEEL_FRONT_RIGHT_CAMERA</Item>
        <Item>WHEEL_FRONT_LEFT_CAMERA</Item>
        <Item>WHEEL_REAR_RIGHT_CAMERA</Item>
        <Item>WHEEL_REAR_LEFT_CAMERA</Item>
      </cinematicPartCamera>
      <NmBraceOverrideSet />
      <buoyancySphereOffset x="0.000000" y="0.000000" z="0.000000" />
      <buoyancySphereSizeScale value="1.000000" />
      <pOverrideRagdollThreshold type="NULL" />
      <firstPersonDrivebyData>
        <Item>STD_BLISTA_FRONT_LEFT</Item>
        <Item>STD_BLISTA_FRONT_RIGHT</Item>
      </firstPersonDrivebyData>
    </Item>
    

    So what we need is just a simple script where raw text can be pasted in, and after it's pasted in, it will be checked for errors. The vehicles.meta file is very sensitive to whitespaces. If you have an extra space somewhere, sometimes it can cause the game to crash. So once a block of code like the above is inserted, the program will counter the number of white spaces within it. There are 752 whitespaces in that codeblock. None of them come after the end of any line. All of them are prior to the opening tags. '<'

    That's the way it should be.

    So the script will take that block of code and insert it after the last </Item>
    So what would happen is this.

    <!--
     [1] BEGIN
     2002 Saleen S7 1.0 
     https://www.gta5-mods.com/vehicles/2002-saleen-s7 
    -->
        <Item>
          <modelName>adder</modelName>
         <txdName>adder</txdName>
          <handlingId>adder</handlingId>
          <gameName>S7</gameName>
          <vehicleMakeName>SALEEN</vehicleMakeName>
          <expressionDictName>null</expressionDictName>
          <expressionName>null</expressionName>
      <animConvRoofDictName>null</animConvRoofDictName>
      <animConvRoofName>null</animConvRoofName>
      <animConvRoofWindowsAffected />
      <ptfxAssetName>null</ptfxAssetName>
      <audioNameHash />
      <layout>LAYOUT_LOW_INFERNUS</layout>
      <coverBoundOffsets>INFERNUS_COVER_OFFSET_INFO</coverBoundOffsets>
      <explosionInfo>EXPLOSION_INFO_DEFAULT</explosionInfo>
      <scenarioLayout />
      <cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
      <aimCameraName>DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA</aimCameraName>
      <bonnetCameraName>VEHICLE_BONNET_CAMERA_NEAR</bonnetCameraName>
      <povCameraName>DEFAULT_POV_CAMERA_NO_REVERSE</povCameraName>
      <FirstPersonDriveByIKOffset x="0.000000" y="-0.055000" z="0.010000" />
      <FirstPersonDriveByUnarmedIKOffset x="0.000000" y="-0.100000" z="0.000000" />
      <FirstPersonProjectileDriveByIKOffset x="0.000000" y="-0.120000" z="-0.010000" />
      <FirstPersonProjectileDriveByPassengerIKOffset x="-0.060000" y="-0.110000" z="-0.030000" />
      <FirstPersonProjectileDriveByRearLeftIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonProjectileDriveByRearRightIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByLeftPassengerIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerIKOffset x="0.000000" y="-0.055000" z="0.040000" />
      <FirstPersonDriveByRightRearPassengerIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByLeftPassengerUnarmedIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerUnarmedIKOffset x="0.000000" y="-0.100000" z="0.000000" />
      <FirstPersonMobilePhoneOffset x="0.140000" y="0.188000" z="0.490000" />
      <FirstPersonPassengerMobilePhoneOffset x="0.136000" y="0.141000" z="0.408000" />
      <PovCameraOffset x="0.000000" y="-0.200000" z="0.600000" />
      <PovCameraVerticalAdjustmentForRollCage value="0.000000" />
      <PovPassengerCameraOffset x="0.000000" y="-0.080000" z="0.000000" />
      <PovRearPassengerCameraOffset x="0.000000" y="0.000000" z="0.000000" />
      <vfxInfoName>VFXVEHICLEINFO_CAR_GENERIC</vfxInfoName>
      <shouldUseCinematicViewMode value="true" />
      <shouldCameraTransitionOnClimbUpDown value="false" />
      <shouldCameraIgnoreExiting value="false" />
      <AllowPretendOccupants value="true" />
      <AllowJoyriding value="true" />
      <AllowSundayDriving value="true" />
      <AllowBodyColorMapping value="true" />
      <wheelScale value="0.359700" />
      <wheelScaleRear value="0.359700" />
      <dirtLevelMin value="0.000000" />
      <dirtLevelMax value="0.300000" />
      <envEffScaleMin value="0.000000" />
      <envEffScaleMax value="1.000000" />
      <envEffScaleMin2 value="0.000000" />
      <envEffScaleMax2 value="1.000000" />
      <damageMapScale value="0.700000" />
      <damageOffsetScale value="0.800000" />
      <diffuseTint value="0x00FFFFFF" />
      <steerWheelMult value="1.000000" />
      <HDTextureDist value="5.000000" />
      <lodDistances content="float_array">
        15.000000
        30.000000
        55.000000	
        110.000000	
        500.000000	
        500.000000
      </lodDistances>
      <minSeatHeight value="0.796" />
      <identicalModelSpawnDistance value="20" />
      <maxNumOfSameColor value="1" />
      <defaultBodyHealth value="1000.000000" />
      <pretendOccupantsScale value="1.000000" />
      <visibleSpawnDistScale value="1.000000" />
      <trackerPathWidth value="2.000000" />
      <weaponForceMult value="1.000000" />
      <frequency value="20" />
      <swankness>SWANKNESS_5</swankness>
      <maxNum value="3" />
      <flags>FLAG_SPORTS FLAG_SPAWN_ON_TRAILER FLAG_RICH_CAR FLAG_NO_BROKEN_DOWN_SCENARIO FLAG_CAN_HAVE_NEONS</flags>
      <type>VEHICLE_TYPE_CAR</type>
      <plateType>VPT_BACK_PLATES</plateType>
      <dashboardType>VDT_BANSHEE</dashboardType>
      <vehicleClass>VC_SUPER</vehicleClass>
      <wheelType>VWT_HIEND</wheelType>
      <trailers />
      <additionalTrailers />
      <drivers />
      <extraIncludes />
      <doorsWithCollisionWhenClosed />
      <driveableDoors />
      <bumpersNeedToCollideWithMap value="false" />
      <needsRopeTexture value="false" />
      <requiredExtras />
      <rewards />
      <cinematicPartCamera>
        <Item>WHEEL_FRONT_RIGHT_CAMERA</Item>
        <Item>WHEEL_FRONT_LEFT_CAMERA</Item>
        <Item>WHEEL_REAR_RIGHT_CAMERA</Item>
        <Item>WHEEL_REAR_LEFT_CAMERA</Item>
      </cinematicPartCamera>
      <NmBraceOverrideSet />
      <buoyancySphereOffset x="0.000000" y="0.000000" z="0.000000" />
      <buoyancySphereSizeScale value="1.000000" />
      <pOverrideRagdollThreshold type="NULL" />
      <firstPersonDrivebyData>
        <Item>LOW_HOTKNIFE_FRONT_LEFT</Item>
        <Item>LOW_HOTKNIFE_FRONT_RIGHT</Item>
      </firstPersonDrivebyData>
    </Item>
    <!-- END -->
    <!--
     [2] BEGIN
     2016 Dodge Viper SRT TA 
     https://www.gta5-mods.com/vehicles/2014-srt-viper-t-a 
    -->
       <Item>
      <modelName>banshee</modelName>
      <txdName>banshee</txdName>
      <handlingId>banshee</handlingId>
      <gameName>VIPER</gameName>
      <vehicleMakeName>DODGE</vehicleMakeName>
      <expressionDictName>null</expressionDictName>
      <expressionName>null</expressionName>
      <animConvRoofDictName>null</animConvRoofDictName>
      <animConvRoofName>null</animConvRoofName>
      <animConvRoofWindowsAffected />
      <ptfxAssetName>null</ptfxAssetName>
      <audioNameHash>BANSHEE</audioNameHash>
      <layout>LAYOUT_LOW</layout>
      <coverBoundOffsets>ELEGY_COVER_OFFSET_INFO</coverBoundOffsets>
      <explosionInfo>EXPLOSION_INFO_DEFAULT</explosionInfo>
      <scenarioLayout />
      <cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
      <aimCameraName>DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA</aimCameraName>
      <bonnetCameraName>VEHICLE_BONNET_CAMERA_RAPIDGT</bonnetCameraName>
      <povCameraName>REDUCED_NEAR_CLIP_POV_CAMERA</povCameraName>
      <FirstPersonDriveByIKOffset x="0.000000" y="-0.060000" z="-0.043000" />
      <FirstPersonDriveByUnarmedIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonProjectileDriveByIKOffset x="0.005000" y="-0.045000" z="-0.078000" />
      <FirstPersonProjectileDriveByPassengerIKOffset x="0.000000" y="0.000000" z="-0.078000" />
      <FirstPersonProjectileDriveByRearLeftIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonProjectileDriveByRearRightIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByLeftPassengerIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerIKOffset x="0.000000" y="-0.040000" z="-0.048000" />
      <FirstPersonDriveByRightRearPassengerIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByLeftPassengerUnarmedIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonDriveByRightPassengerUnarmedIKOffset x="0.000000" y="0.000000" z="0.000000" />
      <FirstPersonPassengerMobilePhoneOffset x="0.176000" y="0.113000" z="0.415000" />
      <FirstPersonMobilePhoneOffset x="0.135000" y="0.140000" z="0.568000" />
      <PovCameraOffset x="0.000000" y="-0.200000" z="0.585000" />
      <PovCameraVerticalAdjustmentForRollCage value="-0.010000" />
      <PovPassengerCameraOffset x="0.000000" y="0.000000" z="-0.030000" />
      <PovRearPassengerCameraOffset x="0.000000" y="0.000000" z="-0.030000" />
      <vfxInfoName>VFXVEHICLEINFO_CAR_GENERIC</vfxInfoName>
      <shouldUseCinematicViewMode value="true" />
      <shouldCameraTransitionOnClimbUpDown value="false" />
      <shouldCameraIgnoreExiting value="false" />
      <AllowPretendOccupants value="true" />
      <AllowJoyriding value="true" />
      <AllowSundayDriving value="true" />
      <AllowBodyColorMapping value="true" />
      <wheelScale value="0.292000" />
      <wheelScaleRear value="0.292000" />
      <dirtLevelMin value="0.000000" />
      <dirtLevelMax value="0.300000" />
      <envEffScaleMin value="0.000000" />
      <envEffScaleMax value="1.000000" />
      <envEffScaleMin2 value="0.000000" />
      <envEffScaleMax2 value="1.000000" />
      <damageMapScale value="0.400000" />
      <damageOffsetScale value="0.400000" />
      <diffuseTint value="0x00FFFFFF" />
      <steerWheelMult value="1.000000" />
      <HDTextureDist value="5.000000" />
      <lodDistances content="float_array">
        60.000000	
        100.000000	
        150.000000	
        200.000000	
        300.000000	
        500.000000
      </lodDistances>
      <minSeatHeight value="0.79" />
      <identicalModelSpawnDistance value="20" />
      <maxNumOfSameColor value="10" />
      <defaultBodyHealth value="1000.000000" />
      <pretendOccupantsScale value="1.000000" />
      <visibleSpawnDistScale value="1.000000" />
      <trackerPathWidth value="2.000000" />
      <weaponForceMult value="1.000000" />
      <frequency value="50" />
      <swankness>SWANKNESS_5</swankness>
      <maxNum value="5" />
      <flags>FLAG_SPORTS FLAG_RICH_CAR FLAG_PEDS_CAN_STAND_ON_TOP FLAG_DISABLE_BUSTING FLAG_DISABLE_THROUGH_WINDSCREEN FLAG_RECESSED_TAILLIGHT_CORONAS FLAG_HAS_INTERIOR_EXTRAS</flags>
      <type>VEHICLE_TYPE_CAR</type>
      <plateType>VPT_BACK_PLATES</plateType>
      <dashboardType>VDT_BANSHEE</dashboardType>
      <vehicleClass>VC_SPORT</vehicleClass>
      <wheelType>VWT_HIEND</wheelType>
      <trailers />
      <additionalTrailers />
      <drivers />
      <extraIncludes />
      <doorsWithCollisionWhenClosed />
      <driveableDoors />
      <bumpersNeedToCollideWithMap value="false" />
      <needsRopeTexture value="false" />
      <requiredExtras />
      <rewards />
      <cinematicPartCamera>
        <Item>WHEEL_FRONT_RIGHT_CAMERA</Item>
        <Item>WHEEL_FRONT_LEFT_CAMERA</Item>
        <Item>WHEEL_REAR_RIGHT_CAMERA</Item>
        <Item>WHEEL_REAR_LEFT_CAMERA</Item>
      </cinematicPartCamera>
      <NmBraceOverrideSet />
      <buoyancySphereOffset x="0.000000" y="0.000000" z="0.000000" />
      <buoyancySphereSizeScale value="1.000000" />
      <pOverrideRagdollThreshold type="NULL" />
      <firstPersonDrivebyData>
        <Item>LOW_ELEGY2_FRONT_LEFT</Item>
        <Item>LOW_ELEGY2_FRONT_RIGHT</Item>
      </firstPersonDrivebyData>
    </Item>
    <!-- END -->
    

    Everything between the BEGIN and END is the reference. It will just append each block to the code in the right place, which is after the '<!-- END -->' of the previous code.

    There would be a few text areas to specify the comment data preceding each block.

                    CommentDATA
    <!--
     [2] BEGIN
     [VehicleYear] [VehicleMake] [VehicleModel] 
     [VehicleDownload_URL]
    -->
    

    The [2] number would be adjusted and automatically incremented based on the number of <Item> (Vehicles) there are in the file already. In the above code, there are Two Vehicles. The Viper, and the Saleen. Built in to the program would also be the functionality to REMOVE Vehicles, as well. Which would affect both the Vehicles.meta and the Handling.meta. It's a pretty simple script, and I could do it with PHP with some additional research, but if I ever began to start it would take me longer because I'm not experience yet with appending data to text files. If you look at my first vehicle, the 'adder' there's 1 less space on line 3.

     <Item>
          <modelName>adder</modelName>
         <txdName>adder</txdName>
    

    That would probably crash the game. So, like I said the program would verify the whitespaces are all equal.



  • @JZersche said in Why hasn't there been a vehicle installer?:

    Something like that but more user-friendly.

    That's a rough-built UI created to serve a purpose of interaction. It builds a complete addon based on almost no user input. All the data file processing and name replacement is done automatically. It caters for both sections in the vehicles.meta, all three sections in carcols.meta and all twenty sections in vehiclelayouts.meta.

    You only have to type something in three boxes. Honestly, if you can build a complete addon from just the replace files, that requires less manual input than that, then you will be providing a very useful tool for the community. I, and I am sure many others look forward to making addon builiding, a much simpler process with it.

    Most car addons and replacement have a vehicles.meta with a single item for the car being replaced or added.

    Not entirely true... nearly every addon has two sections in vehicles.meta. One in the InitDatas section and the other in txdRelationships. In fact, I have probably only seen maybe two out of the 80 addons I have installed that only had the one section in vehicles.meta.

    Unless you are referring to the single <Item /> inside <InitDatas />, in which case that is usually true... unless it's a pack of cars like the recent 6-pack of BMWs I installed, that had 6 items in that section.

    That would probably crash the game. So, like I said the program would verify the whitespaces are all equal.

    Actually, it will have no effect on the game.

    I have never had a problem with whitespaces in that file or any other xml/meta file, nor should there ever be one. Part of the XMLReader configuration is a setting to explicitly ignore whitespaces. They never even get considered. It's the equivalent of doing a string.Trim() in C#, which basically strips off everything that is an invalid character from the beginning and end of a string.

    The only thing that will cause a fatal error with XML reading, is invalid characters after the closing tag (or before the opening tag) that are not enclosed in <!-- --> markers to show it as a comment. Spaces, Whitespaces & TABs, are all rejected by the XML parser.



  • Just to demonstrate how tolerant XML is of being butchered. Look at the state of the XML in this document that I have deliberately messed up and yet as you can see, the game not only loads, but the car also spawns fine with it.

    alt text

    The bottom of that file also had this in it:

    			<firstPersonDrivebyData>
    				<Item>LOW_COQUETTE_FRONT_LEFT</Item>
    				<Item>LOW_COQUETTE_FRONT_RIGHT</Item>
    			</firstPersonDrivebyData>
    		</Item>
    	</InitDatas>
    	<txdRelationships>
    		<Item>
    			<parent>vehshare</parent>
    			<child>vehicles_race_generic</child>
    		</Item>
    		<Item>
    			<parent>vehshare</parent>
    			<child>vehicles_race_interior</child>
    		</Item>
    		<Item>
    			<parent>vehicles_race_generic</parent>
    			<child>f60</child>
    		</Item>
    	</txdRelationships>
    </CVehicleModelInfo__InitDataList>


  • @LeeC2202
    "Unless you are referring to the single <Item /> inside <InitDatas />, in which case that is usually true... unless it's a pack of cars like the recent 6-pack of BMWs I installed, that had 6 items in that section."
    Indeed, I meant, each instance of <Item> data </Item>

    and also the txd relationship part I mentioned.

    That makes sense. It must be something else that crashes. There have been times when I'm added vehicles in and everything looks perfectly fine, and I get a crash. I can't find the error, and end up having to copy a vehicles.meta from another vehicle, so in that case. Some vehicle datas cause crashes. The Vehicles.Meta Item in this vehicle, crashes my game.

    https://www.gta5-mods.com/vehicles/2002-mazda-rx-7-spirit-r-type-a-series-iii-fd3s

    But anyway, me and AHK1221 are working on a type of vehicle locational spawning mod, similar to persistence mod. He's doing all the coding in C#, I'm not doing any coding, so in reality I'm not really working on the mod, just came up with the idea, and the menu concept. So far here is what the menu is gonna look like. I made a quick mock up concept in CSS.

    https://codepen.io/JZersche/pen/ybbVja

    We're gonna have it so that, there will be groups, there could be several vehicles in a group, or just one vehicle, and each vehicle with have a probability, e.g. the chance of that vehicle spawning, from 0-100%, and a spawntime feature will be implemented as well, immediately or afterwards, so if you wanted the vehicles to only spawn during a specific period of time that would be customizable, and you are gonna be able to have multiple locations and spawn points for the same vehicles to spawn in different locations.

    Here's the ini file format concept.

    [GROUP_1]
    X1.3026;Y2.1436;Z-2.6340
    X1.1025;Y9.2305;Z6.3220
    X7.2420;Y-4.1041;Z1.0430 
    Vehicles=VIPER;BLISTA;INFERNUS;ADDER
    Probabilities=10;70;5;25
    
    [GROUPNAMECUSTOMIZABLE]
    X-3.4026;Y2.4733;Z-2.2340 // Spawns near the Bank 
    X4.4065;Y-3.2375;Z-6.5220 // Spawns near the whatever
    X-5.4820;Y4.1041;Z5.2430 // Spawns near the so on and so forth
    Vehicles=HADUKO;BMWM5;REGERA;AUDIS5
    Probabilities=90;50;2;35


  • @JZersche Any mod that spawns and tracks vehicles is always popular on here, so that's definitely a good idea. HTML and CSS confuse the heck out of me, so kudos to you for having those skills. :thumbsup_tone1: It took me about two days to put a simple web-page together with nothing more than text and pictures. :blush:

    One thing I will say, is don't diminish your contribution to that vehicle spawning mod based on you not doing the coding. Sometimes, the hardest thing to get, is an idea and so someone who can come up with one, is a vital contributor as far as a modder is concerned. All the mods I have released on here have come from other people's requests. Very often, the idea is king, no matter how simple or complex that idea is... it's also very rewarding making someone else's ideas come to life.

    That rx-7 mod seems to be okay btw, meta data wise. I have seen problems in the past caused by mismatches of case in a tag, especially in the dlclist.xml. So it might have an opening tag like <item> and then a closing tag of </Item> which will cause a fatal crash because it invalidates the whole file. Not sure what might have caused the problem with that mod though... sometimes it's just a mystery.



  • @LeeC2202 He might of updated it, and fixed it, but I'll test it in a bit. I'll be able to figure out exactly what line is causing the crash also. CSS3 and HTML5 are very simple, CSS3 gets advanced but for the most part is pretty straight forward. Memorizing the basic HTML5 Doc Layout is the first step. <!DOCTYPE html> then <html> then <head> then <meta charset="utf-8"> then <title></title> then </head> then you begin the body of the document and close off the </html>

    With CSS you're just working with selectors mostly. So you could for instance select the body element like

    body {
    background-color: #0000;
    }
    

    If you want to create a division on a page, like a box. Do <div> Example </div>
    Then assigning an ID or a CLASS to that div is done like.

    <div class="Example">
    Selected like -> div.Example { border: 1px solid #000; }
    

    ID is assigned the same way, only you write <div id="Example"> and select like div#Example, you can also leave out the div part, so just writing #Example, would work as well, because it's still pointing to that same class, but adding div to the beginning ensures that it only works on div elements that are part of that class. ID's and CLASSes are similar, you can think of classes as like groups that have a particular style associated to them. Not gonna write a full tutorial here, but it's quite easy. So, you can have a div with an id still part of a class if you wanted. That's done like <div id="Example" class="redfontcolor">

    And in that case, that class would look like this in the CSS portion.

    .redfontcolor {color: #f00;}

    So then all you would do is assign that class to whatever element you want styled, maybe it's a paragraph, maybe it's a list item, either way it would be done like, <p class="redfontcolor"> or <li class="redfontcolor"> Now all list-items are gonna show in red, and so will paragraphs associated with that particular class. ID's are used to specify unique indentifiers, but if you really wanted you could use classes to do that, but you're not particularly supposed to. Also, updated my post above, showing the format the ini file is, or should have in my opinion, for the car spawning mod. Unlike persistence, the vehicles will spawn regularly every X amount of time.
    :smirk:



  • @LeeC2202 Okay, I tried opening popgroups.ymt, OpenIV says it's unsupported.



  • @MobWulff Have a look in the files that come with this mod for a version you can edit. https://www.gta5-mods.com/misc/southern-san-andreas-exotic-popgroups-ymt-803cba20-ebff-4a21-82a7-b0d70ab9a39a


Log in to reply
 

Looks like your connection to GTA5-Mods.com Forums was lost, please wait while we try to reconnect.