fHooks.inc - Function hooks!
#1

fHooks.inc

Introduction
I've decided to attempt a challenge that nobody has EVER attempted before - automatic function hooks. This library allows scripters to basically hook functions EASILY, without any ALS bullshit.

This library took an entire 2 weeks of thinking for me to develop! I had to think of an effective way that scripters can hook the functions without having to change anything in their script.

How to use this?
This code:

pawn Code:
stock MyPrint(string[])
{
    printf("Time to print a message:");
    print(string);
    return 1;
}

#if defined _ALS_print
    #undef print
#else
    #define _ALS_print
#endif

#define print MyPrint
Would simply turn into this code:

pawn Code:
nhook print(message[])
{
    printf("Time to print a message:");
    print(message);
    return 1;
}
Just like y_hooks, only for functions (this won't work for callbacks, so don't try it).

Note that Hook_Call will call the original, unhooked function. Using print() directly in that function will cause the function to NOT execute properly - you have been warned.

Notes
  • Any functions over 28 characters can't be prefixed, therefore they are removed due to a compiler limitation of 32 characters.
  • Any functions with variadic arguments (printf, format) have been removed but I'm planning on fixing i
Credits
  • Thanks to Kalcor, SA-MP developers and ITB CompuPhase for developing the native functions.
  • Thanks a bunch to Alex "Y_Less" Cole for the whole introduction of hooking to SA-MP, and of course y_hooks, which inspired me to make this.
  • And thanks to myself because I'm selfish like that.
Download
This is only a discussion for now - this will be released when the concept has been implemented into a library.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)