Hey Rival Gamer Coders and modders as i have heard that many people trying to make this work and also asked me for code many times , im releasing this to your use
Code was updated and i made is as much simplest as i could , notice it may be not that easy to understand so try your best , if you dont understand any of this feel free to message me 😉
as you may notice my RPC class called hook and use special way of calling system if your is diffrent wich is most likely if you dont have hook you must rewrite the call of the natives to your way
Note
i have not tested this with not hooked RPC so all ups to your RPC calling/hooking system
Hook FTW
Past this code in to your Teleport to way point Button in your RPC tool
[HIDE]
[html]
int teleportActiveLineIndex = 0; // Blip Index Static
// Get Entity To Teleport
int Entity_ID = Hook.Call("PLAYER_PED_ID"); // Get Player Entity ID
if (Hook.Call("IS_PED_IN_ANY_VEHICLE", Entity_ID, 0)) // In Case Ped In Vehicle Get Vehicle Entity ID
{
Entity_ID = Hook.Call("GET_VEHICLE_PED_IS_USING", Entity_ID); // Entity_ID = Vehicle Entity ID
}
// Get Coords
Vector3 coords = new Vector3(); // Create Vector For Coords Defenitions
bool success = false; // Bool For difine What Ever Blip Coord Is Found Or Not
if (teleportActiveLineIndex == 0) // Using Blip Index Static
{
bool Blip_Found = false; // Blip Defenition
// Search For blip
int Blip_Iterator = Hook.Call(0xB9827942); // UI::_GET_BLIP_INFO_ID_ITERATOR
// Alocating Blip Coords by Blip interator
for (int i = Hook.Call("GET_FIRST_BLIP_INFO_ID",Blip_Iterator); Hook.Call("DOES_BLIP_EXIST",i) != false; i = Hook.Call("GET_NEXT_BLIP_INFO_ID",Blip_Iterator))
{
if (Hook.Call("GET_BLIP_INFO_ID_TYPE",i) == 4) // If Blip ID equals Map Set Marker By Player
{
coords = Hook.Call("GET_BLIP_INFO_ID_COORD",i); // Setting Blip Coords into Out previously Created Vector3
Blip_Found = true; // And Blip Found 😛
break; // Stop Searching for Blip
}
}
if (Blip_Found) // And When Blip Found Start Calculating Coords For Ground Z
{
// load needed map region and check height levels for ground existence
bool Ground_Found = false; // Bool For Ground
// Coords For Ground to alocate Correct Ground Z
float[] groundCheckHeight = { 100.0f, 150.0f, 50.0f, 0.0f, 200.0f, 250.0f, 300.0f, 350.0f, 400.0f, 450.0f, 500.0f, 550.0f, 600.0f, 650.0f, 700.0f, 750.0f, 800.0f };
for (int i = 0; i < groundCheckHeight.Length; ++i) // loop for calculating Ground Z by defined floats array
{
coords.z = groundCheckHeight; // Ground Z reset to Calculated Coords By Array or preset float from minimum to maximum Ground
Hook.Call("DO_SCREEN_FADE_OUT", 200);// Black Out The sсreen to hide Coords caluculation in game Client sided only
System.Threading.Thread.Sleep(100); // Lets wait abit to make sure all correct
Hook.Call("SET_ENTITY_COORDS_NO_OFFSET", Entity_ID, coords, 0, 0, 1); // Set Our Enity Coords Before Fixing Ground Position
Hook.Call("LOAD_ALL_OBJECTS_NOW");// in Case objects not load force them to do so 😛
uint Ground_Z_Pointer_Adress = 0x10070000;
if (Hook.Call("GET_GROUND_Z_FOR_3D_COORD", coords, Ground_Z_Pointer_Adress) == true)// If Ground Z found using defined Array ruturn true and writes Coords to pointer
{
Ground_Found = true; // And Ground Found
float Ground_Z = PS3.Extension.ReadFloat(Ground_Z_Pointer_Adress);
coords.z = Ground_Z + 3.0f; // Set Found Ground Z to Vector3 Z coord and Add 3.f to make you spawn abit upper the ground
break; // and stop the loop
}
}
// if ground not found then set Z in air and give player a parachute
if (!Ground_Found)
{
coords.z = 1000.0f;
int Player_ID = Hook.Call("PLAYER_PED_ID"); // Get Player Entity ID
uint Parachute = 0xFBAB5776;
Hook.Call("GIVE_DELAYED_WEAPON_TO_PED", Player_ID, Parachute, 1, 0);
MessageBox.Show("No ground found");
}
success = true; // and yes teleport
}
else
{
//If no way point was set
MessageBox.Show("No WayPoint Set ?!");
}
}
else // predefined coords
{
// here you can predefine coords if you need
success = true;
}
//And finnaly Correct Ground Z
if (success)
{
Hook.Call("SET_ENTITY_COORDS_NO_OFFSET",Entity_ID, coords, 0, 0, 1);
Hook.Call("DO_SCREEN_FADE_IN", 200); // Remove Screen Black out
}
[/html][/HIDE]
THIS IS NOT ALLOWED TO BE POSTED ANYWHERE ELSE