26.10.2013, 16:49
(
Последний раз редактировалось DanDRT; 26.10.2013 в 20:41.
)
Нndice
Introduзгo
Olб, hoje irei explicar um pouco sobre hooking espero que gostem.
O que й Hook
Hooking й feito com uma funзгo chamar outra funзгo de aparentemente o mesmo nome, portanto, "encadeamento" todas estas funзхes idкnticas juntas para que chamar uma chama todos eles. Ao Hook funзхes isto й fбcil porque a cadeia chama a funзгo anterior do mesmo nome, no entanto, de enganche retornos й complicada pelo facto de a cadeia de chama o prуximo funзгo do mesmo nome - uma funзгo que nгo tenha sido ainda definido e poder nem sequer existe.
Hookeando CallBacks
* Com mйtodo state
Precisaremos de uma variбvel no topo, no meu caso:
Agora definiremos para quando iniciar o hooking ser true(para ler primeiro o hook):
Agora vamos criar nossa Callback hookeada(no meu caso vou hookear a OnPlayerConnect).
Agora vamos criar nossa Callback normal.
state й o estado... definimos o estado verdadeiro para a hook e o estado falso para a original.
Pronto estб Hookeada sua CallBack com o mйtodo state.
* Com mйtodo bruno
Nesse mйtodo nгo precisaremos de variбveis.
Agora vamos criar nossa Callback hookeada(no meu caso vou hookear a OnPlayerConnect).
abaixo da callback ou no fim do seu codigo(no meu caso (OnPlayerConnect) ):
Alguns vгo se perguntar como fazer isto /\
Podemos criar nossa Callback abaixo de tudo acima ou caso for uma include nгo criaremos nada, pois ira dar erro.
Pronto estб Hookeada sua CallBack com o mйtodo bruno.
Hookeando Funзхes
* Com mйtodo state
Precisaremos de uma variбvel no topo, no meu caso:
Agora definiremos para quando iniciar o hooking ser true(para ler primeiro o hook):
Agora vamos criar nossa Funзгo hookeada(no meu caso vou hookear uma funзгo criada por mim (sem nada) ).
Agora vamos criar nossa Funзгo normal.
state й o estado... definimos o estado verdadeiro para a hook e o estado falso para a original.
Pronto estб Hookeada sua Funзгo com o mйtodo state.
* Com mйtodo bruno
Nesse mйtodo nгo precisaremos de variбveis.
Agora vamos criar nossa Funзгo hookeada(no meu caso vou hookear a GivePlayerMoney).
abaixo da callback ou no fim do seu codigo(no meu caso (GivePlayerMoney) ):
Alguns vгo se perguntar como fazer isto /\
Pronto estб Hookeada sua Funзгo com o mйtodo bruno.
F.A.Q
Existe um site que faz isto para mim ?
R = sim, http://ipsbr.net/portal/hook/
Creditos:
DanDRT
Willian_Luigi
IpsBruno
****** (forma estrutural do metodo bruno)
IpsTeam
- Introduзгo
- O que й Hook
- Hookeando CallBack's
- Hookeando Funзхes
- Creditos
Olб, hoje irei explicar um pouco sobre hooking espero que gostem.
O que й Hook
Hooking й feito com uma funзгo chamar outra funзгo de aparentemente o mesmo nome, portanto, "encadeamento" todas estas funзхes idкnticas juntas para que chamar uma chama todos eles. Ao Hook funзхes isto й fбcil porque a cadeia chama a funзгo anterior do mesmo nome, no entanto, de enganche retornos й complicada pelo facto de a cadeia de chama o prуximo funзгo do mesmo nome - uma funзгo que nгo tenha sido ainda definido e poder nem sequer existe.
Hookeando CallBacks
* Com mйtodo state
Precisaremos de uma variбvel no topo, no meu caso:
PHP код:
stock hooking;
PHP код:
main()
{
state hooking:true;
}
PHP код:
public OnPlayerConnect(playerid) <hooking:true>
{
state hooking:false;
// funзхes da sua CallBack hookeada
return OnPlayerConnect(playerid);
}
PHP код:
public OnPlayerConnect(playerid) <hooking:false>
{
state hooking:true;
// funзхes da sua CallBack
return 1;
}
Pronto estб Hookeada sua CallBack com o mйtodo state.
* Com mйtodo bruno
Nesse mйtodo nгo precisaremos de variбveis.
Agora vamos criar nossa Callback hookeada(no meu caso vou hookear a OnPlayerConnect).
PHP код:
public OnPlayerConnect(playerid) <hooking:false>
{
#if defined MyLib_OnPlayerConnect
return MyLib_OnPlayerConnect(playerid);
#else
return 1;
#endif
}
pawn Код:
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect MyLib_OnPlayerConnect
#if defined MyLib_OnPlayerConnect
forward MyLib_OnPlayerConnect(playerid);
#endif
PHP код:
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>
Pronto estб Hookeada sua CallBack com o mйtodo bruno.
Hookeando Funзхes
* Com mйtodo state
Precisaremos de uma variбvel no topo, no meu caso:
PHP код:
stock hooking;
PHP код:
main()
{
state hooking:true;
}
PHP код:
MyFunction() <hooking:true>
{
state hooking:false;
// funзхes da sua Funзгo hookeada
return MyFunction();
}
PHP код:
MyFunction() <hooking:false>
{
state hooking:true;
// funзхes da sua Funзгo normal
return 1;
}
Pronto estб Hookeada sua Funзгo com o mйtodo state.
* Com mйtodo bruno
Nesse mйtodo nгo precisaremos de variбveis.
Agora vamos criar nossa Funзгo hookeada(no meu caso vou hookear a GivePlayerMoney).
PHP код:
stock MyLib_GivePlayerMoney(playerid, value)
{
// Codigo da Funзгo aqui
return true;
}
pawn Код:
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney MyLib_GivePlayerMoney
PHP код:
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>
F.A.Q
Existe um site que faz isto para mim ?
R = sim, http://ipsbr.net/portal/hook/
Creditos:
DanDRT
Willian_Luigi
IpsBruno
****** (forma estrutural do metodo bruno)
IpsTeam