HookNative

Allows you to hook into FiveM's native function system, giving you complete control over whether native functions execute and what values they return.

Syntax

Susano.HookNative(native_hash, hook_function)

Parameters

native_hash (number) - The hash of the native function to hook

hook_function (function) - Your callback function that handles the interception

Return(s)

None

Hook Function

Your hook function receives the same arguments as the original native and must return specific values to control behavior.

Return Format

return call_original, return_value1, return_value2, ...

call_original (boolean)

  • true - Execute the original native function

  • false - Block the native and use your custom return values

return_value1, return_value2, ... (any)

  • Custom values to return when blocking the native

  • Must match the expected return types of the original native

Natives args modification is not possible, yet.

The only supported types for custom return values are: Bool, Number, String, Tables

Vector3 are not supported YET

Example(s)

-- Always return "Admin" instead of actual player name
Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id)
    return false, "Admin"
end)
-- Only block for specific players
Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id)
    if player_id == 1337 then
        return false, "BlockedPlayer"
    else
        return true  -- Allow original function
    end
end)
-- Some natives return multiple values
Susano.HookNative(0x34CFC4C2A38E83E3, function(camTo, camFrom, duration)
    if duration > 5000 then
        return false, "TooLong", 0, false
    end
    return true
end)
-- Log native calls without modifying behavior
Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id)
    print(string.format("GetPlayerName called for player: %d", player_id))
    return true  -- Allow original execution
end)

Last updated