{"hash":"0x59767C5A7A9AE6DA","ns":"STREAMING","name":"REQUEST_IPL_HASH","slug":"REQUEST_IPL_HASH","official":true,"named":true,"luaName":"RequestIplHash","game":"rdr3","apiset":"client","returnType":"void","params":[{"name":"iplHash","type":"Hash","description":"IPL hash as a signed 32-bit integer."}],"summary":"Loads an IPL by hash. The hash must be a signed int32 — larger positive values are ignored without an error.","descriptions":[{"source":"alloc8or","format":"text","body":"Old name: _REQUEST_IMAP"}],"examples":[],"aliases":[],"enums":[],"related":["0x9C77964B0E07B633","0xD779B9B910BD3B7C","0x5A3E5CF7B4014B96"],"build":"1207","sources":["alloc8or","overlay"],"doc":3,"overlayFile":"overlay/natives/0x59767C5A7A9AE6DA.md","noteMeta":{"contributors":["borderline-rp"],"tags":["ipl","hash","gotcha"]},"notes":"### Pass the signed form\n\nA hash of 2³¹ or more passed as a positive integer is dropped silently: no error, the IPL never loads and `IS_IPL_ACTIVE_HASH` stays `false`. The same applies to `REMOVE_IPL_HASH` and `IS_IPL_ACTIVE_HASH`.\n\n- `joaat(\"name\")` and backtick literals already return the signed form.\n- `tonumber(\"0xF4101CBE\")` returns the unsigned form (4094696638) and breaks the call.\n\n`_GET_IPL_BOUNDING_SPHERE` does accept the unsigned form, which makes the bug look like a streaming or timing problem: the sphere is found, the IPL never appears.\n\n```lua\nlocal function toSignedHash(h)\n    h = math.floor(tonumber(h)) & 0xFFFFFFFF\n    if h >= 0x80000000 then h = h - 0x100000000 end\n    return h\nend\n\nRequestIplHash(toSignedHash('0xF4101CBE'))\n```\n\nStore hashes signed in your database too, or convert them on read.\n\nVerified in game on the Borderline RP server, September 2026.","url":"https://natives.borderlinerp.com/natives/STREAMING/REQUEST_IPL_HASH","markdownUrl":"https://natives.borderlinerp.com/natives/STREAMING/REQUEST_IPL_HASH.md","snippets":{"lua":"RequestIplHash(iplHash)","luaInvoke":"Citizen.InvokeNative(0x59767C5A7A9AE6DA, iplHash)","js":"RequestIplHash(iplHash);","jsInvoke":"Citizen.invokeNative('0x59767C5A7A9AE6DA', iplHash);","csharp":"Function.Call((Hash)0x59767C5A7A9AE6DA, iplHash);","notes":["Hash parameters: the named function also accepts a string and hashes it for you; `Citizen.InvokeNative` needs the number — pass `joaat(\"name\")` or a backtick literal like `` `name` ``."]}}