07.02.2013, 01:21
(
Последний раз редактировалось oOFotherOo; 07.02.2013 в 01:54.
)
Seсor Dreyfuz este metodo es utilizado para hacer Hooks de funciones o callbacks para hacer que un cуdigo se ejecute en una funciуn nativa sin tener que alterarla.
Ejemplo:
Es facil de usar pero hay varias formas de hacer Hooks de funciones y callbacks.
PD: En fнn esto sirve para ejecutar cуdigos creados por el programador para ser ejecutados ensima de una funciуn nativa de SA-MP como por ejemplo el ejemplo que mostre anteriormente, lo que hize fue que al usar GivePlayerMoney este llamase a la funciуn creada por mi GivePlayerMoneyEx sin tener que cambiar todos los GivePlayerMoney a GivePlayerMoneyEx.
Un saludo.
EDIT:
Me olvidй de explicar como hacer un Hook de Callback.
Ejemplo:
Recuerde siempre poner las callbacks y funciones por encima del ALS.
Ejemplo:
pawn Код:
enum pInfo
{
dinero
};
static PlayerInfo[MAX_PLAYERS][pInfo];
stock GivePlayerMoneyEx(playerid, dinero)
{
GivePlayerMoney(playerid, dinero);
PlayerInfo[playerid][dinero] += dinero;
return 1;
}
#if defined _ALS_GivePlayerMoney // Esto sirve para verificar si _ALS_GivePlayerMoney esta definida.
#undef GivePlayerMoney // Usamos esto para poder redefinir GivePlayerMoney asi el compilador no lanzara error de redefiniciуn.
#else
#define _ALS_GivePlayerMoney // Definimos el ALS de GivePlayerMoney.
#endif
#define GivePlayerMoney GivePlayerMoneyEx // Esto hace que al ejecutar GivePlayerMoney se ejecute la funci[on creada por nosotros que en este caso es GivePlayerMoneyEx.
PD: En fнn esto sirve para ejecutar cуdigos creados por el programador para ser ejecutados ensima de una funciуn nativa de SA-MP como por ejemplo el ejemplo que mostre anteriormente, lo que hize fue que al usar GivePlayerMoney este llamase a la funciуn creada por mi GivePlayerMoneyEx sin tener que cambiar todos los GivePlayerMoney a GivePlayerMoneyEx.
Un saludo.
EDIT:
Me olvidй de explicar como hacer un Hook de Callback.
Ejemplo:
pawn Код:
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, -1, "Prueba");
CallLocalFunction("F_OnPlayerConnect", "i", playerid); // Sirve para llamar la callback definidas por nosotros que en este caso es F_OnPlayerConnect.
return 1;
}
#if defined _ALS_OnPlayerConnect // Esto sirve para verificar si _ALS_OnPlayerConnect esta definida.
#undef OnPlayerConnect // Usamos esto para poder redefinir OnPlayerConnect asi el compilador no lanzara error de redefiniciуn.
#else
#define _ALS_OnPlayerConnect // Definimos el ALS de OnPlayerConnect.
#endif
#define OnPlayerConnect F_OnPlayerConnect // Esto hace que al ejecutar OnPlayerConnect se ejecute la funciуn creada por nosotros que en este caso es OnPlayerConnect.
forward F_OnPlayerConnect(playerid);