Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

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

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

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

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

    2. Forum Support

    3. Suggestions

Road type and entity physical characteristics


Makinolo
 Share

Recommended Posts

Hi guys

 

 

I've been reviewing many threads and searching the forum but no luck.

Is there a way to know what type of road (highway / secondary road / dirt road) a vehicle is driving over?

And for that same vehicle, is there a way to get its weight and bounding box (for volume calculation) from within a script?

 

Thank you!

 

Link to comment
Share on other sites

You can use GET_NTH_CLOSEST_VEHICLE_NODE_ID to get the nearest vehicle node and GET_VEHICLE_NODE_PROPERTIES to get the properties. It's all held in bitflags though and they're a pain to try and work out. You can also use the SHAPE_TEST functions to return the material type by casting a ray at the ground below the vehicle.

 

For the weight you would have to use memory accessing to get the mass value from the handling.meta and for the bounding box you can use GET_MODEL_DIMENSIONS

 

If you're using ScriptHookVDotNet, SHAPE_TEST has an equivalent in World.Raycast() and there is an Entity.Model.GetDimensions(). I am not sure if there are equivalents for the vehicle node functions.

Link to comment
Share on other sites

Thank you so much!

 

I've tested the ray casting against the ground and it works. It gives me the material underneath the vehicle.

Only thing is SHAPE_TEST natives have changed names apparently and the documentation is not up to date. WORLDPROBE::_START_SHAPE_TEST_RAY is called  WORLDPROBE::_CAST_RAY_POINT_TO_POINT and WORLDPROBE::_GET_SHAPE_TEST_RESULT_EX is called WORLDPROBE::_GET_RAYCAST_RESULT_2.

 

Just in case someone wants to do the same thing:

 

Vector3 vcoords = ENTITY::GET_ENTITY_COORDS(vehicle, TRUE);
int rayHandle = WORLDPROBE::_CAST_RAY_POINT_TO_POINT( vcoords.x, vcoords.y, vcoords.z, vcoords.x, vcoords.y, vcoords.z - 10, 1, vehicle, 7);
BOOL hit;
Entity entityHit;
Hash materialHash;
Vector3 hitCoords, normal;
WORLDPROBE::_GET_RAYCAST_RESULT_2(rayHandle, &hit, &hitCoords, &normal, &materialHash, &entityHit );
if (hit)
{
	int etype = ENTITY::GET_ENTITY_TYPE(entityHit);
	// Do your thing with the ground type
}

 

There seems to be a comprehensive material list here: pastebin.com/gyHjsYBK

 

Link to comment
Share on other sites

9 hours ago, Makinolo said:

Only thing is SHAPE_TEST natives have changed names apparently and the documentation is not up to date. WORLDPROBE::_START_SHAPE_TEST_RAY is called  WORLDPROBE::_CAST_RAY_POINT_TO_POINT and WORLDPROBE::_GET_SHAPE_TEST_RESULT_EX is called WORLDPROBE::_GET_RAYCAST_RESULT_2.

If you notice on http://www.dev-c.com/nativedb/ they are all called SHAPE_TEST. That's the goto place to find the latest info.

 

The _CAST_RAY and _GET_RAYCAST names were the original names before they worked out what they were really called. You can usually tell because natives that start with _ are names that have been given by the community. Names that don't have that are what have been discovered by hash reversal.

 

It can get really confusing because SHVDN isn't up to date with what that page says. So quite often you will find names on there that don't exist in SHVDN, or SHVDN will still be using the old names. I suspect that there are so many mods out there now, they can't change anything because it would break all those existing mods. And given that a huge number of mod authors can't be bothered to fix bugs anyway, it's just too risky. But it does leave the C++ and .Net modders using different information, which is a definite problem.

 

Good to hear you got it to work though.

Link to comment
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
 Share

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

×
×
  • Create New...

Important Information

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