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

    1. GTANet.com

    1. GTA Online

      1. The Contract
      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. GTA San Andreas

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

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

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    4. Bugs*

    1. Grand Theft Auto Series

      1. 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. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    6. 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

      1. GTANet 20th Anniversary
    2. Support

    3. Suggestions

Having hard time figuring out Z for random X and Y in .NET


teneke
 Share

Recommended Posts

I want part of my mod to teleport the  player (me) to a random location. I know chaos has that so I downloaded the source and tried replicating the c++ code in C#. For the most part it works apart from figuring out where Z should be. It just never seems to be able to return true for GET_GROUND_Z_FOR_3D_COORD nor does the output argument ever return anything useful. As it is, the bellow teleports me at max height and that's it.

static unsafe void TpToRandomVol2()
        {
            Ped playerPed = Game.Player.Character;
            Vector3 playerPos = Function.Call<Vector3>(Hash.GET_ENTITY_COORDS, playerPed, false);
            Random rnd = new Random();
            float x, y, z = playerPos.Z, _;
            bool isGround=false;
            do
            {
                x = rnd.Next(-3747, 4500);
                y = rnd.Next(-4400, 8022);
            }
            while (Function.Call<bool>(Hash.TEST_VERTICAL_PROBE_AGAINST_ALL_WATER, x, y, z, 0, &_));

            float testZ;
            float groundZ = new float();
            for (int i = 0; i < 100; i++)
            {
                testZ = (float)((i * 10) - 100);

                TeleportPlayer(x, y, testZ);

                OutputArgument outputArgument = new OutputArgument();
                isGround = Function.Call<bool>((Hash.GET_GROUND_Z_FOR_3D_COORD), new InputArgument[5]
            {
                (playerPed.Position.X),
                (playerPed.Position.Y),
                (playerPed.Position.Z),
                outputArgument,
                (false)
            });
                groundZ = outputArgument.GetResult<float>();
                if (isGround)
                {
                    break;
                }
            }
            if (isGround)
            {
                TeleportPlayer(x, y, groundZ);
            }
        }

 

Here's chaos's TP to random for reference:

 

static void OnStartRandom()
{
	Ped playerPed = PLAYER_PED_ID();
	Vector3 playerPos = GET_ENTITY_COORDS(playerPed, false);

	float x, y, z = playerPos.z, _;
	do
	{
		x = g_Random.GetRandomInt(-3747.f, 4500.f);
		y = g_Random.GetRandomInt(-4400.f, 8022.f);
		
	}
	while (TEST_VERTICAL_PROBE_AGAINST_ALL_WATER(x, y, z, 0, &_));

	float groundZ;
	bool useGroundZ;
	for (int i = 0; i < 100; i++)
	{
		float testZ = (i * 10.f) - 100.f;

		TeleportPlayer(x, y, testZ);
		if (i % 5 == 0)
		{
			WAIT(0);
		}

		useGroundZ = GET_GROUND_Z_FOR_3D_COORD(x, y, testZ, &groundZ, false, false);
		if (useGroundZ)
		{
			break;
		}
	}

	TeleportPlayer(x, y, useGroundZ ? groundZ : z);
}

 

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.