Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!   (84,805 visits to this link)

    2. News

    1. GTA Online

      1. Find Lobbies & Players
      2. Guides & Strategies
      3. Vehicles
      4. Content Creator
      5. Help & Support
    2. Crews

      1. Events
      2. Recruitment
    1. Grand Theft Auto Series

    2. GTA Next

    3. GTA V

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

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

    6. GTA Vice City Stories

    7. GTA Liberty City Stories

    8. GTA San Andreas

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

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

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

      1. GTA Advance
      2. GTA 2
      3. GTA
    12. 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

    2. Red Dead Redemption

    3. 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. Forum Support

    2. Site Suggestions

Sign in to follow this  
Aktarus

[Raycast] What the function START_SHAPE_TEST_CAPSULE does?

Recommended Posts

Aktarus

Hi guys. I am triyng to understand how Raycast works. My objective is to scan around a ped (like a sonar) until find another ped. It seems that Raycast is a solution for my case. But what START_SHAPE_TEST_CAPSULE does exactly?

Is it only a straight line? Here is the doc from dev-c.com/nativedb/func :

 

 

WORLDPROBE::START_SHAPE_TEST_CAPSULE

 

Hashes: 0x28579D1B8F8AAC80 0x591EA833

int START_SHAPE_TEST_CAPSULE(float x1, float y1, float z1, float x2, float y2, float z2, float radius, int flags, Entity entity, int p9) // 0x28579D1B8F8AAC80 0x591EA833

Raycast from point to point, where the ray has a radius.

flags:
vehicles=10
peds =12

Iterating through flags yields many ped / vehicle/ object combinations

p9 = 7, but no idea what it does

Entity is an entity to ignore

Edited by Aktarus

Share this post


Link to post
Share on other sites
sollaholla

START_SHAPE_TEST_CAPSULE is what you'd expect; it's a capsule. It can also be a sphere as well.
What language are you going to be using? .NET has a very simplified function for this.

Edited by sollaholla

Share this post


Link to post
Share on other sites
Aktarus

START_SHAPE_TEST_CAPSULE is what you'd expect; it's a capsule. It can also be a sphere as well.

What language are you going to be using? .NET has a very simplified function for this.

 

Hi, I am using C#. Could you tell me what is the simplified function?

Thank you

Share this post


Link to post
Share on other sites
sollaholla

 

START_SHAPE_TEST_CAPSULE is what you'd expect; it's a capsule. It can also be a sphere as well.

What language are you going to be using? .NET has a very simplified function for this.

 

Hi, I am using C#. Could you tell me what is the simplified function?

Thank you

 

Yes, of course. Use this method and it should be much easier for you:

public static RaycastResult Raycast(Vector3 source, Vector3 direction, float maxDistance, IntersectOptions options, Entity ignoreEntity = null)

In the RaycastResult struct, there are many parameters that hold information about what the ray hit, it's hit location, etc.

 

There's also this function, since you where asking about capsule casting:

public static RaycastResult RaycastCapsule(Vector3 source, Vector3 target, float radius, IntersectOptions options, Entity ignoreEntity = null)

All of these can be found in the World class.

 

Hope this helps, cheers.

Edited by sollaholla

Share this post


Link to post
Share on other sites
Aktarus

Wow! Sure it helps Sollaholla.

I am going to try.

 

Thanks again

Share this post


Link to post
Share on other sites
Aktarus

So the code below works partially, because it stops after few seconds. I have an error in the console that's say: "Object reference not set to an instance of an object".

public async Task OnTick(){   Vector3 Pos = Function.Call<Vector3>(Hash.GET_ENTITY_COORDS, pedOfOrigin);   Vector3 newPositionTarget = new Vector3    {         X = Pos.X + 30f,         Y = Pos.Y,         Z = Pos.Z     };    RaycastResult RaycastPed = World.RaycastCapsule(pedOfOrigin.Position, newPositionTarget, 60f, IntersectOptions.Peds1, null);    Ped foundPed = new Ped(RaycastPed.HitEntity.Handle);    Vector3 foundPedPos = Function.Call<Vector3>(Hash.GET_ENTITY_COORDS, foundPed);    pedOfOrigin.Task.RunTo(foundPed.Position, true);}

Does anyone knows what that means?

Thanks in advance

Edited by Aktarus

Share this post


Link to post
Share on other sites
sollaholla

So the code below works partially, because it stops after few seconds. I have an error in the console that's say: "Object reference not set to an instance of an object".

public async Task OnTick(){   Vector3 Pos = Function.Call<Vector3>(Hash.GET_ENTITY_COORDS, pedOfOrigin);   Vector3 newPositionTarget = new Vector3    {         X = Pos.X + 30f,         Y = Pos.Y,         Z = Pos.Z     };    RaycastResult RaycastPed = World.RaycastCapsule(pedOfOrigin.Position, newPositionTarget, 60f, IntersectOptions.Peds1, null);    Ped foundPed = new Ped(RaycastPed.HitEntity.Handle);    Vector3 foundPedPos = Function.Call<Vector3>(Hash.GET_ENTITY_COORDS, foundPed);    pedOfOrigin.Task.RunTo(foundPed.Position, true);}

Does anyone knows what that means?

Thanks in advance

I'm sure that it's because foundPed is returning null. Before getting the position of the ped you should check RaycastPed.DitHitEntity.

Edited by sollaholla

Share this post


Link to post
Share on other sites
Aktarus

Thanks. Problem solved. :lol:

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  

×

Important Information

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