{"hash":"0xBBE5B63EFFB08E68","ns":"MISC","name":"_GET_GROUND_Z_AND_MATERIAL_FOR_3D_COORD","slug":"_GET_GROUND_Z_AND_MATERIAL_FOR_3D_COORD","official":false,"named":true,"luaName":"GetGroundZAndMaterialFor_3dCoord","game":"rdr3","apiset":"client","returnType":"BOOL","params":[{"name":"x","type":"float"},{"name":"y","type":"float"},{"name":"z","type":"float"},{"name":"flags","type":"int"},{"name":"outGroundZ","type":"float*"},{"name":"outMaterialHash","type":"Hash*"},{"name":"outFlags","type":"int*"}],"summary":"Raycasts downward from coords to find terrain/water.","descriptions":[{"source":"alloc8or","format":"text","body":"Raycasts downward from coords to find terrain/water.\n\n- flags: collision mask (R* scripts commonly use 17, 129, or 3423).\n- outGroundZ: receives the hit Z.\n- outMaterialHash: receives the surface/material hash.\n- outFlags: receives hit flags (bitfield; water/special cases may set bits).\n\nReturns true on hit, false otherwise."},{"source":"vorp","format":"text","body":"Outputs the ground Z axis, its material and flags.Input flags are 17, 129 or 3423 in R* scripts.similar to flags of shapes test native"}],"examples":[],"aliases":[],"enums":[],"related":[],"build":"1207","sources":["alloc8or","vorp"],"doc":2,"url":"https://natives.borderlinerp.com/natives/MISC/_GET_GROUND_Z_AND_MATERIAL_FOR_3D_COORD","markdownUrl":"https://natives.borderlinerp.com/natives/MISC/_GET_GROUND_Z_AND_MATERIAL_FOR_3D_COORD.md","snippets":{"lua":"local retval, outGroundZ, outMaterialHash, outFlags = GetGroundZAndMaterialFor_3dCoord(x, y, z, flags)","luaInvoke":"local retval, outGroundZ, outMaterialHash, outFlags = Citizen.InvokeNative(0xBBE5B63EFFB08E68, x, y, z, flags, Citizen.PointerValueFloat(), Citizen.PointerValueInt(), Citizen.PointerValueInt(), Citizen.ReturnResultAnyway())","js":"const [retval, outGroundZ, outMaterialHash, outFlags] = GetGroundZAndMaterialFor_3dCoord(x, y, z, flags);","jsInvoke":"const [retval, outGroundZ, outMaterialHash, outFlags] = Citizen.invokeNative('0xBBE5B63EFFB08E68', x + 0.0000001, y + 0.0000001, z + 0.0000001, flags, Citizen.pointerValueFloat(), Citizen.pointerValueInt(), Citizen.pointerValueInt(), Citizen.returnResultAnyway());","csharp":"var outGroundZ = new OutputArgument();\nvar outMaterialHash = new OutputArgument();\nvar outFlags = new OutputArgument();\nbool retval = Function.Call<bool>((Hash)0xBBE5B63EFFB08E68, x, y, z, flags, outGroundZ, outMaterialHash, outFlags);\n// outGroundZ.GetResult<float>()\n// outMaterialHash.GetResult<int>()\n// outFlags.GetResult<int>()","notes":["Float parameters: Lua integers (`10`, or whole numbers decoded from NUI/JSON) are sent as ints and read as garbage. Write `10.0` or `value + 0.0`. The generated JS wrappers add `0.0000001` to non-zero floats for the same reason.","Pointer (out) arguments are not passed in Lua/JS: their values are returned after the result, in order.","The name is a community guess and may change. If the named call is missing in your client build, use `InvokeNative` with the hash — it always works."]}}