stock hooking;
main()
{
state hooking:true;
}
public OnPlayerConnect(playerid) <hooking:true>
{
state hooking:false;
// funзхes da sua CallBack hookeada
return OnPlayerConnect(playerid);
}
public OnPlayerConnect(playerid) <hooking:false>
{
state hooking:true;
// funзхes da sua CallBack
return 1;
}
public OnPlayerConnect(playerid) <hooking:false>
{
#if defined MyLib_OnPlayerConnect
return MyLib_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect MyLib_OnPlayerConnect
#if defined MyLib_OnPlayerConnect
forward MyLib_OnPlayerConnect(playerid);
#endif
public <Nome da CallBack>(<parametros>)
{
<verifica se a hook existe>
<sim - retorna para hookeada>
<caso nгo exista>
<nгo - retorna verdadeiro>
<encerra a verifcaзгo>
}
<caso a hook exista>
<sim - remove o hook(para a leitura da original)>
<caso nгo exista>
<nгo - cria o hook>
<encerra a verificaзгo>
<renomeia a callback>
<caso a hook exista>
<criamos a forward para a original>
<encerra a verificaзгo>
stock hooking;
main()
{
state hooking:true;
}
MyFunction() <hooking:true>
{
state hooking:false;
// funзхes da sua Funзгo hookeada
return MyFunction();
}
MyFunction() <hooking:false>
{
state hooking:true;
// funзхes da sua Funзгo normal
return 1;
}
stock MyLib_GivePlayerMoney(playerid, value)
{
// Codigo da Funзгo aqui
return true;
}
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney MyLib_GivePlayerMoney
stock <Nome da Funзгo>(<parametros>)
{
// Codigo da Funзгo aqui
return true;
}
<caso a hook exista>
<sim - remove o hook(para a leitura da original)>
<caso nгo exista>
<nгo - cria o hook>
<encerra a verificaзгo>
<renomeia a callback>
Bacana! Mas sу pra completar, estб faltando o ****** nos crйditos hein...
|