22.11.2013, 02:34
(
Last edited by Emmet_; 22/11/2013 at 06:40 PM.
)
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:
Would simply turn into this code:
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
This is only a discussion for now - this will be released when the concept has been implemented into a library.
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
pawn Code:
nhook print(message[])
{
printf("Time to print a message:");
print(message);
return 1;
}
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
- 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.
This is only a discussion for now - this will be released when the concept has been implemented into a library.