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

    1. Red Dead Redemption 2

      1. Gameplay
      2. Missions
      3. Help & Support
    2. Red Dead Online

      1. Gameplay
      2. Find Lobbies & Outlaws
      3. Help & Support
    1. Crews & Posses

      1. Recruitment
    2. Events

    1. GTA Online

      1. Diamond Casino & Resort
      2. DLC
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Grand Theft Auto Series

    3. GTA 6

    4. GTA V

      1. PC
      2. Guides & Strategies
      3. Help & Support
    5. GTA IV

      1. Episodes from Liberty City
      2. Multiplayer
      3. Guides & Strategies
      4. Help & Support
      5. GTA Mods
    6. GTA Chinatown Wars

    7. GTA Vice City Stories

    8. GTA Liberty City Stories

    9. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    10. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    11. GTA III

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    12. Top Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    13. Wiki

      1. Merchandising
    1. GTA Modding

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    3. Featured Mods

      1. DYOM
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Red Dead Redemption

    2. Rockstar Games

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Programming
      5. Movies & TV
      6. Music
      7. Sports
      8. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. News

    2. Forum Support

    3. Site Suggestions

Sign in to follow this  

Detouring GTA function calls and invoking natives

Recommended Posts


Hi everybody,

I miss one big feature in the current scripthooks/plugin hooks: the ability to intercept and modify game events. Example: you could intercept an event in which the player receives damage. Then, you could triple the damage received, or maybe reflect the damage back to the attacker. You could spawn chickens instead of rockets. You could flip the player's car when they run over a ped. In essence, you would have complete control over the game.

I have already made a C library which can intercept (hook, detour) arbitrary x86_64 function calls. It works great so far: any function can be intercepted and the parameters can be inspected and modified as well. The same can be done for the return value.

It is possible to intercept function calls, so we can also reroute these to our self-written plugins and scripts (even calling .net scripts is possible). Great! But now comes the problem:
The rerouted function call is not in a Script thread/fiber. Therefore, the plugin/script we notify of the event cannot call any native functions. This is pretty sad :-(.

I can think of two ways of solving this issue:
1) From the hooked function, call a helper script, then immediately resume the hooked function. On the next Script tick(), the helper script notifies other scripts/plugins of the event, so modifying/blocking it is not possible, but at least the scripts know an event happened.

2) From the hooked function, call a helper script, then wait. On the next Script tick(), the helper script notifies other scripts/plugins, and allows them to modify it. When the helper script is done, it wakes up the hooked function again, which then continues.

Option (1) sucks, because you cannot modify the events. Option (2) may be OK, but the detoured function call is blocked while the custom scripts sort out their stuff. This could take very long, slowing down the game.

What do you guys think? What would be a good approach?

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • 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.